{ "type": "Script", "span": { "start": 1, "end": 1287, "ctxt": 0 }, "body": [ { "type": "TsTypeAliasDeclaration", "span": { "start": 1, "end": 48, "ctxt": 0 }, "declare": false, "id": { "type": "Identifier", "span": { "start": 6, "end": 17, "ctxt": 0 }, "value": "Constructor", "optional": false }, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 17, "end": 20, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 18, "end": 19, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 18, "end": 19, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 23, "end": 47, "ctxt": 0 }, "params": [ { "type": "RestElement", "span": { "start": 27, "end": 41, "ctxt": 0 }, "rest": { "start": 27, "end": 30, "ctxt": 0 }, "argument": { "type": "Identifier", "span": { "start": 30, "end": 34, "ctxt": 0 }, "value": "args", "optional": false, "typeAnnotation": null }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 34, "end": 41, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 36, "end": 41, "ctxt": 0 }, "elemType": { "type": "TsKeywordType", "span": { "start": 36, "end": 39, "ctxt": 0 }, "kind": "any" } } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 43, "end": 47, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 46, "end": 47, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 46, "end": 47, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "isAbstract": false } }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 56, "end": 60, "ctxt": 0 }, "value": "Base", "optional": false }, "declare": false, "span": { "start": 50, "end": 119, "ctxt": 0 }, "decorators": [], "body": [ { "type": "Constructor", "span": { "start": 67, "end": 117, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 67, "end": 78, "ctxt": 0 }, "value": "constructor", "optional": false }, "params": [ { "type": "TsParameterProperty", "span": { "start": 79, "end": 95, "ctxt": 0 }, "decorators": [], "accessibility": "public", "override": false, "readonly": false, "param": { "type": "Identifier", "span": { "start": 86, "end": 95, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 87, "end": 95, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 89, "end": 95, "ctxt": 0 }, "kind": "number" } } } }, { "type": "TsParameterProperty", "span": { "start": 97, "end": 113, "ctxt": 0 }, "decorators": [], "accessibility": "public", "override": false, "readonly": false, "param": { "type": "Identifier", "span": { "start": 104, "end": 113, "ctxt": 0 }, "value": "y", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 105, "end": 113, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 107, "end": 113, "ctxt": 0 }, "kind": "number" } } } } ], "body": { "type": "BlockStatement", "span": { "start": 115, "end": 117, "ctxt": 0 }, "stmts": [] }, "accessibility": null, "isOptional": false } ], "superClass": null, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 127, "end": 134, "ctxt": 0 }, "value": "Derived", "optional": false }, "declare": false, "span": { "start": 121, "end": 236, "ctxt": 0 }, "decorators": [], "body": [ { "type": "Constructor", "span": { "start": 154, "end": 234, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 154, "end": 165, "ctxt": 0 }, "value": "constructor", "optional": false }, "params": [ { "type": "Parameter", "span": { "start": 166, "end": 175, "ctxt": 0 }, "decorators": [], "pat": { "type": "Identifier", "span": { "start": 166, "end": 175, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 167, "end": 175, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 169, "end": 175, "ctxt": 0 }, "kind": "number" } } } }, { "type": "Parameter", "span": { "start": 177, "end": 186, "ctxt": 0 }, "decorators": [], "pat": { "type": "Identifier", "span": { "start": 177, "end": 186, "ctxt": 0 }, "value": "y", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 178, "end": 186, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 180, "end": 186, "ctxt": 0 }, "kind": "number" } } } }, { "type": "TsParameterProperty", "span": { "start": 188, "end": 204, "ctxt": 0 }, "decorators": [], "accessibility": "public", "override": false, "readonly": false, "param": { "type": "Identifier", "span": { "start": 195, "end": 204, "ctxt": 0 }, "value": "z", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 196, "end": 204, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 198, "end": 204, "ctxt": 0 }, "kind": "number" } } } } ], "body": { "type": "BlockStatement", "span": { "start": 206, "end": 234, "ctxt": 0 }, "stmts": [ { "type": "ExpressionStatement", "span": { "start": 216, "end": 228, "ctxt": 0 }, "expression": { "type": "CallExpression", "span": { "start": 216, "end": 227, "ctxt": 0 }, "callee": { "type": "Super", "span": { "start": 216, "end": 221, "ctxt": 0 } }, "arguments": [ { "spread": null, "expression": { "type": "Identifier", "span": { "start": 222, "end": 223, "ctxt": 0 }, "value": "x", "optional": false } }, { "spread": null, "expression": { "type": "Identifier", "span": { "start": 225, "end": 226, "ctxt": 0 }, "value": "y", "optional": false } } ], "typeArguments": null } } ] }, "accessibility": null, "isOptional": false } ], "superClass": { "type": "Identifier", "span": { "start": 143, "end": 147, "ctxt": 0 }, "value": "Base", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "VariableDeclaration", "span": { "start": 238, "end": 428, "ctxt": 0 }, "kind": "const", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 244, "end": 428, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 244, "end": 253, "ctxt": 0 }, "value": "Printable", "optional": false, "typeAnnotation": null }, "init": { "type": "ArrowFunctionExpression", "span": { "start": 256, "end": 428, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 286, "end": 299, "ctxt": 0 }, "value": "superClass", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 296, "end": 299, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 298, "end": 299, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 298, "end": 299, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "body": { "type": "ClassExpression", "identifier": null, "span": { "start": 304, "end": 428, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 335, "end": 360, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 342, "end": 349, "ctxt": 0 }, "value": "message", "optional": false }, "value": { "type": "StringLiteral", "span": { "start": 352, "end": 359, "ctxt": 0 }, "value": "hello", "raw": "\"hello\"" }, "typeAnnotation": null, "isStatic": true, "decorators": [], "accessibility": null, "isAbstract": false, "isOptional": false, "isOverride": false, "readonly": false, "declare": false, "definite": false }, { "type": "ClassMethod", "span": { "start": 365, "end": 426, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 365, "end": 370, "ctxt": 0 }, "value": "print", "optional": false }, "function": { "params": [], "decorators": [], "span": { "start": 365, "end": 426, "ctxt": 0 }, "body": { "type": "BlockStatement", "span": { "start": 373, "end": 426, "ctxt": 0 }, "stmts": [ { "type": "VariableDeclaration", "span": { "start": 383, "end": 420, "ctxt": 0 }, "kind": "const", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 389, "end": 419, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 389, "end": 395, "ctxt": 0 }, "value": "output", "optional": false, "typeAnnotation": null }, "init": { "type": "BinaryExpression", "span": { "start": 398, "end": 419, "ctxt": 0 }, "operator": "+", "left": { "type": "BinaryExpression", "span": { "start": 398, "end": 410, "ctxt": 0 }, "operator": "+", "left": { "type": "MemberExpression", "span": { "start": 398, "end": 404, "ctxt": 0 }, "object": { "type": "ThisExpression", "span": { "start": 398, "end": 402, "ctxt": 0 } }, "property": { "type": "Identifier", "span": { "start": 403, "end": 404, "ctxt": 0 }, "value": "x", "optional": false } }, "right": { "type": "StringLiteral", "span": { "start": 407, "end": 410, "ctxt": 0 }, "value": ",", "raw": "\",\"" } }, "right": { "type": "MemberExpression", "span": { "start": 413, "end": 419, "ctxt": 0 }, "object": { "type": "ThisExpression", "span": { "start": 413, "end": 417, "ctxt": 0 } }, "property": { "type": "Identifier", "span": { "start": 418, "end": 419, "ctxt": 0 }, "value": "y", "optional": false } } }, "definite": 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": 318, "end": 328, "ctxt": 0 }, "value": "superClass", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, "async": false, "generator": false, "typeParameters": { "type": "TsTypeParameterDeclaration", "span": { "start": 256, "end": 285, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 257, "end": 284, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 257, "end": 258, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": { "type": "TsTypeReference", "span": { "start": 267, "end": 284, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 267, "end": 278, "ctxt": 0 }, "value": "Constructor", "optional": false }, "typeParams": { "type": "TsTypeParameterInstantiation", "span": { "start": 278, "end": 284, "ctxt": 0 }, "params": [ { "type": "TsTypeReference", "span": { "start": 279, "end": 283, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 279, "end": 283, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } ] } }, "default": null } ] }, "returnType": null }, "definite": false } ] }, { "type": "FunctionDeclaration", "identifier": { "type": "Identifier", "span": { "start": 439, "end": 445, "ctxt": 0 }, "value": "Tagged", "optional": false }, "declare": false, "params": [ { "type": "Parameter", "span": { "start": 473, "end": 486, "ctxt": 0 }, "decorators": [], "pat": { "type": "Identifier", "span": { "start": 473, "end": 486, "ctxt": 0 }, "value": "superClass", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 483, "end": 486, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 485, "end": 486, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 485, "end": 486, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } } ], "decorators": [], "span": { "start": 430, "end": 675, "ctxt": 0 }, "body": { "type": "BlockStatement", "span": { "start": 488, "end": 675, "ctxt": 0 }, "stmts": [ { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 500, "end": 501, "ctxt": 0 }, "value": "C", "optional": false }, "declare": false, "span": { "start": 494, "end": 659, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 531, "end": 544, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 531, "end": 535, "ctxt": 0 }, "value": "_tag", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 535, "end": 543, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 537, "end": 543, "ctxt": 0 }, "kind": "string" } }, "isStatic": false, "decorators": [], "accessibility": null, "isAbstract": false, "isOptional": false, "isOverride": false, "readonly": false, "declare": false, "definite": false }, { "type": "Constructor", "span": { "start": 553, "end": 653, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 553, "end": 564, "ctxt": 0 }, "value": "constructor", "optional": false }, "params": [ { "type": "Parameter", "span": { "start": 565, "end": 579, "ctxt": 0 }, "decorators": [], "pat": { "type": "RestElement", "span": { "start": 565, "end": 579, "ctxt": 0 }, "rest": { "start": 565, "end": 568, "ctxt": 0 }, "argument": { "type": "Identifier", "span": { "start": 568, "end": 572, "ctxt": 0 }, "value": "args", "optional": false, "typeAnnotation": null }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 572, "end": 579, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 574, "end": 579, "ctxt": 0 }, "elemType": { "type": "TsKeywordType", "span": { "start": 574, "end": 577, "ctxt": 0 }, "kind": "any" } } } } } ], "body": { "type": "BlockStatement", "span": { "start": 581, "end": 653, "ctxt": 0 }, "stmts": [ { "type": "ExpressionStatement", "span": { "start": 595, "end": 610, "ctxt": 0 }, "expression": { "type": "CallExpression", "span": { "start": 595, "end": 609, "ctxt": 0 }, "callee": { "type": "Super", "span": { "start": 595, "end": 600, "ctxt": 0 } }, "arguments": [ { "spread": { "start": 601, "end": 604, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 604, "end": 608, "ctxt": 0 }, "value": "args", "optional": false } } ], "typeArguments": null } }, { "type": "ExpressionStatement", "span": { "start": 623, "end": 643, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 623, "end": 642, "ctxt": 0 }, "operator": "=", "left": { "type": "MemberExpression", "span": { "start": 623, "end": 632, "ctxt": 0 }, "object": { "type": "ThisExpression", "span": { "start": 623, "end": 627, "ctxt": 0 } }, "property": { "type": "Identifier", "span": { "start": 628, "end": 632, "ctxt": 0 }, "value": "_tag", "optional": false } }, "right": { "type": "StringLiteral", "span": { "start": 635, "end": 642, "ctxt": 0 }, "value": "hello", "raw": "\"hello\"" } } } ] }, "accessibility": null, "isOptional": false } ], "superClass": { "type": "Identifier", "span": { "start": 510, "end": 520, "ctxt": 0 }, "value": "superClass", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "ReturnStatement", "span": { "start": 664, "end": 673, "ctxt": 0 }, "argument": { "type": "Identifier", "span": { "start": 671, "end": 672, "ctxt": 0 }, "value": "C", "optional": false } } ] }, "generator": false, "async": false, "typeParameters": { "type": "TsTypeParameterDeclaration", "span": { "start": 445, "end": 472, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 446, "end": 471, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 446, "end": 447, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": { "type": "TsTypeReference", "span": { "start": 456, "end": 471, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 456, "end": 467, "ctxt": 0 }, "value": "Constructor", "optional": false }, "typeParams": { "type": "TsTypeParameterInstantiation", "span": { "start": 467, "end": 471, "ctxt": 0 }, "params": [ { "type": "TsTypeLiteral", "span": { "start": 468, "end": 470, "ctxt": 0 }, "members": [] } ] } }, "default": null } ] }, "returnType": null }, { "type": "VariableDeclaration", "span": { "start": 677, "end": 708, "ctxt": 0 }, "kind": "const", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 683, "end": 707, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 683, "end": 689, "ctxt": 0 }, "value": "Thing1", "optional": false, "typeAnnotation": null }, "init": { "type": "CallExpression", "span": { "start": 692, "end": 707, "ctxt": 0 }, "callee": { "type": "Identifier", "span": { "start": 692, "end": 698, "ctxt": 0 }, "value": "Tagged", "optional": false }, "arguments": [ { "spread": null, "expression": { "type": "Identifier", "span": { "start": 699, "end": 706, "ctxt": 0 }, "value": "Derived", "optional": false } } ], "typeArguments": null }, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 709, "end": 751, "ctxt": 0 }, "kind": "const", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 715, "end": 750, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 715, "end": 721, "ctxt": 0 }, "value": "Thing2", "optional": false, "typeAnnotation": null }, "init": { "type": "CallExpression", "span": { "start": 724, "end": 750, "ctxt": 0 }, "callee": { "type": "Identifier", "span": { "start": 724, "end": 730, "ctxt": 0 }, "value": "Tagged", "optional": false }, "arguments": [ { "spread": null, "expression": { "type": "CallExpression", "span": { "start": 731, "end": 749, "ctxt": 0 }, "callee": { "type": "Identifier", "span": { "start": 731, "end": 740, "ctxt": 0 }, "value": "Printable", "optional": false }, "arguments": [ { "spread": null, "expression": { "type": "Identifier", "span": { "start": 741, "end": 748, "ctxt": 0 }, "value": "Derived", "optional": false } } ], "typeArguments": null } } ], "typeArguments": null }, "definite": false } ] }, { "type": "ExpressionStatement", "span": { "start": 752, "end": 767, "ctxt": 0 }, "expression": { "type": "MemberExpression", "span": { "start": 752, "end": 766, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 752, "end": 758, "ctxt": 0 }, "value": "Thing2", "optional": false }, "property": { "type": "Identifier", "span": { "start": 759, "end": 766, "ctxt": 0 }, "value": "message", "optional": false } } }, { "type": "FunctionDeclaration", "identifier": { "type": "Identifier", "span": { "start": 778, "end": 780, "ctxt": 0 }, "value": "f1", "optional": false }, "declare": false, "params": [], "decorators": [], "span": { "start": 769, "end": 854, "ctxt": 0 }, "body": { "type": "BlockStatement", "span": { "start": 783, "end": 854, "ctxt": 0 }, "stmts": [ { "type": "VariableDeclaration", "span": { "start": 789, "end": 823, "ctxt": 0 }, "kind": "const", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 795, "end": 822, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 795, "end": 800, "ctxt": 0 }, "value": "thing", "optional": false, "typeAnnotation": null }, "init": { "type": "NewExpression", "span": { "start": 803, "end": 822, "ctxt": 0 }, "callee": { "type": "Identifier", "span": { "start": 807, "end": 813, "ctxt": 0 }, "value": "Thing1", "optional": false }, "arguments": [ { "spread": null, "expression": { "type": "NumericLiteral", "span": { "start": 814, "end": 815, "ctxt": 0 }, "value": 1.0, "raw": "1" } }, { "spread": null, "expression": { "type": "NumericLiteral", "span": { "start": 817, "end": 818, "ctxt": 0 }, "value": 2.0, "raw": "2" } }, { "spread": null, "expression": { "type": "NumericLiteral", "span": { "start": 820, "end": 821, "ctxt": 0 }, "value": 3.0, "raw": "3" } } ], "typeArguments": null }, "definite": false } ] }, { "type": "ExpressionStatement", "span": { "start": 828, "end": 836, "ctxt": 0 }, "expression": { "type": "MemberExpression", "span": { "start": 828, "end": 835, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 828, "end": 833, "ctxt": 0 }, "value": "thing", "optional": false }, "property": { "type": "Identifier", "span": { "start": 834, "end": 835, "ctxt": 0 }, "value": "x", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 841, "end": 852, "ctxt": 0 }, "expression": { "type": "MemberExpression", "span": { "start": 841, "end": 851, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 841, "end": 846, "ctxt": 0 }, "value": "thing", "optional": false }, "property": { "type": "Identifier", "span": { "start": 847, "end": 851, "ctxt": 0 }, "value": "_tag", "optional": false } } } ] }, "generator": false, "async": false, "typeParameters": null, "returnType": null }, { "type": "FunctionDeclaration", "identifier": { "type": "Identifier", "span": { "start": 865, "end": 867, "ctxt": 0 }, "value": "f2", "optional": false }, "declare": false, "params": [], "decorators": [], "span": { "start": 856, "end": 960, "ctxt": 0 }, "body": { "type": "BlockStatement", "span": { "start": 870, "end": 960, "ctxt": 0 }, "stmts": [ { "type": "VariableDeclaration", "span": { "start": 876, "end": 910, "ctxt": 0 }, "kind": "const", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 882, "end": 909, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 882, "end": 887, "ctxt": 0 }, "value": "thing", "optional": false, "typeAnnotation": null }, "init": { "type": "NewExpression", "span": { "start": 890, "end": 909, "ctxt": 0 }, "callee": { "type": "Identifier", "span": { "start": 894, "end": 900, "ctxt": 0 }, "value": "Thing2", "optional": false }, "arguments": [ { "spread": null, "expression": { "type": "NumericLiteral", "span": { "start": 901, "end": 902, "ctxt": 0 }, "value": 1.0, "raw": "1" } }, { "spread": null, "expression": { "type": "NumericLiteral", "span": { "start": 904, "end": 905, "ctxt": 0 }, "value": 2.0, "raw": "2" } }, { "spread": null, "expression": { "type": "NumericLiteral", "span": { "start": 907, "end": 908, "ctxt": 0 }, "value": 3.0, "raw": "3" } } ], "typeArguments": null }, "definite": false } ] }, { "type": "ExpressionStatement", "span": { "start": 915, "end": 923, "ctxt": 0 }, "expression": { "type": "MemberExpression", "span": { "start": 915, "end": 922, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 915, "end": 920, "ctxt": 0 }, "value": "thing", "optional": false }, "property": { "type": "Identifier", "span": { "start": 921, "end": 922, "ctxt": 0 }, "value": "x", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 928, "end": 939, "ctxt": 0 }, "expression": { "type": "MemberExpression", "span": { "start": 928, "end": 938, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 928, "end": 933, "ctxt": 0 }, "value": "thing", "optional": false }, "property": { "type": "Identifier", "span": { "start": 934, "end": 938, "ctxt": 0 }, "value": "_tag", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 944, "end": 958, "ctxt": 0 }, "expression": { "type": "CallExpression", "span": { "start": 944, "end": 957, "ctxt": 0 }, "callee": { "type": "MemberExpression", "span": { "start": 944, "end": 955, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 944, "end": 949, "ctxt": 0 }, "value": "thing", "optional": false }, "property": { "type": "Identifier", "span": { "start": 950, "end": 955, "ctxt": 0 }, "value": "print", "optional": false } }, "arguments": [], "typeArguments": null } } ] }, "generator": false, "async": false, "typeParameters": null, "returnType": null }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 968, "end": 974, "ctxt": 0 }, "value": "Thing3", "optional": false }, "declare": false, "span": { "start": 962, "end": 1123, "ctxt": 0 }, "decorators": [], "body": [ { "type": "Constructor", "span": { "start": 996, "end": 1080, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 996, "end": 1007, "ctxt": 0 }, "value": "constructor", "optional": false }, "params": [ { "type": "Parameter", "span": { "start": 1008, "end": 1019, "ctxt": 0 }, "decorators": [], "pat": { "type": "Identifier", "span": { "start": 1008, "end": 1019, "ctxt": 0 }, "value": "tag", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1011, "end": 1019, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 1013, "end": 1019, "ctxt": 0 }, "kind": "string" } } } } ], "body": { "type": "BlockStatement", "span": { "start": 1021, "end": 1080, "ctxt": 0 }, "stmts": [ { "type": "ExpressionStatement", "span": { "start": 1031, "end": 1049, "ctxt": 0 }, "expression": { "type": "CallExpression", "span": { "start": 1031, "end": 1048, "ctxt": 0 }, "callee": { "type": "Super", "span": { "start": 1031, "end": 1036, "ctxt": 0 } }, "arguments": [ { "spread": null, "expression": { "type": "NumericLiteral", "span": { "start": 1037, "end": 1039, "ctxt": 0 }, "value": 10.0, "raw": "10" } }, { "spread": null, "expression": { "type": "NumericLiteral", "span": { "start": 1041, "end": 1043, "ctxt": 0 }, "value": 20.0, "raw": "20" } }, { "spread": null, "expression": { "type": "NumericLiteral", "span": { "start": 1045, "end": 1047, "ctxt": 0 }, "value": 30.0, "raw": "30" } } ], "typeArguments": null } }, { "type": "ExpressionStatement", "span": { "start": 1058, "end": 1074, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1058, "end": 1073, "ctxt": 0 }, "operator": "=", "left": { "type": "MemberExpression", "span": { "start": 1058, "end": 1067, "ctxt": 0 }, "object": { "type": "ThisExpression", "span": { "start": 1058, "end": 1062, "ctxt": 0 } }, "property": { "type": "Identifier", "span": { "start": 1063, "end": 1067, "ctxt": 0 }, "value": "_tag", "optional": false } }, "right": { "type": "Identifier", "span": { "start": 1070, "end": 1073, "ctxt": 0 }, "value": "tag", "optional": false } } } ] }, "accessibility": null, "isOptional": false }, { "type": "ClassMethod", "span": { "start": 1085, "end": 1121, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 1085, "end": 1089, "ctxt": 0 }, "value": "test", "optional": false }, "function": { "params": [], "decorators": [], "span": { "start": 1085, "end": 1121, "ctxt": 0 }, "body": { "type": "BlockStatement", "span": { "start": 1092, "end": 1121, "ctxt": 0 }, "stmts": [ { "type": "ExpressionStatement", "span": { "start": 1102, "end": 1115, "ctxt": 0 }, "expression": { "type": "CallExpression", "span": { "start": 1102, "end": 1114, "ctxt": 0 }, "callee": { "type": "MemberExpression", "span": { "start": 1102, "end": 1112, "ctxt": 0 }, "object": { "type": "ThisExpression", "span": { "start": 1102, "end": 1106, "ctxt": 0 } }, "property": { "type": "Identifier", "span": { "start": 1107, "end": 1112, "ctxt": 0 }, "value": "print", "optional": false } }, "arguments": [], "typeArguments": null } } ] }, "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": 983, "end": 989, "ctxt": 0 }, "value": "Thing2", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "VariableDeclaration", "span": { "start": 1147, "end": 1287, "ctxt": 0 }, "kind": "const", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 1153, "end": 1287, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1153, "end": 1164, "ctxt": 0 }, "value": "Timestamped", "optional": false, "typeAnnotation": null }, "init": { "type": "ArrowFunctionExpression", "span": { "start": 1167, "end": 1287, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 1200, "end": 1208, "ctxt": 0 }, "value": "Base", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1204, "end": 1208, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1206, "end": 1208, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1206, "end": 1208, "ctxt": 0 }, "value": "CT", "optional": false }, "typeParams": null } } } ], "body": { "type": "BlockStatement", "span": { "start": 1213, "end": 1287, "ctxt": 0 }, "stmts": [ { "type": "ReturnStatement", "span": { "start": 1219, "end": 1285, "ctxt": 0 }, "argument": { "type": "ClassExpression", "identifier": null, "span": { "start": 1226, "end": 1284, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 1255, "end": 1278, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 1255, "end": 1264, "ctxt": 0 }, "value": "timestamp", "optional": false }, "value": { "type": "NewExpression", "span": { "start": 1267, "end": 1277, "ctxt": 0 }, "callee": { "type": "Identifier", "span": { "start": 1271, "end": 1275, "ctxt": 0 }, "value": "Date", "optional": false }, "arguments": [], "typeArguments": null }, "typeAnnotation": null, "isStatic": false, "decorators": [], "accessibility": null, "isAbstract": false, "isOptional": false, "isOverride": false, "readonly": false, "declare": false, "definite": false } ], "superClass": { "type": "Identifier", "span": { "start": 1240, "end": 1244, "ctxt": 0 }, "value": "Base", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] } } ] }, "async": false, "generator": false, "typeParameters": { "type": "TsTypeParameterDeclaration", "span": { "start": 1167, "end": 1199, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1168, "end": 1198, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1168, "end": 1170, "ctxt": 0 }, "value": "CT", "optional": false }, "in": false, "out": false, "const": false, "constraint": { "type": "TsTypeReference", "span": { "start": 1179, "end": 1198, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1179, "end": 1190, "ctxt": 0 }, "value": "Constructor", "optional": false }, "typeParams": { "type": "TsTypeParameterInstantiation", "span": { "start": 1190, "end": 1198, "ctxt": 0 }, "params": [ { "type": "TsKeywordType", "span": { "start": 1191, "end": 1197, "ctxt": 0 }, "kind": "object" } ] } }, "default": null } ] }, "returnType": null }, "definite": false } ] } ], "interpreter": null }