diff options
-rw-r--r-- | compiler/semexprs.nim | 7 | ||||
-rw-r--r-- | tests/lookups/tenumlocalsym.nim | 22 |
2 files changed, 22 insertions, 7 deletions
diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index 92757c77a..6893f7287 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -3028,13 +3028,6 @@ proc resolveIdentToSym(c: PContext, n: PNode, resultNode: var PNode, flags: TExprFlags, expectedType: PType): PSym = # result is nil on error or if a node that can't produce a sym is resolved let ident = considerQuotedIdent(c, n) - if expectedType != nil and ( - let expected = expectedType.skipTypes(abstractRange-{tyDistinct}); - expected.kind == tyEnum): - let nameId = ident.id - for f in expected.n: - if f.kind == nkSym and f.sym.name.id == nameId: - return f.sym var filter = {low(TSymKind)..high(TSymKind)} if efNoEvaluateGeneric in flags: # `a[...]` where `a` is a module or package is not possible diff --git a/tests/lookups/tenumlocalsym.nim b/tests/lookups/tenumlocalsym.nim new file mode 100644 index 000000000..575227c07 --- /dev/null +++ b/tests/lookups/tenumlocalsym.nim @@ -0,0 +1,22 @@ +block: + type Enum = enum a, b + + block: + let a = b + let x: Enum = a + doAssert x == b + +block: + type + Enum = enum + a = 2 + b = 10 + + iterator items2(): Enum = + for a in [a, b]: + yield a + + var s = newSeq[Enum]() + for i in items2(): + s.add i + doAssert s == @[a, b] |