parent
7a3f382517
commit
3ea099bc7f
2 changed files with 36 additions and 0 deletions
|
|
@ -410,4 +410,9 @@ proc magicsAfterOverloadResolution(c: PContext, n: PNode,
|
||||||
result = n
|
result = n
|
||||||
else:
|
else:
|
||||||
result = plugin(c, n)
|
result = plugin(c, n)
|
||||||
|
of mNewFinalize:
|
||||||
|
# Make sure the finalizer procedure refers to a procedure
|
||||||
|
if n[^1].kind == nkSym and n[^1].sym.kind notin {skProc, skFunc}:
|
||||||
|
localError(c.config, n.info, "finalizer must be a direct reference to a procedure")
|
||||||
|
result = n
|
||||||
else: result = n
|
else: result = n
|
||||||
|
|
|
||||||
31
tests/errmsgs/t10376.nim
Normal file
31
tests/errmsgs/t10376.nim
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
discard """
|
||||||
|
errormsg: "finalizer must be a direct reference to a procedure"
|
||||||
|
line: 29
|
||||||
|
"""
|
||||||
|
|
||||||
|
type
|
||||||
|
A = ref object
|
||||||
|
|
||||||
|
proc my_callback(a: A) {. nimcall .} =
|
||||||
|
discard
|
||||||
|
|
||||||
|
proc foo(callback: proc(a: A) {. nimcall .}) =
|
||||||
|
var x1: A
|
||||||
|
new(x1, proc (x: A) {.nimcall.} = discard)
|
||||||
|
var x2: A
|
||||||
|
new(x2, func (x: A) {.nimcall.} = discard)
|
||||||
|
|
||||||
|
var x3: A
|
||||||
|
proc foo1(a: A) {.nimcall.} = discard
|
||||||
|
new(x3, foo1)
|
||||||
|
var x4: A
|
||||||
|
func foo2(a: A) {.nimcall.} = discard
|
||||||
|
new(x4, foo2)
|
||||||
|
|
||||||
|
var x5: A
|
||||||
|
new(x5, my_callback)
|
||||||
|
|
||||||
|
var x6: A
|
||||||
|
new(x6, callback)
|
||||||
|
|
||||||
|
foo(my_callback)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue