From 5b3571c9a4b468ee95eae5d05d37d54f3016d9cd Mon Sep 17 00:00:00 2001 From: alaviss Date: Thu, 24 Oct 2019 23:06:53 +0000 Subject: [PATCH] compiler/semtypes: improve lineinfo for exported object fields (#12495) The line info should now points to the `a`, not the `*`, like this: a*: string ^ Additionally this fixes nimsuggest's highlighting of exported object fields. --- compiler/semtypes.nim | 8 ++++++-- nimsuggest/tests/tobj_highlight.nim | 11 +++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 nimsuggest/tests/tobj_highlight.nim diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim index 3fdeb144d7..fd5ee05986 100644 --- a/compiler/semtypes.nim +++ b/compiler/semtypes.nim @@ -729,7 +729,11 @@ proc semRecordNodeAux(c: PContext, n: PNode, check: var IntSet, pos: var int, else: rectype.sym for i in 0 .. len(n)-3: var f = semIdentWithPragma(c, skField, n.sons[i], {sfExported}) - suggestSym(c.config, n.sons[i].info, f, c.graph.usageSym) + let info = if n.sons[i].kind == nkPostfix: + n.sons[i].sons[1].info + else: + n.sons[i].info + suggestSym(c.config, info, f, c.graph.usageSym) f.typ = typ f.position = pos f.options = c.config.options @@ -740,7 +744,7 @@ proc semRecordNodeAux(c: PContext, n: PNode, check: var IntSet, pos: var int, f.flags = f.flags + ({sfImportc, sfExportc} * fieldOwner.flags) inc(pos) if containsOrIncl(check, f.name.id): - localError(c.config, n.sons[i].info, "attempt to redefine: '" & f.name.s & "'") + localError(c.config, info, "attempt to redefine: '" & f.name.s & "'") if a.kind == nkEmpty: addSon(father, newSymNode(f)) else: addSon(a, newSymNode(f)) styleCheckDef(c.config, f) diff --git a/nimsuggest/tests/tobj_highlight.nim b/nimsuggest/tests/tobj_highlight.nim new file mode 100644 index 0000000000..c37bab183a --- /dev/null +++ b/nimsuggest/tests/tobj_highlight.nim @@ -0,0 +1,11 @@ +type + O = object + a*: int#[!]# + +discard """ +$nimsuggest --tester $file +>highlight $1 +highlight;;skType;;2;;2;;1 +highlight;;skType;;3;;8;;3 +highlight;;skField;;3;;4;;1 +"""