Skip to content

Commit b284208

Browse files
metagnPMunch
authored andcommitted
accept object type node from macros (nim-lang#19179)
1 parent 7acaa5d commit b284208

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

compiler/semexprs.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2856,7 +2856,7 @@ proc semExpr(c: PContext, n: PNode, flags: TExprFlags = {}): PNode =
28562856
of nkBind:
28572857
message(c.config, n.info, warnDeprecated, "bind is deprecated")
28582858
result = semExpr(c, n[0], flags)
2859-
of nkTypeOfExpr, nkTupleTy, nkTupleClassTy, nkRefTy..nkEnumTy, nkStaticTy:
2859+
of nkTypeOfExpr..nkTupleClassTy, nkStaticTy, nkRefTy..nkEnumTy:
28602860
if c.matchedConcept != nil and n.len == 1:
28612861
let modifier = n.modifierTypeKindOfNode
28622862
if modifier != tyNone:

tests/macros/ttypenodes.nim

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import macros
2+
3+
macro makeEnum(): untyped =
4+
newTree(nnkEnumTy, newEmptyNode(), ident"a", ident"b", ident"c")
5+
6+
macro makeObject(): untyped =
7+
newTree(nnkObjectTy, newEmptyNode(), newEmptyNode(), newTree(nnkRecList,
8+
newTree(nnkIdentDefs, ident"x", ident"y", ident"int", newEmptyNode())))
9+
10+
type
11+
Foo = makeEnum()
12+
Bar = makeObject()
13+
14+
doAssert {a, b, c} is set[Foo]
15+
let bar = Bar(x: 3, y: 4)
16+
doAssert (bar.x, bar.y) == (3, 4)

0 commit comments

Comments
 (0)