swc/crates/swc_ecma_parser/tests/tsc/controlFlowOptionalChain.json

22240 lines
631 KiB
JSON

{
"type": "Script",
"span": {
"start": 87,
"end": 10237,
"ctxt": 0
},
"body": [
{
"type": "VariableDeclaration",
"span": {
"start": 87,
"end": 195,
"ctxt": 0
},
"kind": "const",
"declare": true,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 101,
"end": 194,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 101,
"end": 102,
"ctxt": 0
},
"value": "o",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 102,
"end": 194,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 104,
"end": 194,
"ctxt": 0
},
"types": [
{
"type": "TsKeywordType",
"span": {
"start": 104,
"end": 113,
"ctxt": 0
},
"kind": "undefined"
},
{
"type": "TsTypeLiteral",
"span": {
"start": 116,
"end": 194,
"ctxt": 0
},
"members": [
{
"type": "TsIndexSignature",
"params": [
{
"type": "Identifier",
"span": {
"start": 123,
"end": 134,
"ctxt": 0
},
"value": "key",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 126,
"end": 134,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 128,
"end": 134,
"ctxt": 0
},
"kind": "string"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 135,
"end": 140,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 137,
"end": 140,
"ctxt": 0
},
"kind": "any"
}
},
"readonly": false,
"static": false,
"span": {
"start": 122,
"end": 141,
"ctxt": 0
}
},
{
"type": "TsIndexSignature",
"params": [
{
"type": "Identifier",
"span": {
"start": 147,
"end": 158,
"ctxt": 0
},
"value": "key",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 150,
"end": 158,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 152,
"end": 158,
"ctxt": 0
},
"kind": "number"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 159,
"end": 164,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 161,
"end": 164,
"ctxt": 0
},
"kind": "any"
}
},
"readonly": false,
"static": false,
"span": {
"start": 146,
"end": 165,
"ctxt": 0
}
},
{
"type": "TsCallSignatureDeclaration",
"span": {
"start": 170,
"end": 192,
"ctxt": 0
},
"params": [
{
"type": "RestElement",
"span": {
"start": 171,
"end": 185,
"ctxt": 0
},
"rest": {
"start": 171,
"end": 174,
"ctxt": 0
},
"argument": {
"type": "Identifier",
"span": {
"start": 174,
"end": 178,
"ctxt": 0
},
"value": "args",
"optional": false,
"typeAnnotation": null
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 178,
"end": 185,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 180,
"end": 185,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 180,
"end": 183,
"ctxt": 0
},
"kind": "any"
}
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 186,
"end": 191,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 188,
"end": 191,
"ctxt": 0
},
"kind": "any"
}
},
"typeParams": null
}
]
}
]
}
}
},
"init": null,
"definite": false
}
]
},
{
"type": "VariableDeclaration",
"span": {
"start": 197,
"end": 211,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 201,
"end": 210,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 201,
"end": 202,
"ctxt": 0
},
"value": "a",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 202,
"end": 210,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 204,
"end": 210,
"ctxt": 0
},
"kind": "number"
}
}
},
"init": null,
"definite": false
}
]
},
{
"type": "ExpressionStatement",
"span": {
"start": 212,
"end": 223,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 212,
"end": 222,
"ctxt": 0
},
"questionDotToken": {
"start": 213,
"end": 214,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 212,
"end": 222,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 212,
"end": 213,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 215,
"end": 222,
"ctxt": 0
},
"expression": {
"type": "AssignmentExpression",
"span": {
"start": 216,
"end": 221,
"ctxt": 0
},
"operator": "=",
"left": {
"type": "Identifier",
"span": {
"start": 216,
"end": 217,
"ctxt": 0
},
"value": "a",
"optional": false,
"typeAnnotation": null
},
"right": {
"type": "NumericLiteral",
"span": {
"start": 220,
"end": 221,
"ctxt": 0
},
"value": 1.0
}
}
}
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 224,
"end": 237,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 224,
"end": 236,
"ctxt": 0
},
"callee": {
"type": "MemberExpression",
"span": {
"start": 224,
"end": 234,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 224,
"end": 225,
"ctxt": 0
},
"value": "a",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 226,
"end": 234,
"ctxt": 0
},
"value": "toString",
"optional": false
}
},
"arguments": [],
"typeArguments": null
}
},
{
"type": "VariableDeclaration",
"span": {
"start": 239,
"end": 253,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 243,
"end": 252,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 243,
"end": 244,
"ctxt": 0
},
"value": "b",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 244,
"end": 252,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 246,
"end": 252,
"ctxt": 0
},
"kind": "number"
}
}
},
"init": null,
"definite": false
}
]
},
{
"type": "ExpressionStatement",
"span": {
"start": 254,
"end": 266,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 254,
"end": 265,
"ctxt": 0
},
"object": {
"type": "OptionalChainingExpression",
"span": {
"start": 254,
"end": 258,
"ctxt": 0
},
"questionDotToken": {
"start": 255,
"end": 256,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 254,
"end": 258,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 254,
"end": 255,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 257,
"end": 258,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
},
"property": {
"type": "Computed",
"span": {
"start": 258,
"end": 265,
"ctxt": 0
},
"expression": {
"type": "AssignmentExpression",
"span": {
"start": 259,
"end": 264,
"ctxt": 0
},
"operator": "=",
"left": {
"type": "Identifier",
"span": {
"start": 259,
"end": 260,
"ctxt": 0
},
"value": "b",
"optional": false,
"typeAnnotation": null
},
"right": {
"type": "NumericLiteral",
"span": {
"start": 263,
"end": 264,
"ctxt": 0
},
"value": 1.0
}
}
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 267,
"end": 280,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 267,
"end": 279,
"ctxt": 0
},
"callee": {
"type": "MemberExpression",
"span": {
"start": 267,
"end": 277,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 267,
"end": 268,
"ctxt": 0
},
"value": "b",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 269,
"end": 277,
"ctxt": 0
},
"value": "toString",
"optional": false
}
},
"arguments": [],
"typeArguments": null
}
},
{
"type": "VariableDeclaration",
"span": {
"start": 282,
"end": 296,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 286,
"end": 295,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 286,
"end": 287,
"ctxt": 0
},
"value": "c",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 287,
"end": 295,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 289,
"end": 295,
"ctxt": 0
},
"kind": "number"
}
}
},
"init": null,
"definite": false
}
]
},
{
"type": "ExpressionStatement",
"span": {
"start": 297,
"end": 307,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 297,
"end": 307,
"ctxt": 0
},
"questionDotToken": {
"start": 298,
"end": 299,
"ctxt": 0
},
"base": {
"type": "CallExpression",
"span": {
"start": 297,
"end": 307,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 297,
"end": 298,
"ctxt": 0
},
"value": "o",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "AssignmentExpression",
"span": {
"start": 301,
"end": 306,
"ctxt": 0
},
"operator": "=",
"left": {
"type": "Identifier",
"span": {
"start": 301,
"end": 302,
"ctxt": 0
},
"value": "c",
"optional": false,
"typeAnnotation": null
},
"right": {
"type": "NumericLiteral",
"span": {
"start": 305,
"end": 306,
"ctxt": 0
},
"value": 1.0
}
}
}
],
"typeArguments": null
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 308,
"end": 321,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 308,
"end": 320,
"ctxt": 0
},
"callee": {
"type": "MemberExpression",
"span": {
"start": 308,
"end": 318,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 308,
"end": 309,
"ctxt": 0
},
"value": "c",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 310,
"end": 318,
"ctxt": 0
},
"value": "toString",
"optional": false
}
},
"arguments": [],
"typeArguments": null
}
},
{
"type": "VariableDeclaration",
"span": {
"start": 323,
"end": 337,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 327,
"end": 336,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 327,
"end": 328,
"ctxt": 0
},
"value": "d",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 328,
"end": 336,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 330,
"end": 336,
"ctxt": 0
},
"kind": "number"
}
}
},
"init": null,
"definite": false
}
]
},
{
"type": "ExpressionStatement",
"span": {
"start": 338,
"end": 350,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 338,
"end": 349,
"ctxt": 0
},
"callee": {
"type": "OptionalChainingExpression",
"span": {
"start": 338,
"end": 342,
"ctxt": 0
},
"questionDotToken": {
"start": 339,
"end": 340,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 338,
"end": 342,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 338,
"end": 339,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 341,
"end": 342,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
},
"arguments": [
{
"spread": null,
"expression": {
"type": "AssignmentExpression",
"span": {
"start": 343,
"end": 348,
"ctxt": 0
},
"operator": "=",
"left": {
"type": "Identifier",
"span": {
"start": 343,
"end": 344,
"ctxt": 0
},
"value": "d",
"optional": false,
"typeAnnotation": null
},
"right": {
"type": "NumericLiteral",
"span": {
"start": 347,
"end": 348,
"ctxt": 0
},
"value": 1.0
}
}
}
],
"typeArguments": null
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 351,
"end": 364,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 351,
"end": 363,
"ctxt": 0
},
"callee": {
"type": "MemberExpression",
"span": {
"start": 351,
"end": 361,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 351,
"end": 352,
"ctxt": 0
},
"value": "d",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 353,
"end": 361,
"ctxt": 0
},
"value": "toString",
"optional": false
}
},
"arguments": [],
"typeArguments": null
}
},
{
"type": "VariableDeclaration",
"span": {
"start": 385,
"end": 440,
"ctxt": 0
},
"kind": "const",
"declare": true,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 399,
"end": 439,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 399,
"end": 400,
"ctxt": 0
},
"value": "f",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 400,
"end": 439,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 402,
"end": 439,
"ctxt": 0
},
"types": [
{
"type": "TsKeywordType",
"span": {
"start": 402,
"end": 411,
"ctxt": 0
},
"kind": "undefined"
},
{
"type": "TsParenthesizedType",
"span": {
"start": 414,
"end": 439,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 415,
"end": 438,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 416,
"end": 422,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 417,
"end": 422,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 419,
"end": 422,
"ctxt": 0
},
"kind": "any"
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 424,
"end": 438,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypePredicate",
"span": {
"start": 427,
"end": 438,
"ctxt": 0
},
"asserts": false,
"paramName": {
"type": "Identifier",
"span": {
"start": 427,
"end": 428,
"ctxt": 0
},
"value": "x",
"optional": false
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 432,
"end": 438,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 432,
"end": 438,
"ctxt": 0
},
"kind": "number"
}
}
}
}
}
}
]
}
}
},
"init": null,
"definite": false
}
]
},
{
"type": "VariableDeclaration",
"span": {
"start": 441,
"end": 474,
"ctxt": 0
},
"kind": "const",
"declare": true,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 455,
"end": 473,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 455,
"end": 456,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 456,
"end": 473,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 458,
"end": 473,
"ctxt": 0
},
"types": [
{
"type": "TsKeywordType",
"span": {
"start": 458,
"end": 464,
"ctxt": 0
},
"kind": "string"
},
{
"type": "TsKeywordType",
"span": {
"start": 467,
"end": 473,
"ctxt": 0
},
"kind": "number"
}
]
}
}
},
"init": null,
"definite": false
}
]
},
{
"type": "IfStatement",
"span": {
"start": 475,
"end": 584,
"ctxt": 0
},
"test": {
"type": "OptionalChainingExpression",
"span": {
"start": 479,
"end": 485,
"ctxt": 0
},
"questionDotToken": {
"start": 480,
"end": 481,
"ctxt": 0
},
"base": {
"type": "CallExpression",
"span": {
"start": 479,
"end": 485,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 479,
"end": 480,
"ctxt": 0
},
"value": "f",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 483,
"end": 484,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
],
"typeArguments": null
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 487,
"end": 551,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 493,
"end": 495,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 493,
"end": 494,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 510,
"end": 512,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 510,
"end": 511,
"ctxt": 0
},
"value": "f",
"optional": false
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 544,
"end": 549,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 544,
"end": 548,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 544,
"end": 545,
"ctxt": 0
},
"value": "f",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 546,
"end": 547,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
],
"typeArguments": null
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 557,
"end": 584,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 563,
"end": 565,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 563,
"end": 564,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 570,
"end": 572,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 570,
"end": 571,
"ctxt": 0
},
"value": "f",
"optional": false
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 577,
"end": 582,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 577,
"end": 581,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 577,
"end": 578,
"ctxt": 0
},
"value": "f",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 579,
"end": 580,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
],
"typeArguments": null
}
}
]
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 585,
"end": 587,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 585,
"end": 586,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 588,
"end": 590,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 588,
"end": 589,
"ctxt": 0
},
"value": "f",
"optional": false
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 591,
"end": 596,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 591,
"end": 595,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 591,
"end": 592,
"ctxt": 0
},
"value": "f",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 593,
"end": 594,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
],
"typeArguments": null
}
},
{
"type": "VariableDeclaration",
"span": {
"start": 598,
"end": 656,
"ctxt": 0
},
"kind": "const",
"declare": true,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 612,
"end": 655,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 612,
"end": 614,
"ctxt": 0
},
"value": "o2",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 614,
"end": 655,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 616,
"end": 655,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 616,
"end": 643,
"ctxt": 0
},
"members": [
{
"type": "TsMethodSignature",
"span": {
"start": 618,
"end": 641,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 618,
"end": 619,
"ctxt": 0
},
"value": "f",
"optional": false
},
"computed": false,
"optional": false,
"params": [
{
"type": "Identifier",
"span": {
"start": 620,
"end": 626,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 621,
"end": 626,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 623,
"end": 626,
"ctxt": 0
},
"kind": "any"
}
}
}
],
"typeAnn": {
"type": "TsTypeAnnotation",
"span": {
"start": 627,
"end": 640,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypePredicate",
"span": {
"start": 629,
"end": 640,
"ctxt": 0
},
"asserts": false,
"paramName": {
"type": "Identifier",
"span": {
"start": 629,
"end": 630,
"ctxt": 0
},
"value": "x",
"optional": false
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 634,
"end": 640,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 634,
"end": 640,
"ctxt": 0
},
"kind": "number"
}
}
}
},
"typeParams": null
}
]
},
{
"type": "TsKeywordType",
"span": {
"start": 646,
"end": 655,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
},
"init": null,
"definite": false
}
]
},
{
"type": "IfStatement",
"span": {
"start": 657,
"end": 798,
"ctxt": 0
},
"test": {
"type": "CallExpression",
"span": {
"start": 661,
"end": 669,
"ctxt": 0
},
"callee": {
"type": "OptionalChainingExpression",
"span": {
"start": 661,
"end": 666,
"ctxt": 0
},
"questionDotToken": {
"start": 663,
"end": 664,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 661,
"end": 666,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 661,
"end": 663,
"ctxt": 0
},
"value": "o2",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 665,
"end": 666,
"ctxt": 0
},
"value": "f",
"optional": false
}
}
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 667,
"end": 668,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
],
"typeArguments": null
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 671,
"end": 753,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 677,
"end": 679,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 677,
"end": 678,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 694,
"end": 699,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 694,
"end": 698,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 694,
"end": 696,
"ctxt": 0
},
"value": "o2",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 697,
"end": 698,
"ctxt": 0
},
"value": "f",
"optional": false
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 731,
"end": 737,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 731,
"end": 736,
"ctxt": 0
},
"questionDotToken": {
"start": 733,
"end": 734,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 731,
"end": 736,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 731,
"end": 733,
"ctxt": 0
},
"value": "o2",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 735,
"end": 736,
"ctxt": 0
},
"value": "f",
"optional": false
}
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 742,
"end": 751,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 742,
"end": 750,
"ctxt": 0
},
"callee": {
"type": "OptionalChainingExpression",
"span": {
"start": 742,
"end": 747,
"ctxt": 0
},
"questionDotToken": {
"start": 744,
"end": 745,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 742,
"end": 747,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 742,
"end": 744,
"ctxt": 0
},
"value": "o2",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 746,
"end": 747,
"ctxt": 0
},
"value": "f",
"optional": false
}
}
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 748,
"end": 749,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
],
"typeArguments": null
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 759,
"end": 798,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 765,
"end": 767,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 765,
"end": 766,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 772,
"end": 775,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 772,
"end": 774,
"ctxt": 0
},
"value": "o2",
"optional": false
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 780,
"end": 786,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 780,
"end": 785,
"ctxt": 0
},
"questionDotToken": {
"start": 782,
"end": 783,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 780,
"end": 785,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 780,
"end": 782,
"ctxt": 0
},
"value": "o2",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 784,
"end": 785,
"ctxt": 0
},
"value": "f",
"optional": false
}
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 791,
"end": 796,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 791,
"end": 795,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 791,
"end": 793,
"ctxt": 0
},
"value": "o2",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 794,
"end": 795,
"ctxt": 0
},
"value": "f",
"optional": false
}
}
}
]
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 799,
"end": 801,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 799,
"end": 800,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 802,
"end": 805,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 802,
"end": 804,
"ctxt": 0
},
"value": "o2",
"optional": false
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 806,
"end": 812,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 806,
"end": 811,
"ctxt": 0
},
"questionDotToken": {
"start": 808,
"end": 809,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 806,
"end": 811,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 806,
"end": 808,
"ctxt": 0
},
"value": "o2",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 810,
"end": 811,
"ctxt": 0
},
"value": "f",
"optional": false
}
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 813,
"end": 818,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 813,
"end": 817,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 813,
"end": 815,
"ctxt": 0
},
"value": "o2",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 816,
"end": 817,
"ctxt": 0
},
"value": "f",
"optional": false
}
}
},
{
"type": "VariableDeclaration",
"span": {
"start": 820,
"end": 892,
"ctxt": 0
},
"kind": "const",
"declare": true,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 834,
"end": 891,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 834,
"end": 836,
"ctxt": 0
},
"value": "o3",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 836,
"end": 891,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 838,
"end": 891,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 838,
"end": 857,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 840,
"end": 845,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 840,
"end": 841,
"ctxt": 0
},
"value": "x",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 841,
"end": 844,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsLiteralType",
"span": {
"start": 843,
"end": 844,
"ctxt": 0
},
"literal": {
"type": "NumericLiteral",
"span": {
"start": 843,
"end": 844,
"ctxt": 0
},
"value": 1.0
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 846,
"end": 855,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 846,
"end": 847,
"ctxt": 0
},
"value": "y",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 847,
"end": 855,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 849,
"end": 855,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": null
}
]
},
{
"type": "TsTypeLiteral",
"span": {
"start": 860,
"end": 879,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 862,
"end": 867,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 862,
"end": 863,
"ctxt": 0
},
"value": "x",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 863,
"end": 866,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsLiteralType",
"span": {
"start": 865,
"end": 866,
"ctxt": 0
},
"literal": {
"type": "NumericLiteral",
"span": {
"start": 865,
"end": 866,
"ctxt": 0
},
"value": 2.0
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 868,
"end": 877,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 868,
"end": 869,
"ctxt": 0
},
"value": "y",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 869,
"end": 877,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 871,
"end": 877,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
}
]
},
{
"type": "TsKeywordType",
"span": {
"start": 882,
"end": 891,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
},
"init": null,
"definite": false
}
]
},
{
"type": "IfStatement",
"span": {
"start": 893,
"end": 980,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 897,
"end": 908,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 897,
"end": 902,
"ctxt": 0
},
"questionDotToken": {
"start": 899,
"end": 900,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 897,
"end": 902,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 897,
"end": 899,
"ctxt": 0
},
"value": "o3",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 901,
"end": 902,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
},
"right": {
"type": "NumericLiteral",
"span": {
"start": 907,
"end": 908,
"ctxt": 0
},
"value": 1.0
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 910,
"end": 942,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 916,
"end": 919,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 916,
"end": 918,
"ctxt": 0
},
"value": "o3",
"optional": false
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 924,
"end": 929,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 924,
"end": 928,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 924,
"end": 926,
"ctxt": 0
},
"value": "o3",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 927,
"end": 928,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 934,
"end": 940,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 934,
"end": 939,
"ctxt": 0
},
"questionDotToken": {
"start": 936,
"end": 937,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 934,
"end": 939,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 934,
"end": 936,
"ctxt": 0
},
"value": "o3",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 938,
"end": 939,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 948,
"end": 980,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 954,
"end": 957,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 954,
"end": 956,
"ctxt": 0
},
"value": "o3",
"optional": false
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 962,
"end": 968,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 962,
"end": 967,
"ctxt": 0
},
"questionDotToken": {
"start": 964,
"end": 965,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 962,
"end": 967,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 962,
"end": 964,
"ctxt": 0
},
"value": "o3",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 966,
"end": 967,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 973,
"end": 978,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 973,
"end": 977,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 973,
"end": 975,
"ctxt": 0
},
"value": "o3",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 976,
"end": 977,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
}
]
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 981,
"end": 984,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 981,
"end": 983,
"ctxt": 0
},
"value": "o3",
"optional": false
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 985,
"end": 991,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 985,
"end": 990,
"ctxt": 0
},
"questionDotToken": {
"start": 987,
"end": 988,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 985,
"end": 990,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 985,
"end": 987,
"ctxt": 0
},
"value": "o3",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 989,
"end": 990,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 992,
"end": 997,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 992,
"end": 996,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 992,
"end": 994,
"ctxt": 0
},
"value": "o3",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 995,
"end": 996,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
},
{
"type": "VariableDeclaration",
"span": {
"start": 999,
"end": 1040,
"ctxt": 0
},
"kind": "const",
"declare": true,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 1013,
"end": 1039,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 1013,
"end": 1015,
"ctxt": 0
},
"value": "o4",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1015,
"end": 1039,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 1017,
"end": 1039,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 1019,
"end": 1037,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1019,
"end": 1020,
"ctxt": 0
},
"value": "x",
"optional": false
},
"computed": false,
"optional": true,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1021,
"end": 1037,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 1023,
"end": 1037,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 1025,
"end": 1035,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1025,
"end": 1026,
"ctxt": 0
},
"value": "y",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1026,
"end": 1035,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1028,
"end": 1035,
"ctxt": 0
},
"kind": "boolean"
}
},
"typeParams": null
}
]
}
},
"typeParams": null
}
]
}
}
},
"init": null,
"definite": false
}
]
},
{
"type": "IfStatement",
"span": {
"start": 1041,
"end": 1170,
"ctxt": 0
},
"test": {
"type": "OptionalChainingExpression",
"span": {
"start": 1045,
"end": 1052,
"ctxt": 0
},
"questionDotToken": {
"start": 1049,
"end": 1050,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1045,
"end": 1052,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1045,
"end": 1049,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1045,
"end": 1047,
"ctxt": 0
},
"value": "o4",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1048,
"end": 1049,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1051,
"end": 1052,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 1054,
"end": 1126,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1060,
"end": 1065,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1060,
"end": 1064,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1060,
"end": 1062,
"ctxt": 0
},
"value": "o4",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1063,
"end": 1064,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1088,
"end": 1095,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1088,
"end": 1094,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1088,
"end": 1092,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1088,
"end": 1090,
"ctxt": 0
},
"value": "o4",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1091,
"end": 1092,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1093,
"end": 1094,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1108,
"end": 1116,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 1108,
"end": 1115,
"ctxt": 0
},
"questionDotToken": {
"start": 1112,
"end": 1113,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1108,
"end": 1115,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1108,
"end": 1112,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1108,
"end": 1110,
"ctxt": 0
},
"value": "o4",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1111,
"end": 1112,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1114,
"end": 1115,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 1132,
"end": 1170,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1138,
"end": 1143,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1138,
"end": 1142,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1138,
"end": 1140,
"ctxt": 0
},
"value": "o4",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1141,
"end": 1142,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1148,
"end": 1156,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 1148,
"end": 1155,
"ctxt": 0
},
"questionDotToken": {
"start": 1152,
"end": 1153,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1148,
"end": 1155,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1148,
"end": 1152,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1148,
"end": 1150,
"ctxt": 0
},
"value": "o4",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1151,
"end": 1152,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1154,
"end": 1155,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1161,
"end": 1168,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1161,
"end": 1167,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1161,
"end": 1165,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1161,
"end": 1163,
"ctxt": 0
},
"value": "o4",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1164,
"end": 1165,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1166,
"end": 1167,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
}
]
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1171,
"end": 1176,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1171,
"end": 1175,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1171,
"end": 1173,
"ctxt": 0
},
"value": "o4",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1174,
"end": 1175,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1177,
"end": 1185,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 1177,
"end": 1184,
"ctxt": 0
},
"questionDotToken": {
"start": 1181,
"end": 1182,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1177,
"end": 1184,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1177,
"end": 1181,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1177,
"end": 1179,
"ctxt": 0
},
"value": "o4",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1180,
"end": 1181,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1183,
"end": 1184,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1186,
"end": 1193,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1186,
"end": 1192,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1186,
"end": 1190,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1186,
"end": 1188,
"ctxt": 0
},
"value": "o4",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1189,
"end": 1190,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1191,
"end": 1192,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
},
{
"type": "VariableDeclaration",
"span": {
"start": 1195,
"end": 1251,
"ctxt": 0
},
"kind": "const",
"declare": true,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 1209,
"end": 1250,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 1209,
"end": 1211,
"ctxt": 0
},
"value": "o5",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1211,
"end": 1250,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 1213,
"end": 1250,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 1215,
"end": 1248,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1215,
"end": 1216,
"ctxt": 0
},
"value": "x",
"optional": false
},
"computed": false,
"optional": true,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1217,
"end": 1248,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 1219,
"end": 1248,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 1221,
"end": 1246,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1221,
"end": 1222,
"ctxt": 0
},
"value": "y",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1222,
"end": 1246,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 1224,
"end": 1246,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 1226,
"end": 1244,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1226,
"end": 1227,
"ctxt": 0
},
"value": "z",
"optional": false
},
"computed": false,
"optional": true,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1228,
"end": 1244,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 1230,
"end": 1244,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 1232,
"end": 1242,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1232,
"end": 1233,
"ctxt": 0
},
"value": "w",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1233,
"end": 1242,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1235,
"end": 1242,
"ctxt": 0
},
"kind": "boolean"
}
},
"typeParams": null
}
]
}
},
"typeParams": null
}
]
}
},
"typeParams": null
}
]
}
},
"typeParams": null
}
]
}
}
},
"init": null,
"definite": false
}
]
},
{
"type": "IfStatement",
"span": {
"start": 1252,
"end": 1502,
"ctxt": 0
},
"test": {
"type": "OptionalChainingExpression",
"span": {
"start": 1256,
"end": 1268,
"ctxt": 0
},
"questionDotToken": {
"start": 1265,
"end": 1266,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1256,
"end": 1268,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1256,
"end": 1265,
"ctxt": 0
},
"object": {
"type": "OptionalChainingExpression",
"span": {
"start": 1256,
"end": 1263,
"ctxt": 0
},
"questionDotToken": {
"start": 1260,
"end": 1261,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1256,
"end": 1263,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1256,
"end": 1260,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1256,
"end": 1258,
"ctxt": 0
},
"value": "o5",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1259,
"end": 1260,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1262,
"end": 1263,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1264,
"end": 1265,
"ctxt": 0
},
"value": "z",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1267,
"end": 1268,
"ctxt": 0
},
"value": "w",
"optional": false
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 1270,
"end": 1409,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1276,
"end": 1281,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1276,
"end": 1280,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1276,
"end": 1278,
"ctxt": 0
},
"value": "o5",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1279,
"end": 1280,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1286,
"end": 1293,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1286,
"end": 1292,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1286,
"end": 1290,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1286,
"end": 1288,
"ctxt": 0
},
"value": "o5",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1289,
"end": 1290,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1291,
"end": 1292,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1298,
"end": 1307,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1298,
"end": 1306,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1298,
"end": 1304,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1298,
"end": 1302,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1298,
"end": 1300,
"ctxt": 0
},
"value": "o5",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1301,
"end": 1302,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1303,
"end": 1304,
"ctxt": 0
},
"value": "y",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1305,
"end": 1306,
"ctxt": 0
},
"value": "z",
"optional": false
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1312,
"end": 1323,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1312,
"end": 1322,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1312,
"end": 1320,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1312,
"end": 1318,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1312,
"end": 1316,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1312,
"end": 1314,
"ctxt": 0
},
"value": "o5",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1315,
"end": 1316,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1317,
"end": 1318,
"ctxt": 0
},
"value": "y",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1319,
"end": 1320,
"ctxt": 0
},
"value": "z",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1321,
"end": 1322,
"ctxt": 0
},
"value": "w",
"optional": false
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1336,
"end": 1348,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 1336,
"end": 1347,
"ctxt": 0
},
"questionDotToken": {
"start": 1344,
"end": 1345,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1336,
"end": 1347,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1336,
"end": 1344,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1336,
"end": 1342,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1336,
"end": 1340,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1336,
"end": 1338,
"ctxt": 0
},
"value": "o5",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1339,
"end": 1340,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1341,
"end": 1342,
"ctxt": 0
},
"value": "y",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1343,
"end": 1344,
"ctxt": 0
},
"value": "z",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1346,
"end": 1347,
"ctxt": 0
},
"value": "w",
"optional": false
}
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1361,
"end": 1373,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1361,
"end": 1372,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1361,
"end": 1370,
"ctxt": 0
},
"object": {
"type": "OptionalChainingExpression",
"span": {
"start": 1361,
"end": 1368,
"ctxt": 0
},
"questionDotToken": {
"start": 1365,
"end": 1366,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1361,
"end": 1368,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1361,
"end": 1365,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1361,
"end": 1363,
"ctxt": 0
},
"value": "o5",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1364,
"end": 1365,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1367,
"end": 1368,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1369,
"end": 1370,
"ctxt": 0
},
"value": "z",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1371,
"end": 1372,
"ctxt": 0
},
"value": "w",
"optional": false
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1386,
"end": 1399,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 1386,
"end": 1398,
"ctxt": 0
},
"questionDotToken": {
"start": 1395,
"end": 1396,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1386,
"end": 1398,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1386,
"end": 1395,
"ctxt": 0
},
"object": {
"type": "OptionalChainingExpression",
"span": {
"start": 1386,
"end": 1393,
"ctxt": 0
},
"questionDotToken": {
"start": 1390,
"end": 1391,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1386,
"end": 1393,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1386,
"end": 1390,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1386,
"end": 1388,
"ctxt": 0
},
"value": "o5",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1389,
"end": 1390,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1392,
"end": 1393,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1394,
"end": 1395,
"ctxt": 0
},
"value": "z",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1397,
"end": 1398,
"ctxt": 0
},
"value": "w",
"optional": false
}
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 1415,
"end": 1502,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1421,
"end": 1426,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1421,
"end": 1425,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1421,
"end": 1423,
"ctxt": 0
},
"value": "o5",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1424,
"end": 1425,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1431,
"end": 1439,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 1431,
"end": 1438,
"ctxt": 0
},
"questionDotToken": {
"start": 1435,
"end": 1436,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1431,
"end": 1438,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1431,
"end": 1435,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1431,
"end": 1433,
"ctxt": 0
},
"value": "o5",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1434,
"end": 1435,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1437,
"end": 1438,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1444,
"end": 1454,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1444,
"end": 1453,
"ctxt": 0
},
"object": {
"type": "OptionalChainingExpression",
"span": {
"start": 1444,
"end": 1451,
"ctxt": 0
},
"questionDotToken": {
"start": 1448,
"end": 1449,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1444,
"end": 1451,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1444,
"end": 1448,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1444,
"end": 1446,
"ctxt": 0
},
"value": "o5",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1447,
"end": 1448,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1450,
"end": 1451,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1452,
"end": 1453,
"ctxt": 0
},
"value": "z",
"optional": false
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1459,
"end": 1472,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 1459,
"end": 1471,
"ctxt": 0
},
"questionDotToken": {
"start": 1468,
"end": 1469,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1459,
"end": 1471,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1459,
"end": 1468,
"ctxt": 0
},
"object": {
"type": "OptionalChainingExpression",
"span": {
"start": 1459,
"end": 1466,
"ctxt": 0
},
"questionDotToken": {
"start": 1463,
"end": 1464,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1459,
"end": 1466,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1459,
"end": 1463,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1459,
"end": 1461,
"ctxt": 0
},
"value": "o5",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1462,
"end": 1463,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1465,
"end": 1466,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1467,
"end": 1468,
"ctxt": 0
},
"value": "z",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1470,
"end": 1471,
"ctxt": 0
},
"value": "w",
"optional": false
}
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1477,
"end": 1484,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1477,
"end": 1483,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1477,
"end": 1481,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1477,
"end": 1479,
"ctxt": 0
},
"value": "o5",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1480,
"end": 1481,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1482,
"end": 1483,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1489,
"end": 1500,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1489,
"end": 1499,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1489,
"end": 1497,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1489,
"end": 1495,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1489,
"end": 1493,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1489,
"end": 1491,
"ctxt": 0
},
"value": "o5",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1492,
"end": 1493,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1494,
"end": 1495,
"ctxt": 0
},
"value": "y",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1496,
"end": 1497,
"ctxt": 0
},
"value": "z",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1498,
"end": 1499,
"ctxt": 0
},
"value": "w",
"optional": false
}
}
}
]
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1503,
"end": 1508,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1503,
"end": 1507,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1503,
"end": 1505,
"ctxt": 0
},
"value": "o5",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1506,
"end": 1507,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1509,
"end": 1517,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 1509,
"end": 1516,
"ctxt": 0
},
"questionDotToken": {
"start": 1513,
"end": 1514,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1509,
"end": 1516,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1509,
"end": 1513,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1509,
"end": 1511,
"ctxt": 0
},
"value": "o5",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1512,
"end": 1513,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1515,
"end": 1516,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1518,
"end": 1528,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1518,
"end": 1527,
"ctxt": 0
},
"object": {
"type": "OptionalChainingExpression",
"span": {
"start": 1518,
"end": 1525,
"ctxt": 0
},
"questionDotToken": {
"start": 1522,
"end": 1523,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1518,
"end": 1525,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1518,
"end": 1522,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1518,
"end": 1520,
"ctxt": 0
},
"value": "o5",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1521,
"end": 1522,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1524,
"end": 1525,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1526,
"end": 1527,
"ctxt": 0
},
"value": "z",
"optional": false
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1529,
"end": 1542,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 1529,
"end": 1541,
"ctxt": 0
},
"questionDotToken": {
"start": 1538,
"end": 1539,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1529,
"end": 1541,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1529,
"end": 1538,
"ctxt": 0
},
"object": {
"type": "OptionalChainingExpression",
"span": {
"start": 1529,
"end": 1536,
"ctxt": 0
},
"questionDotToken": {
"start": 1533,
"end": 1534,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1529,
"end": 1536,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1529,
"end": 1533,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1529,
"end": 1531,
"ctxt": 0
},
"value": "o5",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1532,
"end": 1533,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1535,
"end": 1536,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1537,
"end": 1538,
"ctxt": 0
},
"value": "z",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1540,
"end": 1541,
"ctxt": 0
},
"value": "w",
"optional": false
}
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1543,
"end": 1550,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1543,
"end": 1549,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1543,
"end": 1547,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1543,
"end": 1545,
"ctxt": 0
},
"value": "o5",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1546,
"end": 1547,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1548,
"end": 1549,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1551,
"end": 1562,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1551,
"end": 1561,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1551,
"end": 1559,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1551,
"end": 1557,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 1551,
"end": 1555,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1551,
"end": 1553,
"ctxt": 0
},
"value": "o5",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1554,
"end": 1555,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1556,
"end": 1557,
"ctxt": 0
},
"value": "y",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1558,
"end": 1559,
"ctxt": 0
},
"value": "z",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 1560,
"end": 1561,
"ctxt": 0
},
"value": "w",
"optional": false
}
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 1564,
"end": 1608,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 1574,
"end": 1578,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 1579,
"end": 1608,
"ctxt": 0
},
"body": [
{
"type": "TsMethodSignature",
"span": {
"start": 1585,
"end": 1606,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1585,
"end": 1586,
"ctxt": 0
},
"value": "f",
"optional": false
},
"computed": false,
"optional": false,
"params": [],
"typeAnn": {
"type": "TsTypeAnnotation",
"span": {
"start": 1588,
"end": 1605,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypePredicate",
"span": {
"start": 1590,
"end": 1605,
"ctxt": 0
},
"asserts": false,
"paramName": {
"type": "TsThisType",
"span": {
"start": 1590,
"end": 1594,
"ctxt": 0
}
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1598,
"end": 1605,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1598,
"end": 1605,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1598,
"end": 1605,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"typeParams": null
}
}
}
},
"typeParams": null
}
]
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 1610,
"end": 1659,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 1620,
"end": 1627,
"ctxt": 0
},
"value": "Derived",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [
{
"type": "TsExpressionWithTypeArguments",
"span": {
"start": 1636,
"end": 1640,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1636,
"end": 1640,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeArguments": null
}
],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 1641,
"end": 1659,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 1647,
"end": 1657,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 1647,
"end": 1648,
"ctxt": 0
},
"value": "x",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1648,
"end": 1656,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1650,
"end": 1656,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
}
]
}
},
{
"type": "VariableDeclaration",
"span": {
"start": 1661,
"end": 1696,
"ctxt": 0
},
"kind": "const",
"declare": true,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 1675,
"end": 1695,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 1675,
"end": 1677,
"ctxt": 0
},
"value": "o6",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1677,
"end": 1695,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 1679,
"end": 1695,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 1679,
"end": 1683,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1679,
"end": 1683,
"ctxt": 0
},
"value": "Base",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 1686,
"end": 1695,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
},
"init": null,
"definite": false
}
]
},
{
"type": "IfStatement",
"span": {
"start": 1697,
"end": 1780,
"ctxt": 0
},
"test": {
"type": "CallExpression",
"span": {
"start": 1701,
"end": 1708,
"ctxt": 0
},
"callee": {
"type": "OptionalChainingExpression",
"span": {
"start": 1701,
"end": 1706,
"ctxt": 0
},
"questionDotToken": {
"start": 1703,
"end": 1704,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1701,
"end": 1706,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1701,
"end": 1703,
"ctxt": 0
},
"value": "o6",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1705,
"end": 1706,
"ctxt": 0
},
"value": "f",
"optional": false
}
}
},
"arguments": [],
"typeArguments": null
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 1710,
"end": 1742,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1716,
"end": 1719,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1716,
"end": 1718,
"ctxt": 0
},
"value": "o6",
"optional": false
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1735,
"end": 1740,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1735,
"end": 1739,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1735,
"end": 1737,
"ctxt": 0
},
"value": "o6",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1738,
"end": 1739,
"ctxt": 0
},
"value": "f",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 1748,
"end": 1780,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1754,
"end": 1757,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1754,
"end": 1756,
"ctxt": 0
},
"value": "o6",
"optional": false
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1762,
"end": 1768,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 1762,
"end": 1767,
"ctxt": 0
},
"questionDotToken": {
"start": 1764,
"end": 1765,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1762,
"end": 1767,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1762,
"end": 1764,
"ctxt": 0
},
"value": "o6",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1766,
"end": 1767,
"ctxt": 0
},
"value": "f",
"optional": false
}
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1773,
"end": 1778,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1773,
"end": 1777,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1773,
"end": 1775,
"ctxt": 0
},
"value": "o6",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1776,
"end": 1777,
"ctxt": 0
},
"value": "f",
"optional": false
}
}
}
]
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1781,
"end": 1784,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1781,
"end": 1783,
"ctxt": 0
},
"value": "o6",
"optional": false
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1785,
"end": 1791,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 1785,
"end": 1790,
"ctxt": 0
},
"questionDotToken": {
"start": 1787,
"end": 1788,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 1785,
"end": 1790,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1785,
"end": 1787,
"ctxt": 0
},
"value": "o6",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1789,
"end": 1790,
"ctxt": 0
},
"value": "f",
"optional": false
}
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 1792,
"end": 1797,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 1792,
"end": 1796,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 1792,
"end": 1794,
"ctxt": 0
},
"value": "o6",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 1795,
"end": 1796,
"ctxt": 0
},
"value": "f",
"optional": false
}
}
},
{
"type": "VariableDeclaration",
"span": {
"start": 1810,
"end": 1884,
"ctxt": 0
},
"kind": "const",
"declare": true,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 1824,
"end": 1883,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 1824,
"end": 1833,
"ctxt": 0
},
"value": "isDefined",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1833,
"end": 1883,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1835,
"end": 1883,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1839,
"end": 1847,
"ctxt": 0
},
"value": "value",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1844,
"end": 1847,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1846,
"end": 1847,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1846,
"end": 1847,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
],
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1835,
"end": 1838,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1836,
"end": 1837,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1836,
"end": 1837,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1849,
"end": 1883,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypePredicate",
"span": {
"start": 1852,
"end": 1883,
"ctxt": 0
},
"asserts": true,
"paramName": {
"type": "Identifier",
"span": {
"start": 1860,
"end": 1865,
"ctxt": 0
},
"value": "value",
"optional": false
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1869,
"end": 1883,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1869,
"end": 1883,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1869,
"end": 1880,
"ctxt": 0
},
"value": "NonNullable",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 1880,
"end": 1883,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 1881,
"end": 1882,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1881,
"end": 1882,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
]
}
}
}
}
}
}
}
},
"init": null,
"definite": false
}
]
},
{
"type": "VariableDeclaration",
"span": {
"start": 1885,
"end": 1953,
"ctxt": 0
},
"kind": "const",
"declare": true,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 1899,
"end": 1952,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 1899,
"end": 1907,
"ctxt": 0
},
"value": "isString",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1907,
"end": 1952,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1909,
"end": 1952,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1910,
"end": 1924,
"ctxt": 0
},
"value": "value",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1915,
"end": 1924,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1917,
"end": 1924,
"ctxt": 0
},
"kind": "unknown"
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1926,
"end": 1952,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypePredicate",
"span": {
"start": 1929,
"end": 1952,
"ctxt": 0
},
"asserts": true,
"paramName": {
"type": "Identifier",
"span": {
"start": 1937,
"end": 1942,
"ctxt": 0
},
"value": "value",
"optional": false
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1946,
"end": 1952,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1946,
"end": 1952,
"ctxt": 0
},
"kind": "string"
}
}
}
}
}
}
},
"init": null,
"definite": false
}
]
},
{
"type": "VariableDeclaration",
"span": {
"start": 1954,
"end": 2041,
"ctxt": 0
},
"kind": "const",
"declare": true,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 1968,
"end": 2040,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 1968,
"end": 1981,
"ctxt": 0
},
"value": "maybeIsString",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1981,
"end": 2040,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 1983,
"end": 2040,
"ctxt": 0
},
"types": [
{
"type": "TsKeywordType",
"span": {
"start": 1983,
"end": 1992,
"ctxt": 0
},
"kind": "undefined"
},
{
"type": "TsParenthesizedType",
"span": {
"start": 1995,
"end": 2040,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 1996,
"end": 2039,
"ctxt": 0
},
"params": [
{
"type": "Identifier",
"span": {
"start": 1997,
"end": 2011,
"ctxt": 0
},
"value": "value",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2002,
"end": 2011,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 2004,
"end": 2011,
"ctxt": 0
},
"kind": "unknown"
}
}
}
],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2013,
"end": 2039,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypePredicate",
"span": {
"start": 2016,
"end": 2039,
"ctxt": 0
},
"asserts": true,
"paramName": {
"type": "Identifier",
"span": {
"start": 2024,
"end": 2029,
"ctxt": 0
},
"value": "value",
"optional": false
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2033,
"end": 2039,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 2033,
"end": 2039,
"ctxt": 0
},
"kind": "string"
}
}
}
}
}
}
]
}
}
},
"init": null,
"definite": false
}
]
},
{
"type": "VariableDeclaration",
"span": {
"start": 2042,
"end": 2094,
"ctxt": 0
},
"kind": "const",
"declare": true,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 2056,
"end": 2093,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 2056,
"end": 2066,
"ctxt": 0
},
"value": "maybeNever",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2066,
"end": 2093,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 2068,
"end": 2093,
"ctxt": 0
},
"types": [
{
"type": "TsKeywordType",
"span": {
"start": 2068,
"end": 2077,
"ctxt": 0
},
"kind": "undefined"
},
{
"type": "TsParenthesizedType",
"span": {
"start": 2080,
"end": 2093,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsFunctionType",
"span": {
"start": 2081,
"end": 2092,
"ctxt": 0
},
"params": [],
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2084,
"end": 2092,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 2087,
"end": 2092,
"ctxt": 0
},
"kind": "never"
}
}
}
}
]
}
}
},
"init": null,
"definite": false
}
]
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 2105,
"end": 2108,
"ctxt": 0
},
"value": "f01",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 2109,
"end": 2119,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 2109,
"end": 2119,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2110,
"end": 2119,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 2112,
"end": 2119,
"ctxt": 0
},
"kind": "unknown"
}
}
}
}
],
"decorators": [],
"span": {
"start": 2096,
"end": 2401,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 2121,
"end": 2401,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 2127,
"end": 2180,
"ctxt": 0
},
"test": {
"type": "UnaryExpression",
"span": {
"start": 2131,
"end": 2137,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "UnaryExpression",
"span": {
"start": 2132,
"end": 2137,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "BooleanLiteral",
"span": {
"start": 2133,
"end": 2137,
"ctxt": 0
},
"value": true
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2139,
"end": 2180,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2149,
"end": 2163,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 2149,
"end": 2162,
"ctxt": 0
},
"questionDotToken": {
"start": 2157,
"end": 2158,
"ctxt": 0
},
"base": {
"type": "CallExpression",
"span": {
"start": 2149,
"end": 2162,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 2149,
"end": 2157,
"ctxt": 0
},
"value": "isString",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 2160,
"end": 2161,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
],
"typeArguments": null
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 2172,
"end": 2174,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2172,
"end": 2173,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 2185,
"end": 2243,
"ctxt": 0
},
"test": {
"type": "UnaryExpression",
"span": {
"start": 2189,
"end": 2195,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "UnaryExpression",
"span": {
"start": 2190,
"end": 2195,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "BooleanLiteral",
"span": {
"start": 2191,
"end": 2195,
"ctxt": 0
},
"value": true
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2197,
"end": 2243,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2207,
"end": 2226,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 2207,
"end": 2225,
"ctxt": 0
},
"questionDotToken": {
"start": 2220,
"end": 2221,
"ctxt": 0
},
"base": {
"type": "CallExpression",
"span": {
"start": 2207,
"end": 2225,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 2207,
"end": 2220,
"ctxt": 0
},
"value": "maybeIsString",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 2223,
"end": 2224,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
],
"typeArguments": null
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 2235,
"end": 2237,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2235,
"end": 2236,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 2248,
"end": 2340,
"ctxt": 0
},
"test": {
"type": "UnaryExpression",
"span": {
"start": 2252,
"end": 2258,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "UnaryExpression",
"span": {
"start": 2253,
"end": 2258,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "BooleanLiteral",
"span": {
"start": 2254,
"end": 2258,
"ctxt": 0
},
"value": true
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2260,
"end": 2340,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2270,
"end": 2295,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 2270,
"end": 2294,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 2270,
"end": 2279,
"ctxt": 0
},
"value": "isDefined",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 2280,
"end": 2293,
"ctxt": 0
},
"value": "maybeIsString",
"optional": false
}
}
],
"typeArguments": null
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 2304,
"end": 2323,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 2304,
"end": 2322,
"ctxt": 0
},
"questionDotToken": {
"start": 2317,
"end": 2318,
"ctxt": 0
},
"base": {
"type": "CallExpression",
"span": {
"start": 2304,
"end": 2322,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 2304,
"end": 2317,
"ctxt": 0
},
"value": "maybeIsString",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 2320,
"end": 2321,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
],
"typeArguments": null
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 2332,
"end": 2334,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2332,
"end": 2333,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 2345,
"end": 2399,
"ctxt": 0
},
"test": {
"type": "UnaryExpression",
"span": {
"start": 2349,
"end": 2355,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "UnaryExpression",
"span": {
"start": 2350,
"end": 2355,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "BooleanLiteral",
"span": {
"start": 2351,
"end": 2355,
"ctxt": 0
},
"value": true
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2357,
"end": 2399,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2367,
"end": 2382,
"ctxt": 0
},
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 2367,
"end": 2381,
"ctxt": 0
},
"questionDotToken": {
"start": 2377,
"end": 2378,
"ctxt": 0
},
"base": {
"type": "CallExpression",
"span": {
"start": 2367,
"end": 2381,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 2367,
"end": 2377,
"ctxt": 0
},
"value": "maybeNever",
"optional": false
},
"arguments": [],
"typeArguments": null
}
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 2391,
"end": 2393,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2391,
"end": 2392,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": null
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 2403,
"end": 2469,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 2408,
"end": 2413,
"ctxt": 0
},
"value": "Thing",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 2416,
"end": 2468,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 2418,
"end": 2439,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2418,
"end": 2421,
"ctxt": 0
},
"value": "foo",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2421,
"end": 2438,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 2423,
"end": 2438,
"ctxt": 0
},
"types": [
{
"type": "TsKeywordType",
"span": {
"start": 2423,
"end": 2429,
"ctxt": 0
},
"kind": "string"
},
{
"type": "TsKeywordType",
"span": {
"start": 2432,
"end": 2438,
"ctxt": 0
},
"kind": "number"
}
]
}
},
"typeParams": null
},
{
"type": "TsMethodSignature",
"span": {
"start": 2440,
"end": 2454,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2440,
"end": 2443,
"ctxt": 0
},
"value": "bar",
"optional": false
},
"computed": false,
"optional": false,
"params": [],
"typeAnn": {
"type": "TsTypeAnnotation",
"span": {
"start": 2445,
"end": 2453,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 2447,
"end": 2453,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 2455,
"end": 2466,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 2455,
"end": 2458,
"ctxt": 0
},
"value": "baz",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2458,
"end": 2466,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 2460,
"end": 2466,
"ctxt": 0
},
"kind": "object"
}
},
"typeParams": null
}
]
}
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 2480,
"end": 2483,
"ctxt": 0
},
"value": "f10",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 2484,
"end": 2504,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 2484,
"end": 2504,
"ctxt": 0
},
"value": "o",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2485,
"end": 2504,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 2487,
"end": 2504,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 2487,
"end": 2492,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2487,
"end": 2492,
"ctxt": 0
},
"value": "Thing",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 2495,
"end": 2504,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
}
},
{
"type": "Parameter",
"span": {
"start": 2506,
"end": 2519,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 2506,
"end": 2519,
"ctxt": 0
},
"value": "value",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2511,
"end": 2519,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 2513,
"end": 2519,
"ctxt": 0
},
"kind": "number"
}
}
}
}
],
"decorators": [],
"span": {
"start": 2471,
"end": 2833,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 2521,
"end": 2833,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 2527,
"end": 2571,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 2531,
"end": 2547,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 2531,
"end": 2537,
"ctxt": 0
},
"questionDotToken": {
"start": 2532,
"end": 2533,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 2531,
"end": 2537,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 2531,
"end": 2532,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 2534,
"end": 2537,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 2542,
"end": 2547,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2549,
"end": 2571,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2559,
"end": 2565,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 2559,
"end": 2564,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 2559,
"end": 2560,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 2561,
"end": 2564,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 2576,
"end": 2627,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 2580,
"end": 2600,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 2580,
"end": 2590,
"ctxt": 0
},
"questionDotToken": {
"start": 2581,
"end": 2582,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 2580,
"end": 2590,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 2580,
"end": 2581,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 2583,
"end": 2590,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 2584,
"end": 2589,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 2595,
"end": 2600,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2602,
"end": 2627,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2612,
"end": 2621,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 2612,
"end": 2620,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 2612,
"end": 2613,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 2613,
"end": 2620,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 2614,
"end": 2619,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 2632,
"end": 2678,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 2636,
"end": 2654,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "CallExpression",
"span": {
"start": 2636,
"end": 2644,
"ctxt": 0
},
"callee": {
"type": "OptionalChainingExpression",
"span": {
"start": 2636,
"end": 2642,
"ctxt": 0
},
"questionDotToken": {
"start": 2637,
"end": 2638,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 2636,
"end": 2642,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 2636,
"end": 2637,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 2639,
"end": 2642,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
},
"arguments": [],
"typeArguments": null
},
"right": {
"type": "Identifier",
"span": {
"start": 2649,
"end": 2654,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2656,
"end": 2678,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2666,
"end": 2672,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 2666,
"end": 2671,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 2666,
"end": 2667,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 2668,
"end": 2671,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 2683,
"end": 2726,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 2687,
"end": 2702,
"ctxt": 0
},
"operator": "==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 2687,
"end": 2693,
"ctxt": 0
},
"questionDotToken": {
"start": 2688,
"end": 2689,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 2687,
"end": 2693,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 2687,
"end": 2688,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 2690,
"end": 2693,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 2697,
"end": 2702,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2704,
"end": 2726,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2714,
"end": 2720,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 2714,
"end": 2719,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 2714,
"end": 2715,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 2716,
"end": 2719,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 2731,
"end": 2781,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 2735,
"end": 2754,
"ctxt": 0
},
"operator": "==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 2735,
"end": 2745,
"ctxt": 0
},
"questionDotToken": {
"start": 2736,
"end": 2737,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 2735,
"end": 2745,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 2735,
"end": 2736,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 2738,
"end": 2745,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 2739,
"end": 2744,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 2749,
"end": 2754,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2756,
"end": 2781,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2766,
"end": 2775,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 2766,
"end": 2774,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 2766,
"end": 2767,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 2767,
"end": 2774,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 2768,
"end": 2773,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 2786,
"end": 2831,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 2790,
"end": 2807,
"ctxt": 0
},
"operator": "==",
"left": {
"type": "CallExpression",
"span": {
"start": 2790,
"end": 2798,
"ctxt": 0
},
"callee": {
"type": "OptionalChainingExpression",
"span": {
"start": 2790,
"end": 2796,
"ctxt": 0
},
"questionDotToken": {
"start": 2791,
"end": 2792,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 2790,
"end": 2796,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 2790,
"end": 2791,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 2793,
"end": 2796,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
},
"arguments": [],
"typeArguments": null
},
"right": {
"type": "Identifier",
"span": {
"start": 2802,
"end": 2807,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2809,
"end": 2831,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2819,
"end": 2825,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 2819,
"end": 2824,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 2819,
"end": 2820,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 2821,
"end": 2824,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
}
]
},
"alternate": null
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 2844,
"end": 2847,
"ctxt": 0
},
"value": "f11",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 2848,
"end": 2863,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 2848,
"end": 2863,
"ctxt": 0
},
"value": "o",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2849,
"end": 2863,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 2851,
"end": 2863,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 2851,
"end": 2856,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2851,
"end": 2856,
"ctxt": 0
},
"value": "Thing",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 2859,
"end": 2863,
"ctxt": 0
},
"kind": "null"
}
]
}
}
}
},
{
"type": "Parameter",
"span": {
"start": 2865,
"end": 2878,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 2865,
"end": 2878,
"ctxt": 0
},
"value": "value",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2870,
"end": 2878,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 2872,
"end": 2878,
"ctxt": 0
},
"kind": "number"
}
}
}
}
],
"decorators": [],
"span": {
"start": 2835,
"end": 3192,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 2880,
"end": 3192,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 2886,
"end": 2930,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 2890,
"end": 2906,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 2890,
"end": 2896,
"ctxt": 0
},
"questionDotToken": {
"start": 2891,
"end": 2892,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 2890,
"end": 2896,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 2890,
"end": 2891,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 2893,
"end": 2896,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 2901,
"end": 2906,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2908,
"end": 2930,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2918,
"end": 2924,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 2918,
"end": 2923,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 2918,
"end": 2919,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 2920,
"end": 2923,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 2935,
"end": 2986,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 2939,
"end": 2959,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 2939,
"end": 2949,
"ctxt": 0
},
"questionDotToken": {
"start": 2940,
"end": 2941,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 2939,
"end": 2949,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 2939,
"end": 2940,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 2942,
"end": 2949,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 2943,
"end": 2948,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 2954,
"end": 2959,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2961,
"end": 2986,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2971,
"end": 2980,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 2971,
"end": 2979,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 2971,
"end": 2972,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 2972,
"end": 2979,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 2973,
"end": 2978,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 2991,
"end": 3037,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 2995,
"end": 3013,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "CallExpression",
"span": {
"start": 2995,
"end": 3003,
"ctxt": 0
},
"callee": {
"type": "OptionalChainingExpression",
"span": {
"start": 2995,
"end": 3001,
"ctxt": 0
},
"questionDotToken": {
"start": 2996,
"end": 2997,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 2995,
"end": 3001,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 2995,
"end": 2996,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 2998,
"end": 3001,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
},
"arguments": [],
"typeArguments": null
},
"right": {
"type": "Identifier",
"span": {
"start": 3008,
"end": 3013,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3015,
"end": 3037,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 3025,
"end": 3031,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 3025,
"end": 3030,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3025,
"end": 3026,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 3027,
"end": 3030,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 3042,
"end": 3085,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3046,
"end": 3061,
"ctxt": 0
},
"operator": "==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 3046,
"end": 3052,
"ctxt": 0
},
"questionDotToken": {
"start": 3047,
"end": 3048,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 3046,
"end": 3052,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3046,
"end": 3047,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 3049,
"end": 3052,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 3056,
"end": 3061,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3063,
"end": 3085,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 3073,
"end": 3079,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 3073,
"end": 3078,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3073,
"end": 3074,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 3075,
"end": 3078,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 3090,
"end": 3140,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3094,
"end": 3113,
"ctxt": 0
},
"operator": "==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 3094,
"end": 3104,
"ctxt": 0
},
"questionDotToken": {
"start": 3095,
"end": 3096,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 3094,
"end": 3104,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3094,
"end": 3095,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 3097,
"end": 3104,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 3098,
"end": 3103,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 3108,
"end": 3113,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3115,
"end": 3140,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 3125,
"end": 3134,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 3125,
"end": 3133,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3125,
"end": 3126,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 3126,
"end": 3133,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 3127,
"end": 3132,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 3145,
"end": 3190,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3149,
"end": 3166,
"ctxt": 0
},
"operator": "==",
"left": {
"type": "CallExpression",
"span": {
"start": 3149,
"end": 3157,
"ctxt": 0
},
"callee": {
"type": "OptionalChainingExpression",
"span": {
"start": 3149,
"end": 3155,
"ctxt": 0
},
"questionDotToken": {
"start": 3150,
"end": 3151,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 3149,
"end": 3155,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3149,
"end": 3150,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 3152,
"end": 3155,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
},
"arguments": [],
"typeArguments": null
},
"right": {
"type": "Identifier",
"span": {
"start": 3161,
"end": 3166,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3168,
"end": 3190,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 3178,
"end": 3184,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 3178,
"end": 3183,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3178,
"end": 3179,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 3180,
"end": 3183,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
}
]
},
"alternate": null
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 3203,
"end": 3206,
"ctxt": 0
},
"value": "f12",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 3207,
"end": 3227,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 3207,
"end": 3227,
"ctxt": 0
},
"value": "o",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3208,
"end": 3227,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 3210,
"end": 3227,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 3210,
"end": 3215,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3210,
"end": 3215,
"ctxt": 0
},
"value": "Thing",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 3218,
"end": 3227,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
}
},
{
"type": "Parameter",
"span": {
"start": 3229,
"end": 3254,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 3229,
"end": 3254,
"ctxt": 0
},
"value": "value",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3234,
"end": 3254,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 3236,
"end": 3254,
"ctxt": 0
},
"types": [
{
"type": "TsKeywordType",
"span": {
"start": 3236,
"end": 3242,
"ctxt": 0
},
"kind": "number"
},
{
"type": "TsKeywordType",
"span": {
"start": 3245,
"end": 3254,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 3194,
"end": 3628,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 3256,
"end": 3628,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 3262,
"end": 3316,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3266,
"end": 3282,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 3266,
"end": 3272,
"ctxt": 0
},
"questionDotToken": {
"start": 3267,
"end": 3268,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 3266,
"end": 3272,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3266,
"end": 3267,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 3269,
"end": 3272,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 3277,
"end": 3282,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3284,
"end": 3316,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 3294,
"end": 3300,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 3294,
"end": 3299,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3294,
"end": 3295,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 3296,
"end": 3299,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 3321,
"end": 3382,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3325,
"end": 3345,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 3325,
"end": 3335,
"ctxt": 0
},
"questionDotToken": {
"start": 3326,
"end": 3327,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 3325,
"end": 3335,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3325,
"end": 3326,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 3328,
"end": 3335,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 3329,
"end": 3334,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 3340,
"end": 3345,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3347,
"end": 3382,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 3357,
"end": 3366,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 3357,
"end": 3365,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3357,
"end": 3358,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 3358,
"end": 3365,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 3359,
"end": 3364,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 3387,
"end": 3443,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3391,
"end": 3409,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "CallExpression",
"span": {
"start": 3391,
"end": 3399,
"ctxt": 0
},
"callee": {
"type": "OptionalChainingExpression",
"span": {
"start": 3391,
"end": 3397,
"ctxt": 0
},
"questionDotToken": {
"start": 3392,
"end": 3393,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 3391,
"end": 3397,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3391,
"end": 3392,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 3394,
"end": 3397,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
},
"arguments": [],
"typeArguments": null
},
"right": {
"type": "Identifier",
"span": {
"start": 3404,
"end": 3409,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3411,
"end": 3443,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 3421,
"end": 3427,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 3421,
"end": 3426,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3421,
"end": 3422,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 3423,
"end": 3426,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 3448,
"end": 3501,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3452,
"end": 3467,
"ctxt": 0
},
"operator": "==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 3452,
"end": 3458,
"ctxt": 0
},
"questionDotToken": {
"start": 3453,
"end": 3454,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 3452,
"end": 3458,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3452,
"end": 3453,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 3455,
"end": 3458,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 3462,
"end": 3467,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3469,
"end": 3501,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 3479,
"end": 3485,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 3479,
"end": 3484,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3479,
"end": 3480,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 3481,
"end": 3484,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 3506,
"end": 3566,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3510,
"end": 3529,
"ctxt": 0
},
"operator": "==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 3510,
"end": 3520,
"ctxt": 0
},
"questionDotToken": {
"start": 3511,
"end": 3512,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 3510,
"end": 3520,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3510,
"end": 3511,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 3513,
"end": 3520,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 3514,
"end": 3519,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 3524,
"end": 3529,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3531,
"end": 3566,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 3541,
"end": 3550,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 3541,
"end": 3549,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3541,
"end": 3542,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 3542,
"end": 3549,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 3543,
"end": 3548,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 3571,
"end": 3626,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3575,
"end": 3592,
"ctxt": 0
},
"operator": "==",
"left": {
"type": "CallExpression",
"span": {
"start": 3575,
"end": 3583,
"ctxt": 0
},
"callee": {
"type": "OptionalChainingExpression",
"span": {
"start": 3575,
"end": 3581,
"ctxt": 0
},
"questionDotToken": {
"start": 3576,
"end": 3577,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 3575,
"end": 3581,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3575,
"end": 3576,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 3578,
"end": 3581,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
},
"arguments": [],
"typeArguments": null
},
"right": {
"type": "Identifier",
"span": {
"start": 3587,
"end": 3592,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3594,
"end": 3626,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 3604,
"end": 3610,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 3604,
"end": 3609,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3604,
"end": 3605,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 3606,
"end": 3609,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
}
]
},
"alternate": null
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 3639,
"end": 3643,
"ctxt": 0
},
"value": "f12a",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 3644,
"end": 3664,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 3644,
"end": 3664,
"ctxt": 0
},
"value": "o",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3645,
"end": 3664,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 3647,
"end": 3664,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 3647,
"end": 3652,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3647,
"end": 3652,
"ctxt": 0
},
"value": "Thing",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 3655,
"end": 3664,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
}
},
{
"type": "Parameter",
"span": {
"start": 3666,
"end": 3686,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 3666,
"end": 3686,
"ctxt": 0
},
"value": "value",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3671,
"end": 3686,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 3673,
"end": 3686,
"ctxt": 0
},
"types": [
{
"type": "TsKeywordType",
"span": {
"start": 3673,
"end": 3679,
"ctxt": 0
},
"kind": "number"
},
{
"type": "TsKeywordType",
"span": {
"start": 3682,
"end": 3686,
"ctxt": 0
},
"kind": "null"
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 3630,
"end": 4030,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 3688,
"end": 4030,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 3694,
"end": 3738,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3698,
"end": 3714,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 3698,
"end": 3704,
"ctxt": 0
},
"questionDotToken": {
"start": 3699,
"end": 3700,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 3698,
"end": 3704,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3698,
"end": 3699,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 3701,
"end": 3704,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 3709,
"end": 3714,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3716,
"end": 3738,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 3726,
"end": 3732,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 3726,
"end": 3731,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3726,
"end": 3727,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 3728,
"end": 3731,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 3743,
"end": 3794,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3747,
"end": 3767,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 3747,
"end": 3757,
"ctxt": 0
},
"questionDotToken": {
"start": 3748,
"end": 3749,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 3747,
"end": 3757,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3747,
"end": 3748,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 3750,
"end": 3757,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 3751,
"end": 3756,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 3762,
"end": 3767,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3769,
"end": 3794,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 3779,
"end": 3788,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 3779,
"end": 3787,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3779,
"end": 3780,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 3780,
"end": 3787,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 3781,
"end": 3786,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 3799,
"end": 3845,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3803,
"end": 3821,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "CallExpression",
"span": {
"start": 3803,
"end": 3811,
"ctxt": 0
},
"callee": {
"type": "OptionalChainingExpression",
"span": {
"start": 3803,
"end": 3809,
"ctxt": 0
},
"questionDotToken": {
"start": 3804,
"end": 3805,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 3803,
"end": 3809,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3803,
"end": 3804,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 3806,
"end": 3809,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
},
"arguments": [],
"typeArguments": null
},
"right": {
"type": "Identifier",
"span": {
"start": 3816,
"end": 3821,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3823,
"end": 3845,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 3833,
"end": 3839,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 3833,
"end": 3838,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3833,
"end": 3834,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 3835,
"end": 3838,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 3850,
"end": 3903,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3854,
"end": 3869,
"ctxt": 0
},
"operator": "==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 3854,
"end": 3860,
"ctxt": 0
},
"questionDotToken": {
"start": 3855,
"end": 3856,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 3854,
"end": 3860,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3854,
"end": 3855,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 3857,
"end": 3860,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 3864,
"end": 3869,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3871,
"end": 3903,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 3881,
"end": 3887,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 3881,
"end": 3886,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3881,
"end": 3882,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 3883,
"end": 3886,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 3908,
"end": 3968,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3912,
"end": 3931,
"ctxt": 0
},
"operator": "==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 3912,
"end": 3922,
"ctxt": 0
},
"questionDotToken": {
"start": 3913,
"end": 3914,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 3912,
"end": 3922,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3912,
"end": 3913,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 3915,
"end": 3922,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 3916,
"end": 3921,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 3926,
"end": 3931,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3933,
"end": 3968,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 3943,
"end": 3952,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 3943,
"end": 3951,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3943,
"end": 3944,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 3944,
"end": 3951,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 3945,
"end": 3950,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 3973,
"end": 4028,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3977,
"end": 3994,
"ctxt": 0
},
"operator": "==",
"left": {
"type": "CallExpression",
"span": {
"start": 3977,
"end": 3985,
"ctxt": 0
},
"callee": {
"type": "OptionalChainingExpression",
"span": {
"start": 3977,
"end": 3983,
"ctxt": 0
},
"questionDotToken": {
"start": 3978,
"end": 3979,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 3977,
"end": 3983,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 3977,
"end": 3978,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 3980,
"end": 3983,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
},
"arguments": [],
"typeArguments": null
},
"right": {
"type": "Identifier",
"span": {
"start": 3989,
"end": 3994,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3996,
"end": 4028,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 4006,
"end": 4012,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 4006,
"end": 4011,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4006,
"end": 4007,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4008,
"end": 4011,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
}
]
},
"alternate": null
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 4041,
"end": 4044,
"ctxt": 0
},
"value": "f13",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 4045,
"end": 4065,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 4045,
"end": 4065,
"ctxt": 0
},
"value": "o",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4046,
"end": 4065,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 4048,
"end": 4065,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 4048,
"end": 4053,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4048,
"end": 4053,
"ctxt": 0
},
"value": "Thing",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 4056,
"end": 4065,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 4032,
"end": 4403,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 4067,
"end": 4403,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 4073,
"end": 4121,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 4077,
"end": 4097,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 4077,
"end": 4083,
"ctxt": 0
},
"questionDotToken": {
"start": 4078,
"end": 4079,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 4077,
"end": 4083,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4077,
"end": 4078,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4080,
"end": 4083,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 4088,
"end": 4097,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 4099,
"end": 4121,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 4109,
"end": 4115,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 4109,
"end": 4114,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4109,
"end": 4110,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4111,
"end": 4114,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 4126,
"end": 4181,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 4130,
"end": 4154,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 4130,
"end": 4140,
"ctxt": 0
},
"questionDotToken": {
"start": 4131,
"end": 4132,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 4130,
"end": 4140,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4130,
"end": 4131,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 4133,
"end": 4140,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 4134,
"end": 4139,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 4145,
"end": 4154,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 4156,
"end": 4181,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 4166,
"end": 4175,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 4166,
"end": 4174,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4166,
"end": 4167,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 4167,
"end": 4174,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 4168,
"end": 4173,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 4186,
"end": 4236,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 4190,
"end": 4212,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "CallExpression",
"span": {
"start": 4190,
"end": 4198,
"ctxt": 0
},
"callee": {
"type": "OptionalChainingExpression",
"span": {
"start": 4190,
"end": 4196,
"ctxt": 0
},
"questionDotToken": {
"start": 4191,
"end": 4192,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 4190,
"end": 4196,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4190,
"end": 4191,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4193,
"end": 4196,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
},
"arguments": [],
"typeArguments": null
},
"right": {
"type": "Identifier",
"span": {
"start": 4203,
"end": 4212,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 4214,
"end": 4236,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 4224,
"end": 4230,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 4224,
"end": 4229,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4224,
"end": 4225,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4226,
"end": 4229,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 4241,
"end": 4288,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 4245,
"end": 4264,
"ctxt": 0
},
"operator": "!=",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 4245,
"end": 4251,
"ctxt": 0
},
"questionDotToken": {
"start": 4246,
"end": 4247,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 4245,
"end": 4251,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4245,
"end": 4246,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4248,
"end": 4251,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 4255,
"end": 4264,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 4266,
"end": 4288,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 4276,
"end": 4282,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 4276,
"end": 4281,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4276,
"end": 4277,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4278,
"end": 4281,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 4293,
"end": 4347,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 4297,
"end": 4320,
"ctxt": 0
},
"operator": "!=",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 4297,
"end": 4307,
"ctxt": 0
},
"questionDotToken": {
"start": 4298,
"end": 4299,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 4297,
"end": 4307,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4297,
"end": 4298,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 4300,
"end": 4307,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 4301,
"end": 4306,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 4311,
"end": 4320,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 4322,
"end": 4347,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 4332,
"end": 4341,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 4332,
"end": 4340,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4332,
"end": 4333,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 4333,
"end": 4340,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 4334,
"end": 4339,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 4352,
"end": 4401,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 4356,
"end": 4377,
"ctxt": 0
},
"operator": "!=",
"left": {
"type": "CallExpression",
"span": {
"start": 4356,
"end": 4364,
"ctxt": 0
},
"callee": {
"type": "OptionalChainingExpression",
"span": {
"start": 4356,
"end": 4362,
"ctxt": 0
},
"questionDotToken": {
"start": 4357,
"end": 4358,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 4356,
"end": 4362,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4356,
"end": 4357,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4359,
"end": 4362,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
},
"arguments": [],
"typeArguments": null
},
"right": {
"type": "Identifier",
"span": {
"start": 4368,
"end": 4377,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 4379,
"end": 4401,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 4389,
"end": 4395,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 4389,
"end": 4394,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4389,
"end": 4390,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4391,
"end": 4394,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
}
]
},
"alternate": null
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 4414,
"end": 4418,
"ctxt": 0
},
"value": "f13a",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 4419,
"end": 4439,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 4419,
"end": 4439,
"ctxt": 0
},
"value": "o",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4420,
"end": 4439,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 4422,
"end": 4439,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 4422,
"end": 4427,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4422,
"end": 4427,
"ctxt": 0
},
"value": "Thing",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 4430,
"end": 4439,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 4405,
"end": 4777,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 4441,
"end": 4777,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 4447,
"end": 4500,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 4451,
"end": 4466,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 4451,
"end": 4457,
"ctxt": 0
},
"questionDotToken": {
"start": 4452,
"end": 4453,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 4451,
"end": 4457,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4451,
"end": 4452,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4454,
"end": 4457,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "NullLiteral",
"span": {
"start": 4462,
"end": 4466,
"ctxt": 0
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 4468,
"end": 4500,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 4478,
"end": 4484,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 4478,
"end": 4483,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4478,
"end": 4479,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4480,
"end": 4483,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 4505,
"end": 4565,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 4509,
"end": 4528,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 4509,
"end": 4519,
"ctxt": 0
},
"questionDotToken": {
"start": 4510,
"end": 4511,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 4509,
"end": 4519,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4509,
"end": 4510,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 4512,
"end": 4519,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 4513,
"end": 4518,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
},
"right": {
"type": "NullLiteral",
"span": {
"start": 4524,
"end": 4528,
"ctxt": 0
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 4530,
"end": 4565,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 4540,
"end": 4549,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 4540,
"end": 4548,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4540,
"end": 4541,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 4541,
"end": 4548,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 4542,
"end": 4547,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 4570,
"end": 4625,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 4574,
"end": 4591,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "CallExpression",
"span": {
"start": 4574,
"end": 4582,
"ctxt": 0
},
"callee": {
"type": "OptionalChainingExpression",
"span": {
"start": 4574,
"end": 4580,
"ctxt": 0
},
"questionDotToken": {
"start": 4575,
"end": 4576,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 4574,
"end": 4580,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4574,
"end": 4575,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4577,
"end": 4580,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
},
"arguments": [],
"typeArguments": null
},
"right": {
"type": "NullLiteral",
"span": {
"start": 4587,
"end": 4591,
"ctxt": 0
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 4593,
"end": 4625,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 4603,
"end": 4609,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 4603,
"end": 4608,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4603,
"end": 4604,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4605,
"end": 4608,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 4630,
"end": 4672,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 4634,
"end": 4648,
"ctxt": 0
},
"operator": "!=",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 4634,
"end": 4640,
"ctxt": 0
},
"questionDotToken": {
"start": 4635,
"end": 4636,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 4634,
"end": 4640,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4634,
"end": 4635,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4637,
"end": 4640,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "NullLiteral",
"span": {
"start": 4644,
"end": 4648,
"ctxt": 0
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 4650,
"end": 4672,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 4660,
"end": 4666,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 4660,
"end": 4665,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4660,
"end": 4661,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4662,
"end": 4665,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 4677,
"end": 4726,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 4681,
"end": 4699,
"ctxt": 0
},
"operator": "!=",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 4681,
"end": 4691,
"ctxt": 0
},
"questionDotToken": {
"start": 4682,
"end": 4683,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 4681,
"end": 4691,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4681,
"end": 4682,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 4684,
"end": 4691,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 4685,
"end": 4690,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
},
"right": {
"type": "NullLiteral",
"span": {
"start": 4695,
"end": 4699,
"ctxt": 0
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 4701,
"end": 4726,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 4711,
"end": 4720,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 4711,
"end": 4719,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4711,
"end": 4712,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 4712,
"end": 4719,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 4713,
"end": 4718,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 4731,
"end": 4775,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 4735,
"end": 4751,
"ctxt": 0
},
"operator": "!=",
"left": {
"type": "CallExpression",
"span": {
"start": 4735,
"end": 4743,
"ctxt": 0
},
"callee": {
"type": "OptionalChainingExpression",
"span": {
"start": 4735,
"end": 4741,
"ctxt": 0
},
"questionDotToken": {
"start": 4736,
"end": 4737,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 4735,
"end": 4741,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4735,
"end": 4736,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4738,
"end": 4741,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
},
"arguments": [],
"typeArguments": null
},
"right": {
"type": "NullLiteral",
"span": {
"start": 4747,
"end": 4751,
"ctxt": 0
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 4753,
"end": 4775,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 4763,
"end": 4769,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 4763,
"end": 4768,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4763,
"end": 4764,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4765,
"end": 4768,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
}
]
},
"alternate": null
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 4788,
"end": 4791,
"ctxt": 0
},
"value": "f14",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 4792,
"end": 4807,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 4792,
"end": 4807,
"ctxt": 0
},
"value": "o",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4793,
"end": 4807,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 4795,
"end": 4807,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 4795,
"end": 4800,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4795,
"end": 4800,
"ctxt": 0
},
"value": "Thing",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 4803,
"end": 4807,
"ctxt": 0
},
"kind": "null"
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 4779,
"end": 4980,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 4809,
"end": 4980,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 4815,
"end": 4863,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 4819,
"end": 4839,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 4819,
"end": 4825,
"ctxt": 0
},
"questionDotToken": {
"start": 4820,
"end": 4821,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 4819,
"end": 4825,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4819,
"end": 4820,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4822,
"end": 4825,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 4830,
"end": 4839,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 4841,
"end": 4863,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 4851,
"end": 4857,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 4851,
"end": 4856,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4851,
"end": 4852,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4853,
"end": 4856,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 4868,
"end": 4923,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 4872,
"end": 4896,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 4872,
"end": 4882,
"ctxt": 0
},
"questionDotToken": {
"start": 4873,
"end": 4874,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 4872,
"end": 4882,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4872,
"end": 4873,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 4875,
"end": 4882,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 4876,
"end": 4881,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 4887,
"end": 4896,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 4898,
"end": 4923,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 4908,
"end": 4917,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 4908,
"end": 4916,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4908,
"end": 4909,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 4909,
"end": 4916,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 4910,
"end": 4915,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 4928,
"end": 4978,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 4932,
"end": 4954,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "CallExpression",
"span": {
"start": 4932,
"end": 4940,
"ctxt": 0
},
"callee": {
"type": "OptionalChainingExpression",
"span": {
"start": 4932,
"end": 4938,
"ctxt": 0
},
"questionDotToken": {
"start": 4933,
"end": 4934,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 4932,
"end": 4938,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4932,
"end": 4933,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4935,
"end": 4938,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
},
"arguments": [],
"typeArguments": null
},
"right": {
"type": "Identifier",
"span": {
"start": 4945,
"end": 4954,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 4956,
"end": 4978,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 4966,
"end": 4972,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 4966,
"end": 4971,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 4966,
"end": 4967,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 4968,
"end": 4971,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
}
]
},
"alternate": null
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 4991,
"end": 4994,
"ctxt": 0
},
"value": "f15",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 4995,
"end": 5015,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 4995,
"end": 5015,
"ctxt": 0
},
"value": "o",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4996,
"end": 5015,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 4998,
"end": 5015,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 4998,
"end": 5003,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4998,
"end": 5003,
"ctxt": 0
},
"value": "Thing",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 5006,
"end": 5015,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
}
},
{
"type": "Parameter",
"span": {
"start": 5017,
"end": 5030,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 5017,
"end": 5030,
"ctxt": 0
},
"value": "value",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 5022,
"end": 5030,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 5024,
"end": 5030,
"ctxt": 0
},
"kind": "number"
}
}
}
}
],
"decorators": [],
"span": {
"start": 4982,
"end": 5397,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 5032,
"end": 5397,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 5038,
"end": 5124,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 5042,
"end": 5058,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 5042,
"end": 5048,
"ctxt": 0
},
"questionDotToken": {
"start": 5043,
"end": 5044,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 5042,
"end": 5048,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5042,
"end": 5043,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5045,
"end": 5048,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 5053,
"end": 5058,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 5060,
"end": 5082,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5070,
"end": 5076,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5070,
"end": 5075,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5070,
"end": 5071,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5072,
"end": 5075,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 5092,
"end": 5124,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5102,
"end": 5108,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5102,
"end": 5107,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5102,
"end": 5103,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5104,
"end": 5107,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 5129,
"end": 5215,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 5133,
"end": 5149,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 5133,
"end": 5139,
"ctxt": 0
},
"questionDotToken": {
"start": 5134,
"end": 5135,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 5133,
"end": 5139,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5133,
"end": 5134,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5136,
"end": 5139,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 5144,
"end": 5149,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 5151,
"end": 5183,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5161,
"end": 5167,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5161,
"end": 5166,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5161,
"end": 5162,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5163,
"end": 5166,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 5193,
"end": 5215,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5203,
"end": 5209,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5203,
"end": 5208,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5203,
"end": 5204,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5205,
"end": 5208,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 5220,
"end": 5305,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 5224,
"end": 5239,
"ctxt": 0
},
"operator": "==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 5224,
"end": 5230,
"ctxt": 0
},
"questionDotToken": {
"start": 5225,
"end": 5226,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 5224,
"end": 5230,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5224,
"end": 5225,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5227,
"end": 5230,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 5234,
"end": 5239,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 5241,
"end": 5263,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5251,
"end": 5257,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5251,
"end": 5256,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5251,
"end": 5252,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5253,
"end": 5256,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 5273,
"end": 5305,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5283,
"end": 5289,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5283,
"end": 5288,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5283,
"end": 5284,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5285,
"end": 5288,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 5310,
"end": 5395,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 5314,
"end": 5329,
"ctxt": 0
},
"operator": "!=",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 5314,
"end": 5320,
"ctxt": 0
},
"questionDotToken": {
"start": 5315,
"end": 5316,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 5314,
"end": 5320,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5314,
"end": 5315,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5317,
"end": 5320,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 5324,
"end": 5329,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 5331,
"end": 5363,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5341,
"end": 5347,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5341,
"end": 5346,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5341,
"end": 5342,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5343,
"end": 5346,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 5373,
"end": 5395,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5383,
"end": 5389,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5383,
"end": 5388,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5383,
"end": 5384,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5385,
"end": 5388,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
}
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 5408,
"end": 5412,
"ctxt": 0
},
"value": "f15a",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 5413,
"end": 5433,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 5413,
"end": 5433,
"ctxt": 0
},
"value": "o",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 5414,
"end": 5433,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 5416,
"end": 5433,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 5416,
"end": 5421,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 5416,
"end": 5421,
"ctxt": 0
},
"value": "Thing",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 5424,
"end": 5433,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
}
},
{
"type": "Parameter",
"span": {
"start": 5435,
"end": 5449,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 5435,
"end": 5449,
"ctxt": 0
},
"value": "value",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 5440,
"end": 5449,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 5442,
"end": 5449,
"ctxt": 0
},
"kind": "unknown"
}
}
}
}
],
"decorators": [],
"span": {
"start": 5399,
"end": 5856,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 5451,
"end": 5856,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 5457,
"end": 5553,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 5461,
"end": 5477,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 5461,
"end": 5467,
"ctxt": 0
},
"questionDotToken": {
"start": 5462,
"end": 5463,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 5461,
"end": 5467,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5461,
"end": 5462,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5464,
"end": 5467,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 5472,
"end": 5477,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 5479,
"end": 5511,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5489,
"end": 5495,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5489,
"end": 5494,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5489,
"end": 5490,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5491,
"end": 5494,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 5521,
"end": 5553,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5531,
"end": 5537,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5531,
"end": 5536,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5531,
"end": 5532,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5533,
"end": 5536,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 5558,
"end": 5654,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 5562,
"end": 5578,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 5562,
"end": 5568,
"ctxt": 0
},
"questionDotToken": {
"start": 5563,
"end": 5564,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 5562,
"end": 5568,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5562,
"end": 5563,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5565,
"end": 5568,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 5573,
"end": 5578,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 5580,
"end": 5612,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5590,
"end": 5596,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5590,
"end": 5595,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5590,
"end": 5591,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5592,
"end": 5595,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 5622,
"end": 5654,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5632,
"end": 5638,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5632,
"end": 5637,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5632,
"end": 5633,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5634,
"end": 5637,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 5659,
"end": 5754,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 5663,
"end": 5678,
"ctxt": 0
},
"operator": "==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 5663,
"end": 5669,
"ctxt": 0
},
"questionDotToken": {
"start": 5664,
"end": 5665,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 5663,
"end": 5669,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5663,
"end": 5664,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5666,
"end": 5669,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 5673,
"end": 5678,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 5680,
"end": 5712,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5690,
"end": 5696,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5690,
"end": 5695,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5690,
"end": 5691,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5692,
"end": 5695,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 5722,
"end": 5754,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5732,
"end": 5738,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5732,
"end": 5737,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5732,
"end": 5733,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5734,
"end": 5737,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 5759,
"end": 5854,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 5763,
"end": 5778,
"ctxt": 0
},
"operator": "!=",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 5763,
"end": 5769,
"ctxt": 0
},
"questionDotToken": {
"start": 5764,
"end": 5765,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 5763,
"end": 5769,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5763,
"end": 5764,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5766,
"end": 5769,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 5773,
"end": 5778,
"ctxt": 0
},
"value": "value",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 5780,
"end": 5812,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5790,
"end": 5796,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5790,
"end": 5795,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5790,
"end": 5791,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5792,
"end": 5795,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 5822,
"end": 5854,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5832,
"end": 5838,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5832,
"end": 5837,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5832,
"end": 5833,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5834,
"end": 5837,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
}
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 5867,
"end": 5870,
"ctxt": 0
},
"value": "f16",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 5871,
"end": 5891,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 5871,
"end": 5891,
"ctxt": 0
},
"value": "o",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 5872,
"end": 5891,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 5874,
"end": 5891,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 5874,
"end": 5879,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 5874,
"end": 5879,
"ctxt": 0
},
"value": "Thing",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 5882,
"end": 5891,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 5858,
"end": 6274,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 5893,
"end": 6274,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 5899,
"end": 5989,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 5903,
"end": 5923,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 5903,
"end": 5909,
"ctxt": 0
},
"questionDotToken": {
"start": 5904,
"end": 5905,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 5903,
"end": 5909,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5903,
"end": 5904,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5906,
"end": 5909,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 5914,
"end": 5923,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 5925,
"end": 5957,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5935,
"end": 5941,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5935,
"end": 5940,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5935,
"end": 5936,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5937,
"end": 5940,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 5967,
"end": 5989,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5977,
"end": 5983,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5977,
"end": 5982,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5977,
"end": 5978,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5979,
"end": 5982,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 5994,
"end": 6084,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 5998,
"end": 6018,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 5998,
"end": 6004,
"ctxt": 0
},
"questionDotToken": {
"start": 5999,
"end": 6000,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 5998,
"end": 6004,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5998,
"end": 5999,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6001,
"end": 6004,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 6009,
"end": 6018,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 6020,
"end": 6042,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6030,
"end": 6036,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 6030,
"end": 6035,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6030,
"end": 6031,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6032,
"end": 6035,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 6052,
"end": 6084,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6062,
"end": 6068,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 6062,
"end": 6067,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6062,
"end": 6063,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6064,
"end": 6067,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 6089,
"end": 6178,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 6093,
"end": 6112,
"ctxt": 0
},
"operator": "==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 6093,
"end": 6099,
"ctxt": 0
},
"questionDotToken": {
"start": 6094,
"end": 6095,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 6093,
"end": 6099,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6093,
"end": 6094,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6096,
"end": 6099,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 6103,
"end": 6112,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 6114,
"end": 6146,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6124,
"end": 6130,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 6124,
"end": 6129,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6124,
"end": 6125,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6126,
"end": 6129,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 6156,
"end": 6178,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6166,
"end": 6172,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 6166,
"end": 6171,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6166,
"end": 6167,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6168,
"end": 6171,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 6183,
"end": 6272,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 6187,
"end": 6206,
"ctxt": 0
},
"operator": "!=",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 6187,
"end": 6193,
"ctxt": 0
},
"questionDotToken": {
"start": 6188,
"end": 6189,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 6187,
"end": 6193,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6187,
"end": 6188,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6190,
"end": 6193,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 6197,
"end": 6206,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 6208,
"end": 6230,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6218,
"end": 6224,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 6218,
"end": 6223,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6218,
"end": 6219,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6220,
"end": 6223,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 6240,
"end": 6272,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6250,
"end": 6256,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 6250,
"end": 6255,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6250,
"end": 6251,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6252,
"end": 6255,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
}
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 6285,
"end": 6288,
"ctxt": 0
},
"value": "f20",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 6289,
"end": 6309,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 6289,
"end": 6309,
"ctxt": 0
},
"value": "o",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 6290,
"end": 6309,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 6292,
"end": 6309,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 6292,
"end": 6297,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 6292,
"end": 6297,
"ctxt": 0
},
"value": "Thing",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 6300,
"end": 6309,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 6276,
"end": 6556,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 6311,
"end": 6556,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 6317,
"end": 6371,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 6321,
"end": 6347,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "UnaryExpression",
"span": {
"start": 6321,
"end": 6334,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "OptionalChainingExpression",
"span": {
"start": 6328,
"end": 6334,
"ctxt": 0
},
"questionDotToken": {
"start": 6329,
"end": 6330,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 6328,
"end": 6334,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6328,
"end": 6329,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6331,
"end": 6334,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 6339,
"end": 6347,
"ctxt": 0
},
"value": "number",
"raw": "\"number\""
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 6349,
"end": 6371,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6359,
"end": 6365,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 6359,
"end": 6364,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6359,
"end": 6360,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6361,
"end": 6364,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 6376,
"end": 6437,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 6380,
"end": 6410,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "UnaryExpression",
"span": {
"start": 6380,
"end": 6397,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "OptionalChainingExpression",
"span": {
"start": 6387,
"end": 6397,
"ctxt": 0
},
"questionDotToken": {
"start": 6388,
"end": 6389,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 6387,
"end": 6397,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6387,
"end": 6388,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 6390,
"end": 6397,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 6391,
"end": 6396,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 6402,
"end": 6410,
"ctxt": 0
},
"value": "number",
"raw": "\"number\""
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 6412,
"end": 6437,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6422,
"end": 6431,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 6422,
"end": 6430,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6422,
"end": 6423,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 6423,
"end": 6430,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 6424,
"end": 6429,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 6442,
"end": 6498,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 6446,
"end": 6474,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "UnaryExpression",
"span": {
"start": 6446,
"end": 6461,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "CallExpression",
"span": {
"start": 6453,
"end": 6461,
"ctxt": 0
},
"callee": {
"type": "OptionalChainingExpression",
"span": {
"start": 6453,
"end": 6459,
"ctxt": 0
},
"questionDotToken": {
"start": 6454,
"end": 6455,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 6453,
"end": 6459,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6453,
"end": 6454,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6456,
"end": 6459,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
},
"arguments": [],
"typeArguments": null
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 6466,
"end": 6474,
"ctxt": 0
},
"value": "number",
"raw": "\"number\""
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 6476,
"end": 6498,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6486,
"end": 6492,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 6486,
"end": 6491,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6486,
"end": 6487,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6488,
"end": 6491,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 6503,
"end": 6554,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 6507,
"end": 6530,
"ctxt": 0
},
"operator": "instanceof",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 6507,
"end": 6513,
"ctxt": 0
},
"questionDotToken": {
"start": 6508,
"end": 6509,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 6507,
"end": 6513,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6507,
"end": 6508,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6510,
"end": 6513,
"ctxt": 0
},
"value": "baz",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 6525,
"end": 6530,
"ctxt": 0
},
"value": "Error",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 6532,
"end": 6554,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6542,
"end": 6548,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 6542,
"end": 6547,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6542,
"end": 6543,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6544,
"end": 6547,
"ctxt": 0
},
"value": "baz",
"optional": false
}
}
}
]
},
"alternate": null
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 6567,
"end": 6570,
"ctxt": 0
},
"value": "f21",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 6571,
"end": 6586,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 6571,
"end": 6586,
"ctxt": 0
},
"value": "o",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 6572,
"end": 6586,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 6574,
"end": 6586,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 6574,
"end": 6579,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 6574,
"end": 6579,
"ctxt": 0
},
"value": "Thing",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 6582,
"end": 6586,
"ctxt": 0
},
"kind": "null"
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 6558,
"end": 6833,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 6588,
"end": 6833,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 6594,
"end": 6648,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 6598,
"end": 6624,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "UnaryExpression",
"span": {
"start": 6598,
"end": 6611,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "OptionalChainingExpression",
"span": {
"start": 6605,
"end": 6611,
"ctxt": 0
},
"questionDotToken": {
"start": 6606,
"end": 6607,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 6605,
"end": 6611,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6605,
"end": 6606,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6608,
"end": 6611,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 6616,
"end": 6624,
"ctxt": 0
},
"value": "number",
"raw": "\"number\""
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 6626,
"end": 6648,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6636,
"end": 6642,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 6636,
"end": 6641,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6636,
"end": 6637,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6638,
"end": 6641,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 6653,
"end": 6714,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 6657,
"end": 6687,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "UnaryExpression",
"span": {
"start": 6657,
"end": 6674,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "OptionalChainingExpression",
"span": {
"start": 6664,
"end": 6674,
"ctxt": 0
},
"questionDotToken": {
"start": 6665,
"end": 6666,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 6664,
"end": 6674,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6664,
"end": 6665,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 6667,
"end": 6674,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 6668,
"end": 6673,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 6679,
"end": 6687,
"ctxt": 0
},
"value": "number",
"raw": "\"number\""
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 6689,
"end": 6714,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6699,
"end": 6708,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 6699,
"end": 6707,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6699,
"end": 6700,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 6700,
"end": 6707,
"ctxt": 0
},
"expression": {
"type": "StringLiteral",
"span": {
"start": 6701,
"end": 6706,
"ctxt": 0
},
"value": "foo",
"raw": "\"foo\""
}
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 6719,
"end": 6775,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 6723,
"end": 6751,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "UnaryExpression",
"span": {
"start": 6723,
"end": 6738,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "CallExpression",
"span": {
"start": 6730,
"end": 6738,
"ctxt": 0
},
"callee": {
"type": "OptionalChainingExpression",
"span": {
"start": 6730,
"end": 6736,
"ctxt": 0
},
"questionDotToken": {
"start": 6731,
"end": 6732,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 6730,
"end": 6736,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6730,
"end": 6731,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6733,
"end": 6736,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
},
"arguments": [],
"typeArguments": null
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 6743,
"end": 6751,
"ctxt": 0
},
"value": "number",
"raw": "\"number\""
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 6753,
"end": 6775,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6763,
"end": 6769,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 6763,
"end": 6768,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6763,
"end": 6764,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6765,
"end": 6768,
"ctxt": 0
},
"value": "bar",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 6780,
"end": 6831,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 6784,
"end": 6807,
"ctxt": 0
},
"operator": "instanceof",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 6784,
"end": 6790,
"ctxt": 0
},
"questionDotToken": {
"start": 6785,
"end": 6786,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 6784,
"end": 6790,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6784,
"end": 6785,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6787,
"end": 6790,
"ctxt": 0
},
"value": "baz",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 6802,
"end": 6807,
"ctxt": 0
},
"value": "Error",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 6809,
"end": 6831,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6819,
"end": 6825,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 6819,
"end": 6824,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6819,
"end": 6820,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6821,
"end": 6824,
"ctxt": 0
},
"value": "baz",
"optional": false
}
}
}
]
},
"alternate": null
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 6844,
"end": 6847,
"ctxt": 0
},
"value": "f22",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 6848,
"end": 6868,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 6848,
"end": 6868,
"ctxt": 0
},
"value": "o",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 6849,
"end": 6868,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 6851,
"end": 6868,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 6851,
"end": 6856,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 6851,
"end": 6856,
"ctxt": 0
},
"value": "Thing",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 6859,
"end": 6868,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 6835,
"end": 7275,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 6870,
"end": 7275,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 6876,
"end": 6972,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 6880,
"end": 6906,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "UnaryExpression",
"span": {
"start": 6880,
"end": 6893,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "OptionalChainingExpression",
"span": {
"start": 6887,
"end": 6893,
"ctxt": 0
},
"questionDotToken": {
"start": 6888,
"end": 6889,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 6887,
"end": 6893,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6887,
"end": 6888,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6890,
"end": 6893,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 6898,
"end": 6906,
"ctxt": 0
},
"value": "number",
"raw": "\"number\""
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 6908,
"end": 6930,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6918,
"end": 6924,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 6918,
"end": 6923,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6918,
"end": 6919,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6920,
"end": 6923,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 6940,
"end": 6972,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6950,
"end": 6956,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 6950,
"end": 6955,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6950,
"end": 6951,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6952,
"end": 6955,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 6977,
"end": 7073,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 6981,
"end": 7007,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "UnaryExpression",
"span": {
"start": 6981,
"end": 6994,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "OptionalChainingExpression",
"span": {
"start": 6988,
"end": 6994,
"ctxt": 0
},
"questionDotToken": {
"start": 6989,
"end": 6990,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 6988,
"end": 6994,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 6988,
"end": 6989,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 6991,
"end": 6994,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 6999,
"end": 7007,
"ctxt": 0
},
"value": "number",
"raw": "\"number\""
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 7009,
"end": 7041,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7019,
"end": 7025,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 7019,
"end": 7024,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7019,
"end": 7020,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7021,
"end": 7024,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 7051,
"end": 7073,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7061,
"end": 7067,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 7061,
"end": 7066,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7061,
"end": 7062,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7063,
"end": 7066,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 7078,
"end": 7173,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 7082,
"end": 7107,
"ctxt": 0
},
"operator": "==",
"left": {
"type": "UnaryExpression",
"span": {
"start": 7082,
"end": 7095,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "OptionalChainingExpression",
"span": {
"start": 7089,
"end": 7095,
"ctxt": 0
},
"questionDotToken": {
"start": 7090,
"end": 7091,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 7089,
"end": 7095,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7089,
"end": 7090,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7092,
"end": 7095,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 7099,
"end": 7107,
"ctxt": 0
},
"value": "number",
"raw": "\"number\""
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 7109,
"end": 7131,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7119,
"end": 7125,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 7119,
"end": 7124,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7119,
"end": 7120,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7121,
"end": 7124,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 7141,
"end": 7173,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7151,
"end": 7157,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 7151,
"end": 7156,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7151,
"end": 7152,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7153,
"end": 7156,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 7178,
"end": 7273,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 7182,
"end": 7207,
"ctxt": 0
},
"operator": "!=",
"left": {
"type": "UnaryExpression",
"span": {
"start": 7182,
"end": 7195,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "OptionalChainingExpression",
"span": {
"start": 7189,
"end": 7195,
"ctxt": 0
},
"questionDotToken": {
"start": 7190,
"end": 7191,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 7189,
"end": 7195,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7189,
"end": 7190,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7192,
"end": 7195,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 7199,
"end": 7207,
"ctxt": 0
},
"value": "number",
"raw": "\"number\""
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 7209,
"end": 7241,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7219,
"end": 7225,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 7219,
"end": 7224,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7219,
"end": 7220,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7221,
"end": 7224,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 7251,
"end": 7273,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7261,
"end": 7267,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 7261,
"end": 7266,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7261,
"end": 7262,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7263,
"end": 7266,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
}
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 7286,
"end": 7289,
"ctxt": 0
},
"value": "f23",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 7290,
"end": 7310,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 7290,
"end": 7310,
"ctxt": 0
},
"value": "o",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 7291,
"end": 7310,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 7293,
"end": 7310,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 7293,
"end": 7298,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 7293,
"end": 7298,
"ctxt": 0
},
"value": "Thing",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 7301,
"end": 7310,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 7277,
"end": 7729,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 7312,
"end": 7729,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 7318,
"end": 7417,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 7322,
"end": 7351,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "UnaryExpression",
"span": {
"start": 7322,
"end": 7335,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "OptionalChainingExpression",
"span": {
"start": 7329,
"end": 7335,
"ctxt": 0
},
"questionDotToken": {
"start": 7330,
"end": 7331,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 7329,
"end": 7335,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7329,
"end": 7330,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7332,
"end": 7335,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 7340,
"end": 7351,
"ctxt": 0
},
"value": "undefined",
"raw": "\"undefined\""
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 7353,
"end": 7385,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7363,
"end": 7369,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 7363,
"end": 7368,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7363,
"end": 7364,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7365,
"end": 7368,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 7395,
"end": 7417,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7405,
"end": 7411,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 7405,
"end": 7410,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7405,
"end": 7406,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7407,
"end": 7410,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 7422,
"end": 7521,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 7426,
"end": 7455,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "UnaryExpression",
"span": {
"start": 7426,
"end": 7439,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "OptionalChainingExpression",
"span": {
"start": 7433,
"end": 7439,
"ctxt": 0
},
"questionDotToken": {
"start": 7434,
"end": 7435,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 7433,
"end": 7439,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7433,
"end": 7434,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7436,
"end": 7439,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 7444,
"end": 7455,
"ctxt": 0
},
"value": "undefined",
"raw": "\"undefined\""
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 7457,
"end": 7479,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7467,
"end": 7473,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 7467,
"end": 7472,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7467,
"end": 7468,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7469,
"end": 7472,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 7489,
"end": 7521,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7499,
"end": 7505,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 7499,
"end": 7504,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7499,
"end": 7500,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7501,
"end": 7504,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 7526,
"end": 7624,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 7530,
"end": 7558,
"ctxt": 0
},
"operator": "==",
"left": {
"type": "UnaryExpression",
"span": {
"start": 7530,
"end": 7543,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "OptionalChainingExpression",
"span": {
"start": 7537,
"end": 7543,
"ctxt": 0
},
"questionDotToken": {
"start": 7538,
"end": 7539,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 7537,
"end": 7543,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7537,
"end": 7538,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7540,
"end": 7543,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 7547,
"end": 7558,
"ctxt": 0
},
"value": "undefined",
"raw": "\"undefined\""
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 7560,
"end": 7592,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7570,
"end": 7576,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 7570,
"end": 7575,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7570,
"end": 7571,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7572,
"end": 7575,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 7602,
"end": 7624,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7612,
"end": 7618,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 7612,
"end": 7617,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7612,
"end": 7613,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7614,
"end": 7617,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 7629,
"end": 7727,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 7633,
"end": 7661,
"ctxt": 0
},
"operator": "!=",
"left": {
"type": "UnaryExpression",
"span": {
"start": 7633,
"end": 7646,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "OptionalChainingExpression",
"span": {
"start": 7640,
"end": 7646,
"ctxt": 0
},
"questionDotToken": {
"start": 7641,
"end": 7642,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 7640,
"end": 7646,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7640,
"end": 7641,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7643,
"end": 7646,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 7650,
"end": 7661,
"ctxt": 0
},
"value": "undefined",
"raw": "\"undefined\""
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 7663,
"end": 7685,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7673,
"end": 7679,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 7673,
"end": 7678,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7673,
"end": 7674,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7675,
"end": 7678,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 7695,
"end": 7727,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7705,
"end": 7711,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 7705,
"end": 7710,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7705,
"end": 7706,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7707,
"end": 7710,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
}
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 7748,
"end": 7754,
"ctxt": 0
},
"value": "assert",
"optional": false
},
"declare": true,
"params": [
{
"type": "Parameter",
"span": {
"start": 7755,
"end": 7765,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 7755,
"end": 7765,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 7756,
"end": 7765,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 7758,
"end": 7765,
"ctxt": 0
},
"kind": "unknown"
}
}
}
}
],
"decorators": [],
"span": {
"start": 7731,
"end": 7778,
"ctxt": 0
},
"body": null,
"generator": false,
"async": false,
"typeParameters": null,
"returnType": {
"type": "TsTypeAnnotation",
"span": {
"start": 7766,
"end": 7777,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypePredicate",
"span": {
"start": 7768,
"end": 7777,
"ctxt": 0
},
"asserts": true,
"paramName": {
"type": "Identifier",
"span": {
"start": 7776,
"end": 7777,
"ctxt": 0
},
"value": "x",
"optional": false
},
"typeAnnotation": null
}
}
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 7796,
"end": 7809,
"ctxt": 0
},
"value": "assertNonNull",
"optional": false
},
"declare": true,
"params": [
{
"type": "Parameter",
"span": {
"start": 7813,
"end": 7817,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 7813,
"end": 7817,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 7814,
"end": 7817,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 7816,
"end": 7817,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 7816,
"end": 7817,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
],
"decorators": [],
"span": {
"start": 7779,
"end": 7848,
"ctxt": 0
},
"body": null,
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 7809,
"end": 7812,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 7810,
"end": 7811,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 7810,
"end": 7811,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"constraint": null,
"default": null
}
]
},
"returnType": {
"type": "TsTypeAnnotation",
"span": {
"start": 7818,
"end": 7847,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypePredicate",
"span": {
"start": 7820,
"end": 7847,
"ctxt": 0
},
"asserts": true,
"paramName": {
"type": "Identifier",
"span": {
"start": 7828,
"end": 7829,
"ctxt": 0
},
"value": "x",
"optional": false
},
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 7833,
"end": 7847,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 7833,
"end": 7847,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 7833,
"end": 7844,
"ctxt": 0
},
"value": "NonNullable",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 7844,
"end": 7847,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 7845,
"end": 7846,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 7845,
"end": 7846,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
]
}
}
}
}
}
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 7859,
"end": 7862,
"ctxt": 0
},
"value": "f30",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 7863,
"end": 7883,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 7863,
"end": 7883,
"ctxt": 0
},
"value": "o",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 7864,
"end": 7883,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 7866,
"end": 7883,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 7866,
"end": 7871,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 7866,
"end": 7871,
"ctxt": 0
},
"value": "Thing",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 7874,
"end": 7883,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 7850,
"end": 8174,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 7885,
"end": 8174,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 7891,
"end": 7949,
"ctxt": 0
},
"test": {
"type": "UnaryExpression",
"span": {
"start": 7895,
"end": 7901,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "UnaryExpression",
"span": {
"start": 7896,
"end": 7901,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "BooleanLiteral",
"span": {
"start": 7897,
"end": 7901,
"ctxt": 0
},
"value": true
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 7903,
"end": 7949,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7913,
"end": 7928,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 7913,
"end": 7927,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 7913,
"end": 7919,
"ctxt": 0
},
"value": "assert",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 7920,
"end": 7926,
"ctxt": 0
},
"questionDotToken": {
"start": 7921,
"end": 7922,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 7920,
"end": 7926,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7920,
"end": 7921,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7923,
"end": 7926,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
}
],
"typeArguments": null
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 7937,
"end": 7943,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 7937,
"end": 7942,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7937,
"end": 7938,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7939,
"end": 7942,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 7954,
"end": 8019,
"ctxt": 0
},
"test": {
"type": "UnaryExpression",
"span": {
"start": 7958,
"end": 7964,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "UnaryExpression",
"span": {
"start": 7959,
"end": 7964,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "BooleanLiteral",
"span": {
"start": 7960,
"end": 7964,
"ctxt": 0
},
"value": true
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 7966,
"end": 8019,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7976,
"end": 7998,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 7976,
"end": 7997,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 7976,
"end": 7982,
"ctxt": 0
},
"value": "assert",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "BinaryExpression",
"span": {
"start": 7983,
"end": 7996,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 7983,
"end": 7989,
"ctxt": 0
},
"questionDotToken": {
"start": 7984,
"end": 7985,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 7983,
"end": 7989,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 7983,
"end": 7984,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 7986,
"end": 7989,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"right": {
"type": "NumericLiteral",
"span": {
"start": 7994,
"end": 7996,
"ctxt": 0
},
"value": 42.0
}
}
}
],
"typeArguments": null
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 8007,
"end": 8013,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 8007,
"end": 8012,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 8007,
"end": 8008,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 8009,
"end": 8012,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 8024,
"end": 8102,
"ctxt": 0
},
"test": {
"type": "UnaryExpression",
"span": {
"start": 8028,
"end": 8034,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "UnaryExpression",
"span": {
"start": 8029,
"end": 8034,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "BooleanLiteral",
"span": {
"start": 8030,
"end": 8034,
"ctxt": 0
},
"value": true
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 8036,
"end": 8102,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 8046,
"end": 8081,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 8046,
"end": 8080,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 8046,
"end": 8052,
"ctxt": 0
},
"value": "assert",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "BinaryExpression",
"span": {
"start": 8053,
"end": 8079,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "UnaryExpression",
"span": {
"start": 8053,
"end": 8066,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "OptionalChainingExpression",
"span": {
"start": 8060,
"end": 8066,
"ctxt": 0
},
"questionDotToken": {
"start": 8061,
"end": 8062,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 8060,
"end": 8066,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 8060,
"end": 8061,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 8063,
"end": 8066,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 8071,
"end": 8079,
"ctxt": 0
},
"value": "number",
"raw": "\"number\""
}
}
}
],
"typeArguments": null
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 8090,
"end": 8096,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 8090,
"end": 8095,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 8090,
"end": 8091,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 8092,
"end": 8095,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 8107,
"end": 8172,
"ctxt": 0
},
"test": {
"type": "UnaryExpression",
"span": {
"start": 8111,
"end": 8117,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "UnaryExpression",
"span": {
"start": 8112,
"end": 8117,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "BooleanLiteral",
"span": {
"start": 8113,
"end": 8117,
"ctxt": 0
},
"value": true
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 8119,
"end": 8172,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 8129,
"end": 8151,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 8129,
"end": 8150,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 8129,
"end": 8142,
"ctxt": 0
},
"value": "assertNonNull",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "OptionalChainingExpression",
"span": {
"start": 8143,
"end": 8149,
"ctxt": 0
},
"questionDotToken": {
"start": 8144,
"end": 8145,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 8143,
"end": 8149,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 8143,
"end": 8144,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 8146,
"end": 8149,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
}
],
"typeArguments": null
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 8160,
"end": 8166,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 8160,
"end": 8165,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 8160,
"end": 8161,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 8162,
"end": 8165,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
]
},
"alternate": null
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 8185,
"end": 8188,
"ctxt": 0
},
"value": "f40",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 8189,
"end": 8209,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 8189,
"end": 8209,
"ctxt": 0
},
"value": "o",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8190,
"end": 8209,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 8192,
"end": 8209,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 8192,
"end": 8197,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8192,
"end": 8197,
"ctxt": 0
},
"value": "Thing",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 8200,
"end": 8209,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 8176,
"end": 8492,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 8211,
"end": 8492,
"ctxt": 0
},
"stmts": [
{
"type": "SwitchStatement",
"span": {
"start": 8217,
"end": 8490,
"ctxt": 0
},
"discriminant": {
"type": "OptionalChainingExpression",
"span": {
"start": 8225,
"end": 8231,
"ctxt": 0
},
"questionDotToken": {
"start": 8226,
"end": 8227,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 8225,
"end": 8231,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 8225,
"end": 8226,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 8228,
"end": 8231,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
"cases": [
{
"type": "SwitchCase",
"span": {
"start": 8243,
"end": 8292,
"ctxt": 0
},
"test": {
"type": "StringLiteral",
"span": {
"start": 8248,
"end": 8253,
"ctxt": 0
},
"value": "abc",
"raw": "\"abc\""
},
"consequent": [
{
"type": "ExpressionStatement",
"span": {
"start": 8267,
"end": 8273,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 8267,
"end": 8272,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 8267,
"end": 8268,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 8269,
"end": 8272,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
{
"type": "BreakStatement",
"span": {
"start": 8286,
"end": 8292,
"ctxt": 0
},
"label": null
}
]
},
{
"type": "SwitchCase",
"span": {
"start": 8301,
"end": 8347,
"ctxt": 0
},
"test": {
"type": "NumericLiteral",
"span": {
"start": 8306,
"end": 8308,
"ctxt": 0
},
"value": 42.0
},
"consequent": [
{
"type": "ExpressionStatement",
"span": {
"start": 8322,
"end": 8328,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 8322,
"end": 8327,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 8322,
"end": 8323,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 8324,
"end": 8327,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
{
"type": "BreakStatement",
"span": {
"start": 8341,
"end": 8347,
"ctxt": 0
},
"label": null
}
]
},
{
"type": "SwitchCase",
"span": {
"start": 8356,
"end": 8419,
"ctxt": 0
},
"test": {
"type": "Identifier",
"span": {
"start": 8361,
"end": 8370,
"ctxt": 0
},
"value": "undefined",
"optional": false
},
"consequent": [
{
"type": "ExpressionStatement",
"span": {
"start": 8384,
"end": 8390,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 8384,
"end": 8389,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 8384,
"end": 8385,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 8386,
"end": 8389,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
{
"type": "BreakStatement",
"span": {
"start": 8413,
"end": 8419,
"ctxt": 0
},
"label": null
}
]
},
{
"type": "SwitchCase",
"span": {
"start": 8428,
"end": 8484,
"ctxt": 0
},
"test": null,
"consequent": [
{
"type": "ExpressionStatement",
"span": {
"start": 8449,
"end": 8455,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 8449,
"end": 8454,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 8449,
"end": 8450,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 8451,
"end": 8454,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
{
"type": "BreakStatement",
"span": {
"start": 8478,
"end": 8484,
"ctxt": 0
},
"label": null
}
]
}
]
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 8503,
"end": 8506,
"ctxt": 0
},
"value": "f41",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 8507,
"end": 8527,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 8507,
"end": 8527,
"ctxt": 0
},
"value": "o",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8508,
"end": 8527,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 8510,
"end": 8527,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 8510,
"end": 8515,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8510,
"end": 8515,
"ctxt": 0
},
"value": "Thing",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 8518,
"end": 8527,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 8494,
"end": 8828,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 8529,
"end": 8828,
"ctxt": 0
},
"stmts": [
{
"type": "SwitchStatement",
"span": {
"start": 8535,
"end": 8826,
"ctxt": 0
},
"discriminant": {
"type": "UnaryExpression",
"span": {
"start": 8543,
"end": 8556,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "OptionalChainingExpression",
"span": {
"start": 8550,
"end": 8556,
"ctxt": 0
},
"questionDotToken": {
"start": 8551,
"end": 8552,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 8550,
"end": 8556,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 8550,
"end": 8551,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 8553,
"end": 8556,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
}
},
"cases": [
{
"type": "SwitchCase",
"span": {
"start": 8568,
"end": 8620,
"ctxt": 0
},
"test": {
"type": "StringLiteral",
"span": {
"start": 8573,
"end": 8581,
"ctxt": 0
},
"value": "string",
"raw": "\"string\""
},
"consequent": [
{
"type": "ExpressionStatement",
"span": {
"start": 8595,
"end": 8601,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 8595,
"end": 8600,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 8595,
"end": 8596,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 8597,
"end": 8600,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
{
"type": "BreakStatement",
"span": {
"start": 8614,
"end": 8620,
"ctxt": 0
},
"label": null
}
]
},
{
"type": "SwitchCase",
"span": {
"start": 8629,
"end": 8681,
"ctxt": 0
},
"test": {
"type": "StringLiteral",
"span": {
"start": 8634,
"end": 8642,
"ctxt": 0
},
"value": "number",
"raw": "\"number\""
},
"consequent": [
{
"type": "ExpressionStatement",
"span": {
"start": 8656,
"end": 8662,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 8656,
"end": 8661,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 8656,
"end": 8657,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 8658,
"end": 8661,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
{
"type": "BreakStatement",
"span": {
"start": 8675,
"end": 8681,
"ctxt": 0
},
"label": null
}
]
},
{
"type": "SwitchCase",
"span": {
"start": 8690,
"end": 8755,
"ctxt": 0
},
"test": {
"type": "StringLiteral",
"span": {
"start": 8695,
"end": 8706,
"ctxt": 0
},
"value": "undefined",
"raw": "\"undefined\""
},
"consequent": [
{
"type": "ExpressionStatement",
"span": {
"start": 8720,
"end": 8726,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 8720,
"end": 8725,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 8720,
"end": 8721,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 8722,
"end": 8725,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
{
"type": "BreakStatement",
"span": {
"start": 8749,
"end": 8755,
"ctxt": 0
},
"label": null
}
]
},
{
"type": "SwitchCase",
"span": {
"start": 8764,
"end": 8820,
"ctxt": 0
},
"test": null,
"consequent": [
{
"type": "ExpressionStatement",
"span": {
"start": 8785,
"end": 8791,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 8785,
"end": 8790,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 8785,
"end": 8786,
"ctxt": 0
},
"value": "o",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 8787,
"end": 8790,
"ctxt": 0
},
"value": "foo",
"optional": false
}
}
},
{
"type": "BreakStatement",
"span": {
"start": 8814,
"end": 8820,
"ctxt": 0
},
"label": null
}
]
}
]
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 8853,
"end": 8965,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 8858,
"end": 8863,
"ctxt": 0
},
"value": "Shape",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 8870,
"end": 8965,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 8872,
"end": 8924,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 8874,
"end": 8892,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 8874,
"end": 8878,
"ctxt": 0
},
"value": "type",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8878,
"end": 8891,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsLiteralType",
"span": {
"start": 8880,
"end": 8891,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 8880,
"end": 8891,
"ctxt": 0
},
"value": "rectangle",
"raw": "'rectangle'"
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 8893,
"end": 8907,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 8893,
"end": 8898,
"ctxt": 0
},
"value": "width",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8898,
"end": 8906,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 8900,
"end": 8906,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 8908,
"end": 8922,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 8908,
"end": 8914,
"ctxt": 0
},
"value": "height",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8914,
"end": 8922,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 8916,
"end": 8922,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
}
]
},
{
"type": "TsTypeLiteral",
"span": {
"start": 8931,
"end": 8965,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 8933,
"end": 8948,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 8933,
"end": 8937,
"ctxt": 0
},
"value": "type",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8937,
"end": 8947,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsLiteralType",
"span": {
"start": 8939,
"end": 8947,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 8939,
"end": 8947,
"ctxt": 0
},
"value": "circle",
"raw": "'circle'"
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 8949,
"end": 8963,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 8949,
"end": 8955,
"ctxt": 0
},
"value": "radius",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8955,
"end": 8963,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 8957,
"end": 8963,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
}
]
}
]
}
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 8976,
"end": 8983,
"ctxt": 0
},
"value": "getArea",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 8984,
"end": 8997,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 8984,
"end": 8997,
"ctxt": 0
},
"value": "shape",
"optional": true,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8990,
"end": 8997,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 8992,
"end": 8997,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8992,
"end": 8997,
"ctxt": 0
},
"value": "Shape",
"optional": false
},
"typeParams": null
}
}
}
}
],
"decorators": [],
"span": {
"start": 8967,
"end": 9215,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 8999,
"end": 9215,
"ctxt": 0
},
"stmts": [
{
"type": "SwitchStatement",
"span": {
"start": 9005,
"end": 9213,
"ctxt": 0
},
"discriminant": {
"type": "OptionalChainingExpression",
"span": {
"start": 9013,
"end": 9024,
"ctxt": 0
},
"questionDotToken": {
"start": 9018,
"end": 9019,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 9013,
"end": 9024,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 9013,
"end": 9018,
"ctxt": 0
},
"value": "shape",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 9020,
"end": 9024,
"ctxt": 0
},
"value": "type",
"optional": false
}
}
},
"cases": [
{
"type": "SwitchCase",
"span": {
"start": 9036,
"end": 9097,
"ctxt": 0
},
"test": {
"type": "StringLiteral",
"span": {
"start": 9041,
"end": 9049,
"ctxt": 0
},
"value": "circle",
"raw": "'circle'"
},
"consequent": [
{
"type": "ReturnStatement",
"span": {
"start": 9063,
"end": 9097,
"ctxt": 0
},
"argument": {
"type": "BinaryExpression",
"span": {
"start": 9070,
"end": 9097,
"ctxt": 0
},
"operator": "*",
"left": {
"type": "MemberExpression",
"span": {
"start": 9070,
"end": 9077,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 9070,
"end": 9074,
"ctxt": 0
},
"value": "Math",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 9075,
"end": 9077,
"ctxt": 0
},
"value": "PI",
"optional": false
}
},
"right": {
"type": "BinaryExpression",
"span": {
"start": 9080,
"end": 9097,
"ctxt": 0
},
"operator": "**",
"left": {
"type": "MemberExpression",
"span": {
"start": 9080,
"end": 9092,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 9080,
"end": 9085,
"ctxt": 0
},
"value": "shape",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 9086,
"end": 9092,
"ctxt": 0
},
"value": "radius",
"optional": false
}
},
"right": {
"type": "NumericLiteral",
"span": {
"start": 9096,
"end": 9097,
"ctxt": 0
},
"value": 2.0
}
}
}
}
]
},
{
"type": "SwitchCase",
"span": {
"start": 9106,
"end": 9169,
"ctxt": 0
},
"test": {
"type": "StringLiteral",
"span": {
"start": 9111,
"end": 9122,
"ctxt": 0
},
"value": "rectangle",
"raw": "'rectangle'"
},
"consequent": [
{
"type": "ReturnStatement",
"span": {
"start": 9136,
"end": 9169,
"ctxt": 0
},
"argument": {
"type": "BinaryExpression",
"span": {
"start": 9143,
"end": 9169,
"ctxt": 0
},
"operator": "*",
"left": {
"type": "MemberExpression",
"span": {
"start": 9143,
"end": 9154,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 9143,
"end": 9148,
"ctxt": 0
},
"value": "shape",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 9149,
"end": 9154,
"ctxt": 0
},
"value": "width",
"optional": false
}
},
"right": {
"type": "MemberExpression",
"span": {
"start": 9157,
"end": 9169,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 9157,
"end": 9162,
"ctxt": 0
},
"value": "shape",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 9163,
"end": 9169,
"ctxt": 0
},
"value": "height",
"optional": false
}
}
}
}
]
},
{
"type": "SwitchCase",
"span": {
"start": 9178,
"end": 9207,
"ctxt": 0
},
"test": null,
"consequent": [
{
"type": "ReturnStatement",
"span": {
"start": 9199,
"end": 9207,
"ctxt": 0
},
"argument": {
"type": "NumericLiteral",
"span": {
"start": 9206,
"end": 9207,
"ctxt": 0
},
"value": 0.0
}
}
]
}
]
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 9217,
"end": 9315,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 9222,
"end": 9229,
"ctxt": 0
},
"value": "Feature",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 9232,
"end": 9314,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 9236,
"end": 9247,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 9236,
"end": 9238,
"ctxt": 0
},
"value": "id",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 9238,
"end": 9246,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 9240,
"end": 9246,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 9250,
"end": 9312,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 9250,
"end": 9258,
"ctxt": 0
},
"value": "geometry",
"optional": false
},
"computed": false,
"optional": true,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 9259,
"end": 9311,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 9261,
"end": 9311,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 9267,
"end": 9280,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 9267,
"end": 9271,
"ctxt": 0
},
"value": "type",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 9271,
"end": 9279,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 9273,
"end": 9279,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 9285,
"end": 9307,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 9285,
"end": 9296,
"ctxt": 0
},
"value": "coordinates",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 9296,
"end": 9306,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 9298,
"end": 9306,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 9298,
"end": 9304,
"ctxt": 0
},
"kind": "number"
}
}
},
"typeParams": null
}
]
}
},
"typeParams": null
}
]
}
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 9327,
"end": 9345,
"ctxt": 0
},
"value": "extractCoordinates",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 9346,
"end": 9356,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 9346,
"end": 9356,
"ctxt": 0
},
"value": "f",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 9347,
"end": 9356,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 9349,
"end": 9356,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 9349,
"end": 9356,
"ctxt": 0
},
"value": "Feature",
"optional": false
},
"typeParams": null
}
}
}
}
],
"decorators": [],
"span": {
"start": 9318,
"end": 9470,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 9368,
"end": 9470,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 9374,
"end": 9433,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 9378,
"end": 9405,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 9378,
"end": 9394,
"ctxt": 0
},
"questionDotToken": {
"start": 9388,
"end": 9389,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 9378,
"end": 9394,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 9378,
"end": 9388,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 9378,
"end": 9379,
"ctxt": 0
},
"value": "f",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 9380,
"end": 9388,
"ctxt": 0
},
"value": "geometry",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 9390,
"end": 9394,
"ctxt": 0
},
"value": "type",
"optional": false
}
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 9399,
"end": 9405,
"ctxt": 0
},
"value": "test",
"raw": "'test'"
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 9407,
"end": 9433,
"ctxt": 0
},
"stmts": [
{
"type": "ReturnStatement",
"span": {
"start": 9417,
"end": 9427,
"ctxt": 0
},
"argument": {
"type": "ArrayExpression",
"span": {
"start": 9424,
"end": 9426,
"ctxt": 0
},
"elements": []
}
}
]
},
"alternate": null
},
{
"type": "ReturnStatement",
"span": {
"start": 9438,
"end": 9468,
"ctxt": 0
},
"argument": {
"type": "MemberExpression",
"span": {
"start": 9445,
"end": 9467,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 9445,
"end": 9455,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 9445,
"end": 9446,
"ctxt": 0
},
"value": "f",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 9447,
"end": 9455,
"ctxt": 0
},
"value": "geometry",
"optional": false
}
},
"property": {
"type": "Identifier",
"span": {
"start": 9456,
"end": 9467,
"ctxt": 0
},
"value": "coordinates",
"optional": false
}
}
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": {
"type": "TsTypeAnnotation",
"span": {
"start": 9357,
"end": 9367,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 9359,
"end": 9367,
"ctxt": 0
},
"elemType": {
"type": "TsKeywordType",
"span": {
"start": 9359,
"end": 9365,
"ctxt": 0
},
"kind": "number"
}
}
}
},
{
"type": "TsInterfaceDeclaration",
"span": {
"start": 9494,
"end": 9545,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 9504,
"end": 9514,
"ctxt": 0
},
"value": "SomeObject",
"optional": false
},
"declare": false,
"typeParams": null,
"extends": [],
"body": {
"type": "TsInterfaceBody",
"span": {
"start": 9515,
"end": 9545,
"ctxt": 0
},
"body": [
{
"type": "TsPropertySignature",
"span": {
"start": 9521,
"end": 9543,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 9521,
"end": 9533,
"ctxt": 0
},
"value": "someProperty",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 9533,
"end": 9542,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 9535,
"end": 9542,
"ctxt": 0
},
"kind": "unknown"
}
},
"typeParams": null
}
]
}
},
{
"type": "VariableDeclaration",
"span": {
"start": 9547,
"end": 9589,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 9551,
"end": 9588,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 9551,
"end": 9567,
"ctxt": 0
},
"value": "lastSomeProperty",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 9567,
"end": 9588,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 9569,
"end": 9588,
"ctxt": 0
},
"types": [
{
"type": "TsKeywordType",
"span": {
"start": 9569,
"end": 9576,
"ctxt": 0
},
"kind": "unknown"
},
{
"type": "TsKeywordType",
"span": {
"start": 9579,
"end": 9588,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
},
"init": null,
"definite": false
}
]
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 9600,
"end": 9612,
"ctxt": 0
},
"value": "someFunction",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 9613,
"end": 9655,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 9613,
"end": 9655,
"ctxt": 0
},
"value": "someOptionalObject",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 9631,
"end": 9655,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 9633,
"end": 9655,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 9633,
"end": 9643,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 9633,
"end": 9643,
"ctxt": 0
},
"value": "SomeObject",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 9646,
"end": 9655,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 9591,
"end": 9903,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 9663,
"end": 9903,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 9669,
"end": 9901,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 9673,
"end": 9726,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 9673,
"end": 9705,
"ctxt": 0
},
"questionDotToken": {
"start": 9691,
"end": 9692,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 9673,
"end": 9705,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 9673,
"end": 9691,
"ctxt": 0
},
"value": "someOptionalObject",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 9693,
"end": 9705,
"ctxt": 0
},
"value": "someProperty",
"optional": false
}
}
},
"right": {
"type": "Identifier",
"span": {
"start": 9710,
"end": 9726,
"ctxt": 0
},
"value": "lastSomeProperty",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 9728,
"end": 9901,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 9738,
"end": 9770,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 9738,
"end": 9769,
"ctxt": 0
},
"callee": {
"type": "MemberExpression",
"span": {
"start": 9738,
"end": 9749,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 9738,
"end": 9745,
"ctxt": 0
},
"value": "console",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 9746,
"end": 9749,
"ctxt": 0
},
"value": "log",
"optional": false
}
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 9750,
"end": 9768,
"ctxt": 0
},
"value": "someOptionalObject",
"optional": false
}
}
],
"typeArguments": null
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 9779,
"end": 9824,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 9779,
"end": 9823,
"ctxt": 0
},
"callee": {
"type": "MemberExpression",
"span": {
"start": 9779,
"end": 9790,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 9779,
"end": 9786,
"ctxt": 0
},
"value": "console",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 9787,
"end": 9790,
"ctxt": 0
},
"value": "log",
"optional": false
}
},
"arguments": [
{
"spread": null,
"expression": {
"type": "MemberExpression",
"span": {
"start": 9791,
"end": 9822,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 9791,
"end": 9809,
"ctxt": 0
},
"value": "someOptionalObject",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 9810,
"end": 9822,
"ctxt": 0
},
"value": "someProperty",
"optional": false
}
}
}
],
"typeArguments": null
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 9843,
"end": 9895,
"ctxt": 0
},
"expression": {
"type": "AssignmentExpression",
"span": {
"start": 9843,
"end": 9894,
"ctxt": 0
},
"operator": "=",
"left": {
"type": "Identifier",
"span": {
"start": 9843,
"end": 9859,
"ctxt": 0
},
"value": "lastSomeProperty",
"optional": false,
"typeAnnotation": null
},
"right": {
"type": "OptionalChainingExpression",
"span": {
"start": 9862,
"end": 9894,
"ctxt": 0
},
"questionDotToken": {
"start": 9880,
"end": 9881,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 9862,
"end": 9894,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 9862,
"end": 9880,
"ctxt": 0
},
"value": "someOptionalObject",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 9882,
"end": 9894,
"ctxt": 0
},
"value": "someProperty",
"optional": false
}
}
}
}
}
]
},
"alternate": null
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": {
"type": "TsTypeAnnotation",
"span": {
"start": 9656,
"end": 9662,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 9658,
"end": 9662,
"ctxt": 0
},
"kind": "void"
}
}
},
{
"type": "VariableDeclaration",
"span": {
"start": 9905,
"end": 9961,
"ctxt": 0
},
"kind": "const",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 9911,
"end": 9960,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 9911,
"end": 9921,
"ctxt": 0
},
"value": "someObject",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 9921,
"end": 9933,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 9923,
"end": 9933,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 9923,
"end": 9933,
"ctxt": 0
},
"value": "SomeObject",
"optional": false
},
"typeParams": null
}
}
},
"init": {
"type": "ObjectExpression",
"span": {
"start": 9936,
"end": 9960,
"ctxt": 0
},
"properties": [
{
"type": "KeyValueProperty",
"key": {
"type": "Identifier",
"span": {
"start": 9942,
"end": 9954,
"ctxt": 0
},
"value": "someProperty",
"optional": false
},
"value": {
"type": "NumericLiteral",
"span": {
"start": 9956,
"end": 9958,
"ctxt": 0
},
"value": 42.0
}
}
]
},
"definite": false
}
]
},
{
"type": "ExpressionStatement",
"span": {
"start": 9963,
"end": 9988,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 9963,
"end": 9987,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 9963,
"end": 9975,
"ctxt": 0
},
"value": "someFunction",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 9976,
"end": 9986,
"ctxt": 0
},
"value": "someObject",
"optional": false
}
}
],
"typeArguments": null
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 9989,
"end": 10013,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 9989,
"end": 10012,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 9989,
"end": 10001,
"ctxt": 0
},
"value": "someFunction",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 10002,
"end": 10011,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
}
],
"typeArguments": null
}
},
{
"type": "VariableDeclaration",
"span": {
"start": 10037,
"end": 10047,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 10041,
"end": 10046,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 10041,
"end": 10042,
"ctxt": 0
},
"value": "i",
"optional": false,
"typeAnnotation": null
},
"init": {
"type": "NumericLiteral",
"span": {
"start": 10045,
"end": 10046,
"ctxt": 0
},
"value": 0.0
},
"definite": false
}
]
},
{
"type": "VariableDeclaration",
"span": {
"start": 10048,
"end": 10097,
"ctxt": 0
},
"kind": "const",
"declare": true,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 10062,
"end": 10096,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 10062,
"end": 10065,
"ctxt": 0
},
"value": "arr",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 10065,
"end": 10096,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsArrayType",
"span": {
"start": 10067,
"end": 10096,
"ctxt": 0
},
"elemType": {
"type": "TsTypeLiteral",
"span": {
"start": 10067,
"end": 10094,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 10069,
"end": 10092,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 10069,
"end": 10072,
"ctxt": 0
},
"value": "tag",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 10072,
"end": 10092,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsParenthesizedType",
"span": {
"start": 10074,
"end": 10092,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 10075,
"end": 10091,
"ctxt": 0
},
"types": [
{
"type": "TsLiteralType",
"span": {
"start": 10075,
"end": 10081,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 10075,
"end": 10081,
"ctxt": 0
},
"value": "left",
"raw": "\"left\""
}
},
{
"type": "TsLiteralType",
"span": {
"start": 10084,
"end": 10091,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 10084,
"end": 10091,
"ctxt": 0
},
"value": "right",
"raw": "\"right\""
}
}
]
}
}
},
"typeParams": null
}
]
}
}
}
},
"init": null,
"definite": false
}
]
},
{
"type": "WhileStatement",
"span": {
"start": 10099,
"end": 10237,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 10106,
"end": 10128,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 10106,
"end": 10117,
"ctxt": 0
},
"questionDotToken": {
"start": 10112,
"end": 10113,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 10106,
"end": 10117,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 10106,
"end": 10112,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 10106,
"end": 10109,
"ctxt": 0
},
"value": "arr",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 10109,
"end": 10112,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 10110,
"end": 10111,
"ctxt": 0
},
"value": "i",
"optional": false
}
}
},
"property": {
"type": "Identifier",
"span": {
"start": 10114,
"end": 10117,
"ctxt": 0
},
"value": "tag",
"optional": false
}
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 10122,
"end": 10128,
"ctxt": 0
},
"value": "left",
"raw": "\"left\""
}
},
"body": {
"type": "BlockStatement",
"span": {
"start": 10130,
"end": 10237,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 10136,
"end": 10143,
"ctxt": 0
},
"expression": {
"type": "AssignmentExpression",
"span": {
"start": 10136,
"end": 10142,
"ctxt": 0
},
"operator": "+=",
"left": {
"type": "Identifier",
"span": {
"start": 10136,
"end": 10137,
"ctxt": 0
},
"value": "i",
"optional": false,
"typeAnnotation": null
},
"right": {
"type": "NumericLiteral",
"span": {
"start": 10141,
"end": 10142,
"ctxt": 0
},
"value": 1.0
}
}
},
{
"type": "IfStatement",
"span": {
"start": 10148,
"end": 10235,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 10152,
"end": 10175,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "OptionalChainingExpression",
"span": {
"start": 10152,
"end": 10163,
"ctxt": 0
},
"questionDotToken": {
"start": 10158,
"end": 10159,
"ctxt": 0
},
"base": {
"type": "MemberExpression",
"span": {
"start": 10152,
"end": 10163,
"ctxt": 0
},
"object": {
"type": "MemberExpression",
"span": {
"start": 10152,
"end": 10158,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 10152,
"end": 10155,
"ctxt": 0
},
"value": "arr",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 10155,
"end": 10158,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 10156,
"end": 10157,
"ctxt": 0
},
"value": "i",
"optional": false
}
}
},
"property": {
"type": "Identifier",
"span": {
"start": 10160,
"end": 10163,
"ctxt": 0
},
"value": "tag",
"optional": false
}
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 10168,
"end": 10175,
"ctxt": 0
},
"value": "right",
"raw": "\"right\""
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 10177,
"end": 10235,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 10187,
"end": 10229,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 10187,
"end": 10228,
"ctxt": 0
},
"callee": {
"type": "MemberExpression",
"span": {
"start": 10187,
"end": 10198,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 10187,
"end": 10194,
"ctxt": 0
},
"value": "console",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 10195,
"end": 10198,
"ctxt": 0
},
"value": "log",
"optional": false
}
},
"arguments": [
{
"spread": null,
"expression": {
"type": "StringLiteral",
"span": {
"start": 10199,
"end": 10227,
"ctxt": 0
},
"value": "I should ALSO be reachable",
"raw": "\"I should ALSO be reachable\""
}
}
],
"typeArguments": null
}
}
]
},
"alternate": null
}
]
}
}
],
"interpreter": null
}