diff options
-rw-r--r-- | compiler/lookups.nim | 7 | ||||
-rw-r--r-- | compiler/semtypes.nim | 7 | ||||
-rw-r--r-- | tests/modules/mrange.nim | 5 | ||||
-rw-r--r-- | tests/modules/tambig_range.nim | 8 |
4 files changed, 16 insertions, 11 deletions
diff --git a/compiler/lookups.nim b/compiler/lookups.nim index 65cf504cf..c409acc59 100644 --- a/compiler/lookups.nim +++ b/compiler/lookups.nim @@ -445,13 +445,14 @@ proc nextOverloadIter*(o: var TOverloadIter, c: PContext, n: PNode): PSym = if result != nil and result.kind == skStub: loadStub(result) -proc pickSym*(c: PContext, n: PNode; kind: TSymKind; +proc pickSym*(c: PContext, n: PNode; kinds: set[TSymKind]; flags: TSymFlags = {}): PSym = var o: TOverloadIter var a = initOverloadIter(o, c, n) while a != nil: - if a.kind == kind and flags <= a.flags: - return a + if a.kind in kinds and flags <= a.flags: + if result == nil: result = a + else: return nil # ambiguous a = nextOverloadIter(o, c, n) proc isInfixAs*(n: PNode): bool = diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim index f2fda3453..cb66685b2 100644 --- a/compiler/semtypes.nim +++ b/compiler/semtypes.nim @@ -320,11 +320,8 @@ proc semTypeIdent(c: PContext, n: PNode): PSym = if n.kind == nkSym: result = getGenSym(c, n.sym) else: - when defined(nimfix): - result = pickSym(c, n, skType) - if result.isNil: - result = qualifiedLookUp(c, n, {checkAmbiguity, checkUndeclared}) - else: + result = pickSym(c, n, {skType, skGenericParam}) + if result.isNil: result = qualifiedLookUp(c, n, {checkAmbiguity, checkUndeclared}) if result != nil: markUsed(n.info, result, c.graph.usageSym) diff --git a/tests/modules/mrange.nim b/tests/modules/mrange.nim index 9b78bf24b..20c424a8c 100644 --- a/tests/modules/mrange.nim +++ b/tests/modules/mrange.nim @@ -1,2 +1,5 @@ -proc range*() = echo "yo" \ No newline at end of file +proc range*() = echo "yo" + +proc set*(a: int) = + discard diff --git a/tests/modules/tambig_range.nim b/tests/modules/tambig_range.nim index 48e0e9f52..010350521 100644 --- a/tests/modules/tambig_range.nim +++ b/tests/modules/tambig_range.nim @@ -1,9 +1,13 @@ discard """ errormsg: "ambiguous identifier: 'range' --use system.range or mrange.range" - line: 9 + line: 13 """ -# bug #6726 import mrange +# bug #6965 +type SomeObj = object + s: set[int8] + +# bug #6726 range() |