@@ -128,7 +128,6 @@ block: # lenTuple
128128 doAssert T2 .lenTuple == 2
129129
130130block genericParams:
131-
132131 type Foo [T1 , T2 ]= object
133132 doAssert genericParams (Foo [float , string ]) is (float , string )
134133 type Foo1 = Foo [float , int ]
@@ -140,6 +139,50 @@ block genericParams:
140139 doAssert (int ,).get (0 ) is int
141140 doAssert (int , float ).get (1 ) is float
142141
142+ type Bar [N: static int , T] = object
143+ type Bar3 = Bar [3 , float ]
144+ doAssert genericParams (Bar3 ) is (StaticParam [3 ], float )
145+ doAssert genericParams (Bar3 ).get (0 ) is StaticParam
146+ doAssert genericParams (Bar3 ).get (0 ).value == 3
147+ doAssert genericParams (Bar [3 , float ]).get (0 ).value == 3
148+
149+ type
150+ VectorElementType = SomeNumber | bool
151+ Vec [N: static [int ], T: VectorElementType ] = object
152+ arr: array [N, T]
153+ Vec4 [T: VectorElementType ] = Vec [4 ,T]
154+ Vec4f = Vec4 [float32 ]
155+
156+ MyTupleType = (int ,float ,string )
157+ MyGenericTuple [T] = (T,int ,float )
158+ MyGenericAlias = MyGenericTuple [string ]
159+ MyGenericTuple2 [T,U] = (T,U,string )
160+ MyGenericTuple2Alias [T] = MyGenericTuple2 [T,int ]
161+ MyGenericTuple2Alias2 = MyGenericTuple2Alias [float ]
162+
163+ doAssert genericParams (MyGenericAlias ) is (string ,)
164+ doAssert genericHead (MyGenericAlias ) is MyGenericTuple
165+ doAssert genericParams (MyGenericTuple2Alias2 ) is (float ,)
166+ doAssert genericParams (MyGenericTuple2 [float , int ]) is (float , int )
167+ doAssert genericParams (MyGenericAlias ) is (string ,)
168+ doAssert genericParams (Vec4f ) is (float32 ,)
169+ doAssert genericParams (Vec [4 , bool ]) is (StaticParam [4 ], bool )
170+
171+ block :
172+ type Foo [T1 , T2 ]= object
173+ doAssert genericParams (Foo [float , string ]) is (float , string )
174+ type Bar [N: static float , T] = object
175+ doAssert genericParams (Bar [1.0 , string ]) is (StaticParam [1.0 ], string )
176+ type Bar2 = Bar [2.0 , string ]
177+ doAssert genericParams (Bar2 ) is (StaticParam [2.0 ], string )
178+ type Bar3 = Bar [1.0 + 2.0 , string ]
179+ doAssert genericParams (Bar3 ) is (StaticParam [3.0 ], string )
180+
181+ const F = 5.0
182+ type Bar4 = Bar [F, string ]
183+ doAssert genericParams (Bar4 ) is (StaticParam [5.0 ], string )
184+ doAssert genericParams (Bar [F, string ]) is (StaticParam [5.0 ], string )
185+
143186# #############################################
144187# bug 13095
145188
0 commit comments