Opened 16 years ago

#176 new バグ(ケアレスミス)

デリゲート+=の右辺にNew デリゲートを指定するとエラーになる

Reported by: イグトランス (egtra) Owned by: dai
Priority: 微-trivial Milestone: AB5 CP6
Component: Compiler Version:
Keywords: Cc:

Description

次のコードがコンパイルエラーになる。

#console

Delegate Sub Callback1()

Class T
	Static Sub f() : Print "hello" : End Sub
	Static Sub g() : Print "world" : End Sub
End Class

Dim f = New Callback1(AddressOf(T.f))
f += New Callback1(AddressOf(T.g))

f()

System.Console.ReadLine()

出力は次の通り(11行目は+=の行)。

t.ab(11) : 定数式にリテラル値、または定数以外のものが含まれています。
t.ab(11) : 定数式にリテラル値、または定数以外のものが含まれています。
t.ab(11) : DoubleからCallback1に変換できません。

次のように書けば回避できるので、優先度微にした。

'その1
Dim f = New Callback1(AddressOf(T.f))
Dim g = New Callback1(AddressOf(T.g))
f += g
'その2
Dim f = New Callback1(AddressOf(T.f))
f += AddressOf(T.g)

Change History (0)

Note: See TracTickets for help on using tickets.