{ "type": "Script", "span": { "start": 24, "end": 1329, "ctxt": 0 }, "body": [ { "type": "TsTypeAliasDeclaration", "span": { "start": 24, "end": 71, "ctxt": 0 }, "declare": false, "id": { "type": "Identifier", "span": { "start": 29, "end": 40, "ctxt": 0 }, "value": "Constructor", "optional": false }, "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 40, "end": 43, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 41, "end": 42, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 41, "end": 42, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 46, "end": 70, "ctxt": 0 }, "params": [ { "type": "RestElement", "span": { "start": 50, "end": 64, "ctxt": 0 }, "rest": { "start": 50, "end": 53, "ctxt": 0 }, "argument": { "type": "Identifier", "span": { "start": 53, "end": 57, "ctxt": 0 }, "value": "args", "optional": false, "typeAnnotation": null }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 57, "end": 64, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 59, "end": 64, "ctxt": 0 }, "elemType": { "type": "TsKeywordType", "span": { "start": 59, "end": 62, "ctxt": 0 }, "kind": "any" } } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 66, "end": 70, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 69, "end": 70, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 69, "end": 70, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "isAbstract": false } }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 79, "end": 83, "ctxt": 0 }, "value": "Base", "optional": false }, "declare": false, "span": { "start": 73, "end": 142, "ctxt": 0 }, "decorators": [], "body": [ { "type": "Constructor", "span": { "start": 90, "end": 140, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 90, "end": 101, "ctxt": 0 }, "value": "constructor", "optional": false }, "params": [ { "type": "TsParameterProperty", "span": { "start": 102, "end": 118, "ctxt": 0 }, "decorators": [], "accessibility": "public", "override": false, "readonly": false, "param": { "type": "Identifier", "span": { "start": 109, "end": 118, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 110, "end": 118, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 112, "end": 118, "ctxt": 0 }, "kind": "number" } } } }, { "type": "TsParameterProperty", "span": { "start": 120, "end": 136, "ctxt": 0 }, "decorators": [], "accessibility": "public", "override": false, "readonly": false, "param": { "type": "Identifier", "span": { "start": 127, "end": 136, "ctxt": 0 }, "value": "y", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 128, "end": 136, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 130, "end": 136, "ctxt": 0 }, "kind": "number" } } } } ], "body": { "type": "BlockStatement", "span": { "start": 138, "end": 140, "ctxt": 0 }, "stmts": [] }, "accessibility": null, "isOptional": false } ], "superClass": null, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 150, "end": 157, "ctxt": 0 }, "value": "Derived", "optional": false }, "declare": false, "span": { "start": 144, "end": 259, "ctxt": 0 }, "decorators": [], "body": [ { "type": "Constructor", "span": { "start": 177, "end": 257, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 177, "end": 188, "ctxt": 0 }, "value": "constructor", "optional": false }, "params": [ { "type": "Parameter", "span": { "start": 189, "end": 198, "ctxt": 0 }, "decorators": [], "pat": { "type": "Identifier", "span": { "start": 189, "end": 198, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 190, "end": 198, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 192, "end": 198, "ctxt": 0 }, "kind": "number" } } } }, { "type": "Parameter", "span": { "start": 200, "end": 209, "ctxt": 0 }, "decorators": [], "pat": { "type": "Identifier", "span": { "start": 200, "end": 209, "ctxt": 0 }, "value": "y", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 201, "end": 209, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 203, "end": 209, "ctxt": 0 }, "kind": "number" } } } }, { "type": "TsParameterProperty", "span": { "start": 211, "end": 227, "ctxt": 0 }, "decorators": [], "accessibility": "public", "override": false, "readonly": false, "param": { "type": "Identifier", "span": { "start": 218, "end": 227, "ctxt": 0 }, "value": "z", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 219, "end": 227, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 221, "end": 227, "ctxt": 0 }, "kind": "number" } } } } ], "body": { "type": "BlockStatement", "span": { "start": 229, "end": 257, "ctxt": 0 }, "stmts": [ { "type": "ExpressionStatement", "span": { "start": 239, "end": 251, "ctxt": 0 }, "expression": { "type": "CallExpression", "span": { "start": 239, "end": 250, "ctxt": 0 }, "callee": { "type": "Super", "span": { "start": 239, "end": 244, "ctxt": 0 } }, "arguments": [ { "spread": null, "expression": { "type": "Identifier", "span": { "start": 245, "end": 246, "ctxt": 0 }, "value": "x", "optional": false } }, { "spread": null, "expression": { "type": "Identifier", "span": { "start": 248, "end": 249, "ctxt": 0 }, "value": "y", "optional": false } } ], "typeArguments": null } } ] }, "accessibility": null, "isOptional": false } ], "superClass": { "type": "Identifier", "span": { "start": 166, "end": 170, "ctxt": 0 }, "value": "Base", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "TsInterfaceDeclaration", "span": { "start": 261, "end": 303, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 271, "end": 280, "ctxt": 0 }, "value": "Printable", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 281, "end": 303, "ctxt": 0 }, "body": [ { "type": "TsMethodSignature", "span": { "start": 287, "end": 301, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 287, "end": 292, "ctxt": 0 }, "value": "print", "optional": false }, "computed": false, "optional": false, "params": [], "typeAnn": { "type": "TsTypeAnnotation", "span": { "start": 294, "end": 300, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 296, "end": 300, "ctxt": 0 }, "kind": "void" } }, "typeParams": null } ] } }, { "type": "VariableDeclaration", "span": { "start": 305, "end": 569, "ctxt": 0 }, "kind": "const", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 311, "end": 569, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 311, "end": 320, "ctxt": 0 }, "value": "Printable", "optional": false, "typeAnnotation": null }, "init": { "type": "ArrowFunctionExpression", "span": { "start": 323, "end": 569, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 353, "end": 366, "ctxt": 0 }, "value": "superClass", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 363, "end": 366, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 365, "end": 366, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 365, "end": 366, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "body": { "type": "ClassExpression", "identifier": null, "span": { "start": 425, "end": 569, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 460, "end": 485, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 467, "end": 474, "ctxt": 0 }, "value": "message", "optional": false }, "value": { "type": "StringLiteral", "span": { "start": 477, "end": 484, "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": 494, "end": 563, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 494, "end": 499, "ctxt": 0 }, "value": "print", "optional": false }, "function": { "params": [], "decorators": [], "span": { "start": 494, "end": 563, "ctxt": 0 }, "body": { "type": "BlockStatement", "span": { "start": 502, "end": 563, "ctxt": 0 }, "stmts": [ { "type": "VariableDeclaration", "span": { "start": 516, "end": 553, "ctxt": 0 }, "kind": "const", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 522, "end": 552, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 522, "end": 528, "ctxt": 0 }, "value": "output", "optional": false, "typeAnnotation": null }, "init": { "type": "BinaryExpression", "span": { "start": 531, "end": 552, "ctxt": 0 }, "operator": "+", "left": { "type": "BinaryExpression", "span": { "start": 531, "end": 543, "ctxt": 0 }, "operator": "+", "left": { "type": "MemberExpression", "span": { "start": 531, "end": 537, "ctxt": 0 }, "object": { "type": "ThisExpression", "span": { "start": 531, "end": 535, "ctxt": 0 } }, "property": { "type": "Identifier", "span": { "start": 536, "end": 537, "ctxt": 0 }, "value": "x", "optional": false } }, "right": { "type": "StringLiteral", "span": { "start": 540, "end": 543, "ctxt": 0 }, "value": ",", "raw": "\",\"" } }, "right": { "type": "MemberExpression", "span": { "start": 546, "end": 552, "ctxt": 0 }, "object": { "type": "ThisExpression", "span": { "start": 546, "end": 550, "ctxt": 0 } }, "property": { "type": "Identifier", "span": { "start": 551, "end": 552, "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": 439, "end": 449, "ctxt": 0 }, "value": "superClass", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, "async": false, "generator": false, "typeParameters": { "type": "TsTypeParameterDeclaration", "span": { "start": 323, "end": 352, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 324, "end": 351, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 324, "end": 325, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": { "type": "TsTypeReference", "span": { "start": 334, "end": 351, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 334, "end": 345, "ctxt": 0 }, "value": "Constructor", "optional": false }, "typeParams": { "type": "TsTypeParameterInstantiation", "span": { "start": 345, "end": 351, "ctxt": 0 }, "params": [ { "type": "TsTypeReference", "span": { "start": 346, "end": 350, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 346, "end": 350, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } ] } }, "default": null } ] }, "returnType": { "type": "TsTypeAnnotation", "span": { "start": 367, "end": 417, "ctxt": 0 }, "typeAnnotation": { "type": "TsIntersectionType", "span": { "start": 369, "end": 417, "ctxt": 0 }, "types": [ { "type": "TsTypeReference", "span": { "start": 369, "end": 391, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 369, "end": 380, "ctxt": 0 }, "value": "Constructor", "optional": false }, "typeParams": { "type": "TsTypeParameterInstantiation", "span": { "start": 380, "end": 391, "ctxt": 0 }, "params": [ { "type": "TsTypeReference", "span": { "start": 381, "end": 390, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 381, "end": 390, "ctxt": 0 }, "value": "Printable", "optional": false }, "typeParams": null } ] } }, { "type": "TsTypeLiteral", "span": { "start": 394, "end": 413, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 396, "end": 411, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 396, "end": 403, "ctxt": 0 }, "value": "message", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 403, "end": 411, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 405, "end": 411, "ctxt": 0 }, "kind": "string" } }, "typeParams": null } ] }, { "type": "TsTypeReference", "span": { "start": 416, "end": 417, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 416, "end": 417, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } ] } } }, "definite": false } ] }, { "type": "TsInterfaceDeclaration", "span": { "start": 571, "end": 609, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 581, "end": 587, "ctxt": 0 }, "value": "Tagged", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 588, "end": 609, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 594, "end": 607, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 594, "end": 598, "ctxt": 0 }, "value": "_tag", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 598, "end": 606, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 600, "end": 606, "ctxt": 0 }, "kind": "string" } }, "typeParams": null } ] } }, { "type": "FunctionDeclaration", "identifier": { "type": "Identifier", "span": { "start": 620, "end": 626, "ctxt": 0 }, "value": "Tagged", "optional": false }, "declare": false, "params": [ { "type": "Parameter", "span": { "start": 654, "end": 667, "ctxt": 0 }, "decorators": [], "pat": { "type": "Identifier", "span": { "start": 654, "end": 667, "ctxt": 0 }, "value": "superClass", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 664, "end": 667, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 666, "end": 667, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 666, "end": 667, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } } ], "decorators": [], "span": { "start": 611, "end": 881, "ctxt": 0 }, "body": { "type": "BlockStatement", "span": { "start": 694, "end": 881, "ctxt": 0 }, "stmts": [ { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 706, "end": 707, "ctxt": 0 }, "value": "C", "optional": false }, "declare": false, "span": { "start": 700, "end": 865, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 737, "end": 750, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 737, "end": 741, "ctxt": 0 }, "value": "_tag", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 741, "end": 749, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 743, "end": 749, "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": 759, "end": 859, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 759, "end": 770, "ctxt": 0 }, "value": "constructor", "optional": false }, "params": [ { "type": "Parameter", "span": { "start": 771, "end": 785, "ctxt": 0 }, "decorators": [], "pat": { "type": "RestElement", "span": { "start": 771, "end": 785, "ctxt": 0 }, "rest": { "start": 771, "end": 774, "ctxt": 0 }, "argument": { "type": "Identifier", "span": { "start": 774, "end": 778, "ctxt": 0 }, "value": "args", "optional": false, "typeAnnotation": null }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 778, "end": 785, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 780, "end": 785, "ctxt": 0 }, "elemType": { "type": "TsKeywordType", "span": { "start": 780, "end": 783, "ctxt": 0 }, "kind": "any" } } } } } ], "body": { "type": "BlockStatement", "span": { "start": 787, "end": 859, "ctxt": 0 }, "stmts": [ { "type": "ExpressionStatement", "span": { "start": 801, "end": 816, "ctxt": 0 }, "expression": { "type": "CallExpression", "span": { "start": 801, "end": 815, "ctxt": 0 }, "callee": { "type": "Super", "span": { "start": 801, "end": 806, "ctxt": 0 } }, "arguments": [ { "spread": { "start": 807, "end": 810, "ctxt": 0 }, "expression": { "type": "Identifier", "span": { "start": 810, "end": 814, "ctxt": 0 }, "value": "args", "optional": false } } ], "typeArguments": null } }, { "type": "ExpressionStatement", "span": { "start": 829, "end": 849, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 829, "end": 848, "ctxt": 0 }, "operator": "=", "left": { "type": "MemberExpression", "span": { "start": 829, "end": 838, "ctxt": 0 }, "object": { "type": "ThisExpression", "span": { "start": 829, "end": 833, "ctxt": 0 } }, "property": { "type": "Identifier", "span": { "start": 834, "end": 838, "ctxt": 0 }, "value": "_tag", "optional": false } }, "right": { "type": "StringLiteral", "span": { "start": 841, "end": 848, "ctxt": 0 }, "value": "hello", "raw": "\"hello\"" } } } ] }, "accessibility": null, "isOptional": false } ], "superClass": { "type": "Identifier", "span": { "start": 716, "end": 726, "ctxt": 0 }, "value": "superClass", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "ReturnStatement", "span": { "start": 870, "end": 879, "ctxt": 0 }, "argument": { "type": "Identifier", "span": { "start": 877, "end": 878, "ctxt": 0 }, "value": "C", "optional": false } } ] }, "generator": false, "async": false, "typeParameters": { "type": "TsTypeParameterDeclaration", "span": { "start": 626, "end": 653, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 627, "end": 652, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 627, "end": 628, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": { "type": "TsTypeReference", "span": { "start": 637, "end": 652, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 637, "end": 648, "ctxt": 0 }, "value": "Constructor", "optional": false }, "typeParams": { "type": "TsTypeParameterInstantiation", "span": { "start": 648, "end": 652, "ctxt": 0 }, "params": [ { "type": "TsTypeLiteral", "span": { "start": 649, "end": 651, "ctxt": 0 }, "members": [] } ] } }, "default": null } ] }, "returnType": { "type": "TsTypeAnnotation", "span": { "start": 668, "end": 693, "ctxt": 0 }, "typeAnnotation": { "type": "TsIntersectionType", "span": { "start": 670, "end": 693, "ctxt": 0 }, "types": [ { "type": "TsTypeReference", "span": { "start": 670, "end": 689, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 670, "end": 681, "ctxt": 0 }, "value": "Constructor", "optional": false }, "typeParams": { "type": "TsTypeParameterInstantiation", "span": { "start": 681, "end": 689, "ctxt": 0 }, "params": [ { "type": "TsTypeReference", "span": { "start": 682, "end": 688, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 682, "end": 688, "ctxt": 0 }, "value": "Tagged", "optional": false }, "typeParams": null } ] } }, { "type": "TsTypeReference", "span": { "start": 692, "end": 693, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 692, "end": 693, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } ] } } }, { "type": "VariableDeclaration", "span": { "start": 883, "end": 914, "ctxt": 0 }, "kind": "const", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 889, "end": 913, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 889, "end": 895, "ctxt": 0 }, "value": "Thing1", "optional": false, "typeAnnotation": null }, "init": { "type": "CallExpression", "span": { "start": 898, "end": 913, "ctxt": 0 }, "callee": { "type": "Identifier", "span": { "start": 898, "end": 904, "ctxt": 0 }, "value": "Tagged", "optional": false }, "arguments": [ { "spread": null, "expression": { "type": "Identifier", "span": { "start": 905, "end": 912, "ctxt": 0 }, "value": "Derived", "optional": false } } ], "typeArguments": null }, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 915, "end": 957, "ctxt": 0 }, "kind": "const", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 921, "end": 956, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 921, "end": 927, "ctxt": 0 }, "value": "Thing2", "optional": false, "typeAnnotation": null }, "init": { "type": "CallExpression", "span": { "start": 930, "end": 956, "ctxt": 0 }, "callee": { "type": "Identifier", "span": { "start": 930, "end": 936, "ctxt": 0 }, "value": "Tagged", "optional": false }, "arguments": [ { "spread": null, "expression": { "type": "CallExpression", "span": { "start": 937, "end": 955, "ctxt": 0 }, "callee": { "type": "Identifier", "span": { "start": 937, "end": 946, "ctxt": 0 }, "value": "Printable", "optional": false }, "arguments": [ { "spread": null, "expression": { "type": "Identifier", "span": { "start": 947, "end": 954, "ctxt": 0 }, "value": "Derived", "optional": false } } ], "typeArguments": null } } ], "typeArguments": null }, "definite": false } ] }, { "type": "ExpressionStatement", "span": { "start": 958, "end": 973, "ctxt": 0 }, "expression": { "type": "MemberExpression", "span": { "start": 958, "end": 972, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 958, "end": 964, "ctxt": 0 }, "value": "Thing2", "optional": false }, "property": { "type": "Identifier", "span": { "start": 965, "end": 972, "ctxt": 0 }, "value": "message", "optional": false } } }, { "type": "FunctionDeclaration", "identifier": { "type": "Identifier", "span": { "start": 984, "end": 986, "ctxt": 0 }, "value": "f1", "optional": false }, "declare": false, "params": [], "decorators": [], "span": { "start": 975, "end": 1060, "ctxt": 0 }, "body": { "type": "BlockStatement", "span": { "start": 989, "end": 1060, "ctxt": 0 }, "stmts": [ { "type": "VariableDeclaration", "span": { "start": 995, "end": 1029, "ctxt": 0 }, "kind": "const", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 1001, "end": 1028, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1001, "end": 1006, "ctxt": 0 }, "value": "thing", "optional": false, "typeAnnotation": null }, "init": { "type": "NewExpression", "span": { "start": 1009, "end": 1028, "ctxt": 0 }, "callee": { "type": "Identifier", "span": { "start": 1013, "end": 1019, "ctxt": 0 }, "value": "Thing1", "optional": false }, "arguments": [ { "spread": null, "expression": { "type": "NumericLiteral", "span": { "start": 1020, "end": 1021, "ctxt": 0 }, "value": 1.0, "raw": "1" } }, { "spread": null, "expression": { "type": "NumericLiteral", "span": { "start": 1023, "end": 1024, "ctxt": 0 }, "value": 2.0, "raw": "2" } }, { "spread": null, "expression": { "type": "NumericLiteral", "span": { "start": 1026, "end": 1027, "ctxt": 0 }, "value": 3.0, "raw": "3" } } ], "typeArguments": null }, "definite": false } ] }, { "type": "ExpressionStatement", "span": { "start": 1034, "end": 1042, "ctxt": 0 }, "expression": { "type": "MemberExpression", "span": { "start": 1034, "end": 1041, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 1034, "end": 1039, "ctxt": 0 }, "value": "thing", "optional": false }, "property": { "type": "Identifier", "span": { "start": 1040, "end": 1041, "ctxt": 0 }, "value": "x", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1047, "end": 1058, "ctxt": 0 }, "expression": { "type": "MemberExpression", "span": { "start": 1047, "end": 1057, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 1047, "end": 1052, "ctxt": 0 }, "value": "thing", "optional": false }, "property": { "type": "Identifier", "span": { "start": 1053, "end": 1057, "ctxt": 0 }, "value": "_tag", "optional": false } } } ] }, "generator": false, "async": false, "typeParameters": null, "returnType": null }, { "type": "FunctionDeclaration", "identifier": { "type": "Identifier", "span": { "start": 1071, "end": 1073, "ctxt": 0 }, "value": "f2", "optional": false }, "declare": false, "params": [], "decorators": [], "span": { "start": 1062, "end": 1166, "ctxt": 0 }, "body": { "type": "BlockStatement", "span": { "start": 1076, "end": 1166, "ctxt": 0 }, "stmts": [ { "type": "VariableDeclaration", "span": { "start": 1082, "end": 1116, "ctxt": 0 }, "kind": "const", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 1088, "end": 1115, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1088, "end": 1093, "ctxt": 0 }, "value": "thing", "optional": false, "typeAnnotation": null }, "init": { "type": "NewExpression", "span": { "start": 1096, "end": 1115, "ctxt": 0 }, "callee": { "type": "Identifier", "span": { "start": 1100, "end": 1106, "ctxt": 0 }, "value": "Thing2", "optional": false }, "arguments": [ { "spread": null, "expression": { "type": "NumericLiteral", "span": { "start": 1107, "end": 1108, "ctxt": 0 }, "value": 1.0, "raw": "1" } }, { "spread": null, "expression": { "type": "NumericLiteral", "span": { "start": 1110, "end": 1111, "ctxt": 0 }, "value": 2.0, "raw": "2" } }, { "spread": null, "expression": { "type": "NumericLiteral", "span": { "start": 1113, "end": 1114, "ctxt": 0 }, "value": 3.0, "raw": "3" } } ], "typeArguments": null }, "definite": false } ] }, { "type": "ExpressionStatement", "span": { "start": 1121, "end": 1129, "ctxt": 0 }, "expression": { "type": "MemberExpression", "span": { "start": 1121, "end": 1128, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 1121, "end": 1126, "ctxt": 0 }, "value": "thing", "optional": false }, "property": { "type": "Identifier", "span": { "start": 1127, "end": 1128, "ctxt": 0 }, "value": "x", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1134, "end": 1145, "ctxt": 0 }, "expression": { "type": "MemberExpression", "span": { "start": 1134, "end": 1144, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 1134, "end": 1139, "ctxt": 0 }, "value": "thing", "optional": false }, "property": { "type": "Identifier", "span": { "start": 1140, "end": 1144, "ctxt": 0 }, "value": "_tag", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1150, "end": 1164, "ctxt": 0 }, "expression": { "type": "CallExpression", "span": { "start": 1150, "end": 1163, "ctxt": 0 }, "callee": { "type": "MemberExpression", "span": { "start": 1150, "end": 1161, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 1150, "end": 1155, "ctxt": 0 }, "value": "thing", "optional": false }, "property": { "type": "Identifier", "span": { "start": 1156, "end": 1161, "ctxt": 0 }, "value": "print", "optional": false } }, "arguments": [], "typeArguments": null } } ] }, "generator": false, "async": false, "typeParameters": null, "returnType": null }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 1174, "end": 1180, "ctxt": 0 }, "value": "Thing3", "optional": false }, "declare": false, "span": { "start": 1168, "end": 1329, "ctxt": 0 }, "decorators": [], "body": [ { "type": "Constructor", "span": { "start": 1202, "end": 1286, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 1202, "end": 1213, "ctxt": 0 }, "value": "constructor", "optional": false }, "params": [ { "type": "Parameter", "span": { "start": 1214, "end": 1225, "ctxt": 0 }, "decorators": [], "pat": { "type": "Identifier", "span": { "start": 1214, "end": 1225, "ctxt": 0 }, "value": "tag", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1217, "end": 1225, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 1219, "end": 1225, "ctxt": 0 }, "kind": "string" } } } } ], "body": { "type": "BlockStatement", "span": { "start": 1227, "end": 1286, "ctxt": 0 }, "stmts": [ { "type": "ExpressionStatement", "span": { "start": 1237, "end": 1255, "ctxt": 0 }, "expression": { "type": "CallExpression", "span": { "start": 1237, "end": 1254, "ctxt": 0 }, "callee": { "type": "Super", "span": { "start": 1237, "end": 1242, "ctxt": 0 } }, "arguments": [ { "spread": null, "expression": { "type": "NumericLiteral", "span": { "start": 1243, "end": 1245, "ctxt": 0 }, "value": 10.0, "raw": "10" } }, { "spread": null, "expression": { "type": "NumericLiteral", "span": { "start": 1247, "end": 1249, "ctxt": 0 }, "value": 20.0, "raw": "20" } }, { "spread": null, "expression": { "type": "NumericLiteral", "span": { "start": 1251, "end": 1253, "ctxt": 0 }, "value": 30.0, "raw": "30" } } ], "typeArguments": null } }, { "type": "ExpressionStatement", "span": { "start": 1264, "end": 1280, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1264, "end": 1279, "ctxt": 0 }, "operator": "=", "left": { "type": "MemberExpression", "span": { "start": 1264, "end": 1273, "ctxt": 0 }, "object": { "type": "ThisExpression", "span": { "start": 1264, "end": 1268, "ctxt": 0 } }, "property": { "type": "Identifier", "span": { "start": 1269, "end": 1273, "ctxt": 0 }, "value": "_tag", "optional": false } }, "right": { "type": "Identifier", "span": { "start": 1276, "end": 1279, "ctxt": 0 }, "value": "tag", "optional": false } } } ] }, "accessibility": null, "isOptional": false }, { "type": "ClassMethod", "span": { "start": 1291, "end": 1327, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 1291, "end": 1295, "ctxt": 0 }, "value": "test", "optional": false }, "function": { "params": [], "decorators": [], "span": { "start": 1291, "end": 1327, "ctxt": 0 }, "body": { "type": "BlockStatement", "span": { "start": 1298, "end": 1327, "ctxt": 0 }, "stmts": [ { "type": "ExpressionStatement", "span": { "start": 1308, "end": 1321, "ctxt": 0 }, "expression": { "type": "CallExpression", "span": { "start": 1308, "end": 1320, "ctxt": 0 }, "callee": { "type": "MemberExpression", "span": { "start": 1308, "end": 1318, "ctxt": 0 }, "object": { "type": "ThisExpression", "span": { "start": 1308, "end": 1312, "ctxt": 0 } }, "property": { "type": "Identifier", "span": { "start": 1313, "end": 1318, "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": 1189, "end": 1195, "ctxt": 0 }, "value": "Thing2", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] } ], "interpreter": null }