Skip to content

Commit 67f9bc2

Browse files
ringaboutlou15b
andauthored
fixes #21923; nimsuggest "outline" output does not list templates (#24643)
fixes #21923 --------- Co-authored-by: Louis Berube <louis.p.berube@gmail.com>
1 parent d6d28a9 commit 67f9bc2

File tree

5 files changed

+35
-13
lines changed

5 files changed

+35
-13
lines changed

compiler/sem.nim

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -500,6 +500,21 @@ proc semAfterMacroCall(c: PContext, call, macroResult: PNode,
500500
dec(c.config.evalTemplateCounter)
501501
discard c.friendModules.pop()
502502

503+
proc getLineInfo(n: PNode): TLineInfo =
504+
case n.kind
505+
of nkPostfix:
506+
if len(n) > 1:
507+
result = getLineInfo(n[1])
508+
else:
509+
result = n.info
510+
of nkAccQuoted, nkPragmaExpr:
511+
if len(n) > 0:
512+
result = getLineInfo(n[0])
513+
else:
514+
result = n.info
515+
else:
516+
result = n.info
517+
503518
const
504519
errMissingGenericParamsForTemplate = "'$1' has unspecified generic parameters"
505520

compiler/semstmts.nim

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -492,19 +492,8 @@ proc semIdentDef(c: PContext, n: PNode, kind: TSymKind, reportToNimsuggest = tru
492492
incl(result.flags, sfGlobal)
493493
result.options = c.config.options
494494

495-
proc getLineInfo(n: PNode): TLineInfo =
496-
case n.kind
497-
of nkPostfix:
498-
if len(n) > 1:
499-
return getLineInfo(n[1])
500-
of nkAccQuoted, nkPragmaExpr:
501-
if len(n) > 0:
502-
return getLineInfo(n[0])
503-
else:
504-
discard
505-
result = n.info
506-
let info = getLineInfo(n)
507495
if reportToNimsuggest:
496+
let info = getLineInfo(n)
508497
suggestSym(c.graph, info, result, c.graph.usageSym)
509498

510499
proc checkNilable(c: PContext; v: PSym) =

compiler/semtempl.nim

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -691,6 +691,9 @@ proc semTemplateDef(c: PContext, n: PNode): PNode =
691691
s = semIdentVis(c, skTemplate, n[namePos], {})
692692
assert s.kind == skTemplate
693693

694+
let info = getLineInfo(n[namePos])
695+
suggestSym(c.graph, info, s, c.graph.usageSym)
696+
694697
styleCheckDef(c, s)
695698
onDef(n[namePos].info, s)
696699
# check parameter list:

nimsuggest/tests/t21923.nim

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
discard """
2+
$nimsuggest --tester $file
3+
>outline $file
4+
outline;;skProc;;t21923.foo;;proc (x: int){.gcsafe, raises: <inferred> [].};;$file;;8;;5;;"";;100
5+
outline;;skTemplate;;t21923.foo2;;;;$file;;11;;9;;"";;100
6+
"""
7+
8+
proc foo(x: int) =
9+
echo "foo"
10+
11+
template foo2(x: int) =
12+
echo "foo2"
13+
14+
foo(12)
15+
foo2(12)

nimsuggest/tests/tsug_template.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ tmp#[!]#
66
discard """
77
$nimsuggest --tester $file
88
>sug $1
9+
sug;;skTemplate;;tsug_template.tmpa;;template ();;$file;;1;;9;;"";;100;;Prefix
910
sug;;skMacro;;tsug_template.tmpb;;macro (){.noSideEffect, gcsafe, raises: <inferred> [].};;$file;;2;;6;;"";;100;;Prefix
1011
sug;;skConverter;;tsug_template.tmpc;;converter ();;$file;;3;;10;;"";;100;;Prefix
11-
sug;;skTemplate;;tsug_template.tmpa;;template ();;$file;;1;;9;;"";;100;;Prefix
1212
"""

0 commit comments

Comments
 (0)