From e8c50640d7a4d386197b8508c82b26f5563060cb Mon Sep 17 00:00:00 2001 From: Zahary Karadjov Date: Mon, 24 Mar 2014 12:17:22 +0200 Subject: [PATCH] failing test case preventing the use of --gc:v2: tsymchoicefield --- lib/core/macros.nim | 6 +++--- tests/template/tsymchoicefield.nim | 12 ++++++++++++ tests/vm/tstaticprintseq.nim | 11 +++++++---- 3 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 tests/template/tsymchoicefield.nim diff --git a/lib/core/macros.nim b/lib/core/macros.nim index db2bbc5a4..8ccad8fe3 100644 --- a/lib/core/macros.nim +++ b/lib/core/macros.nim @@ -48,17 +48,17 @@ type nnkYieldStmt, nnkTryStmt, nnkFinally, nnkRaiseStmt, nnkReturnStmt, nnkBreakStmt, nnkContinueStmt, nnkBlockStmt, nnkStaticStmt, nnkDiscardStmt, nnkStmtList, - nnkImportStmt, nnkImportExceptStmt, nnkExportStmt, nnkExportExceptStmt, nnkFromStmt, nnkIncludeStmt, - nnkBindStmt, nnkMixinStmt, nnkUsingStmt, nnkCommentStmt, nnkStmtListExpr, nnkBlockExpr, - nnkStmtListType, nnkBlockType, nnkTypeOfExpr, nnkObjectTy, + nnkStmtListType, nnkBlockType, + nnkWith, nnkWithout, + nnkTypeOfExpr, nnkObjectTy, nnkTupleTy, nnkTypeClassTy, nnkStaticTy, nnkRecList, nnkRecCase, nnkRecWhen, nnkRefTy, nnkPtrTy, nnkVarTy, diff --git a/tests/template/tsymchoicefield.nim b/tests/template/tsymchoicefield.nim new file mode 100644 index 000000000..ab05500bf --- /dev/null +++ b/tests/template/tsymchoicefield.nim @@ -0,0 +1,12 @@ +type Foo = object + len: int + +var f = Foo(len: 40) + +template getLen(f: Foo): expr = f.len + +echo f.getLen +# This fails, because `len` gets the nkOpenSymChoice +# treatment inside the template early pass and then +# it can't be recognized as a field anymore + diff --git a/tests/vm/tstaticprintseq.nim b/tests/vm/tstaticprintseq.nim index 1fe65cca5..3dfd0048d 100644 --- a/tests/vm/tstaticprintseq.nim +++ b/tests/vm/tstaticprintseq.nim @@ -13,6 +13,8 @@ discard """ 3 aa bb +11 +22 aa bb 24''' @@ -45,9 +47,11 @@ type const data: TData = (@["aa", "bb"], @[11, 22]) static: - var m = data - for x in m.letters: - echo x + var m1 = data + for x in m1.letters: echo x + + var m2: TData = data + for x in m2.numbers: echo x macro ff(d: static[TData]): stmt = for x in d.letters: @@ -55,7 +59,6 @@ macro ff(d: static[TData]): stmt = ff(data) - # bug #1010 proc `*==`(x: var int, y: int) {.inline, noSideEffect.} =