summary refs log tree commit diff stats
path: root/compiler
diff options
context:
space:
mode:
authorSaem Ghani <saemghani+github@gmail.com>2021-01-11 01:18:01 -0800
committerGitHub <noreply@github.com>2021-01-11 10:18:01 +0100
commitbbc96f974d643b5ab4e2b9d2855e94ef30ed3ee4 (patch)
treeae263bc2abd8f15888cd7f73a431f6f031fec515 /compiler
parentf6c2450cdb7e24b5dbd118494560cc8452dd3688 (diff)
downloadNim-bbc96f974d643b5ab4e2b9d2855e94ef30ed3ee4.tar.gz
fixed nim-lang/nimsuggest#82 pure enum field sug (#16676)
- previous code wasn't account for tyEnum being wrapped in tyTypeDesc
- now pure enum fields are suggested
Diffstat (limited to 'compiler')
-rw-r--r--compiler/suggest.nim21
1 files changed, 11 insertions, 10 deletions
diff --git a/compiler/suggest.nim b/compiler/suggest.nim
index 560d20b3f..283690080 100644
--- a/compiler/suggest.nim
+++ b/compiler/suggest.nim
@@ -386,17 +386,17 @@ proc suggestFieldAccess(c: PContext, n, field: PNode, outputs: var Suggestions)
     else:
       # fallback:
       suggestEverything(c, n, field, outputs)
-  elif typ.kind == tyEnum and n.kind == nkSym and n.sym.kind == skType:
-    # look up if the identifier belongs to the enum:
-    var t = typ
-    while t != nil:
-      suggestSymList(c, t.n, field, n.info, outputs)
-      t = t[0]
-    suggestOperations(c, n, field, typ, outputs)
   else:
-    let orig = typ # skipTypes(typ, {tyGenericInst, tyAlias, tySink})
-    typ = skipTypes(typ, {tyGenericInst, tyVar, tyLent, tyPtr, tyRef, tyAlias, tySink, tyOwned})
-    if typ.kind == tyObject:
+    let orig = typ
+    typ = skipTypes(orig, {tyTypeDesc, tyGenericInst, tyVar, tyLent, tyPtr, tyRef, tyAlias, tySink, tyOwned})
+
+    if typ.kind == tyEnum and n.kind == nkSym and n.sym.kind == skType:
+      # look up if the identifier belongs to the enum:
+      var t = typ
+      while t != nil:
+        suggestSymList(c, t.n, field, n.info, outputs)
+        t = t[0]
+    elif typ.kind == tyObject:
       var t = typ
       while true:
         suggestObject(c, t.n, field, n.info, outputs)
@@ -404,6 +404,7 @@ proc suggestFieldAccess(c: PContext, n, field: PNode, outputs: var Suggestions)
         t = skipTypes(t[0], skipPtrs)
     elif typ.kind == tyTuple and typ.n != nil:
       suggestSymList(c, typ.n, field, n.info, outputs)
+    
     suggestOperations(c, n, field, orig, outputs)
     if typ != orig:
       suggestOperations(c, n, field, typ, outputs)