diff options
author | alaviss <alaviss@users.noreply.github.com> | 2019-10-24 23:06:53 +0000 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2019-10-25 01:06:53 +0200 |
commit | 5b3571c9a4b468ee95eae5d05d37d54f3016d9cd (patch) | |
tree | a99e30fe627a292ae381ef68036d3c5c4df88df0 | |
parent | e0d13abaff1192ae6b1f4ae5cd89ae742627b680 (diff) | |
download | Nim-5b3571c9a4b468ee95eae5d05d37d54f3016d9cd.tar.gz |
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.
-rw-r--r-- | compiler/semtypes.nim | 8 | ||||
-rw-r--r-- | nimsuggest/tests/tobj_highlight.nim | 11 |
2 files changed, 17 insertions, 2 deletions
diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim index 3fdeb144d..fd5ee0598 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 000000000..c37bab183 --- /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 +""" |