diff options
author | jcosborn <jcosborn@users.noreply.github.com> | 2018-10-30 00:41:12 -0500 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2018-10-30 06:41:12 +0100 |
commit | 69c0a9c6fb688d382d83c165860006977dd6bf04 (patch) | |
tree | 2b24bd098fa8df10fea6912b09c952ad455393b1 /compiler | |
parent | e377c55c10d4faea8f8d1ccd8b826bfeb7fe46db (diff) | |
download | Nim-69c0a9c6fb688d382d83c165860006977dd6bf04.tar.gz |
getTypeImpl now returns pragmas for object types (#9538)
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/vmdeps.nim | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/compiler/vmdeps.nim b/compiler/vmdeps.nim index 2dfe2d91f..8aac5fb87 100644 --- a/compiler/vmdeps.nim +++ b/compiler/vmdeps.nim @@ -82,12 +82,9 @@ proc mapTypeToAstX(cache: IdentCache; t: PType; info: TLineInfo; id template newIdentDefs(s): untyped = newIdentDefs(s, s.typ) - if inst: - if t.sym != nil: # if this node has a symbol - if not allowRecursion: # getTypeInst behavior: return symbol - return atomicType(t.sym) - #else: # getTypeImpl behavior: turn off recursion - # allowRecursion = false + if inst and not allowRecursion and t.sym != nil: + # getTypeInst behavior: return symbol + return atomicType(t.sym) case t.kind of tyNone: result = atomicType("none", mNone) @@ -160,9 +157,10 @@ proc mapTypeToAstX(cache: IdentCache; t: PType; info: TLineInfo; of tyObject: if inst: result = newNodeX(nkObjectTy) - result.add newNodeI(nkEmpty, info) # pragmas not reconstructed yet - if t.sons[0] == nil: result.add newNodeI(nkEmpty, info) # handle parent object - else: + result.add t.sym.ast[2][0].copyTree # copy object pragmas + if t.sons[0] == nil: + result.add newNodeI(nkEmpty, info) + else: # handle parent object var nn = newNodeX(nkOfInherit) nn.add mapTypeToAst(t.sons[0], info) result.add nn |