diff options
author | flywind <xzsflywind@gmail.com> | 2022-02-14 21:36:01 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-14 14:36:01 +0100 |
commit | 2ef71c0a46b2209c906921f10f585306ce6199cc (patch) | |
tree | 3b21a4d0fb1e6a64fe91d00cab4034a3aed59211 | |
parent | 8e8231f9d6e586a32af7b80892244dc1033db871 (diff) | |
download | Nim-2ef71c0a46b2209c906921f10f585306ce6199cc.tar.gz |
[testcase] genSym fails to make unique identifier for ref object types (#19506)
close #15118
-rw-r--r-- | tests/macros/tmacros_various.nim | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/macros/tmacros_various.nim b/tests/macros/tmacros_various.nim index 00d74cb5c..d702db56a 100644 --- a/tests/macros/tmacros_various.nim +++ b/tests/macros/tmacros_various.nim @@ -23,6 +23,8 @@ x: some string ([("key", "val"), ("keyB", "2")], [("val", "key"), ("2", "keyB")]) ([("key", "val"), ("keyB", "2")], [("val", "key"), ("2", "keyB")]) 0 +0 +0 ''' """ @@ -270,3 +272,61 @@ block: # bug #13511 debugAst: add(foo(), component) + +block: # bug #15118 + macro flop(name: static string) = + let id = genSym(nskType, "env") + let r = + nnkStmtList.newTree( + nnkTypeSection.newTree( + nnkTypeDef.newTree( + id, + newEmptyNode(), + nnkRefTy.newTree( + nnkObjectTy.newTree( + newEmptyNode(), + newEmptyNode(), + nnkRecList.newTree( + nnkIdentDefs.newTree( + newIdentNode(name), + newIdentNode("int"), + newEmptyNode() + ) + ) + ) + ) + ) + ), + + # var f: T + + nnkVarSection.newTree( + nnkIdentDefs.newTree( + newIdentNode("f"), + id, + newEmptyNode() + ) + ), + + # echo f.a + nnkCommand.newTree( + newIdentNode("new"), + newIdentNode("f") + ), + + nnkCommand.newTree( + newIdentNode("echo"), + nnkDotExpr.newTree( + newIdentNode("f"), + newIdentNode(name) + ) + ) + ) + r + + + block: + flop("a") + + block: + flop("b") |