Skip to content

Commit 5c5168c

Browse files
committed
saves/loads flags of nkIdent node
1 parent 61f2d61 commit 5c5168c

File tree

3 files changed

+10
-9
lines changed

3 files changed

+10
-9
lines changed

compiler/icnif/nifdecoder.nim

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,11 +266,14 @@ proc fromNif(c: var DecodeContext; n: var Cursor): PNode =
266266
result.flags = flags
267267
skipParRi n
268268
of nkIdent:
269-
inc n
269+
let info = c.fromNifLineInfo(n)
270+
incExpect n, {DotToken, Ident}
271+
let flags = fromNifNodeFlags n
270272
let typ = c.fromNifType n
271273
expect n, Ident
272-
result = newIdentNode(c.graph.cache.getIdent(pool.strings[n.litId]), c.fromNifLineInfo(n))
274+
result = newIdentNode(c.graph.cache.getIdent(pool.strings[n.litId]), info)
273275
inc n
276+
result.flags = flags
274277
result.typ = typ
275278
skipParRi n
276279
of nkSym:

compiler/icnif/nifencoder.nim

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -147,11 +147,9 @@ proc toNif(c: var EncodeContext; n: PNode) =
147147
c.dest.writeNodeFlags(n.flags)
148148
c.dest.addParRi
149149
of nkIdent:
150-
let info = c.toNif n.info
151-
c.dest.addParLe pool.tags.getOrIncl(toNifTag(nkIdent)), info
152-
c.toNif n.typ
153-
c.dest.addIdent n.ident.s
154-
c.dest.addParRi
150+
# nkIdent uses flags and typ when it is a generic parameter
151+
c.withNode n:
152+
c.dest.addIdent n.ident.s
155153
of nkSym:
156154
when false:
157155
echo "nkSym: ", n.sym.name.s

tests/icnif/tencode_node2node.nim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ proc eql(x, y: PNode; c: var EqlContext): bool =
257257
echo "node kind mismatch: ", x.kind, "/", y.kind
258258
result = false
259259
elif x.flags != y.flags:
260-
echo "node flag mismatch: ", x.flags, "/", y.flags
260+
echo "node flag mismatch: ", x.flags, "/", y.flags, " at ", `$`(c.confX, x.info)
261261
debug(x)
262262
debug(y)
263263
result = false
@@ -338,7 +338,7 @@ proc testNifEncDec(graph: ModuleGraph; src: string) =
338338
let n2 = loadNifFromBuffer(nif, graphForLoad)
339339
#debug(n2)
340340
var c = EqlContext(confX: graph.config, confY: graphForLoad.config)
341-
assert eql(n, n2, c)
341+
assert eql(n, n2, c), "test failed: " & $fullPath
342342

343343
var conf = newConfigRefForTest()
344344
var cache = newIdentCache()

0 commit comments

Comments
 (0)