{ "type": "Script", "span": { "start": 0, "end": 505, "ctxt": 0 }, "body": [ { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 15, "end": 16, "ctxt": 0 }, "value": "A", "optional": false }, "declare": false, "span": { "start": 0, "end": 85, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 26, "end": 31, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 26, "end": 27, "ctxt": 0 }, "value": "t", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 27, "end": 30, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 29, "end": 30, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 29, "end": 30, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "isStatic": false, "decorators": [], "accessibility": null, "isAbstract": false, "isOptional": false, "isOverride": false, "readonly": false, "declare": false, "definite": false }, { "type": "ClassMethod", "span": { "start": 41, "end": 59, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 50, "end": 53, "ctxt": 0 }, "value": "foo", "optional": false }, "function": { "params": [], "decorators": [], "span": { "start": 41, "end": 59, "ctxt": 0 }, "body": null, "generator": false, "async": false, "typeParameters": null, "returnType": { "type": "TsTypeAnnotation", "span": { "start": 55, "end": 58, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 57, "end": 58, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 57, "end": 58, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, "kind": "method", "isStatic": false, "accessibility": null, "isAbstract": true, "isOptional": false, "isOverride": false }, { "type": "ClassMethod", "span": { "start": 64, "end": 83, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 73, "end": 76, "ctxt": 0 }, "value": "bar", "optional": false }, "function": { "params": [ { "type": "Parameter", "span": { "start": 77, "end": 81, "ctxt": 0 }, "decorators": [], "pat": { "type": "Identifier", "span": { "start": 77, "end": 81, "ctxt": 0 }, "value": "t", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 78, "end": 81, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 80, "end": 81, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 80, "end": 81, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } } ], "decorators": [], "span": { "start": 64, "end": 83, "ctxt": 0 }, "body": null, "generator": false, "async": false, "typeParameters": null, "returnType": null }, "kind": "method", "isStatic": false, "accessibility": null, "isAbstract": true, "isOptional": false, "isOverride": false } ], "superClass": null, "isAbstract": true, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 16, "end": 19, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 17, "end": 18, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 17, "end": 18, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "superTypeParams": null, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 102, "end": 103, "ctxt": 0 }, "value": "B", "optional": false }, "declare": false, "span": { "start": 87, "end": 122, "ctxt": 0 }, "decorators": [], "body": [], "superClass": { "type": "Identifier", "span": { "start": 115, "end": 116, "ctxt": 0 }, "value": "A", "optional": false }, "isAbstract": true, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 103, "end": 106, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 104, "end": 105, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 104, "end": 105, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "superTypeParams": { "type": "TsTypeParameterInstantiation", "span": { "start": 116, "end": 119, "ctxt": 0 }, "params": [ { "type": "TsTypeReference", "span": { "start": 117, "end": 118, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 117, "end": 118, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } ] }, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 130, "end": 131, "ctxt": 0 }, "value": "C", "optional": false }, "declare": false, "span": { "start": 124, "end": 150, "ctxt": 0 }, "decorators": [], "body": [], "superClass": { "type": "Identifier", "span": { "start": 143, "end": 144, "ctxt": 0 }, "value": "A", "optional": false }, "isAbstract": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 131, "end": 134, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 132, "end": 133, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 132, "end": 133, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "superTypeParams": { "type": "TsTypeParameterInstantiation", "span": { "start": 144, "end": 147, "ctxt": 0 }, "params": [ { "type": "TsTypeReference", "span": { "start": 145, "end": 146, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 145, "end": 146, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } ] }, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 196, "end": 197, "ctxt": 0 }, "value": "D", "optional": false }, "declare": false, "span": { "start": 190, "end": 218, "ctxt": 0 }, "decorators": [], "body": [], "superClass": { "type": "Identifier", "span": { "start": 206, "end": 207, "ctxt": 0 }, "value": "A", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": { "type": "TsTypeParameterInstantiation", "span": { "start": 207, "end": 215, "ctxt": 0 }, "params": [ { "type": "TsKeywordType", "span": { "start": 208, "end": 214, "ctxt": 0 }, "kind": "number" } ] }, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 264, "end": 265, "ctxt": 0 }, "value": "E", "optional": false }, "declare": false, "span": { "start": 258, "end": 348, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassMethod", "span": { "start": 322, "end": 346, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 322, "end": 325, "ctxt": 0 }, "value": "foo", "optional": false }, "function": { "params": [], "decorators": [], "span": { "start": 322, "end": 346, "ctxt": 0 }, "body": { "type": "BlockStatement", "span": { "start": 328, "end": 346, "ctxt": 0 }, "stmts": [ { "type": "ReturnStatement", "span": { "start": 330, "end": 344, "ctxt": 0 }, "argument": { "type": "MemberExpression", "span": { "start": 337, "end": 343, "ctxt": 0 }, "object": { "type": "ThisExpression", "span": { "start": 337, "end": 341, "ctxt": 0 } }, "property": { "type": "Identifier", "span": { "start": 342, "end": 343, "ctxt": 0 }, "value": "t", "optional": false } } } ] }, "generator": false, "async": false, "typeParameters": null, "returnType": null }, "kind": "method", "isStatic": false, "accessibility": null, "isAbstract": false, "isOptional": false, "isOverride": false } ], "superClass": { "type": "Identifier", "span": { "start": 277, "end": 278, "ctxt": 0 }, "value": "A", "optional": false }, "isAbstract": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 265, "end": 268, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 266, "end": 267, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 266, "end": 267, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "superTypeParams": { "type": "TsTypeParameterInstantiation", "span": { "start": 278, "end": 281, "ctxt": 0 }, "params": [ { "type": "TsTypeReference", "span": { "start": 279, "end": 280, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 279, "end": 280, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } ] }, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 356, "end": 357, "ctxt": 0 }, "value": "F", "optional": false }, "declare": false, "span": { "start": 350, "end": 429, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassMethod", "span": { "start": 414, "end": 427, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 414, "end": 417, "ctxt": 0 }, "value": "bar", "optional": false }, "function": { "params": [ { "type": "Parameter", "span": { "start": 418, "end": 423, "ctxt": 0 }, "decorators": [], "pat": { "type": "Identifier", "span": { "start": 418, "end": 423, "ctxt": 0 }, "value": "t", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 420, "end": 423, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 422, "end": 423, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 422, "end": 423, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } } ], "decorators": [], "span": { "start": 414, "end": 427, "ctxt": 0 }, "body": { "type": "BlockStatement", "span": { "start": 425, "end": 427, "ctxt": 0 }, "stmts": [] }, "generator": false, "async": false, "typeParameters": null, "returnType": null }, "kind": "method", "isStatic": false, "accessibility": null, "isAbstract": false, "isOptional": false, "isOverride": false } ], "superClass": { "type": "Identifier", "span": { "start": 369, "end": 370, "ctxt": 0 }, "value": "A", "optional": false }, "isAbstract": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 357, "end": 360, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 358, "end": 359, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 358, "end": 359, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "superTypeParams": { "type": "TsTypeParameterInstantiation", "span": { "start": 370, "end": 373, "ctxt": 0 }, "params": [ { "type": "TsTypeReference", "span": { "start": 371, "end": 372, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 371, "end": 372, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } ] }, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 437, "end": 438, "ctxt": 0 }, "value": "G", "optional": false }, "declare": false, "span": { "start": 431, "end": 505, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassMethod", "span": { "start": 461, "end": 485, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 461, "end": 464, "ctxt": 0 }, "value": "foo", "optional": false }, "function": { "params": [], "decorators": [], "span": { "start": 461, "end": 485, "ctxt": 0 }, "body": { "type": "BlockStatement", "span": { "start": 467, "end": 485, "ctxt": 0 }, "stmts": [ { "type": "ReturnStatement", "span": { "start": 469, "end": 483, "ctxt": 0 }, "argument": { "type": "MemberExpression", "span": { "start": 476, "end": 482, "ctxt": 0 }, "object": { "type": "ThisExpression", "span": { "start": 476, "end": 480, "ctxt": 0 } }, "property": { "type": "Identifier", "span": { "start": 481, "end": 482, "ctxt": 0 }, "value": "t", "optional": false } } } ] }, "generator": false, "async": false, "typeParameters": null, "returnType": null }, "kind": "method", "isStatic": false, "accessibility": null, "isAbstract": false, "isOptional": false, "isOverride": false }, { "type": "ClassMethod", "span": { "start": 490, "end": 503, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 490, "end": 493, "ctxt": 0 }, "value": "bar", "optional": false }, "function": { "params": [ { "type": "Parameter", "span": { "start": 494, "end": 498, "ctxt": 0 }, "decorators": [], "pat": { "type": "Identifier", "span": { "start": 494, "end": 498, "ctxt": 0 }, "value": "t", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 495, "end": 498, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 497, "end": 498, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 497, "end": 498, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } } ], "decorators": [], "span": { "start": 490, "end": 503, "ctxt": 0 }, "body": { "type": "BlockStatement", "span": { "start": 500, "end": 503, "ctxt": 0 }, "stmts": [] }, "generator": false, "async": false, "typeParameters": null, "returnType": null }, "kind": "method", "isStatic": false, "accessibility": null, "isAbstract": false, "isOptional": false, "isOverride": false } ], "superClass": { "type": "Identifier", "span": { "start": 450, "end": 451, "ctxt": 0 }, "value": "A", "optional": false }, "isAbstract": false, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 438, "end": 441, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 439, "end": 440, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 439, "end": 440, "ctxt": 0 }, "value": "T", "optional": false }, "constraint": null, "default": null } ] }, "superTypeParams": { "type": "TsTypeParameterInstantiation", "span": { "start": 451, "end": 454, "ctxt": 0 }, "params": [ { "type": "TsTypeReference", "span": { "start": 452, "end": 453, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 452, "end": 453, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } ] }, "implements": [] } ], "interpreter": null }