diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim index a0cf4ae55e..fb21a3cc39 100644 --- a/compiler/sigmatch.nim +++ b/compiler/sigmatch.nim @@ -379,6 +379,7 @@ proc concreteType(c: TCandidate, t: PType; f: PType = nil): PType = else: result = t of tyGenericParam, tyAnything, tyConcept: result = t + if c.isNoCall: return while true: result = PType(idTableGet(c.bindings, t)) if result == nil: diff --git a/tests/generics/tuninstantiatedgenericcalls.nim b/tests/generics/tuninstantiatedgenericcalls.nim index 2163789e7b..6857f53199 100644 --- a/tests/generics/tuninstantiatedgenericcalls.nim +++ b/tests/generics/tuninstantiatedgenericcalls.nim @@ -163,3 +163,15 @@ block: # issue #23339 outerField: Inner[O.aToB] var x: Outer[A] doAssert typeof(x.outerField.innerField) is B + +block: # weird regression + type + Foo[T] = distinct int + Bar[T, U] = distinct int + proc foo[T, U](x: static Foo[T], y: static Bar[T, U]): Foo[T] = + # signature gives: + # Error: cannot instantiate Bar + # got: + # but expected: + x + doAssert foo(Foo[int](1), Bar[int, int](2)).int == 1