fixed nim-lang/nimsuggest#48 type aware sug (#16814)

* suggesting identifiers accounts context over scope (distance)
* key takeaway: context fit is prioritized over a heuristics like scope
This commit is contained in:
Saem Ghani 2021-01-24 22:36:47 -08:00 • committed by GitHub
commit d99ea00829
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 5 deletions

View file

@ -6,7 +6,7 @@ tmp#[!]#
discard """
$nimsuggest --tester $file
>sug $1
sug;;skMacro;;tsug_template.tmpb;;macro (){.noSideEffect, gcsafe, locks: 0.};;$file;;2;;6;;"";;0;;Prefix
sug;;skConverter;;tsug_template.tmpc;;converter ();;$file;;3;;10;;"";;0;;Prefix
sug;;skTemplate;;tsug_template.tmpa;;template ();;$file;;1;;9;;"";;0;;Prefix
sug;;skMacro;;tsug_template.tmpb;;macro (){.noSideEffect, gcsafe, locks: 0.};;$file;;2;;6;;"";;100;;Prefix
sug;;skConverter;;tsug_template.tmpc;;converter ();;$file;;3;;10;;"";;100;;Prefix
sug;;skTemplate;;tsug_template.tmpa;;template ();;$file;;1;;9;;"";;100;;Prefix
"""

View file

@ -0,0 +1,26 @@
# suggestions for type declarations
from system import string, int, bool
type
super = int
someType = bool
let str = "hello"
proc main() =
let a: s#[!]#
# This output show seq, even though that's not imported. This is due to the
# entire symbol table, regardless of import visibility is currently being
# scanned. This is hardly ideal, but changing it with the current level of test
# coverage is unwise as it might break more than it fixes.
discard """
$nimsuggest --tester $file
>sug $1
sug;;skType;;tsug_typedecl.someType;;someType;;*nimsuggest/tests/tsug_typedecl.nim;;7;;2;;"";;100;;Prefix
sug;;skType;;tsug_typedecl.super;;super;;*nimsuggest/tests/tsug_typedecl.nim;;6;;2;;"";;100;;Prefix
sug;;skType;;system.string;;string;;*lib/system.nim;;*;;*;;*;;100;;Prefix
sug;;skType;;system.seq;;seq;;*lib/system.nim;;*;;*;;*;;100;;Prefix
"""