swc/crates/swc_ecma_parser/tests/tsc/subtypingWithConstructSignaturesWithSpecializedSignatures.json
2022-02-04 20:17:42 +09:00

2594 lines
89 KiB
JSON

{
"type": "Script",
"span": {
"start": 118,
"end": 2008,
"ctxt": 0
},
"body": [
{
"type": "TsModuleDeclaration",
"span": {
"start": 118,
"end": 938,
"ctxt": 0
},
"declare": false,
"global": false,
"id": {
"type": "Identifier",
"span": {
"start": 125,
"end": 138,
"ctxt": 0
},
"value": "CallSignature",
"optional": false
},
"body": {
"type": "TsModuleBlock",
"span": {
"start": 139,
"end": 938,
"ctxt": 0
},
"body": [
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 145,
"end": 257,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 155,
"end": 159,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 160,
"end": 257,
"ctxt": 0
},
"body": [
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 190,
"end": 209,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 195,
"end": 201,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 196,
"end": 201,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsLiteralType",
"span": {
"start": 198,
"end": 201,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 198,
"end": 201,
"ctxt": 0
},
"value": "a",
"hasEscape": false,
"kind": {
"type": "normal",
"containsQuote": true
}
}
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 202,
"end": 208,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 204,
"end": 208,
"ctxt": 0
},
"kind": "void"
}
},
"typeParams": null
},
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 218,
"end": 251,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 223,
"end": 232,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 224,
"end": 232,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 226,
"end": 232,
"ctxt": 0
},
"kind": "string"
}
}
},
{
"type": "Identifier",
"span": {
"start": 234,
"end": 243,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 235,
"end": 243,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 237,
"end": 243,
"ctxt": 0
},
"kind": "number"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 244,
"end": 250,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 246,
"end": 250,
"ctxt": 0
},
"kind": "void"
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 274,
"end": 522,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 284,
"end": 285,
"ctxt": 0
},
"value": "I",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 294,
"end": 298,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 294,
"end": 298,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 299,
"end": 522,
"ctxt": 0
},
"body": [
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 324,
"end": 345,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 329,
"end": 335,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 330,
"end": 335,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsLiteralType",
"span": {
"start": 332,
"end": 335,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 332,
"end": 335,
"ctxt": 0
},
"value": "a",
"hasEscape": false,
"kind": {
"type": "normal",
"containsQuote": true
}
}
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 336,
"end": 344,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 338,
"end": 344,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
},
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 386,
"end": 421,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 391,
"end": 400,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 392,
"end": 400,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 394,
"end": 400,
"ctxt": 0
},
"kind": "string"
}
}
},
{
"type": "Identifier",
"span": {
"start": 402,
"end": 411,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 403,
"end": 411,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 405,
"end": 411,
"ctxt": 0
},
"kind": "number"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 412,
"end": 420,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 414,
"end": 420,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
},
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 462,
"end": 484,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 470,
"end": 474,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 471,
"end": 474,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 473,
"end": 474,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 473,
"end": 474,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 475,
"end": 483,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 477,
"end": 483,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 466,
"end": 469,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 467,
"end": 468,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 467,
"end": 468,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
}
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 531,
"end": 637,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 541,
"end": 546,
"ctxt": 0
},
"value": "Base2",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 547,
"end": 637,
"ctxt": 0
},
"body": [
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 577,
"end": 598,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 582,
"end": 588,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 583,
"end": 588,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsLiteralType",
"span": {
"start": 585,
"end": 588,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 585,
"end": 588,
"ctxt": 0
},
"value": "a",
"hasEscape": false,
"kind": {
"type": "normal",
"containsQuote": true
}
}
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 589,
"end": 597,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 591,
"end": 597,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
},
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 607,
"end": 631,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 612,
"end": 621,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 613,
"end": 621,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 615,
"end": 621,
"ctxt": 0
},
"kind": "string"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 622,
"end": 630,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 624,
"end": 630,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 654,
"end": 806,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 664,
"end": 666,
"ctxt": 0
},
"value": "I2",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 675,
"end": 680,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 675,
"end": 680,
"ctxt": 0
},
"value": "Base2",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 681,
"end": 806,
"ctxt": 0
},
"body": [
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 706,
"end": 727,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 711,
"end": 717,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 712,
"end": 717,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsLiteralType",
"span": {
"start": 714,
"end": 717,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 714,
"end": 717,
"ctxt": 0
},
"value": "a",
"hasEscape": false,
"kind": {
"type": "normal",
"containsQuote": true
}
}
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 718,
"end": 726,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 720,
"end": 726,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": null
},
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 736,
"end": 760,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 741,
"end": 750,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 742,
"end": 750,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 744,
"end": 750,
"ctxt": 0
},
"kind": "string"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 751,
"end": 759,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 753,
"end": 759,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 823,
"end": 936,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 833,
"end": 835,
"ctxt": 0
},
"value": "I3",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 844,
"end": 849,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 844,
"end": 849,
"ctxt": 0
},
"value": "Base2",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 850,
"end": 936,
"ctxt": 0
},
"body": [
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 875,
"end": 897,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 883,
"end": 887,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 884,
"end": 887,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 886,
"end": 887,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 886,
"end": 887,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 888,
"end": 896,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 890,
"end": 896,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 879,
"end": 882,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 880,
"end": 881,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 880,
"end": 881,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
}
}
]
}
}
]
}
},
{
"type": "TsModuleDeclaration",
"span": {
"start": 940,
"end": 2008,
"ctxt": 0
},
"declare": false,
"global": false,
"id": {
"type": "Identifier",
"span": {
"start": 947,
"end": 970,
"ctxt": 0
},
"value": "MemberWithCallSignature",
"optional": false
},
"body": {
"type": "TsModuleBlock",
"span": {
"start": 971,
"end": 2008,
"ctxt": 0
},
"body": [
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 977,
"end": 1257,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 987,
"end": 991,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 992,
"end": 1257,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 1022,
"end": 1103,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1022,
"end": 1023,
"ctxt": 0
},
"value": "a",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1023,
"end": 1103,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 1025,
"end": 1103,
"ctxt": 0
},
"members": [
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 1039,
"end": 1058,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1044,
"end": 1050,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1045,
"end": 1050,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsLiteralType",
"span": {
"start": 1047,
"end": 1050,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 1047,
"end": 1050,
"ctxt": 0
},
"value": "a",
"hasEscape": false,
"kind": {
"type": "normal",
"containsQuote": true
}
}
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1051,
"end": 1057,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1053,
"end": 1057,
"ctxt": 0
},
"kind": "void"
}
},
"typeParams": null
},
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 1071,
"end": 1093,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1076,
"end": 1085,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1077,
"end": 1085,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1079,
"end": 1085,
"ctxt": 0
},
"kind": "string"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1086,
"end": 1092,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1088,
"end": 1092,
"ctxt": 0
},
"kind": "void"
}
},
"typeParams": null
}
]
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1112,
"end": 1216,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1112,
"end": 1114,
"ctxt": 0
},
"value": "a2",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1114,
"end": 1216,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 1116,
"end": 1216,
"ctxt": 0
},
"members": [
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 1130,
"end": 1160,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1135,
"end": 1141,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1136,
"end": 1141,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsLiteralType",
"span": {
"start": 1138,
"end": 1141,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 1138,
"end": 1141,
"ctxt": 0
},
"value": "a",
"hasEscape": false,
"kind": {
"type": "normal",
"containsQuote": true
}
}
}
}
},
{
"type": "Identifier",
"span": {
"start": 1143,
"end": 1152,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1144,
"end": 1152,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1146,
"end": 1152,
"ctxt": 0
},
"kind": "number"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1153,
"end": 1159,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1155,
"end": 1159,
"ctxt": 0
},
"kind": "void"
}
},
"typeParams": null
},
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 1173,
"end": 1206,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1178,
"end": 1187,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1179,
"end": 1187,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1181,
"end": 1187,
"ctxt": 0
},
"kind": "string"
}
}
},
{
"type": "Identifier",
"span": {
"start": 1189,
"end": 1198,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1190,
"end": 1198,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1192,
"end": 1198,
"ctxt": 0
},
"kind": "number"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1199,
"end": 1205,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1201,
"end": 1205,
"ctxt": 0
},
"kind": "void"
}
},
"typeParams": null
}
]
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1225,
"end": 1251,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1225,
"end": 1227,
"ctxt": 0
},
"value": "a3",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1227,
"end": 1250,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 1229,
"end": 1250,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1237,
"end": 1241,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1238,
"end": 1241,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1240,
"end": 1241,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1240,
"end": 1241,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1233,
"end": 1236,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1234,
"end": 1235,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1234,
"end": 1235,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1243,
"end": 1250,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1246,
"end": 1250,
"ctxt": 0
},
"kind": "void"
}
},
"isAbstract": false
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 1274,
"end": 1544,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 1284,
"end": 1285,
"ctxt": 0
},
"value": "I",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 1294,
"end": 1298,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1294,
"end": 1298,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 1299,
"end": 1544,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 1324,
"end": 1353,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1324,
"end": 1325,
"ctxt": 0
},
"value": "a",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1325,
"end": 1352,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 1327,
"end": 1352,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1332,
"end": 1341,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1333,
"end": 1341,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1335,
"end": 1341,
"ctxt": 0
},
"kind": "string"
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1343,
"end": 1352,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1346,
"end": 1352,
"ctxt": 0
},
"kind": "number"
}
},
"isAbstract": false
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1394,
"end": 1437,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1394,
"end": 1396,
"ctxt": 0
},
"value": "a2",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1396,
"end": 1436,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 1398,
"end": 1436,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1404,
"end": 1413,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1405,
"end": 1413,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1407,
"end": 1413,
"ctxt": 0
},
"kind": "string"
}
}
},
{
"type": "Identifier",
"span": {
"start": 1415,
"end": 1424,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1416,
"end": 1424,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1418,
"end": 1424,
"ctxt": 0
},
"kind": "number"
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1426,
"end": 1436,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1429,
"end": 1436,
"ctxt": 0
},
"kind": "boolean"
}
},
"isAbstract": false
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1478,
"end": 1506,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1478,
"end": 1480,
"ctxt": 0
},
"value": "a3",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1480,
"end": 1505,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 1482,
"end": 1505,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1490,
"end": 1494,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1491,
"end": 1494,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1493,
"end": 1494,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1493,
"end": 1494,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1486,
"end": 1489,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1487,
"end": 1488,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1487,
"end": 1488,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1496,
"end": 1505,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1499,
"end": 1505,
"ctxt": 0
},
"kind": "string"
}
},
"isAbstract": false
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 1550,
"end": 1719,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 1560,
"end": 1565,
"ctxt": 0
},
"value": "Base2",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 1566,
"end": 1719,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 1596,
"end": 1681,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1596,
"end": 1597,
"ctxt": 0
},
"value": "a",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1597,
"end": 1681,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 1599,
"end": 1681,
"ctxt": 0
},
"members": [
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 1613,
"end": 1634,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1618,
"end": 1624,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1619,
"end": 1624,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsLiteralType",
"span": {
"start": 1621,
"end": 1624,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 1621,
"end": 1624,
"ctxt": 0
},
"value": "a",
"hasEscape": false,
"kind": {
"type": "normal",
"containsQuote": true
}
}
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1625,
"end": 1633,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1627,
"end": 1633,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
},
{
"type": "TsConstructSignatureDeclaration",
"span": {
"start": 1647,
"end": 1671,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1652,
"end": 1661,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1653,
"end": 1661,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1655,
"end": 1661,
"ctxt": 0
},
"kind": "string"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1662,
"end": 1670,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1664,
"end": 1670,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
}
]
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 1690,
"end": 1713,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1690,
"end": 1692,
"ctxt": 0
},
"value": "a2",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1692,
"end": 1712,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 1694,
"end": 1712,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1702,
"end": 1706,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1703,
"end": 1706,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1705,
"end": 1706,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1705,
"end": 1706,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1698,
"end": 1701,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1699,
"end": 1700,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1699,
"end": 1700,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1708,
"end": 1712,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1711,
"end": 1712,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1711,
"end": 1712,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
},
"isAbstract": false
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 1736,
"end": 1863,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 1746,
"end": 1748,
"ctxt": 0
},
"value": "I2",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 1757,
"end": 1762,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1757,
"end": 1762,
"ctxt": 0
},
"value": "Base2",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 1763,
"end": 1863,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 1788,
"end": 1817,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1788,
"end": 1789,
"ctxt": 0
},
"value": "a",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1789,
"end": 1816,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 1791,
"end": 1816,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1796,
"end": 1805,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1797,
"end": 1805,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1799,
"end": 1805,
"ctxt": 0
},
"kind": "string"
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1807,
"end": 1816,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1810,
"end": 1816,
"ctxt": 0
},
"kind": "string"
}
},
"isAbstract": false
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 1880,
"end": 2006,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 1890,
"end": 1892,
"ctxt": 0
},
"value": "I3",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 1901,
"end": 1906,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1901,
"end": 1906,
"ctxt": 0
},
"value": "Base2",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 1907,
"end": 2006,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 1932,
"end": 1960,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1932,
"end": 1934,
"ctxt": 0
},
"value": "a2",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1934,
"end": 1959,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsConstructorType",
"span": {
"start": 1936,
"end": 1959,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1944,
"end": 1948,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1945,
"end": 1948,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1947,
"end": 1948,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1947,
"end": 1948,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1940,
"end": 1943,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1941,
"end": 1942,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1941,
"end": 1942,
"ctxt": 0
},
"value": "T",
"optional": false
},
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1950,
"end": 1959,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1953,
"end": 1959,
"ctxt": 0
},
"kind": "string"
}
},
"isAbstract": false
}
},
"typeParams": null
}
]
}
}
]
}
}
],
"interpreter": null
}