@@ -24,29 +24,29 @@ public static string SanitizeForJs(string name)
2424 /// <summary>
2525 /// Convert a Dafny TypeRef to a TypeScript type string (JSON representation).
2626 /// </summary>
27- public static string TypeRefToTypeScript ( TypeRef type )
27+ public static string TypeRefToTypeScript ( TypeRef type , bool preserveTypeParams = false )
2828 {
2929 return type . Kind switch
3030 {
3131 TypeKind . Int => "number" ,
3232 TypeKind . Bool => "boolean" ,
3333 TypeKind . String => "string" ,
3434 TypeKind . Seq => type . TypeArgs . Count > 0
35- ? $ "{ TypeRefToTypeScript ( type . TypeArgs [ 0 ] ) } []"
35+ ? $ "{ TypeRefToTypeScript ( type . TypeArgs [ 0 ] , preserveTypeParams ) } []"
3636 : "unknown[]" ,
3737 TypeKind . Set => type . TypeArgs . Count > 0
38- ? $ "{ TypeRefToTypeScript ( type . TypeArgs [ 0 ] ) } []"
38+ ? $ "{ TypeRefToTypeScript ( type . TypeArgs [ 0 ] , preserveTypeParams ) } []"
3939 : "unknown[]" ,
4040 TypeKind . Map => type . TypeArgs . Count >= 2
41- ? $ "Record<string, { TypeRefToTypeScript ( type . TypeArgs [ 1 ] ) } >"
41+ ? $ "Record<string, { TypeRefToTypeScript ( type . TypeArgs [ 1 ] , preserveTypeParams ) } >"
4242 : "Record<string, unknown>" ,
4343 TypeKind . Tuple => type . TypeArgs . Count > 0
44- ? $ "[{ string . Join ( ", " , type . TypeArgs . Select ( TypeRefToTypeScript ) ) } ]"
44+ ? $ "[{ string . Join ( ", " , type . TypeArgs . Select ( a => TypeRefToTypeScript ( a , preserveTypeParams ) ) ) } ]"
4545 : "unknown[]" ,
4646 TypeKind . Datatype => type . TypeArgs . Count > 0
47- ? $ "{ SanitizeForJs ( type . Name ) } <{ string . Join ( ", " , type . TypeArgs . Select ( TypeRefToTypeScript ) ) } >"
47+ ? $ "{ SanitizeForJs ( type . Name ) } <{ string . Join ( ", " , type . TypeArgs . Select ( a => TypeRefToTypeScript ( a , preserveTypeParams ) ) ) } >"
4848 : SanitizeForJs ( type . Name ) ,
49- TypeKind . TypeParam => "unknown" , // Type params not in scope, use unknown
49+ TypeKind . TypeParam => preserveTypeParams ? type . Name : " unknown" ,
5050 _ => "unknown"
5151 } ;
5252 }
0 commit comments