diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim index e519f17c8c85..e1f197679852 100644 --- a/compiler/sigmatch.nim +++ b/compiler/sigmatch.nim @@ -485,6 +485,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 = idTableGet(c.bindings, t) if result == nil: diff --git a/tests/generics/tuninstantiatedgenericcalls.nim b/tests/generics/tuninstantiatedgenericcalls.nim index 9b43d18d9c5e..a349f0d2ad99 100644 --- a/tests/generics/tuninstantiatedgenericcalls.nim +++ b/tests/generics/tuninstantiatedgenericcalls.nim @@ -397,3 +397,15 @@ block: # `when`, test no constant semchecks {.error: "bad 2".} ) var y: Bar[int] + +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