swc/crates/swc_ecma_parser/tests/tsc/unknownControlFlow.json
2023-04-24 14:59:19 +00:00

14278 lines
374 KiB
JSON

{
"type": "Script",
"span": {
"start": 41,
"end": 9010,
"ctxt": 0
},
"body": [
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 41,
"end": 64,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 46,
"end": 49,
"ctxt": 0
},
"value": "T01",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 52,
"end": 63,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 52,
"end": 54,
"ctxt": 0
},
"members": []
},
{
"type": "TsKeywordType",
"span": {
"start": 57,
"end": 63,
"ctxt": 0
},
"kind": "string"
}
]
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 81,
"end": 101,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 86,
"end": 89,
"ctxt": 0
},
"value": "T02",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 92,
"end": 100,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 92,
"end": 94,
"ctxt": 0
},
"members": []
},
{
"type": "TsLiteralType",
"span": {
"start": 97,
"end": 100,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 97,
"end": 100,
"ctxt": 0
},
"value": "a",
"raw": "'a'"
}
}
]
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 110,
"end": 133,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 115,
"end": 118,
"ctxt": 0
},
"value": "T03",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 121,
"end": 132,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 121,
"end": 123,
"ctxt": 0
},
"members": []
},
{
"type": "TsKeywordType",
"span": {
"start": 126,
"end": 132,
"ctxt": 0
},
"kind": "object"
}
]
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 145,
"end": 175,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 150,
"end": 153,
"ctxt": 0
},
"value": "T04",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 156,
"end": 174,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 156,
"end": 158,
"ctxt": 0
},
"members": []
},
{
"type": "TsTypeLiteral",
"span": {
"start": 161,
"end": 174,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 163,
"end": 172,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 163,
"end": 164,
"ctxt": 0
},
"value": "x",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 164,
"end": 172,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 166,
"end": 172,
"ctxt": 0
},
"kind": "number"
}
},
"typeParams": null
}
]
}
]
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 194,
"end": 215,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 199,
"end": 202,
"ctxt": 0
},
"value": "T05",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 205,
"end": 214,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 205,
"end": 207,
"ctxt": 0
},
"members": []
},
{
"type": "TsKeywordType",
"span": {
"start": 210,
"end": 214,
"ctxt": 0
},
"kind": "null"
}
]
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 226,
"end": 252,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 231,
"end": 234,
"ctxt": 0
},
"value": "T06",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 237,
"end": 251,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 237,
"end": 239,
"ctxt": 0
},
"members": []
},
{
"type": "TsKeywordType",
"span": {
"start": 242,
"end": 251,
"ctxt": 0
},
"kind": "undefined"
}
]
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 263,
"end": 291,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 268,
"end": 271,
"ctxt": 0
},
"value": "T07",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 274,
"end": 290,
"ctxt": 0
},
"types": [
{
"type": "TsKeywordType",
"span": {
"start": 274,
"end": 283,
"ctxt": 0
},
"kind": "undefined"
},
{
"type": "TsKeywordType",
"span": {
"start": 286,
"end": 290,
"ctxt": 0
},
"kind": "void"
}
]
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 307,
"end": 330,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 312,
"end": 315,
"ctxt": 0
},
"value": "T10",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 318,
"end": 329,
"ctxt": 0
},
"types": [
{
"type": "TsKeywordType",
"span": {
"start": 318,
"end": 324,
"ctxt": 0
},
"kind": "string"
},
{
"type": "TsTypeLiteral",
"span": {
"start": 327,
"end": 329,
"ctxt": 0
},
"members": []
}
]
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 355,
"end": 378,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 360,
"end": 363,
"ctxt": 0
},
"value": "T11",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 366,
"end": 377,
"ctxt": 0
},
"types": [
{
"type": "TsKeywordType",
"span": {
"start": 366,
"end": 372,
"ctxt": 0
},
"kind": "number"
},
{
"type": "TsTypeLiteral",
"span": {
"start": 375,
"end": 377,
"ctxt": 0
},
"members": []
}
]
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 403,
"end": 426,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 408,
"end": 411,
"ctxt": 0
},
"value": "T12",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 414,
"end": 425,
"ctxt": 0
},
"types": [
{
"type": "TsKeywordType",
"span": {
"start": 414,
"end": 420,
"ctxt": 0
},
"kind": "bigint"
},
{
"type": "TsTypeLiteral",
"span": {
"start": 423,
"end": 425,
"ctxt": 0
},
"members": []
}
]
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 452,
"end": 471,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 457,
"end": 465,
"ctxt": 0
},
"value": "ThisNode",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 468,
"end": 470,
"ctxt": 0
},
"members": []
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 472,
"end": 491,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 477,
"end": 485,
"ctxt": 0
},
"value": "ThatNode",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 488,
"end": 490,
"ctxt": 0
},
"members": []
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 492,
"end": 534,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 497,
"end": 511,
"ctxt": 0
},
"value": "ThisOrThatNode",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 514,
"end": 533,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 514,
"end": 522,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 514,
"end": 522,
"ctxt": 0
},
"value": "ThisNode",
"optional": false
},
"typeParams": null
},
{
"type": "TsTypeReference",
"span": {
"start": 525,
"end": 533,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 525,
"end": 533,
"ctxt": 0
},
"value": "ThatNode",
"optional": false
},
"typeParams": null
}
]
}
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 545,
"end": 548,
"ctxt": 0
},
"value": "f01",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 549,
"end": 559,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 549,
"end": 559,
"ctxt": 0
},
"value": "u",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 550,
"end": 559,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 552,
"end": 559,
"ctxt": 0
},
"kind": "unknown"
}
}
}
}
],
"decorators": [],
"span": {
"start": 536,
"end": 739,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 561,
"end": 739,
"ctxt": 0
},
"stmts": [
{
"type": "VariableDeclaration",
"span": {
"start": 567,
"end": 582,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 571,
"end": 581,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 571,
"end": 573,
"ctxt": 0
},
"value": "x1",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 573,
"end": 577,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 575,
"end": 577,
"ctxt": 0
},
"members": []
}
}
},
"init": {
"type": "Identifier",
"span": {
"start": 580,
"end": 581,
"ctxt": 0
},
"value": "u",
"optional": false
},
"definite": false
}
]
},
{
"type": "VariableDeclaration",
"span": {
"start": 597,
"end": 631,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 601,
"end": 630,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 601,
"end": 603,
"ctxt": 0
},
"value": "x2",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 603,
"end": 626,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 605,
"end": 626,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 605,
"end": 607,
"ctxt": 0
},
"members": []
},
{
"type": "TsKeywordType",
"span": {
"start": 610,
"end": 614,
"ctxt": 0
},
"kind": "null"
},
{
"type": "TsKeywordType",
"span": {
"start": 617,
"end": 626,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
},
"init": {
"type": "Identifier",
"span": {
"start": 629,
"end": 630,
"ctxt": 0
},
"value": "u",
"optional": false
},
"definite": false
}
]
},
{
"type": "VariableDeclaration",
"span": {
"start": 636,
"end": 686,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 640,
"end": 685,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 640,
"end": 642,
"ctxt": 0
},
"value": "x3",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 642,
"end": 681,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 644,
"end": 681,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 644,
"end": 646,
"ctxt": 0
},
"members": []
},
{
"type": "TsTypeLiteral",
"span": {
"start": 649,
"end": 662,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 651,
"end": 660,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 651,
"end": 652,
"ctxt": 0
},
"value": "x",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 652,
"end": 660,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 654,
"end": 660,
"ctxt": 0
},
"kind": "string"
}
},
"typeParams": null
}
]
},
{
"type": "TsKeywordType",
"span": {
"start": 665,
"end": 669,
"ctxt": 0
},
"kind": "null"
},
{
"type": "TsKeywordType",
"span": {
"start": 672,
"end": 681,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
},
"init": {
"type": "Identifier",
"span": {
"start": 684,
"end": 685,
"ctxt": 0
},
"value": "u",
"optional": false
},
"definite": false
}
]
},
{
"type": "VariableDeclaration",
"span": {
"start": 691,
"end": 737,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 695,
"end": 736,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 695,
"end": 697,
"ctxt": 0
},
"value": "x4",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 697,
"end": 732,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 699,
"end": 732,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 699,
"end": 713,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 699,
"end": 713,
"ctxt": 0
},
"value": "ThisOrThatNode",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 716,
"end": 720,
"ctxt": 0
},
"kind": "null"
},
{
"type": "TsKeywordType",
"span": {
"start": 723,
"end": 732,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
},
"init": {
"type": "Identifier",
"span": {
"start": 735,
"end": 736,
"ctxt": 0
},
"value": "u",
"optional": false
},
"definite": false
}
]
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 750,
"end": 753,
"ctxt": 0
},
"value": "f10",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 754,
"end": 764,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 754,
"end": 764,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 755,
"end": 764,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 757,
"end": 764,
"ctxt": 0
},
"kind": "unknown"
}
}
}
}
],
"decorators": [],
"span": {
"start": 741,
"end": 924,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 766,
"end": 924,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 772,
"end": 844,
"ctxt": 0
},
"test": {
"type": "Identifier",
"span": {
"start": 776,
"end": 777,
"ctxt": 0
},
"value": "x",
"optional": false
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 779,
"end": 804,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 789,
"end": 791,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 789,
"end": 790,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 814,
"end": 844,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 824,
"end": 826,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 824,
"end": 825,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 849,
"end": 922,
"ctxt": 0
},
"test": {
"type": "UnaryExpression",
"span": {
"start": 853,
"end": 855,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "Identifier",
"span": {
"start": 854,
"end": 855,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 857,
"end": 887,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 867,
"end": 869,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 867,
"end": 868,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 897,
"end": 922,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 907,
"end": 909,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 907,
"end": 908,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 935,
"end": 938,
"ctxt": 0
},
"value": "f11",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 942,
"end": 946,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 942,
"end": 946,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 943,
"end": 946,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 945,
"end": 946,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 945,
"end": 946,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
],
"decorators": [],
"span": {
"start": 926,
"end": 1102,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 948,
"end": 1102,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 954,
"end": 1024,
"ctxt": 0
},
"test": {
"type": "Identifier",
"span": {
"start": 958,
"end": 959,
"ctxt": 0
},
"value": "x",
"optional": false
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 961,
"end": 990,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 971,
"end": 973,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 971,
"end": 972,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 1000,
"end": 1024,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1010,
"end": 1012,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1010,
"end": 1011,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 1029,
"end": 1100,
"ctxt": 0
},
"test": {
"type": "UnaryExpression",
"span": {
"start": 1033,
"end": 1035,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "Identifier",
"span": {
"start": 1034,
"end": 1035,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 1037,
"end": 1061,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1047,
"end": 1049,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1047,
"end": 1048,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 1071,
"end": 1100,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1081,
"end": 1083,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1081,
"end": 1082,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 938,
"end": 941,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 939,
"end": 940,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 939,
"end": 940,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 1113,
"end": 1116,
"ctxt": 0
},
"value": "f12",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 1131,
"end": 1135,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 1131,
"end": 1135,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1132,
"end": 1135,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1134,
"end": 1135,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1134,
"end": 1135,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
],
"decorators": [],
"span": {
"start": 1104,
"end": 1210,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 1137,
"end": 1210,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 1143,
"end": 1208,
"ctxt": 0
},
"test": {
"type": "Identifier",
"span": {
"start": 1147,
"end": 1148,
"ctxt": 0
},
"value": "x",
"optional": false
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 1150,
"end": 1174,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1160,
"end": 1162,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1160,
"end": 1161,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 1184,
"end": 1208,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1194,
"end": 1196,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1194,
"end": 1195,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1116,
"end": 1130,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1117,
"end": 1129,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1117,
"end": 1118,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": {
"type": "TsTypeLiteral",
"span": {
"start": 1127,
"end": 1129,
"ctxt": 0
},
"members": []
},
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 1221,
"end": 1224,
"ctxt": 0
},
"value": "f20",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 1225,
"end": 1235,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 1225,
"end": 1235,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1226,
"end": 1235,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 1228,
"end": 1235,
"ctxt": 0
},
"kind": "unknown"
}
}
}
}
],
"decorators": [],
"span": {
"start": 1212,
"end": 1742,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 1237,
"end": 1742,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 1243,
"end": 1338,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 1247,
"end": 1262,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "Identifier",
"span": {
"start": 1247,
"end": 1248,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "Identifier",
"span": {
"start": 1253,
"end": 1262,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 1264,
"end": 1296,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1274,
"end": 1276,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1274,
"end": 1275,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 1306,
"end": 1338,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1316,
"end": 1318,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1316,
"end": 1317,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 1343,
"end": 1433,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 1347,
"end": 1357,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "Identifier",
"span": {
"start": 1347,
"end": 1348,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "NullLiteral",
"span": {
"start": 1353,
"end": 1357,
"ctxt": 0
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 1359,
"end": 1396,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1369,
"end": 1371,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1369,
"end": 1370,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 1406,
"end": 1433,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1416,
"end": 1418,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1416,
"end": 1417,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 1438,
"end": 1547,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 1442,
"end": 1471,
"ctxt": 0
},
"operator": "&&",
"left": {
"type": "BinaryExpression",
"span": {
"start": 1442,
"end": 1457,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "Identifier",
"span": {
"start": 1442,
"end": 1443,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "Identifier",
"span": {
"start": 1448,
"end": 1457,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"right": {
"type": "BinaryExpression",
"span": {
"start": 1461,
"end": 1471,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "Identifier",
"span": {
"start": 1461,
"end": 1462,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "NullLiteral",
"span": {
"start": 1467,
"end": 1471,
"ctxt": 0
}
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 1473,
"end": 1498,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1483,
"end": 1485,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1483,
"end": 1484,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 1508,
"end": 1547,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1518,
"end": 1520,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1518,
"end": 1519,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 1552,
"end": 1646,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 1556,
"end": 1570,
"ctxt": 0
},
"operator": "!=",
"left": {
"type": "Identifier",
"span": {
"start": 1556,
"end": 1557,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "Identifier",
"span": {
"start": 1561,
"end": 1570,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 1572,
"end": 1597,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1582,
"end": 1584,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1582,
"end": 1583,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 1607,
"end": 1646,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1617,
"end": 1619,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1617,
"end": 1618,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 1651,
"end": 1740,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 1655,
"end": 1664,
"ctxt": 0
},
"operator": "!=",
"left": {
"type": "Identifier",
"span": {
"start": 1655,
"end": 1656,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "NullLiteral",
"span": {
"start": 1660,
"end": 1664,
"ctxt": 0
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 1666,
"end": 1691,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1676,
"end": 1678,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1676,
"end": 1677,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 1701,
"end": 1740,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1711,
"end": 1713,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1711,
"end": 1712,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 1753,
"end": 1756,
"ctxt": 0
},
"value": "f21",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 1760,
"end": 1764,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 1760,
"end": 1764,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 1761,
"end": 1764,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 1763,
"end": 1764,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 1763,
"end": 1764,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
],
"decorators": [],
"span": {
"start": 1744,
"end": 2239,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 1766,
"end": 2239,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 1772,
"end": 1865,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 1776,
"end": 1791,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "Identifier",
"span": {
"start": 1776,
"end": 1777,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "Identifier",
"span": {
"start": 1782,
"end": 1791,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 1793,
"end": 1831,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1803,
"end": 1805,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1803,
"end": 1804,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 1841,
"end": 1865,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1851,
"end": 1853,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1851,
"end": 1852,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 1870,
"end": 1963,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 1874,
"end": 1884,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "Identifier",
"span": {
"start": 1874,
"end": 1875,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "NullLiteral",
"span": {
"start": 1880,
"end": 1884,
"ctxt": 0
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 1886,
"end": 1929,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1896,
"end": 1898,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1896,
"end": 1897,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 1939,
"end": 1963,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 1949,
"end": 1951,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 1949,
"end": 1950,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 1968,
"end": 2066,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 1972,
"end": 2001,
"ctxt": 0
},
"operator": "&&",
"left": {
"type": "BinaryExpression",
"span": {
"start": 1972,
"end": 1987,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "Identifier",
"span": {
"start": 1972,
"end": 1973,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "Identifier",
"span": {
"start": 1978,
"end": 1987,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"right": {
"type": "BinaryExpression",
"span": {
"start": 1991,
"end": 2001,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "Identifier",
"span": {
"start": 1991,
"end": 1992,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "NullLiteral",
"span": {
"start": 1997,
"end": 2001,
"ctxt": 0
}
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2003,
"end": 2032,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2013,
"end": 2015,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2013,
"end": 2014,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 2042,
"end": 2066,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2052,
"end": 2054,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2052,
"end": 2053,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 2071,
"end": 2154,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 2075,
"end": 2089,
"ctxt": 0
},
"operator": "!=",
"left": {
"type": "Identifier",
"span": {
"start": 2075,
"end": 2076,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "Identifier",
"span": {
"start": 2080,
"end": 2089,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2091,
"end": 2120,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2101,
"end": 2103,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2101,
"end": 2102,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 2130,
"end": 2154,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2140,
"end": 2142,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2140,
"end": 2141,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 2159,
"end": 2237,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 2163,
"end": 2172,
"ctxt": 0
},
"operator": "!=",
"left": {
"type": "Identifier",
"span": {
"start": 2163,
"end": 2164,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "NullLiteral",
"span": {
"start": 2168,
"end": 2172,
"ctxt": 0
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2174,
"end": 2203,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2184,
"end": 2186,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2184,
"end": 2185,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 2213,
"end": 2237,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2223,
"end": 2225,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2223,
"end": 2224,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 1756,
"end": 1759,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 1757,
"end": 1758,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 1757,
"end": 1758,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 2250,
"end": 2253,
"ctxt": 0
},
"value": "f22",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 2280,
"end": 2284,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 2280,
"end": 2284,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2281,
"end": 2284,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 2283,
"end": 2284,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2283,
"end": 2284,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
],
"decorators": [],
"span": {
"start": 2241,
"end": 2731,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 2286,
"end": 2731,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 2292,
"end": 2376,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 2296,
"end": 2311,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "Identifier",
"span": {
"start": 2296,
"end": 2297,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "Identifier",
"span": {
"start": 2302,
"end": 2311,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2313,
"end": 2342,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2323,
"end": 2325,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2323,
"end": 2324,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 2352,
"end": 2376,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2362,
"end": 2364,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2362,
"end": 2363,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 2381,
"end": 2455,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 2385,
"end": 2395,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "Identifier",
"span": {
"start": 2385,
"end": 2386,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "NullLiteral",
"span": {
"start": 2391,
"end": 2395,
"ctxt": 0
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2397,
"end": 2421,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2407,
"end": 2409,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2407,
"end": 2408,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 2431,
"end": 2455,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2441,
"end": 2443,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2441,
"end": 2442,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 2460,
"end": 2558,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 2464,
"end": 2493,
"ctxt": 0
},
"operator": "&&",
"left": {
"type": "BinaryExpression",
"span": {
"start": 2464,
"end": 2479,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "Identifier",
"span": {
"start": 2464,
"end": 2465,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "Identifier",
"span": {
"start": 2470,
"end": 2479,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"right": {
"type": "BinaryExpression",
"span": {
"start": 2483,
"end": 2493,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "Identifier",
"span": {
"start": 2483,
"end": 2484,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "NullLiteral",
"span": {
"start": 2489,
"end": 2493,
"ctxt": 0
}
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2495,
"end": 2524,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2505,
"end": 2507,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2505,
"end": 2506,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 2534,
"end": 2558,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2544,
"end": 2546,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2544,
"end": 2545,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 2563,
"end": 2646,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 2567,
"end": 2581,
"ctxt": 0
},
"operator": "!=",
"left": {
"type": "Identifier",
"span": {
"start": 2567,
"end": 2568,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "Identifier",
"span": {
"start": 2572,
"end": 2581,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2583,
"end": 2612,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2593,
"end": 2595,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2593,
"end": 2594,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 2622,
"end": 2646,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2632,
"end": 2634,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2632,
"end": 2633,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 2651,
"end": 2729,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 2655,
"end": 2664,
"ctxt": 0
},
"operator": "!=",
"left": {
"type": "Identifier",
"span": {
"start": 2655,
"end": 2656,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "NullLiteral",
"span": {
"start": 2660,
"end": 2664,
"ctxt": 0
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2666,
"end": 2695,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2676,
"end": 2678,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2676,
"end": 2677,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 2705,
"end": 2729,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2715,
"end": 2717,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2715,
"end": 2716,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 2253,
"end": 2279,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 2254,
"end": 2278,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2254,
"end": 2255,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": {
"type": "TsUnionType",
"span": {
"start": 2264,
"end": 2278,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 2264,
"end": 2266,
"ctxt": 0
},
"members": []
},
{
"type": "TsKeywordType",
"span": {
"start": 2269,
"end": 2278,
"ctxt": 0
},
"kind": "undefined"
}
]
},
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 2742,
"end": 2745,
"ctxt": 0
},
"value": "f23",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 2749,
"end": 2772,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 2749,
"end": 2772,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 2750,
"end": 2772,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 2752,
"end": 2772,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 2752,
"end": 2753,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 2752,
"end": 2753,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 2756,
"end": 2765,
"ctxt": 0
},
"kind": "undefined"
},
{
"type": "TsKeywordType",
"span": {
"start": 2768,
"end": 2772,
"ctxt": 0
},
"kind": "null"
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 2733,
"end": 3004,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 2774,
"end": 3004,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 2780,
"end": 2837,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 2784,
"end": 2799,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "Identifier",
"span": {
"start": 2784,
"end": 2785,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "Identifier",
"span": {
"start": 2790,
"end": 2799,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2801,
"end": 2837,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2811,
"end": 2813,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2811,
"end": 2812,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 2842,
"end": 2899,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 2846,
"end": 2856,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "Identifier",
"span": {
"start": 2846,
"end": 2847,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "NullLiteral",
"span": {
"start": 2852,
"end": 2856,
"ctxt": 0
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2858,
"end": 2899,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2868,
"end": 2870,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2868,
"end": 2869,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 2904,
"end": 2953,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 2908,
"end": 2922,
"ctxt": 0
},
"operator": "!=",
"left": {
"type": "Identifier",
"span": {
"start": 2908,
"end": 2909,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "Identifier",
"span": {
"start": 2913,
"end": 2922,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2924,
"end": 2953,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2934,
"end": 2936,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2934,
"end": 2935,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 2958,
"end": 3002,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 2962,
"end": 2971,
"ctxt": 0
},
"operator": "!=",
"left": {
"type": "Identifier",
"span": {
"start": 2962,
"end": 2963,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "NullLiteral",
"span": {
"start": 2967,
"end": 2971,
"ctxt": 0
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 2973,
"end": 3002,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 2983,
"end": 2985,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 2983,
"end": 2984,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": null
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 2745,
"end": 2748,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 2746,
"end": 2747,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 2746,
"end": 2747,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 3015,
"end": 3018,
"ctxt": 0
},
"value": "f30",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 3019,
"end": 3024,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 3019,
"end": 3024,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3020,
"end": 3024,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 3022,
"end": 3024,
"ctxt": 0
},
"members": []
}
}
}
}
],
"decorators": [],
"span": {
"start": 3006,
"end": 3090,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 3026,
"end": 3090,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 3032,
"end": 3088,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3036,
"end": 3057,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "UnaryExpression",
"span": {
"start": 3036,
"end": 3044,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "Identifier",
"span": {
"start": 3043,
"end": 3044,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 3049,
"end": 3057,
"ctxt": 0
},
"value": "object",
"raw": "\"object\""
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3059,
"end": 3088,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 3069,
"end": 3071,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 3069,
"end": 3070,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": null
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 3101,
"end": 3104,
"ctxt": 0
},
"value": "f31",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 3108,
"end": 3112,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 3108,
"end": 3112,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3109,
"end": 3112,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3111,
"end": 3112,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3111,
"end": 3112,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
],
"decorators": [],
"span": {
"start": 3092,
"end": 3333,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 3114,
"end": 3333,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 3120,
"end": 3191,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3124,
"end": 3145,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "UnaryExpression",
"span": {
"start": 3124,
"end": 3132,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "Identifier",
"span": {
"start": 3131,
"end": 3132,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 3137,
"end": 3145,
"ctxt": 0
},
"value": "object",
"raw": "\"object\""
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3147,
"end": 3191,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 3157,
"end": 3159,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 3157,
"end": 3158,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 3196,
"end": 3261,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3200,
"end": 3226,
"ctxt": 0
},
"operator": "&&",
"left": {
"type": "Identifier",
"span": {
"start": 3200,
"end": 3201,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "BinaryExpression",
"span": {
"start": 3205,
"end": 3226,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "UnaryExpression",
"span": {
"start": 3205,
"end": 3213,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "Identifier",
"span": {
"start": 3212,
"end": 3213,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 3218,
"end": 3226,
"ctxt": 0
},
"value": "object",
"raw": "\"object\""
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3228,
"end": 3261,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 3238,
"end": 3240,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 3238,
"end": 3239,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 3266,
"end": 3331,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3270,
"end": 3296,
"ctxt": 0
},
"operator": "&&",
"left": {
"type": "BinaryExpression",
"span": {
"start": 3270,
"end": 3291,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "UnaryExpression",
"span": {
"start": 3270,
"end": 3278,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "Identifier",
"span": {
"start": 3277,
"end": 3278,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 3283,
"end": 3291,
"ctxt": 0
},
"value": "object",
"raw": "\"object\""
}
},
"right": {
"type": "Identifier",
"span": {
"start": 3295,
"end": 3296,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3298,
"end": 3331,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 3308,
"end": 3310,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 3308,
"end": 3309,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": null
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 3104,
"end": 3107,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 3105,
"end": 3106,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 3105,
"end": 3106,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 3344,
"end": 3347,
"ctxt": 0
},
"value": "f32",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 3374,
"end": 3378,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 3374,
"end": 3378,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3375,
"end": 3378,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3377,
"end": 3378,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3377,
"end": 3378,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
],
"decorators": [],
"span": {
"start": 3335,
"end": 3448,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 3380,
"end": 3448,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 3386,
"end": 3446,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3390,
"end": 3411,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "UnaryExpression",
"span": {
"start": 3390,
"end": 3398,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "Identifier",
"span": {
"start": 3397,
"end": 3398,
"ctxt": 0
},
"value": "x",
"optional": false
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 3403,
"end": 3411,
"ctxt": 0
},
"value": "object",
"raw": "\"object\""
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 3413,
"end": 3446,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 3423,
"end": 3425,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 3423,
"end": 3424,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": null
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 3347,
"end": 3373,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 3348,
"end": 3372,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 3348,
"end": 3349,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": {
"type": "TsUnionType",
"span": {
"start": 3358,
"end": 3372,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 3358,
"end": 3360,
"ctxt": 0
},
"members": []
},
{
"type": "TsKeywordType",
"span": {
"start": 3363,
"end": 3372,
"ctxt": 0
},
"kind": "undefined"
}
]
},
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 3459,
"end": 3471,
"ctxt": 0
},
"value": "possiblyNull",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 3475,
"end": 3479,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 3475,
"end": 3479,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3476,
"end": 3479,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3478,
"end": 3479,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3478,
"end": 3479,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
],
"decorators": [],
"span": {
"start": 3450,
"end": 3527,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 3481,
"end": 3527,
"ctxt": 0
},
"stmts": [
{
"type": "ReturnStatement",
"span": {
"start": 3487,
"end": 3512,
"ctxt": 0
},
"argument": {
"type": "ConditionalExpression",
"span": {
"start": 3494,
"end": 3511,
"ctxt": 0
},
"test": {
"type": "UnaryExpression",
"span": {
"start": 3494,
"end": 3500,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "UnaryExpression",
"span": {
"start": 3495,
"end": 3500,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "BooleanLiteral",
"span": {
"start": 3496,
"end": 3500,
"ctxt": 0
},
"value": true
}
}
},
"consequent": {
"type": "Identifier",
"span": {
"start": 3503,
"end": 3504,
"ctxt": 0
},
"value": "x",
"optional": false
},
"alternate": {
"type": "NullLiteral",
"span": {
"start": 3507,
"end": 3511,
"ctxt": 0
}
}
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 3471,
"end": 3474,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 3472,
"end": 3473,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 3472,
"end": 3473,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 3538,
"end": 3555,
"ctxt": 0
},
"value": "possiblyUndefined",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 3559,
"end": 3563,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 3559,
"end": 3563,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3560,
"end": 3563,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3562,
"end": 3563,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3562,
"end": 3563,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
],
"decorators": [],
"span": {
"start": 3529,
"end": 3621,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 3565,
"end": 3621,
"ctxt": 0
},
"stmts": [
{
"type": "ReturnStatement",
"span": {
"start": 3571,
"end": 3601,
"ctxt": 0
},
"argument": {
"type": "ConditionalExpression",
"span": {
"start": 3578,
"end": 3600,
"ctxt": 0
},
"test": {
"type": "UnaryExpression",
"span": {
"start": 3578,
"end": 3584,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "UnaryExpression",
"span": {
"start": 3579,
"end": 3584,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "BooleanLiteral",
"span": {
"start": 3580,
"end": 3584,
"ctxt": 0
},
"value": true
}
}
},
"consequent": {
"type": "Identifier",
"span": {
"start": 3587,
"end": 3588,
"ctxt": 0
},
"value": "x",
"optional": false
},
"alternate": {
"type": "Identifier",
"span": {
"start": 3591,
"end": 3600,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 3555,
"end": 3558,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 3556,
"end": 3557,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 3556,
"end": 3557,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 3632,
"end": 3655,
"ctxt": 0
},
"value": "possiblyNullOrUndefined",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 3659,
"end": 3663,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 3659,
"end": 3663,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3660,
"end": 3663,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3662,
"end": 3663,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3662,
"end": 3663,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
],
"decorators": [],
"span": {
"start": 3623,
"end": 3740,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 3665,
"end": 3740,
"ctxt": 0
},
"stmts": [
{
"type": "ReturnStatement",
"span": {
"start": 3671,
"end": 3713,
"ctxt": 0
},
"argument": {
"type": "CallExpression",
"span": {
"start": 3678,
"end": 3712,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 3678,
"end": 3695,
"ctxt": 0
},
"value": "possiblyUndefined",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "CallExpression",
"span": {
"start": 3696,
"end": 3711,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 3696,
"end": 3708,
"ctxt": 0
},
"value": "possiblyNull",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 3709,
"end": 3710,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
],
"typeArguments": null
}
}
],
"typeArguments": null
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 3655,
"end": 3658,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 3656,
"end": 3657,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 3656,
"end": 3657,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 3751,
"end": 3764,
"ctxt": 0
},
"value": "ensureNotNull",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 3768,
"end": 3772,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 3768,
"end": 3772,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3769,
"end": 3772,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3771,
"end": 3772,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3771,
"end": 3772,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
],
"decorators": [],
"span": {
"start": 3742,
"end": 3851,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 3774,
"end": 3851,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 3780,
"end": 3810,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3784,
"end": 3794,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "Identifier",
"span": {
"start": 3784,
"end": 3785,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "NullLiteral",
"span": {
"start": 3790,
"end": 3794,
"ctxt": 0
}
}
},
"consequent": {
"type": "ThrowStatement",
"span": {
"start": 3796,
"end": 3810,
"ctxt": 0
},
"argument": {
"type": "CallExpression",
"span": {
"start": 3802,
"end": 3809,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 3802,
"end": 3807,
"ctxt": 0
},
"value": "Error",
"optional": false
},
"arguments": [],
"typeArguments": null
}
},
"alternate": null
},
{
"type": "ReturnStatement",
"span": {
"start": 3815,
"end": 3824,
"ctxt": 0
},
"argument": {
"type": "Identifier",
"span": {
"start": 3822,
"end": 3823,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 3764,
"end": 3767,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 3765,
"end": 3766,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 3765,
"end": 3766,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 3862,
"end": 3880,
"ctxt": 0
},
"value": "ensureNotUndefined",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 3884,
"end": 3888,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 3884,
"end": 3888,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 3885,
"end": 3888,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 3887,
"end": 3888,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 3887,
"end": 3888,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
],
"decorators": [],
"span": {
"start": 3853,
"end": 3967,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 3890,
"end": 3967,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 3896,
"end": 3931,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 3900,
"end": 3915,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "Identifier",
"span": {
"start": 3900,
"end": 3901,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "Identifier",
"span": {
"start": 3906,
"end": 3915,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "ThrowStatement",
"span": {
"start": 3917,
"end": 3931,
"ctxt": 0
},
"argument": {
"type": "CallExpression",
"span": {
"start": 3923,
"end": 3930,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 3923,
"end": 3928,
"ctxt": 0
},
"value": "Error",
"optional": false
},
"arguments": [],
"typeArguments": null
}
},
"alternate": null
},
{
"type": "ReturnStatement",
"span": {
"start": 3936,
"end": 3945,
"ctxt": 0
},
"argument": {
"type": "Identifier",
"span": {
"start": 3943,
"end": 3944,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 3880,
"end": 3883,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 3881,
"end": 3882,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 3881,
"end": 3882,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 3978,
"end": 4002,
"ctxt": 0
},
"value": "ensureNotNullOrUndefined",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 4006,
"end": 4010,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 4006,
"end": 4010,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4007,
"end": 4010,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 4009,
"end": 4010,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4009,
"end": 4010,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
],
"decorators": [],
"span": {
"start": 3969,
"end": 4075,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 4012,
"end": 4075,
"ctxt": 0
},
"stmts": [
{
"type": "ReturnStatement",
"span": {
"start": 4018,
"end": 4062,
"ctxt": 0
},
"argument": {
"type": "CallExpression",
"span": {
"start": 4025,
"end": 4061,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4025,
"end": 4043,
"ctxt": 0
},
"value": "ensureNotUndefined",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "CallExpression",
"span": {
"start": 4044,
"end": 4060,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4044,
"end": 4057,
"ctxt": 0
},
"value": "ensureNotNull",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 4058,
"end": 4059,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
],
"typeArguments": null
}
}
],
"typeArguments": null
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 4002,
"end": 4005,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 4003,
"end": 4004,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 4003,
"end": 4004,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 4086,
"end": 4089,
"ctxt": 0
},
"value": "f40",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 4090,
"end": 4111,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 4090,
"end": 4111,
"ctxt": 0
},
"value": "a",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4091,
"end": 4111,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 4093,
"end": 4111,
"ctxt": 0
},
"types": [
{
"type": "TsKeywordType",
"span": {
"start": 4093,
"end": 4099,
"ctxt": 0
},
"kind": "string"
},
{
"type": "TsKeywordType",
"span": {
"start": 4102,
"end": 4111,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
}
},
{
"type": "Parameter",
"span": {
"start": 4113,
"end": 4141,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 4113,
"end": 4141,
"ctxt": 0
},
"value": "b",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4114,
"end": 4141,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 4116,
"end": 4141,
"ctxt": 0
},
"types": [
{
"type": "TsKeywordType",
"span": {
"start": 4116,
"end": 4122,
"ctxt": 0
},
"kind": "number"
},
{
"type": "TsKeywordType",
"span": {
"start": 4125,
"end": 4129,
"ctxt": 0
},
"kind": "null"
},
{
"type": "TsKeywordType",
"span": {
"start": 4132,
"end": 4141,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 4077,
"end": 4252,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 4143,
"end": 4252,
"ctxt": 0
},
"stmts": [
{
"type": "VariableDeclaration",
"span": {
"start": 4149,
"end": 4186,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 4153,
"end": 4185,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 4153,
"end": 4155,
"ctxt": 0
},
"value": "a1",
"optional": false,
"typeAnnotation": null
},
"init": {
"type": "CallExpression",
"span": {
"start": 4158,
"end": 4185,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4158,
"end": 4182,
"ctxt": 0
},
"value": "ensureNotNullOrUndefined",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 4183,
"end": 4184,
"ctxt": 0
},
"value": "a",
"optional": false
}
}
],
"typeArguments": null
},
"definite": false
}
]
},
{
"type": "VariableDeclaration",
"span": {
"start": 4202,
"end": 4239,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 4206,
"end": 4238,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 4206,
"end": 4208,
"ctxt": 0
},
"value": "b1",
"optional": false,
"typeAnnotation": null
},
"init": {
"type": "CallExpression",
"span": {
"start": 4211,
"end": 4238,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4211,
"end": 4235,
"ctxt": 0
},
"value": "ensureNotNullOrUndefined",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 4236,
"end": 4237,
"ctxt": 0
},
"value": "b",
"optional": false
}
}
],
"typeArguments": null
},
"definite": false
}
]
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 4254,
"end": 4308,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 4259,
"end": 4261,
"ctxt": 0
},
"value": "QQ",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 4261,
"end": 4264,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 4262,
"end": 4263,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 4262,
"end": 4263,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 4267,
"end": 4307,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4267,
"end": 4278,
"ctxt": 0
},
"value": "NonNullable",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 4278,
"end": 4307,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 4279,
"end": 4306,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4279,
"end": 4290,
"ctxt": 0
},
"value": "NonNullable",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 4290,
"end": 4306,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 4291,
"end": 4305,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4291,
"end": 4302,
"ctxt": 0
},
"value": "NonNullable",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 4302,
"end": 4305,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 4303,
"end": 4304,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4303,
"end": 4304,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
]
}
}
]
}
}
]
}
}
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 4319,
"end": 4322,
"ctxt": 0
},
"value": "f41",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 4326,
"end": 4330,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 4326,
"end": 4330,
"ctxt": 0
},
"value": "a",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 4327,
"end": 4330,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 4329,
"end": 4330,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 4329,
"end": 4330,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
],
"decorators": [],
"span": {
"start": 4310,
"end": 4988,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 4332,
"end": 4988,
"ctxt": 0
},
"stmts": [
{
"type": "VariableDeclaration",
"span": {
"start": 4338,
"end": 4384,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 4342,
"end": 4383,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 4342,
"end": 4344,
"ctxt": 0
},
"value": "a1",
"optional": false,
"typeAnnotation": null
},
"init": {
"type": "CallExpression",
"span": {
"start": 4347,
"end": 4383,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4347,
"end": 4365,
"ctxt": 0
},
"value": "ensureNotUndefined",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "CallExpression",
"span": {
"start": 4366,
"end": 4382,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4366,
"end": 4379,
"ctxt": 0
},
"value": "ensureNotNull",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 4380,
"end": 4381,
"ctxt": 0
},
"value": "a",
"optional": false
}
}
],
"typeArguments": null
}
}
],
"typeArguments": null
},
"definite": false
}
]
},
{
"type": "VariableDeclaration",
"span": {
"start": 4400,
"end": 4446,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 4404,
"end": 4445,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 4404,
"end": 4406,
"ctxt": 0
},
"value": "a2",
"optional": false,
"typeAnnotation": null
},
"init": {
"type": "CallExpression",
"span": {
"start": 4409,
"end": 4445,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4409,
"end": 4422,
"ctxt": 0
},
"value": "ensureNotNull",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "CallExpression",
"span": {
"start": 4423,
"end": 4444,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4423,
"end": 4441,
"ctxt": 0
},
"value": "ensureNotUndefined",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 4442,
"end": 4443,
"ctxt": 0
},
"value": "a",
"optional": false
}
}
],
"typeArguments": null
}
}
],
"typeArguments": null
},
"definite": false
}
]
},
{
"type": "VariableDeclaration",
"span": {
"start": 4462,
"end": 4503,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 4466,
"end": 4502,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 4466,
"end": 4468,
"ctxt": 0
},
"value": "a3",
"optional": false,
"typeAnnotation": null
},
"init": {
"type": "CallExpression",
"span": {
"start": 4471,
"end": 4502,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4471,
"end": 4484,
"ctxt": 0
},
"value": "ensureNotNull",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "CallExpression",
"span": {
"start": 4485,
"end": 4501,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4485,
"end": 4498,
"ctxt": 0
},
"value": "ensureNotNull",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 4499,
"end": 4500,
"ctxt": 0
},
"value": "a",
"optional": false
}
}
],
"typeArguments": null
}
}
],
"typeArguments": null
},
"definite": false
}
]
},
{
"type": "VariableDeclaration",
"span": {
"start": 4535,
"end": 4586,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 4539,
"end": 4585,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 4539,
"end": 4541,
"ctxt": 0
},
"value": "a4",
"optional": false,
"typeAnnotation": null
},
"init": {
"type": "CallExpression",
"span": {
"start": 4544,
"end": 4585,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4544,
"end": 4562,
"ctxt": 0
},
"value": "ensureNotUndefined",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "CallExpression",
"span": {
"start": 4563,
"end": 4584,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4563,
"end": 4581,
"ctxt": 0
},
"value": "ensureNotUndefined",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 4582,
"end": 4583,
"ctxt": 0
},
"value": "a",
"optional": false
}
}
],
"typeArguments": null
}
}
],
"typeArguments": null
},
"definite": false
}
]
},
{
"type": "VariableDeclaration",
"span": {
"start": 4613,
"end": 4676,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 4617,
"end": 4675,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 4617,
"end": 4619,
"ctxt": 0
},
"value": "a5",
"optional": false,
"typeAnnotation": null
},
"init": {
"type": "CallExpression",
"span": {
"start": 4622,
"end": 4675,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4622,
"end": 4646,
"ctxt": 0
},
"value": "ensureNotNullOrUndefined",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "CallExpression",
"span": {
"start": 4647,
"end": 4674,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4647,
"end": 4671,
"ctxt": 0
},
"value": "ensureNotNullOrUndefined",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 4672,
"end": 4673,
"ctxt": 0
},
"value": "a",
"optional": false
}
}
],
"typeArguments": null
}
}
],
"typeArguments": null
},
"definite": false
}
]
},
{
"type": "VariableDeclaration",
"span": {
"start": 4692,
"end": 4743,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 4696,
"end": 4742,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 4696,
"end": 4698,
"ctxt": 0
},
"value": "a6",
"optional": false,
"typeAnnotation": null
},
"init": {
"type": "CallExpression",
"span": {
"start": 4701,
"end": 4742,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4701,
"end": 4714,
"ctxt": 0
},
"value": "ensureNotNull",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "CallExpression",
"span": {
"start": 4715,
"end": 4741,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4715,
"end": 4738,
"ctxt": 0
},
"value": "possiblyNullOrUndefined",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 4739,
"end": 4740,
"ctxt": 0
},
"value": "a",
"optional": false
}
}
],
"typeArguments": null
}
}
],
"typeArguments": null
},
"definite": false
}
]
},
{
"type": "VariableDeclaration",
"span": {
"start": 4771,
"end": 4827,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 4775,
"end": 4826,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 4775,
"end": 4777,
"ctxt": 0
},
"value": "a7",
"optional": false,
"typeAnnotation": null
},
"init": {
"type": "CallExpression",
"span": {
"start": 4780,
"end": 4826,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4780,
"end": 4798,
"ctxt": 0
},
"value": "ensureNotUndefined",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "CallExpression",
"span": {
"start": 4799,
"end": 4825,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4799,
"end": 4822,
"ctxt": 0
},
"value": "possiblyNullOrUndefined",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 4823,
"end": 4824,
"ctxt": 0
},
"value": "a",
"optional": false
}
}
],
"typeArguments": null
}
}
],
"typeArguments": null
},
"definite": false
}
]
},
{
"type": "VariableDeclaration",
"span": {
"start": 4850,
"end": 4895,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 4854,
"end": 4894,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 4854,
"end": 4856,
"ctxt": 0
},
"value": "a8",
"optional": false,
"typeAnnotation": null
},
"init": {
"type": "CallExpression",
"span": {
"start": 4859,
"end": 4894,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4859,
"end": 4872,
"ctxt": 0
},
"value": "ensureNotNull",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "CallExpression",
"span": {
"start": 4873,
"end": 4893,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4873,
"end": 4890,
"ctxt": 0
},
"value": "possiblyUndefined",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 4891,
"end": 4892,
"ctxt": 0
},
"value": "a",
"optional": false
}
}
],
"typeArguments": null
}
}
],
"typeArguments": null
},
"definite": false
}
]
},
{
"type": "VariableDeclaration",
"span": {
"start": 4923,
"end": 4968,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 4927,
"end": 4967,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 4927,
"end": 4929,
"ctxt": 0
},
"value": "a9",
"optional": false,
"typeAnnotation": null
},
"init": {
"type": "CallExpression",
"span": {
"start": 4932,
"end": 4967,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4932,
"end": 4950,
"ctxt": 0
},
"value": "ensureNotUndefined",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "CallExpression",
"span": {
"start": 4951,
"end": 4966,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 4951,
"end": 4963,
"ctxt": 0
},
"value": "possiblyNull",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 4964,
"end": 4965,
"ctxt": 0
},
"value": "a",
"optional": false
}
}
],
"typeArguments": null
}
}
],
"typeArguments": null
},
"definite": false
}
]
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 4322,
"end": 4325,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 4323,
"end": 4324,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 4323,
"end": 4324,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 5021,
"end": 5031,
"ctxt": 0
},
"value": "deepEquals",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 5035,
"end": 5039,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 5035,
"end": 5039,
"ctxt": 0
},
"value": "a",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 5036,
"end": 5039,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 5038,
"end": 5039,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 5038,
"end": 5039,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
},
{
"type": "Parameter",
"span": {
"start": 5041,
"end": 5045,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 5041,
"end": 5045,
"ctxt": 0
},
"value": "b",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 5042,
"end": 5045,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 5044,
"end": 5045,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 5044,
"end": 5045,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
],
"decorators": [],
"span": {
"start": 5012,
"end": 5351,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 5056,
"end": 5351,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 5062,
"end": 5155,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 5066,
"end": 5124,
"ctxt": 0
},
"operator": "||",
"left": {
"type": "BinaryExpression",
"span": {
"start": 5066,
"end": 5118,
"ctxt": 0
},
"operator": "||",
"left": {
"type": "BinaryExpression",
"span": {
"start": 5066,
"end": 5112,
"ctxt": 0
},
"operator": "||",
"left": {
"type": "BinaryExpression",
"span": {
"start": 5066,
"end": 5087,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "UnaryExpression",
"span": {
"start": 5066,
"end": 5074,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "Identifier",
"span": {
"start": 5073,
"end": 5074,
"ctxt": 0
},
"value": "a",
"optional": false
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 5079,
"end": 5087,
"ctxt": 0
},
"value": "object",
"raw": "'object'"
}
},
"right": {
"type": "BinaryExpression",
"span": {
"start": 5091,
"end": 5112,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "UnaryExpression",
"span": {
"start": 5091,
"end": 5099,
"ctxt": 0
},
"operator": "typeof",
"argument": {
"type": "Identifier",
"span": {
"start": 5098,
"end": 5099,
"ctxt": 0
},
"value": "b",
"optional": false
}
},
"right": {
"type": "StringLiteral",
"span": {
"start": 5104,
"end": 5112,
"ctxt": 0
},
"value": "object",
"raw": "'object'"
}
}
},
"right": {
"type": "UnaryExpression",
"span": {
"start": 5116,
"end": 5118,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "Identifier",
"span": {
"start": 5117,
"end": 5118,
"ctxt": 0
},
"value": "a",
"optional": false
}
}
},
"right": {
"type": "UnaryExpression",
"span": {
"start": 5122,
"end": 5124,
"ctxt": 0
},
"operator": "!",
"argument": {
"type": "Identifier",
"span": {
"start": 5123,
"end": 5124,
"ctxt": 0
},
"value": "b",
"optional": false
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 5126,
"end": 5155,
"ctxt": 0
},
"stmts": [
{
"type": "ReturnStatement",
"span": {
"start": 5136,
"end": 5149,
"ctxt": 0
},
"argument": {
"type": "BooleanLiteral",
"span": {
"start": 5143,
"end": 5148,
"ctxt": 0
},
"value": false
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 5160,
"end": 5231,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 5164,
"end": 5200,
"ctxt": 0
},
"operator": "||",
"left": {
"type": "CallExpression",
"span": {
"start": 5164,
"end": 5180,
"ctxt": 0
},
"callee": {
"type": "MemberExpression",
"span": {
"start": 5164,
"end": 5177,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5164,
"end": 5169,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5170,
"end": 5177,
"ctxt": 0
},
"value": "isArray",
"optional": false
}
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 5178,
"end": 5179,
"ctxt": 0
},
"value": "a",
"optional": false
}
}
],
"typeArguments": null
},
"right": {
"type": "CallExpression",
"span": {
"start": 5184,
"end": 5200,
"ctxt": 0
},
"callee": {
"type": "MemberExpression",
"span": {
"start": 5184,
"end": 5197,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5184,
"end": 5189,
"ctxt": 0
},
"value": "Array",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5190,
"end": 5197,
"ctxt": 0
},
"value": "isArray",
"optional": false
}
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 5198,
"end": 5199,
"ctxt": 0
},
"value": "b",
"optional": false
}
}
],
"typeArguments": null
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 5202,
"end": 5231,
"ctxt": 0
},
"stmts": [
{
"type": "ReturnStatement",
"span": {
"start": 5212,
"end": 5225,
"ctxt": 0
},
"argument": {
"type": "BooleanLiteral",
"span": {
"start": 5219,
"end": 5224,
"ctxt": 0
},
"value": false
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 5236,
"end": 5332,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 5240,
"end": 5287,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "MemberExpression",
"span": {
"start": 5240,
"end": 5261,
"ctxt": 0
},
"object": {
"type": "CallExpression",
"span": {
"start": 5240,
"end": 5254,
"ctxt": 0
},
"callee": {
"type": "MemberExpression",
"span": {
"start": 5240,
"end": 5251,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5240,
"end": 5246,
"ctxt": 0
},
"value": "Object",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5247,
"end": 5251,
"ctxt": 0
},
"value": "keys",
"optional": false
}
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 5252,
"end": 5253,
"ctxt": 0
},
"value": "a",
"optional": false
}
}
],
"typeArguments": null
},
"property": {
"type": "Identifier",
"span": {
"start": 5255,
"end": 5261,
"ctxt": 0
},
"value": "length",
"optional": false
}
},
"right": {
"type": "MemberExpression",
"span": {
"start": 5266,
"end": 5287,
"ctxt": 0
},
"object": {
"type": "CallExpression",
"span": {
"start": 5266,
"end": 5280,
"ctxt": 0
},
"callee": {
"type": "MemberExpression",
"span": {
"start": 5266,
"end": 5277,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5266,
"end": 5272,
"ctxt": 0
},
"value": "Object",
"optional": false
},
"property": {
"type": "Identifier",
"span": {
"start": 5273,
"end": 5277,
"ctxt": 0
},
"value": "keys",
"optional": false
}
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 5278,
"end": 5279,
"ctxt": 0
},
"value": "b",
"optional": false
}
}
],
"typeArguments": null
},
"property": {
"type": "Identifier",
"span": {
"start": 5281,
"end": 5287,
"ctxt": 0
},
"value": "length",
"optional": false
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 5289,
"end": 5332,
"ctxt": 0
},
"stmts": [
{
"type": "ReturnStatement",
"span": {
"start": 5313,
"end": 5326,
"ctxt": 0
},
"argument": {
"type": "BooleanLiteral",
"span": {
"start": 5320,
"end": 5325,
"ctxt": 0
},
"value": false
}
}
]
},
"alternate": null
},
{
"type": "ReturnStatement",
"span": {
"start": 5337,
"end": 5349,
"ctxt": 0
},
"argument": {
"type": "BooleanLiteral",
"span": {
"start": 5344,
"end": 5348,
"ctxt": 0
},
"value": true
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 5031,
"end": 5034,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 5032,
"end": 5033,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 5032,
"end": 5033,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"returnType": {
"type": "TsTypeAnnotation",
"span": {
"start": 5046,
"end": 5055,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 5048,
"end": 5055,
"ctxt": 0
},
"kind": "boolean"
}
}
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 5384,
"end": 5387,
"ctxt": 0
},
"value": "foo",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 5391,
"end": 5402,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 5391,
"end": 5402,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 5392,
"end": 5402,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 5394,
"end": 5402,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 5394,
"end": 5395,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 5394,
"end": 5395,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 5398,
"end": 5402,
"ctxt": 0
},
"kind": "null"
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 5375,
"end": 5461,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 5404,
"end": 5461,
"ctxt": 0
},
"stmts": [
{
"type": "VariableDeclaration",
"span": {
"start": 5410,
"end": 5420,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 5414,
"end": 5419,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 5414,
"end": 5415,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": null
},
"init": {
"type": "Identifier",
"span": {
"start": 5418,
"end": 5419,
"ctxt": 0
},
"value": "x",
"optional": false
},
"definite": false
}
]
},
{
"type": "IfStatement",
"span": {
"start": 5425,
"end": 5459,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 5429,
"end": 5439,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "Identifier",
"span": {
"start": 5429,
"end": 5430,
"ctxt": 0
},
"value": "y",
"optional": false
},
"right": {
"type": "NullLiteral",
"span": {
"start": 5435,
"end": 5439,
"ctxt": 0
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 5441,
"end": 5459,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5451,
"end": 5453,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 5451,
"end": 5452,
"ctxt": 0
},
"value": "y",
"optional": false
}
}
]
},
"alternate": null
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 5387,
"end": 5390,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 5388,
"end": 5389,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 5388,
"end": 5389,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 5759,
"end": 5762,
"ctxt": 0
},
"value": "ff1",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 5766,
"end": 5770,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 5766,
"end": 5770,
"ctxt": 0
},
"value": "t",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 5767,
"end": 5770,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 5769,
"end": 5770,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 5769,
"end": 5770,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
},
{
"type": "Parameter",
"span": {
"start": 5772,
"end": 5782,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 5772,
"end": 5782,
"ctxt": 0
},
"value": "k",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 5773,
"end": 5782,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeOperator",
"span": {
"start": 5775,
"end": 5782,
"ctxt": 0
},
"op": "keyof",
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 5781,
"end": 5782,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 5781,
"end": 5782,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"decorators": [],
"span": {
"start": 5750,
"end": 5797,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 5784,
"end": 5797,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5790,
"end": 5795,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5790,
"end": 5794,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5790,
"end": 5791,
"ctxt": 0
},
"value": "t",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 5791,
"end": 5794,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 5792,
"end": 5793,
"ctxt": 0
},
"value": "k",
"optional": false
}
}
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 5762,
"end": 5765,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 5763,
"end": 5764,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 5763,
"end": 5764,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 5808,
"end": 5811,
"ctxt": 0
},
"value": "ff2",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 5815,
"end": 5824,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 5815,
"end": 5824,
"ctxt": 0
},
"value": "t",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 5816,
"end": 5824,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 5818,
"end": 5824,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 5818,
"end": 5819,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 5818,
"end": 5819,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
},
{
"type": "TsTypeLiteral",
"span": {
"start": 5822,
"end": 5824,
"ctxt": 0
},
"members": []
}
]
}
}
}
},
{
"type": "Parameter",
"span": {
"start": 5826,
"end": 5836,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 5826,
"end": 5836,
"ctxt": 0
},
"value": "k",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 5827,
"end": 5836,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeOperator",
"span": {
"start": 5829,
"end": 5836,
"ctxt": 0
},
"op": "keyof",
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 5835,
"end": 5836,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 5835,
"end": 5836,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
}
],
"decorators": [],
"span": {
"start": 5799,
"end": 5851,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 5838,
"end": 5851,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5844,
"end": 5849,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5844,
"end": 5848,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5844,
"end": 5845,
"ctxt": 0
},
"value": "t",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 5845,
"end": 5848,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 5846,
"end": 5847,
"ctxt": 0
},
"value": "k",
"optional": false
}
}
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 5811,
"end": 5814,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 5812,
"end": 5813,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 5812,
"end": 5813,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 5862,
"end": 5865,
"ctxt": 0
},
"value": "ff3",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 5869,
"end": 5873,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 5869,
"end": 5873,
"ctxt": 0
},
"value": "t",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 5870,
"end": 5873,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 5872,
"end": 5873,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 5872,
"end": 5873,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
},
{
"type": "Parameter",
"span": {
"start": 5875,
"end": 5892,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 5875,
"end": 5892,
"ctxt": 0
},
"value": "k",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 5876,
"end": 5892,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeOperator",
"span": {
"start": 5878,
"end": 5892,
"ctxt": 0
},
"op": "keyof",
"typeAnnotation": {
"type": "TsParenthesizedType",
"span": {
"start": 5884,
"end": 5892,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 5885,
"end": 5891,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 5885,
"end": 5886,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 5885,
"end": 5886,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
},
{
"type": "TsTypeLiteral",
"span": {
"start": 5889,
"end": 5891,
"ctxt": 0
},
"members": []
}
]
}
}
}
}
}
}
],
"decorators": [],
"span": {
"start": 5853,
"end": 5917,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 5894,
"end": 5917,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5900,
"end": 5905,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5900,
"end": 5904,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5900,
"end": 5901,
"ctxt": 0
},
"value": "t",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 5901,
"end": 5904,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 5902,
"end": 5903,
"ctxt": 0
},
"value": "k",
"optional": false
}
}
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 5865,
"end": 5868,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 5866,
"end": 5867,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 5866,
"end": 5867,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 5928,
"end": 5931,
"ctxt": 0
},
"value": "ff4",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 5935,
"end": 5944,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 5935,
"end": 5944,
"ctxt": 0
},
"value": "t",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 5936,
"end": 5944,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 5938,
"end": 5944,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 5938,
"end": 5939,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 5938,
"end": 5939,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
},
{
"type": "TsTypeLiteral",
"span": {
"start": 5942,
"end": 5944,
"ctxt": 0
},
"members": []
}
]
}
}
}
},
{
"type": "Parameter",
"span": {
"start": 5946,
"end": 5963,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 5946,
"end": 5963,
"ctxt": 0
},
"value": "k",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 5947,
"end": 5963,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeOperator",
"span": {
"start": 5949,
"end": 5963,
"ctxt": 0
},
"op": "keyof",
"typeAnnotation": {
"type": "TsParenthesizedType",
"span": {
"start": 5955,
"end": 5963,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 5956,
"end": 5962,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 5956,
"end": 5957,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 5956,
"end": 5957,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
},
{
"type": "TsTypeLiteral",
"span": {
"start": 5960,
"end": 5962,
"ctxt": 0
},
"members": []
}
]
}
}
}
}
}
}
],
"decorators": [],
"span": {
"start": 5919,
"end": 5978,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 5965,
"end": 5978,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 5971,
"end": 5976,
"ctxt": 0
},
"expression": {
"type": "MemberExpression",
"span": {
"start": 5971,
"end": 5975,
"ctxt": 0
},
"object": {
"type": "Identifier",
"span": {
"start": 5971,
"end": 5972,
"ctxt": 0
},
"value": "t",
"optional": false
},
"property": {
"type": "Computed",
"span": {
"start": 5972,
"end": 5975,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 5973,
"end": 5974,
"ctxt": 0
},
"value": "k",
"optional": false
}
}
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 5931,
"end": 5934,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 5932,
"end": 5933,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 5932,
"end": 5933,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"returnType": null
},
{
"type": "ExpressionStatement",
"span": {
"start": 5980,
"end": 5997,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 5980,
"end": 5996,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 5980,
"end": 5983,
"ctxt": 0
},
"value": "ff1",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "NullLiteral",
"span": {
"start": 5984,
"end": 5988,
"ctxt": 0
}
}
},
{
"spread": null,
"expression": {
"type": "StringLiteral",
"span": {
"start": 5990,
"end": 5995,
"ctxt": 0
},
"value": "foo",
"raw": "'foo'"
}
}
],
"typeArguments": null
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 6008,
"end": 6025,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 6008,
"end": 6024,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 6008,
"end": 6011,
"ctxt": 0
},
"value": "ff2",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "NullLiteral",
"span": {
"start": 6012,
"end": 6016,
"ctxt": 0
}
}
},
{
"spread": null,
"expression": {
"type": "StringLiteral",
"span": {
"start": 6018,
"end": 6023,
"ctxt": 0
},
"value": "foo",
"raw": "'foo'"
}
}
],
"typeArguments": null
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 6036,
"end": 6053,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 6036,
"end": 6052,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 6036,
"end": 6039,
"ctxt": 0
},
"value": "ff3",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "NullLiteral",
"span": {
"start": 6040,
"end": 6044,
"ctxt": 0
}
}
},
{
"spread": null,
"expression": {
"type": "StringLiteral",
"span": {
"start": 6046,
"end": 6051,
"ctxt": 0
},
"value": "foo",
"raw": "'foo'"
}
}
],
"typeArguments": null
}
},
{
"type": "ExpressionStatement",
"span": {
"start": 6054,
"end": 6071,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 6054,
"end": 6070,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 6054,
"end": 6057,
"ctxt": 0
},
"value": "ff4",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "NullLiteral",
"span": {
"start": 6058,
"end": 6062,
"ctxt": 0
}
}
},
{
"spread": null,
"expression": {
"type": "StringLiteral",
"span": {
"start": 6064,
"end": 6069,
"ctxt": 0
},
"value": "foo",
"raw": "'foo'"
}
}
],
"typeArguments": null
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 6105,
"end": 6143,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 6110,
"end": 6113,
"ctxt": 0
},
"value": "Foo",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 6116,
"end": 6142,
"ctxt": 0
},
"members": [
{
"type": "TsIndexSignature",
"params": [
{
"type": "Identifier",
"span": {
"start": 6119,
"end": 6130,
"ctxt": 0
},
"value": "key",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 6122,
"end": 6130,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 6124,
"end": 6130,
"ctxt": 0
},
"kind": "string"
}
}
}
],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 6131,
"end": 6140,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 6133,
"end": 6140,
"ctxt": 0
},
"kind": "unknown"
}
},
"readonly": false,
"static": false,
"span": {
"start": 6118,
"end": 6140,
"ctxt": 0
}
}
]
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 6144,
"end": 6179,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 6149,
"end": 6160,
"ctxt": 0
},
"value": "NullableFoo",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 6163,
"end": 6178,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 6163,
"end": 6166,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 6163,
"end": 6166,
"ctxt": 0
},
"value": "Foo",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 6169,
"end": 6178,
"ctxt": 0
},
"kind": "undefined"
}
]
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 6181,
"end": 6238,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 6186,
"end": 6189,
"ctxt": 0
},
"value": "Bar",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 6189,
"end": 6212,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 6190,
"end": 6211,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 6190,
"end": 6191,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 6200,
"end": 6211,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 6200,
"end": 6211,
"ctxt": 0
},
"value": "NullableFoo",
"optional": false
},
"typeParams": null
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsIndexedAccessType",
"span": {
"start": 6215,
"end": 6237,
"ctxt": 0
},
"readonly": false,
"objectType": {
"type": "TsTypeReference",
"span": {
"start": 6215,
"end": 6229,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 6215,
"end": 6226,
"ctxt": 0
},
"value": "NonNullable",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterInstantiation",
"span": {
"start": 6226,
"end": 6229,
"ctxt": 0
},
"params": [
{
"type": "TsTypeReference",
"span": {
"start": 6227,
"end": 6228,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 6227,
"end": 6228,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
]
}
},
"indexType": {
"type": "TsKeywordType",
"span": {
"start": 6230,
"end": 6236,
"ctxt": 0
},
"kind": "string"
}
}
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 6288,
"end": 6291,
"ctxt": 0
},
"value": "fx0",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 6295,
"end": 6317,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 6295,
"end": 6317,
"ctxt": 0
},
"value": "value",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 6300,
"end": 6317,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 6302,
"end": 6317,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 6302,
"end": 6303,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 6302,
"end": 6303,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
},
{
"type": "TsParenthesizedType",
"span": {
"start": 6306,
"end": 6317,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 6307,
"end": 6316,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 6307,
"end": 6309,
"ctxt": 0
},
"members": []
},
{
"type": "TsKeywordType",
"span": {
"start": 6312,
"end": 6316,
"ctxt": 0
},
"kind": "null"
}
]
}
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 6279,
"end": 6430,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 6319,
"end": 6430,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 6325,
"end": 6428,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 6329,
"end": 6341,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "Identifier",
"span": {
"start": 6329,
"end": 6334,
"ctxt": 0
},
"value": "value",
"optional": false
},
"right": {
"type": "NumericLiteral",
"span": {
"start": 6339,
"end": 6341,
"ctxt": 0
},
"value": 42.0,
"raw": "42"
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 6343,
"end": 6376,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6353,
"end": 6359,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 6353,
"end": 6358,
"ctxt": 0
},
"value": "value",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 6386,
"end": 6428,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6396,
"end": 6402,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 6396,
"end": 6401,
"ctxt": 0
},
"value": "value",
"optional": false
}
}
]
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 6291,
"end": 6294,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 6292,
"end": 6293,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 6292,
"end": 6293,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": null,
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 6441,
"end": 6444,
"ctxt": 0
},
"value": "fx1",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 6464,
"end": 6486,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 6464,
"end": 6486,
"ctxt": 0
},
"value": "value",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 6469,
"end": 6486,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 6471,
"end": 6486,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 6471,
"end": 6472,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 6471,
"end": 6472,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
},
{
"type": "TsParenthesizedType",
"span": {
"start": 6475,
"end": 6486,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 6476,
"end": 6485,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 6476,
"end": 6478,
"ctxt": 0
},
"members": []
},
{
"type": "TsKeywordType",
"span": {
"start": 6481,
"end": 6485,
"ctxt": 0
},
"kind": "null"
}
]
}
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 6432,
"end": 6599,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 6488,
"end": 6599,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 6494,
"end": 6597,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 6498,
"end": 6510,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "Identifier",
"span": {
"start": 6498,
"end": 6503,
"ctxt": 0
},
"value": "value",
"optional": false
},
"right": {
"type": "NumericLiteral",
"span": {
"start": 6508,
"end": 6510,
"ctxt": 0
},
"value": 42.0,
"raw": "42"
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 6512,
"end": 6545,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6522,
"end": 6528,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 6522,
"end": 6527,
"ctxt": 0
},
"value": "value",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 6555,
"end": 6597,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6565,
"end": 6571,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 6565,
"end": 6570,
"ctxt": 0
},
"value": "value",
"optional": false
}
}
]
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 6444,
"end": 6463,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 6445,
"end": 6462,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 6445,
"end": 6446,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": {
"type": "TsKeywordType",
"span": {
"start": 6455,
"end": 6462,
"ctxt": 0
},
"kind": "unknown"
},
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 6610,
"end": 6613,
"ctxt": 0
},
"value": "fx2",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 6628,
"end": 6650,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 6628,
"end": 6650,
"ctxt": 0
},
"value": "value",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 6633,
"end": 6650,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 6635,
"end": 6650,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 6635,
"end": 6636,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 6635,
"end": 6636,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
},
{
"type": "TsParenthesizedType",
"span": {
"start": 6639,
"end": 6650,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 6640,
"end": 6649,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 6640,
"end": 6642,
"ctxt": 0
},
"members": []
},
{
"type": "TsKeywordType",
"span": {
"start": 6645,
"end": 6649,
"ctxt": 0
},
"kind": "null"
}
]
}
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 6601,
"end": 6763,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 6652,
"end": 6763,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 6658,
"end": 6761,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 6662,
"end": 6674,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "Identifier",
"span": {
"start": 6662,
"end": 6667,
"ctxt": 0
},
"value": "value",
"optional": false
},
"right": {
"type": "NumericLiteral",
"span": {
"start": 6672,
"end": 6674,
"ctxt": 0
},
"value": 42.0,
"raw": "42"
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 6676,
"end": 6709,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6686,
"end": 6692,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 6686,
"end": 6691,
"ctxt": 0
},
"value": "value",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 6719,
"end": 6761,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6729,
"end": 6735,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 6729,
"end": 6734,
"ctxt": 0
},
"value": "value",
"optional": false
}
}
]
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 6613,
"end": 6627,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 6614,
"end": 6626,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 6614,
"end": 6615,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": {
"type": "TsTypeLiteral",
"span": {
"start": 6624,
"end": 6626,
"ctxt": 0
},
"members": []
},
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 6774,
"end": 6777,
"ctxt": 0
},
"value": "fx3",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 6804,
"end": 6826,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 6804,
"end": 6826,
"ctxt": 0
},
"value": "value",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 6809,
"end": 6826,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 6811,
"end": 6826,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 6811,
"end": 6812,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 6811,
"end": 6812,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
},
{
"type": "TsParenthesizedType",
"span": {
"start": 6815,
"end": 6826,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 6816,
"end": 6825,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 6816,
"end": 6818,
"ctxt": 0
},
"members": []
},
{
"type": "TsKeywordType",
"span": {
"start": 6821,
"end": 6825,
"ctxt": 0
},
"kind": "null"
}
]
}
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 6765,
"end": 6939,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 6828,
"end": 6939,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 6834,
"end": 6937,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 6838,
"end": 6850,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "Identifier",
"span": {
"start": 6838,
"end": 6843,
"ctxt": 0
},
"value": "value",
"optional": false
},
"right": {
"type": "NumericLiteral",
"span": {
"start": 6848,
"end": 6850,
"ctxt": 0
},
"value": 42.0,
"raw": "42"
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 6852,
"end": 6885,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6862,
"end": 6868,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 6862,
"end": 6867,
"ctxt": 0
},
"value": "value",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 6895,
"end": 6937,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 6905,
"end": 6911,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 6905,
"end": 6910,
"ctxt": 0
},
"value": "value",
"optional": false
}
}
]
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 6777,
"end": 6803,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 6778,
"end": 6802,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 6778,
"end": 6779,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": {
"type": "TsUnionType",
"span": {
"start": 6788,
"end": 6802,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 6788,
"end": 6790,
"ctxt": 0
},
"members": []
},
{
"type": "TsKeywordType",
"span": {
"start": 6793,
"end": 6802,
"ctxt": 0
},
"kind": "undefined"
}
]
},
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 6950,
"end": 6953,
"ctxt": 0
},
"value": "fx4",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 6975,
"end": 6997,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 6975,
"end": 6997,
"ctxt": 0
},
"value": "value",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 6980,
"end": 6997,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 6982,
"end": 6997,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 6982,
"end": 6983,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 6982,
"end": 6983,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
},
{
"type": "TsParenthesizedType",
"span": {
"start": 6986,
"end": 6997,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 6987,
"end": 6996,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 6987,
"end": 6989,
"ctxt": 0
},
"members": []
},
{
"type": "TsKeywordType",
"span": {
"start": 6992,
"end": 6996,
"ctxt": 0
},
"kind": "null"
}
]
}
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 6941,
"end": 7110,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 6999,
"end": 7110,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 7005,
"end": 7108,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 7009,
"end": 7021,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "Identifier",
"span": {
"start": 7009,
"end": 7014,
"ctxt": 0
},
"value": "value",
"optional": false
},
"right": {
"type": "NumericLiteral",
"span": {
"start": 7019,
"end": 7021,
"ctxt": 0
},
"value": 42.0,
"raw": "42"
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 7023,
"end": 7056,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7033,
"end": 7039,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 7033,
"end": 7038,
"ctxt": 0
},
"value": "value",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 7066,
"end": 7108,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7076,
"end": 7082,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 7076,
"end": 7081,
"ctxt": 0
},
"value": "value",
"optional": false
}
}
]
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 6953,
"end": 6974,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 6954,
"end": 6973,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 6954,
"end": 6955,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": {
"type": "TsUnionType",
"span": {
"start": 6964,
"end": 6973,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 6964,
"end": 6966,
"ctxt": 0
},
"members": []
},
{
"type": "TsKeywordType",
"span": {
"start": 6969,
"end": 6973,
"ctxt": 0
},
"kind": "null"
}
]
},
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 7121,
"end": 7124,
"ctxt": 0
},
"value": "fx5",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 7158,
"end": 7180,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 7158,
"end": 7180,
"ctxt": 0
},
"value": "value",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 7163,
"end": 7180,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 7165,
"end": 7180,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 7165,
"end": 7166,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 7165,
"end": 7166,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
},
{
"type": "TsParenthesizedType",
"span": {
"start": 7169,
"end": 7180,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 7170,
"end": 7179,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 7170,
"end": 7172,
"ctxt": 0
},
"members": []
},
{
"type": "TsKeywordType",
"span": {
"start": 7175,
"end": 7179,
"ctxt": 0
},
"kind": "null"
}
]
}
}
]
}
}
}
}
],
"decorators": [],
"span": {
"start": 7112,
"end": 7293,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 7182,
"end": 7293,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 7188,
"end": 7291,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 7192,
"end": 7204,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "Identifier",
"span": {
"start": 7192,
"end": 7197,
"ctxt": 0
},
"value": "value",
"optional": false
},
"right": {
"type": "NumericLiteral",
"span": {
"start": 7202,
"end": 7204,
"ctxt": 0
},
"value": 42.0,
"raw": "42"
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 7206,
"end": 7239,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7216,
"end": 7222,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 7216,
"end": 7221,
"ctxt": 0
},
"value": "value",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 7249,
"end": 7291,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7259,
"end": 7265,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 7259,
"end": 7264,
"ctxt": 0
},
"value": "value",
"optional": false
}
}
]
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 7124,
"end": 7157,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 7125,
"end": 7156,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 7125,
"end": 7126,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": {
"type": "TsUnionType",
"span": {
"start": 7135,
"end": 7156,
"ctxt": 0
},
"types": [
{
"type": "TsTypeLiteral",
"span": {
"start": 7135,
"end": 7137,
"ctxt": 0
},
"members": []
},
{
"type": "TsKeywordType",
"span": {
"start": 7140,
"end": 7144,
"ctxt": 0
},
"kind": "null"
},
{
"type": "TsKeywordType",
"span": {
"start": 7147,
"end": 7156,
"ctxt": 0
},
"kind": "undefined"
}
]
},
"default": null
}
]
},
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 7332,
"end": 7336,
"ctxt": 0
},
"value": "fx10",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 7337,
"end": 7355,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 7337,
"end": 7355,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 7338,
"end": 7355,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 7340,
"end": 7355,
"ctxt": 0
},
"types": [
{
"type": "TsKeywordType",
"span": {
"start": 7340,
"end": 7346,
"ctxt": 0
},
"kind": "string"
},
{
"type": "TsKeywordType",
"span": {
"start": 7349,
"end": 7355,
"ctxt": 0
},
"kind": "number"
}
]
}
}
}
},
{
"type": "Parameter",
"span": {
"start": 7357,
"end": 7366,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 7357,
"end": 7366,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 7358,
"end": 7366,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 7360,
"end": 7366,
"ctxt": 0
},
"kind": "number"
}
}
}
}
],
"decorators": [],
"span": {
"start": 7323,
"end": 7577,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 7368,
"end": 7577,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 7374,
"end": 7472,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 7378,
"end": 7384,
"ctxt": 0
},
"operator": "==",
"left": {
"type": "Identifier",
"span": {
"start": 7378,
"end": 7379,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "Identifier",
"span": {
"start": 7383,
"end": 7384,
"ctxt": 0
},
"value": "y",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 7386,
"end": 7424,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7396,
"end": 7398,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 7396,
"end": 7397,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 7434,
"end": 7472,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7444,
"end": 7446,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 7444,
"end": 7445,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
},
{
"type": "IfStatement",
"span": {
"start": 7477,
"end": 7575,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 7481,
"end": 7487,
"ctxt": 0
},
"operator": "!=",
"left": {
"type": "Identifier",
"span": {
"start": 7481,
"end": 7482,
"ctxt": 0
},
"value": "x",
"optional": false
},
"right": {
"type": "Identifier",
"span": {
"start": 7486,
"end": 7487,
"ctxt": 0
},
"value": "y",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 7489,
"end": 7527,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7499,
"end": 7501,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 7499,
"end": 7500,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 7537,
"end": 7575,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 7547,
"end": 7549,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 7547,
"end": 7548,
"ctxt": 0
},
"value": "x",
"optional": false
}
}
]
}
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 7611,
"end": 7619,
"ctxt": 0
},
"value": "SendBlob",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 7620,
"end": 7637,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 7620,
"end": 7637,
"ctxt": 0
},
"value": "encoding",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 7628,
"end": 7637,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 7630,
"end": 7637,
"ctxt": 0
},
"kind": "unknown"
}
}
}
}
],
"decorators": [],
"span": {
"start": 7602,
"end": 7756,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 7639,
"end": 7756,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 7645,
"end": 7740,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 7649,
"end": 7694,
"ctxt": 0
},
"operator": "&&",
"left": {
"type": "BinaryExpression",
"span": {
"start": 7649,
"end": 7671,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "Identifier",
"span": {
"start": 7649,
"end": 7657,
"ctxt": 0
},
"value": "encoding",
"optional": false
},
"right": {
"type": "Identifier",
"span": {
"start": 7662,
"end": 7671,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"right": {
"type": "BinaryExpression",
"span": {
"start": 7675,
"end": 7694,
"ctxt": 0
},
"operator": "!==",
"left": {
"type": "Identifier",
"span": {
"start": 7675,
"end": 7683,
"ctxt": 0
},
"value": "encoding",
"optional": false
},
"right": {
"type": "StringLiteral",
"span": {
"start": 7688,
"end": 7694,
"ctxt": 0
},
"value": "utf8",
"raw": "'utf8'"
}
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 7696,
"end": 7740,
"ctxt": 0
},
"stmts": [
{
"type": "ThrowStatement",
"span": {
"start": 7706,
"end": 7734,
"ctxt": 0
},
"argument": {
"type": "NewExpression",
"span": {
"start": 7712,
"end": 7733,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 7716,
"end": 7721,
"ctxt": 0
},
"value": "Error",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "StringLiteral",
"span": {
"start": 7722,
"end": 7732,
"ctxt": 0
},
"value": "encoding",
"raw": "'encoding'"
}
}
],
"typeArguments": null
}
}
]
},
"alternate": null
},
{
"type": "ExpressionStatement",
"span": {
"start": 7745,
"end": 7754,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 7745,
"end": 7753,
"ctxt": 0
},
"value": "encoding",
"optional": false
}
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
},
{
"type": "EmptyStatement",
"span": {
"start": 7756,
"end": 7757,
"ctxt": 0
}
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 7768,
"end": 7780,
"ctxt": 0
},
"value": "doSomething1",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 7800,
"end": 7808,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 7800,
"end": 7808,
"ctxt": 0
},
"value": "value",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 7805,
"end": 7808,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 7807,
"end": 7808,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 7807,
"end": 7808,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
}
],
"decorators": [],
"span": {
"start": 7759,
"end": 7969,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 7813,
"end": 7969,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 7819,
"end": 7873,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 7823,
"end": 7842,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "Identifier",
"span": {
"start": 7823,
"end": 7828,
"ctxt": 0
},
"value": "value",
"optional": false
},
"right": {
"type": "Identifier",
"span": {
"start": 7833,
"end": 7842,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 7844,
"end": 7873,
"ctxt": 0
},
"stmts": [
{
"type": "ReturnStatement",
"span": {
"start": 7854,
"end": 7867,
"ctxt": 0
},
"argument": {
"type": "Identifier",
"span": {
"start": 7861,
"end": 7866,
"ctxt": 0
},
"value": "value",
"optional": false
}
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 7878,
"end": 7949,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 7882,
"end": 7894,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "Identifier",
"span": {
"start": 7882,
"end": 7887,
"ctxt": 0
},
"value": "value",
"optional": false
},
"right": {
"type": "NumericLiteral",
"span": {
"start": 7892,
"end": 7894,
"ctxt": 0
},
"value": 42.0,
"raw": "42"
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 7896,
"end": 7949,
"ctxt": 0
},
"stmts": [
{
"type": "ThrowStatement",
"span": {
"start": 7906,
"end": 7943,
"ctxt": 0
},
"argument": {
"type": "CallExpression",
"span": {
"start": 7912,
"end": 7942,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 7912,
"end": 7917,
"ctxt": 0
},
"value": "Error",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "StringLiteral",
"span": {
"start": 7918,
"end": 7941,
"ctxt": 0
},
"value": "Meaning of life value",
"raw": "'Meaning of life value'"
}
}
],
"typeArguments": null
}
}
]
},
"alternate": null
},
{
"type": "ReturnStatement",
"span": {
"start": 7954,
"end": 7967,
"ctxt": 0
},
"argument": {
"type": "Identifier",
"span": {
"start": 7961,
"end": 7966,
"ctxt": 0
},
"value": "value",
"optional": false
}
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 7780,
"end": 7799,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 7781,
"end": 7798,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 7781,
"end": 7782,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": {
"type": "TsKeywordType",
"span": {
"start": 7791,
"end": 7798,
"ctxt": 0
},
"kind": "unknown"
},
"default": null
}
]
},
"returnType": {
"type": "TsTypeAnnotation",
"span": {
"start": 7809,
"end": 7812,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 7811,
"end": 7812,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 7811,
"end": 7812,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 7980,
"end": 7992,
"ctxt": 0
},
"value": "doSomething2",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 7993,
"end": 8007,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 7993,
"end": 8007,
"ctxt": 0
},
"value": "value",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 7998,
"end": 8007,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 8000,
"end": 8007,
"ctxt": 0
},
"kind": "unknown"
}
}
}
}
],
"decorators": [],
"span": {
"start": 7971,
"end": 8116,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 8015,
"end": 8116,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 8021,
"end": 8069,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 8025,
"end": 8044,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "Identifier",
"span": {
"start": 8025,
"end": 8030,
"ctxt": 0
},
"value": "value",
"optional": false
},
"right": {
"type": "Identifier",
"span": {
"start": 8035,
"end": 8044,
"ctxt": 0
},
"value": "undefined",
"optional": false
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 8046,
"end": 8069,
"ctxt": 0
},
"stmts": [
{
"type": "ReturnStatement",
"span": {
"start": 8056,
"end": 8063,
"ctxt": 0
},
"argument": null
}
]
},
"alternate": null
},
{
"type": "IfStatement",
"span": {
"start": 8074,
"end": 8114,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 8078,
"end": 8090,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "Identifier",
"span": {
"start": 8078,
"end": 8083,
"ctxt": 0
},
"value": "value",
"optional": false
},
"right": {
"type": "NumericLiteral",
"span": {
"start": 8088,
"end": 8090,
"ctxt": 0
},
"value": 42.0,
"raw": "42"
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 8092,
"end": 8114,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 8102,
"end": 8108,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 8102,
"end": 8107,
"ctxt": 0
},
"value": "value",
"optional": false
}
}
]
},
"alternate": null
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": {
"type": "TsTypeAnnotation",
"span": {
"start": 8008,
"end": 8014,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 8010,
"end": 8014,
"ctxt": 0
},
"kind": "void"
}
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 8140,
"end": 8180,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 8145,
"end": 8150,
"ctxt": 0
},
"value": "TypeA",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 8153,
"end": 8180,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 8159,
"end": 8166,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 8159,
"end": 8160,
"ctxt": 0
},
"value": "A",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8160,
"end": 8165,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsLiteralType",
"span": {
"start": 8162,
"end": 8165,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 8162,
"end": 8165,
"ctxt": 0
},
"value": "A",
"raw": "'A'"
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 8171,
"end": 8178,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 8171,
"end": 8172,
"ctxt": 0
},
"value": "B",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8172,
"end": 8177,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsLiteralType",
"span": {
"start": 8174,
"end": 8177,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 8174,
"end": 8177,
"ctxt": 0
},
"value": "B",
"raw": "'B'"
}
}
},
"typeParams": null
}
]
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 8182,
"end": 8234,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 8187,
"end": 8192,
"ctxt": 0
},
"value": "TypeB",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsTypeLiteral",
"span": {
"start": 8195,
"end": 8234,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 8201,
"end": 8208,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 8201,
"end": 8202,
"ctxt": 0
},
"value": "A",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8202,
"end": 8207,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsLiteralType",
"span": {
"start": 8204,
"end": 8207,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 8204,
"end": 8207,
"ctxt": 0
},
"value": "A",
"raw": "'A'"
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 8213,
"end": 8220,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 8213,
"end": 8214,
"ctxt": 0
},
"value": "B",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8214,
"end": 8219,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsLiteralType",
"span": {
"start": 8216,
"end": 8219,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 8216,
"end": 8219,
"ctxt": 0
},
"value": "B",
"raw": "'B'"
}
}
},
"typeParams": null
},
{
"type": "TsPropertySignature",
"span": {
"start": 8225,
"end": 8232,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 8225,
"end": 8226,
"ctxt": 0
},
"value": "C",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8226,
"end": 8231,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsLiteralType",
"span": {
"start": 8228,
"end": 8231,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 8228,
"end": 8231,
"ctxt": 0
},
"value": "C",
"raw": "'C'"
}
}
},
"typeParams": null
}
]
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 8236,
"end": 8325,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 8241,
"end": 8242,
"ctxt": 0
},
"value": "R",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 8242,
"end": 8265,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 8243,
"end": 8264,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 8243,
"end": 8244,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": {
"type": "TsTypeOperator",
"span": {
"start": 8253,
"end": 8264,
"ctxt": 0
},
"op": "keyof",
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 8259,
"end": 8264,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8259,
"end": 8264,
"ctxt": 0
},
"value": "TypeA",
"optional": false
},
"typeParams": null
}
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsConditionalType",
"span": {
"start": 8272,
"end": 8324,
"ctxt": 0
},
"checkType": {
"type": "TsTypeReference",
"span": {
"start": 8272,
"end": 8273,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8272,
"end": 8273,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
},
"extendsType": {
"type": "TsTypeOperator",
"span": {
"start": 8282,
"end": 8293,
"ctxt": 0
},
"op": "keyof",
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 8288,
"end": 8293,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8288,
"end": 8293,
"ctxt": 0
},
"value": "TypeB",
"optional": false
},
"typeParams": null
}
},
"trueType": {
"type": "TsTupleType",
"span": {
"start": 8296,
"end": 8316,
"ctxt": 0
},
"elemTypes": [
{
"type": "TsTupleElement",
"span": {
"start": 8297,
"end": 8305,
"ctxt": 0
},
"label": null,
"ty": {
"type": "TsIndexedAccessType",
"span": {
"start": 8297,
"end": 8305,
"ctxt": 0
},
"readonly": false,
"objectType": {
"type": "TsTypeReference",
"span": {
"start": 8297,
"end": 8302,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8297,
"end": 8302,
"ctxt": 0
},
"value": "TypeA",
"optional": false
},
"typeParams": null
},
"indexType": {
"type": "TsTypeReference",
"span": {
"start": 8303,
"end": 8304,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8303,
"end": 8304,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
},
{
"type": "TsTupleElement",
"span": {
"start": 8307,
"end": 8315,
"ctxt": 0
},
"label": null,
"ty": {
"type": "TsIndexedAccessType",
"span": {
"start": 8307,
"end": 8315,
"ctxt": 0
},
"readonly": false,
"objectType": {
"type": "TsTypeReference",
"span": {
"start": 8307,
"end": 8312,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8307,
"end": 8312,
"ctxt": 0
},
"value": "TypeB",
"optional": false
},
"typeParams": null
},
"indexType": {
"type": "TsTypeReference",
"span": {
"start": 8313,
"end": 8314,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8313,
"end": 8314,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
]
},
"falseType": {
"type": "TsKeywordType",
"span": {
"start": 8319,
"end": 8324,
"ctxt": 0
},
"kind": "never"
}
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 8327,
"end": 8449,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 8332,
"end": 8334,
"ctxt": 0
},
"value": "R2",
"optional": false
},
"typeParams": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 8334,
"end": 8357,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 8335,
"end": 8356,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 8335,
"end": 8336,
"ctxt": 0
},
"value": "T",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 8345,
"end": 8356,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8345,
"end": 8356,
"ctxt": 0
},
"value": "PropertyKey",
"optional": false
},
"typeParams": null
},
"default": null
}
]
},
"typeAnnotation": {
"type": "TsConditionalType",
"span": {
"start": 8364,
"end": 8448,
"ctxt": 0
},
"checkType": {
"type": "TsTypeReference",
"span": {
"start": 8364,
"end": 8365,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8364,
"end": 8365,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
},
"extendsType": {
"type": "TsTypeOperator",
"span": {
"start": 8374,
"end": 8385,
"ctxt": 0
},
"op": "keyof",
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 8380,
"end": 8385,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8380,
"end": 8385,
"ctxt": 0
},
"value": "TypeA",
"optional": false
},
"typeParams": null
}
},
"trueType": {
"type": "TsConditionalType",
"span": {
"start": 8388,
"end": 8440,
"ctxt": 0
},
"checkType": {
"type": "TsTypeReference",
"span": {
"start": 8388,
"end": 8389,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8388,
"end": 8389,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
},
"extendsType": {
"type": "TsTypeOperator",
"span": {
"start": 8398,
"end": 8409,
"ctxt": 0
},
"op": "keyof",
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 8404,
"end": 8409,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8404,
"end": 8409,
"ctxt": 0
},
"value": "TypeB",
"optional": false
},
"typeParams": null
}
},
"trueType": {
"type": "TsTupleType",
"span": {
"start": 8412,
"end": 8432,
"ctxt": 0
},
"elemTypes": [
{
"type": "TsTupleElement",
"span": {
"start": 8413,
"end": 8421,
"ctxt": 0
},
"label": null,
"ty": {
"type": "TsIndexedAccessType",
"span": {
"start": 8413,
"end": 8421,
"ctxt": 0
},
"readonly": false,
"objectType": {
"type": "TsTypeReference",
"span": {
"start": 8413,
"end": 8418,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8413,
"end": 8418,
"ctxt": 0
},
"value": "TypeA",
"optional": false
},
"typeParams": null
},
"indexType": {
"type": "TsTypeReference",
"span": {
"start": 8419,
"end": 8420,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8419,
"end": 8420,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
},
{
"type": "TsTupleElement",
"span": {
"start": 8423,
"end": 8431,
"ctxt": 0
},
"label": null,
"ty": {
"type": "TsIndexedAccessType",
"span": {
"start": 8423,
"end": 8431,
"ctxt": 0
},
"readonly": false,
"objectType": {
"type": "TsTypeReference",
"span": {
"start": 8423,
"end": 8428,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8423,
"end": 8428,
"ctxt": 0
},
"value": "TypeB",
"optional": false
},
"typeParams": null
},
"indexType": {
"type": "TsTypeReference",
"span": {
"start": 8429,
"end": 8430,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8429,
"end": 8430,
"ctxt": 0
},
"value": "T",
"optional": false
},
"typeParams": null
}
}
}
]
},
"falseType": {
"type": "TsKeywordType",
"span": {
"start": 8435,
"end": 8440,
"ctxt": 0
},
"kind": "never"
}
},
"falseType": {
"type": "TsKeywordType",
"span": {
"start": 8443,
"end": 8448,
"ctxt": 0
},
"kind": "never"
}
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 8473,
"end": 8493,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 8478,
"end": 8480,
"ctxt": 0
},
"value": "AB",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 8483,
"end": 8492,
"ctxt": 0
},
"types": [
{
"type": "TsLiteralType",
"span": {
"start": 8483,
"end": 8486,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 8483,
"end": 8486,
"ctxt": 0
},
"value": "A",
"raw": "\"A\""
}
},
{
"type": "TsLiteralType",
"span": {
"start": 8489,
"end": 8492,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 8489,
"end": 8492,
"ctxt": 0
},
"value": "B",
"raw": "\"B\""
}
}
]
}
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 8504,
"end": 8505,
"ctxt": 0
},
"value": "x",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 8523,
"end": 8542,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 8523,
"end": 8542,
"ctxt": 0
},
"value": "x",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8524,
"end": 8542,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 8526,
"end": 8542,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 8526,
"end": 8530,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8526,
"end": 8530,
"ctxt": 0
},
"value": "T_AB",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 8533,
"end": 8542,
"ctxt": 0
},
"kind": "undefined"
}
]
}
}
}
},
{
"type": "Parameter",
"span": {
"start": 8544,
"end": 8550,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 8544,
"end": 8550,
"ctxt": 0
},
"value": "y",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8545,
"end": 8550,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 8547,
"end": 8550,
"ctxt": 0
},
"kind": "any"
}
}
}
}
],
"decorators": [],
"span": {
"start": 8495,
"end": 8598,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 8552,
"end": 8598,
"ctxt": 0
},
"stmts": [
{
"type": "VariableDeclaration",
"span": {
"start": 8558,
"end": 8596,
"ctxt": 0
},
"kind": "let",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 8562,
"end": 8595,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 8562,
"end": 8564,
"ctxt": 0
},
"value": "r2",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8564,
"end": 8571,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 8566,
"end": 8571,
"ctxt": 0
},
"kind": "never"
}
}
},
"init": {
"type": "TsAsExpression",
"span": {
"start": 8574,
"end": 8595,
"ctxt": 0
},
"expression": {
"type": "Identifier",
"span": {
"start": 8574,
"end": 8575,
"ctxt": 0
},
"value": "y",
"optional": false
},
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 8579,
"end": 8595,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 8579,
"end": 8583,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8579,
"end": 8583,
"ctxt": 0
},
"value": "T_AB",
"optional": false
},
"typeParams": null
},
{
"type": "TsKeywordType",
"span": {
"start": 8586,
"end": 8595,
"ctxt": 0
},
"kind": "undefined"
}
]
}
},
"definite": false
}
]
}
]
},
"generator": false,
"async": false,
"typeParameters": {
"type": "TsTypeParameterDeclaration",
"span": {
"start": 8505,
"end": 8522,
"ctxt": 0
},
"parameters": [
{
"type": "TsTypeParameter",
"span": {
"start": 8506,
"end": 8521,
"ctxt": 0
},
"name": {
"type": "Identifier",
"span": {
"start": 8506,
"end": 8510,
"ctxt": 0
},
"value": "T_AB",
"optional": false
},
"in": false,
"out": false,
"const": false,
"constraint": {
"type": "TsTypeReference",
"span": {
"start": 8519,
"end": 8521,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8519,
"end": 8521,
"ctxt": 0
},
"value": "AB",
"optional": false
},
"typeParams": null
},
"default": null
}
]
},
"returnType": null
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 8623,
"end": 8642,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 8628,
"end": 8632,
"ctxt": 0
},
"value": "Left",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsLiteralType",
"span": {
"start": 8635,
"end": 8641,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 8635,
"end": 8641,
"ctxt": 0
},
"value": "left",
"raw": "'left'"
}
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 8643,
"end": 8685,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 8648,
"end": 8653,
"ctxt": 0
},
"value": "Right",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsIntersectionType",
"span": {
"start": 8656,
"end": 8684,
"ctxt": 0
},
"types": [
{
"type": "TsLiteralType",
"span": {
"start": 8656,
"end": 8663,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 8656,
"end": 8663,
"ctxt": 0
},
"value": "right",
"raw": "'right'"
}
},
{
"type": "TsTypeLiteral",
"span": {
"start": 8666,
"end": 8684,
"ctxt": 0
},
"members": [
{
"type": "TsPropertySignature",
"span": {
"start": 8668,
"end": 8682,
"ctxt": 0
},
"readonly": false,
"key": {
"type": "Identifier",
"span": {
"start": 8668,
"end": 8673,
"ctxt": 0
},
"value": "right",
"optional": false
},
"computed": false,
"optional": false,
"init": null,
"params": [],
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8673,
"end": 8682,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsLiteralType",
"span": {
"start": 8675,
"end": 8682,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 8675,
"end": 8682,
"ctxt": 0
},
"value": "right",
"raw": "'right'"
}
}
},
"typeParams": null
}
]
}
]
}
},
{
"type": "TsTypeAliasDeclaration",
"span": {
"start": 8686,
"end": 8713,
"ctxt": 0
},
"declare": false,
"id": {
"type": "Identifier",
"span": {
"start": 8691,
"end": 8697,
"ctxt": 0
},
"value": "Either",
"optional": false
},
"typeParams": null,
"typeAnnotation": {
"type": "TsUnionType",
"span": {
"start": 8700,
"end": 8712,
"ctxt": 0
},
"types": [
{
"type": "TsTypeReference",
"span": {
"start": 8700,
"end": 8704,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8700,
"end": 8704,
"ctxt": 0
},
"value": "Left",
"optional": false
},
"typeParams": null
},
{
"type": "TsTypeReference",
"span": {
"start": 8707,
"end": 8712,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8707,
"end": 8712,
"ctxt": 0
},
"value": "Right",
"optional": false
},
"typeParams": null
}
]
}
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 8724,
"end": 8735,
"ctxt": 0
},
"value": "assertNever",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 8736,
"end": 8744,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 8736,
"end": 8744,
"ctxt": 0
},
"value": "v",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8737,
"end": 8744,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 8739,
"end": 8744,
"ctxt": 0
},
"kind": "never"
}
}
}
}
],
"decorators": [],
"span": {
"start": 8715,
"end": 8786,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 8753,
"end": 8786,
"ctxt": 0
},
"stmts": [
{
"type": "ThrowStatement",
"span": {
"start": 8759,
"end": 8784,
"ctxt": 0
},
"argument": {
"type": "NewExpression",
"span": {
"start": 8765,
"end": 8783,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 8769,
"end": 8774,
"ctxt": 0
},
"value": "Error",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "StringLiteral",
"span": {
"start": 8775,
"end": 8782,
"ctxt": 0
},
"value": "never",
"raw": "'never'"
}
}
],
"typeArguments": null
}
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": {
"type": "TsTypeAnnotation",
"span": {
"start": 8745,
"end": 8752,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsKeywordType",
"span": {
"start": 8747,
"end": 8752,
"ctxt": 0
},
"kind": "never"
}
}
},
{
"type": "FunctionDeclaration",
"identifier": {
"type": "Identifier",
"span": {
"start": 8797,
"end": 8801,
"ctxt": 0
},
"value": "fx20",
"optional": false
},
"declare": false,
"params": [
{
"type": "Parameter",
"span": {
"start": 8802,
"end": 8815,
"ctxt": 0
},
"decorators": [],
"pat": {
"type": "Identifier",
"span": {
"start": 8802,
"end": 8815,
"ctxt": 0
},
"value": "value",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8807,
"end": 8815,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsTypeReference",
"span": {
"start": 8809,
"end": 8815,
"ctxt": 0
},
"typeName": {
"type": "Identifier",
"span": {
"start": 8809,
"end": 8815,
"ctxt": 0
},
"value": "Either",
"optional": false
},
"typeParams": null
}
}
}
}
],
"decorators": [],
"span": {
"start": 8788,
"end": 9010,
"ctxt": 0
},
"body": {
"type": "BlockStatement",
"span": {
"start": 8817,
"end": 9010,
"ctxt": 0
},
"stmts": [
{
"type": "IfStatement",
"span": {
"start": 8823,
"end": 9008,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 8827,
"end": 8843,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "Identifier",
"span": {
"start": 8827,
"end": 8832,
"ctxt": 0
},
"value": "value",
"optional": false
},
"right": {
"type": "StringLiteral",
"span": {
"start": 8837,
"end": 8843,
"ctxt": 0
},
"value": "left",
"raw": "'left'"
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 8845,
"end": 8887,
"ctxt": 0
},
"stmts": [
{
"type": "VariableDeclaration",
"span": {
"start": 8855,
"end": 8881,
"ctxt": 0
},
"kind": "const",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 8861,
"end": 8880,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 8861,
"end": 8864,
"ctxt": 0
},
"value": "foo",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8864,
"end": 8872,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsLiteralType",
"span": {
"start": 8866,
"end": 8872,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 8866,
"end": 8872,
"ctxt": 0
},
"value": "left",
"raw": "'left'"
}
}
}
},
"init": {
"type": "Identifier",
"span": {
"start": 8875,
"end": 8880,
"ctxt": 0
},
"value": "value",
"optional": false
},
"definite": false
}
]
}
]
},
"alternate": {
"type": "IfStatement",
"span": {
"start": 8897,
"end": 9008,
"ctxt": 0
},
"test": {
"type": "BinaryExpression",
"span": {
"start": 8901,
"end": 8918,
"ctxt": 0
},
"operator": "===",
"left": {
"type": "Identifier",
"span": {
"start": 8901,
"end": 8906,
"ctxt": 0
},
"value": "value",
"optional": false
},
"right": {
"type": "StringLiteral",
"span": {
"start": 8911,
"end": 8918,
"ctxt": 0
},
"value": "right",
"raw": "'right'"
}
},
"consequent": {
"type": "BlockStatement",
"span": {
"start": 8920,
"end": 8963,
"ctxt": 0
},
"stmts": [
{
"type": "VariableDeclaration",
"span": {
"start": 8930,
"end": 8957,
"ctxt": 0
},
"kind": "const",
"declare": false,
"declarations": [
{
"type": "VariableDeclarator",
"span": {
"start": 8936,
"end": 8956,
"ctxt": 0
},
"id": {
"type": "Identifier",
"span": {
"start": 8936,
"end": 8939,
"ctxt": 0
},
"value": "bar",
"optional": false,
"typeAnnotation": {
"type": "TsTypeAnnotation",
"span": {
"start": 8939,
"end": 8948,
"ctxt": 0
},
"typeAnnotation": {
"type": "TsLiteralType",
"span": {
"start": 8941,
"end": 8948,
"ctxt": 0
},
"literal": {
"type": "StringLiteral",
"span": {
"start": 8941,
"end": 8948,
"ctxt": 0
},
"value": "right",
"raw": "'right'"
}
}
}
},
"init": {
"type": "Identifier",
"span": {
"start": 8951,
"end": 8956,
"ctxt": 0
},
"value": "value",
"optional": false
},
"definite": false
}
]
}
]
},
"alternate": {
"type": "BlockStatement",
"span": {
"start": 8973,
"end": 9008,
"ctxt": 0
},
"stmts": [
{
"type": "ExpressionStatement",
"span": {
"start": 8983,
"end": 9002,
"ctxt": 0
},
"expression": {
"type": "CallExpression",
"span": {
"start": 8983,
"end": 9001,
"ctxt": 0
},
"callee": {
"type": "Identifier",
"span": {
"start": 8983,
"end": 8994,
"ctxt": 0
},
"value": "assertNever",
"optional": false
},
"arguments": [
{
"spread": null,
"expression": {
"type": "Identifier",
"span": {
"start": 8995,
"end": 9000,
"ctxt": 0
},
"value": "value",
"optional": false
}
}
],
"typeArguments": null
}
}
]
}
}
}
]
},
"generator": false,
"async": false,
"typeParameters": null,
"returnType": null
}
],
"interpreter": null
}