diff options
-rw-r--r-- | compiler/sigmatch.nim | 1 | ||||
-rw-r--r-- | tests/generics/tuninstantiatedgenericcalls.nim | 12 |
2 files changed, 13 insertions, 0 deletions
diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim index e519f17c8..e1f197679 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 9b43d18d9..a349f0d2a 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: <typedesc[T], U> + # but expected: <T, U> + x + doAssert foo(Foo[int](1), Bar[int, int](2)).int == 1 |