From 115ec7a433a7c55b596f526b7ca9187cc50fc980 Mon Sep 17 00:00:00 2001 From: lou15b Date: Tue, 7 Apr 2026 18:52:12 -0400 Subject: [PATCH] Fixes #25710 - nimsuggest outline misses methods (#25711) This adds methods to the list generated by the `outline` command for `nimsuggest --v3` and `nimsuggest --v4`. The test file `tv3_outline.nim` was also updated to include a `skMethod` line in the expected output. --------- Co-authored-by: Andreas Rumpf Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com> --- nimsuggest/nimsuggest.nim | 2 +- nimsuggest/tests/tv3_outline.nim | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/nimsuggest/nimsuggest.nim b/nimsuggest/nimsuggest.nim index 2deac2c469..650d6a3c1d 100644 --- a/nimsuggest/nimsuggest.nim +++ b/nimsuggest/nimsuggest.nim @@ -1042,7 +1042,7 @@ proc iterateOutlineNodes(graph: ModuleGraph, n: PNode, infoPairs: SuggestFileSym if symData != nil and symData.sym.kind == skEnumField and symData.info.exactEquals(symData.sym.info): let sym = symData.sym graph.suggestResult(sym, sym.info, ideOutline, n.endInfo.line, n.endInfo.col) - elif (n.kind in {nkFuncDef, nkProcDef, nkTypeDef, nkMacroDef, nkTemplateDef, nkConverterDef, nkEnumFieldDef, nkConstDef}): + elif (n.kind in {nkFuncDef, nkProcDef, nkMethodDef, nkIteratorDef, nkTypeDef, nkMacroDef, nkTemplateDef, nkConverterDef, nkEnumFieldDef, nkConstDef}): matched = handleIdentOrSym(graph, n, n.endInfo, infoPairs) else: matched = false diff --git a/nimsuggest/tests/tv3_outline.nim b/nimsuggest/tests/tv3_outline.nim index 518620c871..aaee139a1f 100644 --- a/nimsuggest/tests/tv3_outline.nim +++ b/nimsuggest/tests/tv3_outline.nim @@ -36,7 +36,9 @@ outline skType tv3_outline.FooPrivate FooPrivate $file 7 2 "" 100 8 22 outline skMacro tv3_outline.m macro (arg: untyped): untyped{.noSideEffect, gcsafe, raises: [].} $file 10 6 "" 100 10 40 outline skTemplate tv3_outline.t template (arg: untyped): untyped $file 11 9 "" 100 11 43 outline skProc tv3_outline.p proc (){.noSideEffect, gcsafe, raises: [].} $file 12 5 "" 100 12 24 +outline skIterator tv3_outline.i iterator (): int{.inline, noSideEffect, gcsafe, raises: [].} $file 13 9 "" 100 13 27 outline skConverter tv3_outline.c converter (s: string): int{.noSideEffect, gcsafe, raises: [].} $file 14 10 "" 100 14 37 +outline skMethod tv3_outline.m proc (f: Foo){.noSideEffect, gcsafe, raises: [].} $file 15 7 "" 100 15 32 outline skFunc tv3_outline.f proc (){.noSideEffect, gcsafe, raises: [].} $file 16 5 "" 100 16 24 outline skConst tv3_outline.con int literal(2) $file 20 6 "" 100 20 13 outline skProc tv3_outline.outer proc (){.noSideEffect, gcsafe, raises: [].} $file 22 5 "" 100 23 24