{
"type": "Program",
"statements": [
{
"type": "TSEnumDeclaration",
"id": {
"type": "Identifier",
"name": "E",
"loc": {
"start": {
"line": 16,
"column": 12
},
"end": {
"line": 16,
"column": 13
}
}
},
"members": [
{
"type": "TSEnumMember",
"id": {
"type": "Identifier",
"name": "A",
"loc": {
"start": {
"line": 17,
"column": 5
},
"end": {
"line": 17,
"column": 6
}
}
},
"initializer": {
"type": "NumberLiteral",
"value": 1,
"loc": {
"start": {
"line": 17,
"column": 9
},
"end": {
"line": 17,
"column": 10
}
}
},
"loc": {
"start": {
"line": 17,
"column": 5
},
"end": {
"line": 17,
"column": 10
}
}
},
{
"type": "TSEnumMember",
"id": {
"type": "Identifier",
"name": "B",
"loc": {
"start": {
"line": 18,
"column": 5
},
"end": {
"line": 18,
"column": 6
}
}
},
"initializer": {
"type": "NumberLiteral",
"value": 2,
"loc": {
"start": {
"line": 18,
"column": 9
},
"end": {
"line": 18,
"column": 10
}
}
},
"loc": {
"start": {
"line": 18,
"column": 5
},
"end": {
"line": 18,
"column": 10
}
}
}
],
"const": true,
"loc": {
"start": {
"line": 16,
"column": 7
},
"end": {
"line": 19,
"column": 2
}
}
},
{
"type": "ClassDeclaration",
"definition": {
"id": {
"type": "Identifier",
"name": "Anno",
"loc": {
"start": {
"line": 21,
"column": 12
},
"end": {
"line": 21,
"column": 38
}
}
},
"superClass": null,
"implements": [],
"constructor": {
"type": "MethodDefinition",
"key": {
"type": "Identifier",
"name": "constructor",
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 1
}
}
},
"kind": "constructor",
"static": false,
"optional": false,
"computed": false,
"value": {
"type": "FunctionExpression",
"function": {
"type": "ScriptFunction",
"id": null,
"generator": false,
"async": false,
"expression": false,
"params": [],
"body": {
"type": "Program",
"statements": [],
"loc": {
"start": {
"line": 21,
"column": 2
},
"end": {
"line": 23,
"column": 2
}
}
},
"loc": {
"start": {
"line": 21,
"column": 2
},
"end": {
"line": 23,
"column": 2
}
}
},
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 1
}
}
},
"overloads": [],
"decorators": [],
"annotations": [],
"loc": {
"start": {
"line": 21,
"column": 2
},
"end": {
"line": 23,
"column": 2
}
}
},
"body": [
{
"type": "ClassProperty",
"key": {
"type": "Identifier",
"name": "a",
"loc": {
"start": {
"line": 22,
"column": 5
},
"end": {
"line": 22,
"column": 6
}
}
},
"value": {
"type": "ArrayExpression",
"elements": [
{
"type": "ArrayExpression",
"elements": [
{
"type": "NewExpression",
"callee": {
"type": "Identifier",
"name": "Array",
"loc": {
"start": {
"line": 22,
"column": 24
},
"end": {
"line": 22,
"column": 29
}
}
},
"typeParameters": {
"type": "TSTypeParameterInstantiation",
"params": [
{
"type": "TSTypeReference",
"typeName": {
"type": "Identifier",
"name": "E",
"loc": {
"start": {
"line": 22,
"column": 30
},
"end": {
"line": 22,
"column": 31
}
}
},
"loc": {
"start": {
"line": 22,
"column": 30
},
"end": {
"line": 22,
"column": 31
}
}
}
],
"loc": {
"start": {
"line": 22,
"column": 29
},
"end": {
"line": 22,
"column": 32
}
}
},
"arguments": [
{
"type": "NumberLiteral",
"value": 0,
"loc": {
"start": {
"line": 22,
"column": 33
},
"end": {
"line": 22,
"column": 34
}
}
}
],
"loc": {
"start": {
"line": 22,
"column": 20
},
"end": {
"line": 22,
"column": 35
}
}
}
],
"loc": {
"start": {
"line": 22,
"column": 19
},
"end": {
"line": 22,
"column": 36
}
}
}
],
"loc": {
"start": {
"line": 22,
"column": 18
},
"end": {
"line": 22,
"column": 37
}
}
},
"static": false,
"readonly": false,
"declare": false,
"optional": false,
"computed": false,
"typeAnnotation": {
"type": "TSArrayType",
"elementType": {
"type": "TSArrayType",
"elementType": {
"type": "TSArrayType",
"elementType": {
"type": "TSTypeReference",
"typeName": {
"type": "Identifier",
"name": "E",
"loc": {
"start": {
"line": 22,
"column": 8
},
"end": {
"line": 22,
"column": 9
}
}
},
"loc": {
"start": {
"line": 22,
"column": 8
},
"end": {
"line": 22,
"column": 9
}
}
},
"loc": {
"start": {
"line": 22,
"column": 8
},
"end": {
"line": 22,
"column": 11
}
}
},
"loc": {
"start": {
"line": 22,
"column": 8
},
"end": {
"line": 22,
"column": 13
}
}
},
"loc": {
"start": {
"line": 22,
"column": 8
},
"end": {
"line": 22,
"column": 15
}
}
},
"decorators": [],
"loc": {
"start": {
"line": 22,
"column": 5
},
"end": {
"line": 22,
"column": 37
}
}
}
],
"indexSignatures": [],
"loc": {
"start": {
"line": 21,
"column": 39
},
"end": {
"line": 23,
"column": 2
}
}
},
"decorators": [],
"isAnnotationDeclaration": true,
"loc": {
"start": {
"line": 21,
"column": 2
},
"end": {
"line": 23,
"column": 2
}
}
},
{
"type": "ClassDeclaration",
"definition": {
"id": {
"type": "Identifier",
"name": "A",
"loc": {
"start": {
"line": 26,
"column": 7
},
"end": {
"line": 26,
"column": 8
}
}
},
"superClass": null,
"implements": [],
"constructor": {
"type": "MethodDefinition",
"key": {
"type": "Identifier",
"name": "constructor",
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 1
}
}
},
"kind": "constructor",
"static": false,
"optional": false,
"computed": false,
"value": {
"type": "FunctionExpression",
"function": {
"type": "ScriptFunction",
"id": null,
"generator": false,
"async": false,
"expression": false,
"params": [],
"body": {
"type": "BlockStatement",
"statements": [],
"loc": {
"start": {
"line": 26,
"column": 1
},
"end": {
"line": 26,
"column": 1
}
}
},
"loc": {
"start": {
"line": 26,
"column": 1
},
"end": {
"line": 26,
"column": 1
}
}
},
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 1
}
}
},
"overloads": [],
"decorators": [],
"annotations": [
{
"type": "Annotation",
"expression": {
"type": "CallExpression",
"callee": {
"type": "Identifier",
"name": "Anno",
"loc": {
"start": {
"line": 25,
"column": 2
},
"end": {
"line": 25,
"column": 28
}
}
},
"arguments": [
{
"type": "ObjectExpression",
"properties": [
{
"type": "Property",
"method": false,
"shorthand": false,
"computed": false,
"key": {
"type": "Identifier",
"name": "a",
"loc": {
"start": {
"line": 25,
"column": 30
},
"end": {
"line": 25,
"column": 31
}
}
},
"value": {
"type": "ArrayExpression",
"elements": [
{
"type": "ArrayExpression",
"elements": [
{
"type": "ArrayExpression",
"elements": [
{
"type": "NumberLiteral",
"value": 1,
"loc": {
"start": {
"line": 25,
"column": 36
},
"end": {
"line": 25,
"column": 37
}
}
},
{
"type": "NumberLiteral",
"value": 2,
"loc": {
"start": {
"line": 25,
"column": 39
},
"end": {
"line": 25,
"column": 40
}
}
},
{
"type": "NumberLiteral",
"value": 1,
"loc": {
"start": {
"line": 25,
"column": 42
},
"end": {
"line": 25,
"column": 43
}
}
}
],
"loc": {
"start": {
"line": 25,
"column": 35
},
"end": {
"line": 25,
"column": 44
}
}
}
],
"loc": {
"start": {
"line": 25,
"column": 34
},
"end": {
"line": 25,
"column": 45
}
}
}
],
"loc": {
"start": {
"line": 25,
"column": 33
},
"end": {
"line": 25,
"column": 46
}
}
},
"kind": "init",
"loc": {
"start": {
"line": 25,
"column": 30
},
"end": {
"line": 25,
"column": 46
}
}
}
],
"loc": {
"start": {
"line": 25,
"column": 29
},
"end": {
"line": 25,
"column": 47
}
}
}
],
"optional": false,
"loc": {
"start": {
"line": 25,
"column": 2
},
"end": {
"line": 25,
"column": 48
}
}
},
"name": "Anno",
"isImported": false,
"loc": {
"start": {
"line": 25,
"column": 1
},
"end": {
"line": 25,
"column": 48
}
}
}
],
"loc": {
"start": {
"line": 26,
"column": 1
},
"end": {
"line": 29,
"column": 2
}
}
},
"body": [
{
"type": "MethodDefinition",
"key": {
"type": "Identifier",
"name": "foo",
"loc": {
"start": {
"line": 28,
"column": 5
},
"end": {
"line": 28,
"column": 8
}
}
},
"kind": "method",
"static": false,
"optional": false,
"computed": false,
"value": {
"type": "FunctionExpression",
"function": {
"type": "ScriptFunction",
"id": null,
"generator": false,
"async": false,
"expression": false,
"params": [],
"body": {
"type": "BlockStatement",
"statements": [],
"loc": {
"start": {
"line": 28,
"column": 11
},
"end": {
"line": 28,
"column": 13
}
}
},
"loc": {
"start": {
"line": 28,
"column": 8
},
"end": {
"line": 28,
"column": 13
}
}
},
"loc": {
"start": {
"line": 28,
"column": 8
},
"end": {
"line": 28,
"column": 13
}
}
},
"overloads": [],
"decorators": [],
"annotations": [
{
"type": "Annotation",
"expression": {
"type": "CallExpression",
"callee": {
"type": "Identifier",
"name": "Anno",
"loc": {
"start": {
"line": 27,
"column": 6
},
"end": {
"line": 27,
"column": 32
}
}
},
"arguments": [
{
"type": "ObjectExpression",
"properties": [
{
"type": "Property",
"method": false,
"shorthand": false,
"computed": false,
"key": {
"type": "Identifier",
"name": "a",
"loc": {
"start": {
"line": 27,
"column": 34
},
"end": {
"line": 27,
"column": 35
}
}
},
"value": {
"type": "ArrayExpression",
"elements": [
{
"type": "ArrayExpression",
"elements": [
{
"type": "NewExpression",
"callee": {
"type": "Identifier",
"name": "Array",
"loc": {
"start": {
"line": 27,
"column": 43
},
"end": {
"line": 27,
"column": 48
}
}
},
"typeParameters": {
"type": "TSTypeParameterInstantiation",
"params": [
{
"type": "TSTypeReference",
"typeName": {
"type": "Identifier",
"name": "E",
"loc": {
"start": {
"line": 27,
"column": 49
},
"end": {
"line": 27,
"column": 50
}
}
},
"loc": {
"start": {
"line": 27,
"column": 49
},
"end": {
"line": 27,
"column": 50
}
}
}
],
"loc": {
"start": {
"line": 27,
"column": 48
},
"end": {
"line": 27,
"column": 51
}
}
},
"arguments": [
{
"type": "NumberLiteral",
"value": 1,
"loc": {
"start": {
"line": 27,
"column": 52
},
"end": {
"line": 27,
"column": 53
}
}
}
],
"loc": {
"start": {
"line": 27,
"column": 39
},
"end": {
"line": 27,
"column": 54
}
}
}
],
"loc": {
"start": {
"line": 27,
"column": 38
},
"end": {
"line": 27,
"column": 55
}
}
}
],
"loc": {
"start": {
"line": 27,
"column": 37
},
"end": {
"line": 27,
"column": 56
}
}
},
"kind": "init",
"loc": {
"start": {
"line": 27,
"column": 34
},
"end": {
"line": 27,
"column": 56
}
}
}
],
"loc": {
"start": {
"line": 27,
"column": 33
},
"end": {
"line": 27,
"column": 57
}
}
}
],
"optional": false,
"loc": {
"start": {
"line": 27,
"column": 6
},
"end": {
"line": 27,
"column": 58
}
}
},
"name": "Anno",
"isImported": false,
"loc": {
"start": {
"line": 27,
"column": 5
},
"end": {
"line": 27,
"column": 58
}
}
}
],
"loc": {
"start": {
"line": 27,
"column": 5
},
"end": {
"line": 28,
"column": 13
}
}
}
],
"indexSignatures": [],
"loc": {
"start": {
"line": 26,
"column": 9
},
"end": {
"line": 29,
"column": 2
}
}
},
"decorators": [],
"isAnnotationDeclaration": false,
"loc": {
"start": {
"line": 26,
"column": 1
},
"end": {
"line": 29,
"column": 2
}
}
}
],
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 29,
"column": 2
}
}
}