diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim index 5407b9435..4001953bc 100644 --- a/compiler/semtypes.nim +++ b/compiler/semtypes.nim @@ -1402,8 +1402,8 @@ proc semGeneric(c: PContext, n: PNode, s: PSym, prev: PType): PType = [s.name.s, s.kind.toHumanStr]) return newOrPrevType(tyError, prev, c) - var t = s.typ - if t.kind in {tyCompositeTypeClass, tyAlias} and t.base.kind == tyGenericBody: + var t = s.typ.skipTypes({tyAlias}) + if t.kind == tyCompositeTypeClass and t.base.kind == tyGenericBody: t = t.base result = newOrPrevType(tyGenericInvocation, prev, c) diff --git a/tests/generics/tgenerics_issues.nim b/tests/generics/tgenerics_issues.nim index cdbaf885e..812f339b9 100644 --- a/tests/generics/tgenerics_issues.nim +++ b/tests/generics/tgenerics_issues.nim @@ -849,3 +849,14 @@ discard getBar(fakeReadLine()) # no error discard getBar("hello, world") # no error echo intoFoos(fakeReadLine().split(' ')) # no error, works as expected + + +# bug #14990 +type + Tile3 = Tile2 + Tile2 = Tile + Tile[n] = object + a: n + +var a: Tile3[int] +