diff options
-rw-r--r-- | compiler/parampatterns.nim | 7 | ||||
-rw-r--r-- | tests/varres/twrong_parameter.nim | 12 |
2 files changed, 10 insertions, 9 deletions
diff --git a/compiler/parampatterns.nim b/compiler/parampatterns.nim index 6c37c976a..9ca9f110d 100644 --- a/compiler/parampatterns.nim +++ b/compiler/parampatterns.nim @@ -180,14 +180,11 @@ type proc exprRoot*(n: PNode): PSym = var it = n - # the sem'check can generate a spurious 'nkHiddenDeref' for some - # cases. we skip it here: - if it.kind == nkHiddenDeref: it = it[0] while true: case it.kind of nkSym: return it.sym of nkDotExpr, nkBracketExpr, nkHiddenAddr, - nkObjUpConv, nkObjDownConv, nkCheckedFieldExpr: + nkObjUpConv, nkObjDownConv, nkCheckedFieldExpr, nkHiddenDeref: it = it[0] of nkHiddenStdConv, nkHiddenSubConv, nkConv: it = it[1] @@ -202,7 +199,7 @@ proc exprRoot*(n: PNode): PSym = else: break else: - # nkHiddenDeref, nkDerefExpr: assume the 'var T' addresses + # nkDerefExpr: assume the 'var T' addresses # the heap and so the location is not on the stack. break diff --git a/tests/varres/twrong_parameter.nim b/tests/varres/twrong_parameter.nim index 34b0c7464..8a363dd19 100644 --- a/tests/varres/twrong_parameter.nim +++ b/tests/varres/twrong_parameter.nim @@ -1,12 +1,16 @@ discard """ - line: 6 - errormsg: "'x' is not the first parameter; context: 'x'" + line: 10 + errormsg: "'x' is not the first parameter; context: 'x.field[0]'" """ -proc forward(abc: int; x: var int): var int = result = x +type + MyObject = object + field: array[2, int] + +proc forward(abc: int; x: var MyObject): var int = result = x.field[0] proc foo(): var int = - var y = 9 + var y: MyObject result = forward(45, y) echo foo() |