summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/lookups.nim7
-rw-r--r--compiler/semtypes.nim7
-rw-r--r--tests/modules/mrange.nim5
-rw-r--r--tests/modules/tambig_range.nim8
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()