From df02616337b2136fc986b46bb24db192a5068031 Mon Sep 17 00:00:00 2001 From: bung87 Date: Sat, 7 Oct 2023 13:38:11 +0800 Subject: [PATCH 1/5] limit `Psym.allUsages` processing --- compiler/tools/suggest.nim | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/compiler/tools/suggest.nim b/compiler/tools/suggest.nim index 11a8fef8a7b..650c7db6bd9 100644 --- a/compiler/tools/suggest.nim +++ b/compiler/tools/suggest.nim @@ -528,10 +528,12 @@ proc suggestSym*(g: ModuleGraph; info: TLineInfo; s: PSym; usageSym: var PSym; i ## misnamed: should be 'symDeclared' let conf = g.config when defined(nimsuggest): - if s.allUsages.len == 0: - s.allUsages = @[info] - else: - s.addNoDup(info) + if conf.ideCmd in {ideUse, ideDus, ideSug, ideCon}: + # used in ideSug, ideCon for sorting results + if s.allUsages.len == 0: + s.allUsages = @[info] + else: + s.addNoDup(info) if conf.ideCmd == ideDef: findDefinition(g, info, s, usageSym) From 69f9badc8a108931a6e0ff36daa9739f44bff66d Mon Sep 17 00:00:00 2001 From: bung87 Date: Sat, 7 Oct 2023 14:17:50 +0800 Subject: [PATCH 2/5] fix for initial compilation --- compiler/tools/suggest.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/tools/suggest.nim b/compiler/tools/suggest.nim index 650c7db6bd9..f4313cd84ce 100644 --- a/compiler/tools/suggest.nim +++ b/compiler/tools/suggest.nim @@ -528,7 +528,7 @@ proc suggestSym*(g: ModuleGraph; info: TLineInfo; s: PSym; usageSym: var PSym; i ## misnamed: should be 'symDeclared' let conf = g.config when defined(nimsuggest): - if conf.ideCmd in {ideUse, ideDus, ideSug, ideCon}: + if conf.ideCmd in {ideNone, ideUse, ideDus, ideSug, ideCon}: # used in ideSug, ideCon for sorting results if s.allUsages.len == 0: s.allUsages = @[info] From b3269d45aec798b389bbbe8d7e6d606996999282 Mon Sep 17 00:00:00 2001 From: Bung Date: Sat, 7 Oct 2023 22:22:05 +0800 Subject: [PATCH 3/5] Update compiler/tools/suggest.nim Co-authored-by: zerbina <100542850+zerbina@users.noreply.github.com> --- compiler/tools/suggest.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/tools/suggest.nim b/compiler/tools/suggest.nim index f4313cd84ce..3a84e1da1d8 100644 --- a/compiler/tools/suggest.nim +++ b/compiler/tools/suggest.nim @@ -529,7 +529,7 @@ proc suggestSym*(g: ModuleGraph; info: TLineInfo; s: PSym; usageSym: var PSym; i let conf = g.config when defined(nimsuggest): if conf.ideCmd in {ideNone, ideUse, ideDus, ideSug, ideCon}: - # used in ideSug, ideCon for sorting results + # used by `ideSug` and `ideCon` for sorting results if s.allUsages.len == 0: s.allUsages = @[info] else: From 54589b22d3d00836a474e4f9be3075d4627065f2 Mon Sep 17 00:00:00 2001 From: bung87 Date: Fri, 20 Oct 2023 12:39:51 +0800 Subject: [PATCH 4/5] remove no recompiling logic as can not detemine by dirty file with `IdeCmd` --- compiler/tools/suggest.nim | 3 --- 1 file changed, 3 deletions(-) diff --git a/compiler/tools/suggest.nim b/compiler/tools/suggest.nim index 72aa6c81a94..d0aabee5ccf 100644 --- a/compiler/tools/suggest.nim +++ b/compiler/tools/suggest.nim @@ -457,9 +457,6 @@ proc executeCmd*(cmd: IdeCmd, file, dirtyfile: AbsoluteFile, line, col: int; conf.errorCounter = 0 if not isKnownFile: graph.compileProject(dirtyIdx) - if conf.ideCmd in {ideUse, ideDus} and - dirtyfile.isEmpty: - discard "no need to recompile anything" else: var modIdx = graph.parentModule(dirtyIdx) if modIdx == InvalidFileIdx: From 87218e787323d0dcde67efc653a0a8a0edf44868 Mon Sep 17 00:00:00 2001 From: bung87 Date: Sat, 21 Oct 2023 20:49:27 +0800 Subject: [PATCH 5/5] add test case --- nimsuggest/tests/fixtures/module_a.nim | 2 ++ nimsuggest/tests/tuse2.nim | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 nimsuggest/tests/fixtures/module_a.nim create mode 100644 nimsuggest/tests/tuse2.nim diff --git a/nimsuggest/tests/fixtures/module_a.nim b/nimsuggest/tests/fixtures/module_a.nim new file mode 100644 index 00000000000..25137f2aeb0 --- /dev/null +++ b/nimsuggest/tests/fixtures/module_a.nim @@ -0,0 +1,2 @@ +var global* = 1 +global = 0 # use 1 diff --git a/nimsuggest/tests/tuse2.nim b/nimsuggest/tests/tuse2.nim new file mode 100644 index 00000000000..2cf7df4a537 --- /dev/null +++ b/nimsuggest/tests/tuse2.nim @@ -0,0 +1,16 @@ +import fixtures/module_a +global = 1 + +discard """ +$nimsuggest --tester $file +>use $path/fixtures/module_a.nim:2:1 +def;;skVar;;module_a.global;;int;;*;;1;;4;;"";;100 +use;;skVar;;module_a.global;;int;;*;;2;;0;;"";;100 +use;;skVar;;module_a.global;;int;;$file;;2;;0;;"";;100 +>def $path/fixtures/module_a.nim:2:1 +def;;skVar;;module_a.global;;int;;*;;1;;4;;"";;100 +>use $path/tuse2.nim:2:1 +def;;skVar;;module_a.global;;int;;*;;1;;4;;"";;100 +use;;skVar;;module_a.global;;int;;*;;2;;0;;"";;100 +use;;skVar;;module_a.global;;int;;$file;;2;;0;;"";;100 +"""