Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
cooldome authored and mildred committed Jan 11, 2021
1 parent e43feea commit 0611496
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
3 changes: 2 additions & 1 deletion compiler/semstmts.nim
Original file line number Diff line number Diff line change
Expand Up @@ -1278,7 +1278,8 @@ proc typeSectionRightSidePass(c: PContext, n: PNode) =
incl st.flags, tfRefsAnonObj
let obj = newSym(skType, getIdent(c.cache, s.name.s & ":ObjectType"),
nextId c.idgen, getCurrOwner(c), s.info)
obj.ast = a
obj.ast = a.copyTree
obj.ast[0] = newSymNode(obj)
if sfPure in s.flags:
obj.flags.incl sfPure
obj.typ = st.lastSon
Expand Down
18 changes: 18 additions & 0 deletions tests/macros/tgetimpl.nim
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,21 @@ macro check_gen_proc(ex: typed): (bool, bool) =
let a = @[1,2,3]
assert: check_gen_proc(len(a)) == (false, true)


#---------------------------------------------------------------
# issue #16110

macro check(x: type): untyped =
let z = getType(x)
let y = getImpl(z[1])
echo z.treeRepr
expectKind(z[1], nnkSym)
expectKind(y[0], nnkSym)
doAssert(y[0] == z[1])

type
TirePtr = ptr object
code: int

var z: TirePtr
check(typeof(z[]))

0 comments on commit 0611496

Please sign in to comment.