TypeScript parser plugin (#523)

This commit is contained in:
Andy
2017-06-28 07:57:50 -07:00
committed by Henry Zhu
parent f7547fd35a
commit 97c23461f9
296 changed files with 33129 additions and 185 deletions

View File

@@ -0,0 +1 @@
(x: number): number => x;

View File

@@ -0,0 +1,164 @@
{
"type": "File",
"start": 0,
"end": 25,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 25
}
},
"program": {
"type": "Program",
"start": 0,
"end": 25,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 25
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 25,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 25
}
},
"expression": {
"type": "ArrowFunctionExpression",
"start": 0,
"end": 24,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 24
}
},
"returnType": {
"type": "TypeAnnotation",
"start": 11,
"end": 19,
"loc": {
"start": {
"line": 1,
"column": 11
},
"end": {
"line": 1,
"column": 19
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 13,
"end": 19,
"loc": {
"start": {
"line": 1,
"column": 13
},
"end": {
"line": 1,
"column": 19
}
}
}
},
"id": null,
"generator": false,
"expression": true,
"async": false,
"params": [
{
"type": "Identifier",
"start": 1,
"end": 10,
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 10
},
"identifierName": "x"
},
"name": "x",
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 2,
"end": 10,
"loc": {
"start": {
"line": 1,
"column": 2
},
"end": {
"line": 1,
"column": 10
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 4,
"end": 10,
"loc": {
"start": {
"line": 1,
"column": 4
},
"end": {
"line": 1,
"column": 10
}
}
}
}
}
],
"body": {
"type": "Identifier",
"start": 23,
"end": 24,
"loc": {
"start": {
"line": 1,
"column": 23
},
"end": {
"line": 1,
"column": 24
},
"identifierName": "x"
},
"name": "x"
}
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,2 @@
async < 1;
async<T>() == 0;

View File

@@ -0,0 +1,235 @@
{
"type": "File",
"start": 0,
"end": 27,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 2,
"column": 16
}
},
"program": {
"type": "Program",
"start": 0,
"end": 27,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 2,
"column": 16
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 10,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 10
}
},
"expression": {
"type": "BinaryExpression",
"start": 0,
"end": 9,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 9
}
},
"left": {
"type": "Identifier",
"start": 0,
"end": 5,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 5
},
"identifierName": "async"
},
"name": "async"
},
"operator": "<",
"right": {
"type": "NumericLiteral",
"start": 8,
"end": 9,
"loc": {
"start": {
"line": 1,
"column": 8
},
"end": {
"line": 1,
"column": 9
}
},
"extra": {
"rawValue": 1,
"raw": "1"
},
"value": 1
}
}
},
{
"type": "ExpressionStatement",
"start": 11,
"end": 27,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 16
}
},
"expression": {
"type": "BinaryExpression",
"start": 11,
"end": 26,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 15
}
},
"left": {
"type": "CallExpression",
"start": 11,
"end": 21,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 10
}
},
"callee": {
"type": "Identifier",
"start": 11,
"end": 16,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 5
},
"identifierName": "async"
},
"name": "async"
},
"arguments": [],
"typeParameters": {
"type": "TypeParameterInstantiation",
"start": 16,
"end": 19,
"loc": {
"start": {
"line": 2,
"column": 5
},
"end": {
"line": 2,
"column": 8
}
},
"params": [
{
"type": "TSTypeReference",
"start": 17,
"end": 18,
"loc": {
"start": {
"line": 2,
"column": 6
},
"end": {
"line": 2,
"column": 7
}
},
"typeName": {
"type": "Identifier",
"start": 17,
"end": 18,
"loc": {
"start": {
"line": 2,
"column": 6
},
"end": {
"line": 2,
"column": 7
},
"identifierName": "T"
},
"name": "T"
}
}
]
}
},
"operator": "==",
"right": {
"type": "NumericLiteral",
"start": 25,
"end": 26,
"loc": {
"start": {
"line": 2,
"column": 14
},
"end": {
"line": 2,
"column": 15
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1 @@
async <T>(a: T): T => a;

View File

@@ -0,0 +1,231 @@
{
"type": "File",
"start": 0,
"end": 24,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 24
}
},
"program": {
"type": "Program",
"start": 0,
"end": 24,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 24
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 24,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 24
}
},
"expression": {
"type": "ArrowFunctionExpression",
"start": 0,
"end": 23,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 23
}
},
"typeParameters": {
"type": "TypeParameterDeclaration",
"start": 7,
"end": 9,
"loc": {
"start": {
"line": 1,
"column": 7
},
"end": {
"line": 1,
"column": 9
}
},
"params": [
{
"type": "TypeParameter",
"start": 7,
"end": 8,
"loc": {
"start": {
"line": 1,
"column": 7
},
"end": {
"line": 1,
"column": 8
}
},
"name": "T"
}
]
},
"params": [
{
"type": "Identifier",
"start": 10,
"end": 14,
"loc": {
"start": {
"line": 1,
"column": 10
},
"end": {
"line": 1,
"column": 14
},
"identifierName": "a"
},
"name": "a",
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 11,
"end": 14,
"loc": {
"start": {
"line": 1,
"column": 11
},
"end": {
"line": 1,
"column": 14
}
},
"typeAnnotation": {
"type": "TSTypeReference",
"start": 13,
"end": 14,
"loc": {
"start": {
"line": 1,
"column": 13
},
"end": {
"line": 1,
"column": 14
}
},
"typeName": {
"type": "Identifier",
"start": 13,
"end": 14,
"loc": {
"start": {
"line": 1,
"column": 13
},
"end": {
"line": 1,
"column": 14
},
"identifierName": "T"
},
"name": "T"
}
}
}
}
],
"returnType": {
"type": "TypeAnnotation",
"start": 15,
"end": 18,
"loc": {
"start": {
"line": 1,
"column": 15
},
"end": {
"line": 1,
"column": 18
}
},
"typeAnnotation": {
"type": "TSTypeReference",
"start": 17,
"end": 18,
"loc": {
"start": {
"line": 1,
"column": 17
},
"end": {
"line": 1,
"column": 18
}
},
"typeName": {
"type": "Identifier",
"start": 17,
"end": 18,
"loc": {
"start": {
"line": 1,
"column": 17
},
"end": {
"line": 1,
"column": 18
},
"identifierName": "T"
},
"name": "T"
}
}
},
"id": null,
"generator": false,
"expression": true,
"async": true,
"body": {
"type": "Identifier",
"start": 22,
"end": 23,
"loc": {
"start": {
"line": 1,
"column": 22
},
"end": {
"line": 1,
"column": 23
},
"identifierName": "a"
},
"name": "a"
}
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1 @@
async (x?: number): any => x;

View File

@@ -0,0 +1,165 @@
{
"type": "File",
"start": 0,
"end": 29,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 29
}
},
"program": {
"type": "Program",
"start": 0,
"end": 29,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 29
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 29,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 29
}
},
"expression": {
"type": "ArrowFunctionExpression",
"start": 0,
"end": 28,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 28
}
},
"returnType": {
"type": "TypeAnnotation",
"start": 18,
"end": 23,
"loc": {
"start": {
"line": 1,
"column": 18
},
"end": {
"line": 1,
"column": 23
}
},
"typeAnnotation": {
"type": "TSAnyKeyword",
"start": 20,
"end": 23,
"loc": {
"start": {
"line": 1,
"column": 20
},
"end": {
"line": 1,
"column": 23
}
}
}
},
"id": null,
"generator": false,
"expression": true,
"async": true,
"params": [
{
"type": "Identifier",
"start": 7,
"end": 17,
"loc": {
"start": {
"line": 1,
"column": 7
},
"end": {
"line": 1,
"column": 17
},
"identifierName": "x"
},
"name": "x",
"optional": true,
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 9,
"end": 17,
"loc": {
"start": {
"line": 1,
"column": 9
},
"end": {
"line": 1,
"column": 17
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 11,
"end": 17,
"loc": {
"start": {
"line": 1,
"column": 11
},
"end": {
"line": 1,
"column": 17
}
}
}
}
}
],
"body": {
"type": "Identifier",
"start": 27,
"end": 28,
"loc": {
"start": {
"line": 1,
"column": 27
},
"end": {
"line": 1,
"column": 28
},
"identifierName": "x"
},
"name": "x"
}
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1 @@
(x: number = 0) => 0;

View File

@@ -0,0 +1,172 @@
{
"type": "File",
"start": 0,
"end": 21,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 21
}
},
"program": {
"type": "Program",
"start": 0,
"end": 21,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 21
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 21,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 21
}
},
"expression": {
"type": "ArrowFunctionExpression",
"start": 0,
"end": 20,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 20
}
},
"id": null,
"generator": false,
"expression": true,
"async": false,
"params": [
{
"type": "AssignmentPattern",
"start": 1,
"end": 14,
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 14
}
},
"left": {
"type": "Identifier",
"start": 1,
"end": 10,
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 10
},
"identifierName": "x"
},
"name": "x",
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 2,
"end": 10,
"loc": {
"start": {
"line": 1,
"column": 2
},
"end": {
"line": 1,
"column": 10
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 4,
"end": 10,
"loc": {
"start": {
"line": 1,
"column": 4
},
"end": {
"line": 1,
"column": 10
}
}
}
}
},
"right": {
"type": "NumericLiteral",
"start": 13,
"end": 14,
"loc": {
"start": {
"line": 1,
"column": 13
},
"end": {
"line": 1,
"column": 14
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
],
"body": {
"type": "NumericLiteral",
"start": 19,
"end": 20,
"loc": {
"start": {
"line": 1,
"column": 19
},
"end": {
"line": 1,
"column": 20
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1 @@
({ a = 0 }) => 0;

View File

@@ -0,0 +1,197 @@
{
"type": "File",
"start": 0,
"end": 17,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 17
}
},
"program": {
"type": "Program",
"start": 0,
"end": 17,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 17
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 17,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 17
}
},
"expression": {
"type": "ArrowFunctionExpression",
"start": 0,
"end": 16,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 16
}
},
"id": null,
"generator": false,
"expression": true,
"async": false,
"params": [
{
"type": "ObjectPattern",
"start": 1,
"end": 10,
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 10
}
},
"properties": [
{
"type": "ObjectProperty",
"start": 3,
"end": 8,
"loc": {
"start": {
"line": 1,
"column": 3
},
"end": {
"line": 1,
"column": 8
}
},
"method": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 3,
"end": 4,
"loc": {
"start": {
"line": 1,
"column": 3
},
"end": {
"line": 1,
"column": 4
},
"identifierName": "a"
},
"name": "a"
},
"shorthand": true,
"value": {
"type": "AssignmentPattern",
"start": 3,
"end": 8,
"loc": {
"start": {
"line": 1,
"column": 3
},
"end": {
"line": 1,
"column": 8
}
},
"left": {
"type": "Identifier",
"start": 3,
"end": 4,
"loc": {
"start": {
"line": 1,
"column": 3
},
"end": {
"line": 1,
"column": 4
},
"identifierName": "a"
},
"name": "a"
},
"right": {
"type": "NumericLiteral",
"start": 7,
"end": 8,
"loc": {
"start": {
"line": 1,
"column": 7
},
"end": {
"line": 1,
"column": 8
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
},
"extra": {
"shorthand": true
}
}
]
}
],
"body": {
"type": "NumericLiteral",
"start": 15,
"end": 16,
"loc": {
"start": {
"line": 1,
"column": 15
},
"end": {
"line": 1,
"column": 16
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,2 @@
// Same as `generic`. Verify that JSX doesn't change things.
<T>(a: T): T => a;

View File

@@ -0,0 +1,269 @@
{
"type": "File",
"start": 0,
"end": 79,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 2,
"column": 18
}
},
"program": {
"type": "Program",
"start": 0,
"end": 79,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 2,
"column": 18
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 61,
"end": 79,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 18
}
},
"expression": {
"type": "ArrowFunctionExpression",
"start": 62,
"end": 78,
"loc": {
"start": {
"line": 2,
"column": 1
},
"end": {
"line": 2,
"column": 17
}
},
"returnType": {
"type": "TypeAnnotation",
"start": 70,
"end": 73,
"loc": {
"start": {
"line": 2,
"column": 9
},
"end": {
"line": 2,
"column": 12
}
},
"typeAnnotation": {
"type": "TSTypeReference",
"start": 72,
"end": 73,
"loc": {
"start": {
"line": 2,
"column": 11
},
"end": {
"line": 2,
"column": 12
}
},
"typeName": {
"type": "Identifier",
"start": 72,
"end": 73,
"loc": {
"start": {
"line": 2,
"column": 11
},
"end": {
"line": 2,
"column": 12
},
"identifierName": "T"
},
"name": "T"
}
}
},
"id": null,
"generator": false,
"expression": true,
"async": false,
"params": [
{
"type": "Identifier",
"start": 65,
"end": 69,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 8
},
"identifierName": "a"
},
"name": "a",
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 66,
"end": 69,
"loc": {
"start": {
"line": 2,
"column": 5
},
"end": {
"line": 2,
"column": 8
}
},
"typeAnnotation": {
"type": "TSTypeReference",
"start": 68,
"end": 69,
"loc": {
"start": {
"line": 2,
"column": 7
},
"end": {
"line": 2,
"column": 8
}
},
"typeName": {
"type": "Identifier",
"start": 68,
"end": 69,
"loc": {
"start": {
"line": 2,
"column": 7
},
"end": {
"line": 2,
"column": 8
},
"identifierName": "T"
},
"name": "T"
}
}
}
}
],
"body": {
"type": "Identifier",
"start": 77,
"end": 78,
"loc": {
"start": {
"line": 2,
"column": 16
},
"end": {
"line": 2,
"column": 17
},
"identifierName": "a"
},
"name": "a"
},
"typeParameters": {
"type": "TypeParameterDeclaration",
"start": 62,
"end": 64,
"loc": {
"start": {
"line": 2,
"column": 1
},
"end": {
"line": 2,
"column": 3
}
},
"params": [
{
"type": "TypeParameter",
"start": 62,
"end": 63,
"loc": {
"start": {
"line": 2,
"column": 1
},
"end": {
"line": 2,
"column": 2
}
},
"name": "T",
"leadingComments": null
}
],
"leadingComments": null
}
},
"leadingComments": [
{
"type": "CommentLine",
"value": " Same as `generic`. Verify that JSX doesn't change things.",
"start": 0,
"end": 60,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 60
}
}
}
]
}
],
"directives": []
},
"comments": [
{
"type": "CommentLine",
"value": " Same as `generic`. Verify that JSX doesn't change things.",
"start": 0,
"end": 60,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 60
}
}
}
]
}

View File

@@ -0,0 +1,3 @@
{
"plugins": ["jsx", "typescript"]
}

View File

@@ -0,0 +1 @@
<T>(a: T): T => a;

View File

@@ -0,0 +1,231 @@
{
"type": "File",
"start": 0,
"end": 18,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 18
}
},
"program": {
"type": "Program",
"start": 0,
"end": 18,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 18
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 18,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 18
}
},
"expression": {
"type": "ArrowFunctionExpression",
"start": 1,
"end": 17,
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 17
}
},
"returnType": {
"type": "TypeAnnotation",
"start": 9,
"end": 12,
"loc": {
"start": {
"line": 1,
"column": 9
},
"end": {
"line": 1,
"column": 12
}
},
"typeAnnotation": {
"type": "TSTypeReference",
"start": 11,
"end": 12,
"loc": {
"start": {
"line": 1,
"column": 11
},
"end": {
"line": 1,
"column": 12
}
},
"typeName": {
"type": "Identifier",
"start": 11,
"end": 12,
"loc": {
"start": {
"line": 1,
"column": 11
},
"end": {
"line": 1,
"column": 12
},
"identifierName": "T"
},
"name": "T"
}
}
},
"id": null,
"generator": false,
"expression": true,
"async": false,
"params": [
{
"type": "Identifier",
"start": 4,
"end": 8,
"loc": {
"start": {
"line": 1,
"column": 4
},
"end": {
"line": 1,
"column": 8
},
"identifierName": "a"
},
"name": "a",
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 5,
"end": 8,
"loc": {
"start": {
"line": 1,
"column": 5
},
"end": {
"line": 1,
"column": 8
}
},
"typeAnnotation": {
"type": "TSTypeReference",
"start": 7,
"end": 8,
"loc": {
"start": {
"line": 1,
"column": 7
},
"end": {
"line": 1,
"column": 8
}
},
"typeName": {
"type": "Identifier",
"start": 7,
"end": 8,
"loc": {
"start": {
"line": 1,
"column": 7
},
"end": {
"line": 1,
"column": 8
},
"identifierName": "T"
},
"name": "T"
}
}
}
}
],
"body": {
"type": "Identifier",
"start": 16,
"end": 17,
"loc": {
"start": {
"line": 1,
"column": 16
},
"end": {
"line": 1,
"column": 17
},
"identifierName": "a"
},
"name": "a"
},
"typeParameters": {
"type": "TypeParameterDeclaration",
"start": 1,
"end": 3,
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 3
}
},
"params": [
{
"type": "TypeParameter",
"start": 1,
"end": 2,
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 2
}
},
"name": "T"
}
]
}
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1 @@
(x?: number): any => x;

View File

@@ -0,0 +1,165 @@
{
"type": "File",
"start": 0,
"end": 23,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 23
}
},
"program": {
"type": "Program",
"start": 0,
"end": 23,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 23
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 23,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 23
}
},
"expression": {
"type": "ArrowFunctionExpression",
"start": 0,
"end": 22,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 22
}
},
"returnType": {
"type": "TypeAnnotation",
"start": 12,
"end": 17,
"loc": {
"start": {
"line": 1,
"column": 12
},
"end": {
"line": 1,
"column": 17
}
},
"typeAnnotation": {
"type": "TSAnyKeyword",
"start": 14,
"end": 17,
"loc": {
"start": {
"line": 1,
"column": 14
},
"end": {
"line": 1,
"column": 17
}
}
}
},
"id": null,
"generator": false,
"expression": true,
"async": false,
"params": [
{
"type": "Identifier",
"start": 1,
"end": 11,
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 11
},
"identifierName": "x"
},
"name": "x",
"optional": true,
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 3,
"end": 11,
"loc": {
"start": {
"line": 1,
"column": 3
},
"end": {
"line": 1,
"column": 11
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 5,
"end": 11,
"loc": {
"start": {
"line": 1,
"column": 5
},
"end": {
"line": 1,
"column": 11
}
}
}
}
}
],
"body": {
"type": "Identifier",
"start": 21,
"end": 22,
"loc": {
"start": {
"line": 1,
"column": 21
},
"end": {
"line": 1,
"column": 22
},
"identifierName": "x"
},
"name": "x"
}
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1 @@
(x: any): x is string => true;

View File

@@ -0,0 +1,210 @@
{
"type": "File",
"start": 0,
"end": 30,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 30
}
},
"program": {
"type": "Program",
"start": 0,
"end": 30,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 30
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 30,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 30
}
},
"expression": {
"type": "ArrowFunctionExpression",
"start": 0,
"end": 29,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 29
}
},
"returnType": {
"type": "TypeAnnotation",
"start": 8,
"end": 21,
"loc": {
"start": {
"line": 1,
"column": 8
},
"end": {
"line": 1,
"column": 21
}
},
"typeAnnotation": {
"type": "TSTypePredicate",
"start": 10,
"end": 21,
"loc": {
"start": {
"line": 1,
"column": 10
},
"end": {
"line": 1,
"column": 21
}
},
"parameterName": {
"type": "Identifier",
"start": 10,
"end": 11,
"loc": {
"start": {
"line": 1,
"column": 10
},
"end": {
"line": 1,
"column": 11
},
"identifierName": "x"
},
"name": "x"
},
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 15,
"end": 21,
"loc": {
"start": {
"line": 1,
"column": 15
},
"end": {
"line": 1,
"column": 21
}
},
"typeAnnotation": {
"type": "TSStringKeyword",
"start": 15,
"end": 21,
"loc": {
"start": {
"line": 1,
"column": 15
},
"end": {
"line": 1,
"column": 21
}
}
}
}
}
},
"id": null,
"generator": false,
"expression": true,
"async": false,
"params": [
{
"type": "Identifier",
"start": 1,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 7
},
"identifierName": "x"
},
"name": "x",
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 2,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 2
},
"end": {
"line": 1,
"column": 7
}
},
"typeAnnotation": {
"type": "TSAnyKeyword",
"start": 4,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 4
},
"end": {
"line": 1,
"column": 7
}
}
}
}
}
],
"body": {
"type": "BooleanLiteral",
"start": 25,
"end": 29,
"loc": {
"start": {
"line": 1,
"column": 25
},
"end": {
"line": 1,
"column": 29
}
},
"value": true
}
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,4 @@
x as T;
x < y as boolean; // (x < y) as boolean;
x === 1 as number; // x === (1 as number);
x as any as T;

View File

@@ -0,0 +1,526 @@
{
"type": "File",
"start": 0,
"end": 106,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 4,
"column": 14
}
},
"program": {
"type": "Program",
"start": 0,
"end": 106,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 4,
"column": 14
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 7
}
},
"expression": {
"type": "TSAsExpression",
"start": 0,
"end": 6,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 6
}
},
"expression": {
"type": "Identifier",
"start": 0,
"end": 1,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 1
},
"identifierName": "x"
},
"name": "x"
},
"typeAnnotation": {
"type": "TSTypeReference",
"start": 5,
"end": 6,
"loc": {
"start": {
"line": 1,
"column": 5
},
"end": {
"line": 1,
"column": 6
}
},
"typeName": {
"type": "Identifier",
"start": 5,
"end": 6,
"loc": {
"start": {
"line": 1,
"column": 5
},
"end": {
"line": 1,
"column": 6
},
"identifierName": "T"
},
"name": "T"
}
}
}
},
{
"type": "ExpressionStatement",
"start": 8,
"end": 25,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 17
}
},
"expression": {
"type": "TSAsExpression",
"start": 8,
"end": 24,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 16
}
},
"expression": {
"type": "BinaryExpression",
"start": 8,
"end": 13,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 5
}
},
"left": {
"type": "Identifier",
"start": 8,
"end": 9,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 1
},
"identifierName": "x"
},
"name": "x"
},
"operator": "<",
"right": {
"type": "Identifier",
"start": 12,
"end": 13,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 5
},
"identifierName": "y"
},
"name": "y"
}
},
"typeAnnotation": {
"type": "TSBooleanKeyword",
"start": 17,
"end": 24,
"loc": {
"start": {
"line": 2,
"column": 9
},
"end": {
"line": 2,
"column": 16
}
}
}
},
"trailingComments": [
{
"type": "CommentLine",
"value": " (x < y) as boolean;",
"start": 26,
"end": 48,
"loc": {
"start": {
"line": 2,
"column": 18
},
"end": {
"line": 2,
"column": 40
}
}
}
]
},
{
"type": "ExpressionStatement",
"start": 49,
"end": 67,
"loc": {
"start": {
"line": 3,
"column": 0
},
"end": {
"line": 3,
"column": 18
}
},
"expression": {
"type": "BinaryExpression",
"start": 49,
"end": 66,
"loc": {
"start": {
"line": 3,
"column": 0
},
"end": {
"line": 3,
"column": 17
}
},
"left": {
"type": "Identifier",
"start": 49,
"end": 50,
"loc": {
"start": {
"line": 3,
"column": 0
},
"end": {
"line": 3,
"column": 1
},
"identifierName": "x"
},
"name": "x",
"leadingComments": null
},
"operator": "===",
"right": {
"type": "TSAsExpression",
"start": 55,
"end": 66,
"loc": {
"start": {
"line": 3,
"column": 6
},
"end": {
"line": 3,
"column": 17
}
},
"expression": {
"type": "NumericLiteral",
"start": 55,
"end": 56,
"loc": {
"start": {
"line": 3,
"column": 6
},
"end": {
"line": 3,
"column": 7
}
},
"extra": {
"rawValue": 1,
"raw": "1"
},
"value": 1
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 60,
"end": 66,
"loc": {
"start": {
"line": 3,
"column": 11
},
"end": {
"line": 3,
"column": 17
}
}
}
},
"leadingComments": null
},
"leadingComments": [
{
"type": "CommentLine",
"value": " (x < y) as boolean;",
"start": 26,
"end": 48,
"loc": {
"start": {
"line": 2,
"column": 18
},
"end": {
"line": 2,
"column": 40
}
}
}
],
"trailingComments": [
{
"type": "CommentLine",
"value": " x === (1 as number);",
"start": 68,
"end": 91,
"loc": {
"start": {
"line": 3,
"column": 19
},
"end": {
"line": 3,
"column": 42
}
}
}
]
},
{
"type": "ExpressionStatement",
"start": 92,
"end": 106,
"loc": {
"start": {
"line": 4,
"column": 0
},
"end": {
"line": 4,
"column": 14
}
},
"expression": {
"type": "TSAsExpression",
"start": 92,
"end": 105,
"loc": {
"start": {
"line": 4,
"column": 0
},
"end": {
"line": 4,
"column": 13
}
},
"expression": {
"type": "TSAsExpression",
"start": 92,
"end": 100,
"loc": {
"start": {
"line": 4,
"column": 0
},
"end": {
"line": 4,
"column": 8
}
},
"expression": {
"type": "Identifier",
"start": 92,
"end": 93,
"loc": {
"start": {
"line": 4,
"column": 0
},
"end": {
"line": 4,
"column": 1
},
"identifierName": "x"
},
"name": "x",
"leadingComments": null
},
"typeAnnotation": {
"type": "TSAnyKeyword",
"start": 97,
"end": 100,
"loc": {
"start": {
"line": 4,
"column": 5
},
"end": {
"line": 4,
"column": 8
}
}
},
"leadingComments": null
},
"typeAnnotation": {
"type": "TSTypeReference",
"start": 104,
"end": 105,
"loc": {
"start": {
"line": 4,
"column": 12
},
"end": {
"line": 4,
"column": 13
}
},
"typeName": {
"type": "Identifier",
"start": 104,
"end": 105,
"loc": {
"start": {
"line": 4,
"column": 12
},
"end": {
"line": 4,
"column": 13
},
"identifierName": "T"
},
"name": "T"
}
},
"leadingComments": null
},
"leadingComments": [
{
"type": "CommentLine",
"value": " x === (1 as number);",
"start": 68,
"end": 91,
"loc": {
"start": {
"line": 3,
"column": 19
},
"end": {
"line": 3,
"column": 42
}
}
}
]
}
],
"directives": []
},
"comments": [
{
"type": "CommentLine",
"value": " (x < y) as boolean;",
"start": 26,
"end": 48,
"loc": {
"start": {
"line": 2,
"column": 18
},
"end": {
"line": 2,
"column": 40
}
}
},
{
"type": "CommentLine",
"value": " x === (1 as number);",
"start": 68,
"end": 91,
"loc": {
"start": {
"line": 3,
"column": 19
},
"end": {
"line": 3,
"column": 42
}
}
}
]
}

View File

@@ -0,0 +1 @@
f(x < 0, /a/);

View File

@@ -0,0 +1,156 @@
{
"type": "File",
"start": 0,
"end": 14,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 14
}
},
"program": {
"type": "Program",
"start": 0,
"end": 14,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 14
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 14,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 14
}
},
"expression": {
"type": "CallExpression",
"start": 0,
"end": 13,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 13
}
},
"callee": {
"type": "Identifier",
"start": 0,
"end": 1,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 1
},
"identifierName": "f"
},
"name": "f"
},
"arguments": [
{
"type": "BinaryExpression",
"start": 2,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 2
},
"end": {
"line": 1,
"column": 7
}
},
"left": {
"type": "Identifier",
"start": 2,
"end": 3,
"loc": {
"start": {
"line": 1,
"column": 2
},
"end": {
"line": 1,
"column": 3
},
"identifierName": "x"
},
"name": "x"
},
"operator": "<",
"right": {
"type": "NumericLiteral",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
},
{
"type": "RegExpLiteral",
"start": 9,
"end": 12,
"loc": {
"start": {
"line": 1,
"column": 9
},
"end": {
"line": 1,
"column": 12
}
},
"extra": {
"raw": "/a/"
},
"pattern": "a",
"flags": ""
}
]
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,3 @@
(<T> x).y;
(x as T).y;
x!.y;

View File

@@ -0,0 +1,346 @@
{
"type": "File",
"start": 0,
"end": 28,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 5
}
},
"program": {
"type": "Program",
"start": 0,
"end": 28,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 5
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 10,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 10
}
},
"expression": {
"type": "MemberExpression",
"start": 0,
"end": 9,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 9
}
},
"object": {
"type": "TSTypeAssertion",
"start": 2,
"end": 6,
"loc": {
"start": {
"line": 1,
"column": 2
},
"end": {
"line": 1,
"column": 6
}
},
"typeAnnotation": {
"type": "TSTypeReference",
"start": 2,
"end": 3,
"loc": {
"start": {
"line": 1,
"column": 2
},
"end": {
"line": 1,
"column": 3
}
},
"typeName": {
"type": "Identifier",
"start": 2,
"end": 3,
"loc": {
"start": {
"line": 1,
"column": 2
},
"end": {
"line": 1,
"column": 3
},
"identifierName": "T"
},
"name": "T"
}
},
"expression": {
"type": "Identifier",
"start": 5,
"end": 6,
"loc": {
"start": {
"line": 1,
"column": 5
},
"end": {
"line": 1,
"column": 6
},
"identifierName": "x"
},
"name": "x"
},
"extra": {
"parenthesized": true,
"parenStart": 0
}
},
"property": {
"type": "Identifier",
"start": 8,
"end": 9,
"loc": {
"start": {
"line": 1,
"column": 8
},
"end": {
"line": 1,
"column": 9
},
"identifierName": "y"
},
"name": "y"
},
"computed": false
}
},
{
"type": "ExpressionStatement",
"start": 11,
"end": 22,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 11
}
},
"expression": {
"type": "MemberExpression",
"start": 11,
"end": 21,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 10
}
},
"object": {
"type": "TSAsExpression",
"start": 12,
"end": 18,
"loc": {
"start": {
"line": 2,
"column": 1
},
"end": {
"line": 2,
"column": 7
}
},
"expression": {
"type": "Identifier",
"start": 12,
"end": 13,
"loc": {
"start": {
"line": 2,
"column": 1
},
"end": {
"line": 2,
"column": 2
},
"identifierName": "x"
},
"name": "x"
},
"typeAnnotation": {
"type": "TSTypeReference",
"start": 17,
"end": 18,
"loc": {
"start": {
"line": 2,
"column": 6
},
"end": {
"line": 2,
"column": 7
}
},
"typeName": {
"type": "Identifier",
"start": 17,
"end": 18,
"loc": {
"start": {
"line": 2,
"column": 6
},
"end": {
"line": 2,
"column": 7
},
"identifierName": "T"
},
"name": "T"
}
},
"extra": {
"parenthesized": true,
"parenStart": 11
}
},
"property": {
"type": "Identifier",
"start": 20,
"end": 21,
"loc": {
"start": {
"line": 2,
"column": 9
},
"end": {
"line": 2,
"column": 10
},
"identifierName": "y"
},
"name": "y"
},
"computed": false
}
},
{
"type": "ExpressionStatement",
"start": 23,
"end": 28,
"loc": {
"start": {
"line": 3,
"column": 0
},
"end": {
"line": 3,
"column": 5
}
},
"expression": {
"type": "MemberExpression",
"start": 23,
"end": 27,
"loc": {
"start": {
"line": 3,
"column": 0
},
"end": {
"line": 3,
"column": 4
}
},
"object": {
"type": "TSNonNullExpression",
"start": 23,
"end": 25,
"loc": {
"start": {
"line": 3,
"column": 0
},
"end": {
"line": 3,
"column": 2
}
},
"expression": {
"type": "Identifier",
"start": 23,
"end": 24,
"loc": {
"start": {
"line": 3,
"column": 0
},
"end": {
"line": 3,
"column": 1
},
"identifierName": "x"
},
"name": "x"
}
},
"property": {
"type": "Identifier",
"start": 26,
"end": 27,
"loc": {
"start": {
"line": 3,
"column": 3
},
"end": {
"line": 3,
"column": 4
},
"identifierName": "y"
},
"name": "y"
},
"computed": false
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1 @@
x!.y;

View File

@@ -0,0 +1,114 @@
{
"type": "File",
"start": 0,
"end": 5,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 5
}
},
"program": {
"type": "Program",
"start": 0,
"end": 5,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 5
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 5,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 5
}
},
"expression": {
"type": "MemberExpression",
"start": 0,
"end": 4,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 4
}
},
"object": {
"type": "TSNonNullExpression",
"start": 0,
"end": 2,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 2
}
},
"expression": {
"type": "Identifier",
"start": 0,
"end": 1,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 1
},
"identifierName": "x"
},
"name": "x"
}
},
"property": {
"type": "Identifier",
"start": 3,
"end": 4,
"loc": {
"start": {
"line": 1,
"column": 3
},
"end": {
"line": 1,
"column": 4
},
"identifierName": "y"
},
"name": "y"
},
"computed": false
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1 @@
x!;

View File

@@ -0,0 +1,81 @@
{
"type": "File",
"start": 0,
"end": 3,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 3
}
},
"program": {
"type": "Program",
"start": 0,
"end": 3,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 3
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 3,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 3
}
},
"expression": {
"type": "TSNonNullExpression",
"start": 0,
"end": 2,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 2
}
},
"expression": {
"type": "Identifier",
"start": 0,
"end": 1,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 1
},
"identifierName": "x"
},
"name": "x"
}
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1 @@
1 + <number> 1;

View File

@@ -0,0 +1,135 @@
{
"type": "File",
"start": 0,
"end": 15,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 15
}
},
"program": {
"type": "Program",
"start": 0,
"end": 15,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 15
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 15,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 15
}
},
"expression": {
"type": "BinaryExpression",
"start": 0,
"end": 14,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 14
}
},
"left": {
"type": "NumericLiteral",
"start": 0,
"end": 1,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 1
}
},
"extra": {
"rawValue": 1,
"raw": "1"
},
"value": 1
},
"operator": "+",
"right": {
"type": "TSTypeAssertion",
"start": 5,
"end": 14,
"loc": {
"start": {
"line": 1,
"column": 5
},
"end": {
"line": 1,
"column": 14
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 5,
"end": 11,
"loc": {
"start": {
"line": 1,
"column": 5
},
"end": {
"line": 1,
"column": 11
}
}
},
"expression": {
"type": "NumericLiteral",
"start": 13,
"end": 14,
"loc": {
"start": {
"line": 1,
"column": 13
},
"end": {
"line": 1,
"column": 14
}
},
"extra": {
"rawValue": 1,
"raw": "1"
},
"value": 1
}
}
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1 @@
<number> 1 + 1;

View File

@@ -0,0 +1,135 @@
{
"type": "File",
"start": 0,
"end": 15,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 15
}
},
"program": {
"type": "Program",
"start": 0,
"end": 15,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 15
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 15,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 15
}
},
"expression": {
"type": "BinaryExpression",
"start": 0,
"end": 14,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 14
}
},
"left": {
"type": "TSTypeAssertion",
"start": 1,
"end": 10,
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 10
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 1,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 7
}
}
},
"expression": {
"type": "NumericLiteral",
"start": 9,
"end": 10,
"loc": {
"start": {
"line": 1,
"column": 9
},
"end": {
"line": 1,
"column": 10
}
},
"extra": {
"rawValue": 1,
"raw": "1"
},
"value": 1
}
},
"operator": "+",
"right": {
"type": "NumericLiteral",
"start": 13,
"end": 14,
"loc": {
"start": {
"line": 1,
"column": 13
},
"end": {
"line": 1,
"column": 14
}
},
"extra": {
"rawValue": 1,
"raw": "1"
},
"value": 1
}
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1 @@
<number> 1;

View File

@@ -0,0 +1,99 @@
{
"type": "File",
"start": 0,
"end": 11,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 11
}
},
"program": {
"type": "Program",
"start": 0,
"end": 11,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 11
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 11,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 11
}
},
"expression": {
"type": "TSTypeAssertion",
"start": 1,
"end": 10,
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 10
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 1,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 7
}
}
},
"expression": {
"type": "NumericLiteral",
"start": 9,
"end": 10,
"loc": {
"start": {
"line": 1,
"column": 9
},
"end": {
"line": 1,
"column": 10
}
},
"extra": {
"rawValue": 1,
"raw": "1"
},
"value": 1
}
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,6 @@
abstract class C {}
declare abstract class C {}
export abstract class C {}
// `export abstract class { }` is not valid.
// `export default abstract class C { }` is not valid.
// `abstract class` is not valid as an expression.

View File

@@ -0,0 +1,305 @@
{
"type": "File",
"start": 0,
"end": 225,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 6,
"column": 50
}
},
"program": {
"type": "Program",
"start": 0,
"end": 225,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 6,
"column": 50
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 19,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 19
}
},
"abstract": true,
"id": {
"type": "Identifier",
"start": 15,
"end": 16,
"loc": {
"start": {
"line": 1,
"column": 15
},
"end": {
"line": 1,
"column": 16
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 17,
"end": 19,
"loc": {
"start": {
"line": 1,
"column": 17
},
"end": {
"line": 1,
"column": 19
}
},
"body": []
}
},
{
"type": "ClassDeclaration",
"start": 20,
"end": 47,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 27
}
},
"abstract": true,
"id": {
"type": "Identifier",
"start": 43,
"end": 44,
"loc": {
"start": {
"line": 2,
"column": 23
},
"end": {
"line": 2,
"column": 24
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 45,
"end": 47,
"loc": {
"start": {
"line": 2,
"column": 25
},
"end": {
"line": 2,
"column": 27
}
},
"body": []
},
"declare": true
},
{
"type": "ExportNamedDeclaration",
"start": 48,
"end": 74,
"loc": {
"start": {
"line": 3,
"column": 0
},
"end": {
"line": 3,
"column": 26
}
},
"specifiers": [],
"source": null,
"declaration": {
"type": "ClassDeclaration",
"start": 55,
"end": 74,
"loc": {
"start": {
"line": 3,
"column": 7
},
"end": {
"line": 3,
"column": 26
}
},
"abstract": true,
"id": {
"type": "Identifier",
"start": 70,
"end": 71,
"loc": {
"start": {
"line": 3,
"column": 22
},
"end": {
"line": 3,
"column": 23
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 72,
"end": 74,
"loc": {
"start": {
"line": 3,
"column": 24
},
"end": {
"line": 3,
"column": 26
}
},
"body": [],
"leadingComments": null,
"trailingComments": null
},
"trailingComments": null
},
"trailingComments": [
{
"type": "CommentLine",
"value": " `export abstract class { }` is not valid.",
"start": 75,
"end": 119,
"loc": {
"start": {
"line": 4,
"column": 0
},
"end": {
"line": 4,
"column": 44
}
}
},
{
"type": "CommentLine",
"value": " `export default abstract class C { }` is not valid.",
"start": 120,
"end": 174,
"loc": {
"start": {
"line": 5,
"column": 0
},
"end": {
"line": 5,
"column": 54
}
}
},
{
"type": "CommentLine",
"value": " `abstract class` is not valid as an expression.",
"start": 175,
"end": 225,
"loc": {
"start": {
"line": 6,
"column": 0
},
"end": {
"line": 6,
"column": 50
}
}
}
]
}
],
"directives": []
},
"comments": [
{
"type": "CommentLine",
"value": " `export abstract class { }` is not valid.",
"start": 75,
"end": 119,
"loc": {
"start": {
"line": 4,
"column": 0
},
"end": {
"line": 4,
"column": 44
}
}
},
{
"type": "CommentLine",
"value": " `export default abstract class C { }` is not valid.",
"start": 120,
"end": 174,
"loc": {
"start": {
"line": 5,
"column": 0
},
"end": {
"line": 5,
"column": 54
}
}
},
{
"type": "CommentLine",
"value": " `abstract class` is not valid as an expression.",
"start": 175,
"end": 225,
"loc": {
"start": {
"line": 6,
"column": 0
},
"end": {
"line": 6,
"column": 50
}
}
}
]
}

View File

@@ -0,0 +1,5 @@
class C {
constructor(x: number, y: number);
constructor(x: string, y: string);
constructor(x: any, y: any) {}
}

View File

@@ -0,0 +1,506 @@
{
"type": "File",
"start": 0,
"end": 124,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 5,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 124,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 5,
"column": 1
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 124,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 5,
"column": 1
}
},
"id": {
"type": "Identifier",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 8,
"end": 124,
"loc": {
"start": {
"line": 1,
"column": 8
},
"end": {
"line": 5,
"column": 1
}
},
"body": [
{
"type": "TSDeclareMethod",
"start": 14,
"end": 48,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 38
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 14,
"end": 25,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 15
},
"identifierName": "constructor"
},
"name": "constructor"
},
"kind": "constructor",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [
{
"type": "Identifier",
"start": 26,
"end": 35,
"loc": {
"start": {
"line": 2,
"column": 16
},
"end": {
"line": 2,
"column": 25
},
"identifierName": "x"
},
"name": "x",
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 27,
"end": 35,
"loc": {
"start": {
"line": 2,
"column": 17
},
"end": {
"line": 2,
"column": 25
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 29,
"end": 35,
"loc": {
"start": {
"line": 2,
"column": 19
},
"end": {
"line": 2,
"column": 25
}
}
}
}
},
{
"type": "Identifier",
"start": 37,
"end": 46,
"loc": {
"start": {
"line": 2,
"column": 27
},
"end": {
"line": 2,
"column": 36
},
"identifierName": "y"
},
"name": "y",
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 38,
"end": 46,
"loc": {
"start": {
"line": 2,
"column": 28
},
"end": {
"line": 2,
"column": 36
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 40,
"end": 46,
"loc": {
"start": {
"line": 2,
"column": 30
},
"end": {
"line": 2,
"column": 36
}
}
}
}
}
]
},
{
"type": "TSDeclareMethod",
"start": 53,
"end": 87,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 3,
"column": 38
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 53,
"end": 64,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 3,
"column": 15
},
"identifierName": "constructor"
},
"name": "constructor"
},
"kind": "constructor",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [
{
"type": "Identifier",
"start": 65,
"end": 74,
"loc": {
"start": {
"line": 3,
"column": 16
},
"end": {
"line": 3,
"column": 25
},
"identifierName": "x"
},
"name": "x",
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 66,
"end": 74,
"loc": {
"start": {
"line": 3,
"column": 17
},
"end": {
"line": 3,
"column": 25
}
},
"typeAnnotation": {
"type": "TSStringKeyword",
"start": 68,
"end": 74,
"loc": {
"start": {
"line": 3,
"column": 19
},
"end": {
"line": 3,
"column": 25
}
}
}
}
},
{
"type": "Identifier",
"start": 76,
"end": 85,
"loc": {
"start": {
"line": 3,
"column": 27
},
"end": {
"line": 3,
"column": 36
},
"identifierName": "y"
},
"name": "y",
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 77,
"end": 85,
"loc": {
"start": {
"line": 3,
"column": 28
},
"end": {
"line": 3,
"column": 36
}
},
"typeAnnotation": {
"type": "TSStringKeyword",
"start": 79,
"end": 85,
"loc": {
"start": {
"line": 3,
"column": 30
},
"end": {
"line": 3,
"column": 36
}
}
}
}
}
]
},
{
"type": "ClassMethod",
"start": 92,
"end": 122,
"loc": {
"start": {
"line": 4,
"column": 4
},
"end": {
"line": 4,
"column": 34
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 92,
"end": 103,
"loc": {
"start": {
"line": 4,
"column": 4
},
"end": {
"line": 4,
"column": 15
},
"identifierName": "constructor"
},
"name": "constructor"
},
"kind": "constructor",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [
{
"type": "Identifier",
"start": 104,
"end": 110,
"loc": {
"start": {
"line": 4,
"column": 16
},
"end": {
"line": 4,
"column": 22
},
"identifierName": "x"
},
"name": "x",
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 105,
"end": 110,
"loc": {
"start": {
"line": 4,
"column": 17
},
"end": {
"line": 4,
"column": 22
}
},
"typeAnnotation": {
"type": "TSAnyKeyword",
"start": 107,
"end": 110,
"loc": {
"start": {
"line": 4,
"column": 19
},
"end": {
"line": 4,
"column": 22
}
}
}
}
},
{
"type": "Identifier",
"start": 112,
"end": 118,
"loc": {
"start": {
"line": 4,
"column": 24
},
"end": {
"line": 4,
"column": 30
},
"identifierName": "y"
},
"name": "y",
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 113,
"end": 118,
"loc": {
"start": {
"line": 4,
"column": 25
},
"end": {
"line": 4,
"column": 30
}
},
"typeAnnotation": {
"type": "TSAnyKeyword",
"start": 115,
"end": 118,
"loc": {
"start": {
"line": 4,
"column": 27
},
"end": {
"line": 4,
"column": 30
}
}
}
}
}
],
"body": {
"type": "BlockStatement",
"start": 120,
"end": 122,
"loc": {
"start": {
"line": 4,
"column": 32
},
"end": {
"line": 4,
"column": 34
}
},
"body": [],
"directives": []
}
}
]
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,7 @@
declare class C {
[x: string]: any;
x;
x: number;
f();
f(): void;
}

View File

@@ -0,0 +1,389 @@
{
"type": "File",
"start": 0,
"end": 87,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 7,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 87,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 7,
"column": 1
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 87,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 7,
"column": 1
}
},
"id": {
"type": "Identifier",
"start": 14,
"end": 15,
"loc": {
"start": {
"line": 1,
"column": 14
},
"end": {
"line": 1,
"column": 15
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 16,
"end": 87,
"loc": {
"start": {
"line": 1,
"column": 16
},
"end": {
"line": 7,
"column": 1
}
},
"body": [
{
"type": "TSIndexSignature",
"start": 22,
"end": 39,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 21
}
},
"parameters": [
{
"type": "Identifier",
"start": 23,
"end": 24,
"loc": {
"start": {
"line": 2,
"column": 5
},
"end": {
"line": 2,
"column": 6
},
"identifierName": "x"
},
"name": "x",
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 26,
"end": 32,
"loc": {
"start": {
"line": 2,
"column": 8
},
"end": {
"line": 2,
"column": 14
}
},
"typeAnnotation": {
"type": "TSStringKeyword",
"start": 26,
"end": 32,
"loc": {
"start": {
"line": 2,
"column": 8
},
"end": {
"line": 2,
"column": 14
}
}
}
}
}
],
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 33,
"end": 38,
"loc": {
"start": {
"line": 2,
"column": 15
},
"end": {
"line": 2,
"column": 20
}
},
"typeAnnotation": {
"type": "TSAnyKeyword",
"start": 35,
"end": 38,
"loc": {
"start": {
"line": 2,
"column": 17
},
"end": {
"line": 2,
"column": 20
}
}
}
}
},
{
"type": "ClassProperty",
"start": 44,
"end": 46,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 3,
"column": 6
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 44,
"end": 45,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 3,
"column": 5
},
"identifierName": "x"
},
"name": "x"
},
"value": null
},
{
"type": "ClassProperty",
"start": 51,
"end": 61,
"loc": {
"start": {
"line": 4,
"column": 4
},
"end": {
"line": 4,
"column": 14
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 51,
"end": 52,
"loc": {
"start": {
"line": 4,
"column": 4
},
"end": {
"line": 4,
"column": 5
},
"identifierName": "x"
},
"name": "x"
},
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 52,
"end": 60,
"loc": {
"start": {
"line": 4,
"column": 5
},
"end": {
"line": 4,
"column": 13
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 54,
"end": 60,
"loc": {
"start": {
"line": 4,
"column": 7
},
"end": {
"line": 4,
"column": 13
}
}
}
},
"value": null
},
{
"type": "TSDeclareMethod",
"start": 66,
"end": 70,
"loc": {
"start": {
"line": 5,
"column": 4
},
"end": {
"line": 5,
"column": 8
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 66,
"end": 67,
"loc": {
"start": {
"line": 5,
"column": 4
},
"end": {
"line": 5,
"column": 5
},
"identifierName": "f"
},
"name": "f"
},
"kind": "method",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": []
},
{
"type": "TSDeclareMethod",
"start": 75,
"end": 85,
"loc": {
"start": {
"line": 6,
"column": 4
},
"end": {
"line": 6,
"column": 14
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 75,
"end": 76,
"loc": {
"start": {
"line": 6,
"column": 4
},
"end": {
"line": 6,
"column": 5
},
"identifierName": "f"
},
"name": "f"
},
"kind": "method",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [],
"returnType": {
"type": "TypeAnnotation",
"start": 78,
"end": 84,
"loc": {
"start": {
"line": 6,
"column": 7
},
"end": {
"line": 6,
"column": 13
}
},
"typeAnnotation": {
"type": "TSVoidKeyword",
"start": 80,
"end": 84,
"loc": {
"start": {
"line": 6,
"column": 9
},
"end": {
"line": 6,
"column": 13
}
}
}
}
}
]
},
"declare": true
}
],
"directives": []
}
}

View File

@@ -0,0 +1,2 @@
(class extends f()<T> implements X.Y<T> {});
(class C extends f()<T> implements X.Y<T> {});

View File

@@ -0,0 +1,546 @@
{
"type": "File",
"start": 0,
"end": 91,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 2,
"column": 46
}
},
"program": {
"type": "Program",
"start": 0,
"end": 91,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 2,
"column": 46
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 44,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 44
}
},
"expression": {
"type": "ClassExpression",
"start": 1,
"end": 42,
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 42
}
},
"id": null,
"superClass": {
"type": "CallExpression",
"start": 15,
"end": 18,
"loc": {
"start": {
"line": 1,
"column": 15
},
"end": {
"line": 1,
"column": 18
}
},
"callee": {
"type": "Identifier",
"start": 15,
"end": 16,
"loc": {
"start": {
"line": 1,
"column": 15
},
"end": {
"line": 1,
"column": 16
},
"identifierName": "f"
},
"name": "f"
},
"arguments": []
},
"superTypeParameters": {
"type": "TypeParameterInstantiation",
"start": 18,
"end": 21,
"loc": {
"start": {
"line": 1,
"column": 18
},
"end": {
"line": 1,
"column": 21
}
},
"params": [
{
"type": "TSTypeReference",
"start": 19,
"end": 20,
"loc": {
"start": {
"line": 1,
"column": 19
},
"end": {
"line": 1,
"column": 20
}
},
"typeName": {
"type": "Identifier",
"start": 19,
"end": 20,
"loc": {
"start": {
"line": 1,
"column": 19
},
"end": {
"line": 1,
"column": 20
},
"identifierName": "T"
},
"name": "T"
}
}
]
},
"implements": [
{
"type": "TSExpressionWithTypeArguments",
"start": 33,
"end": 39,
"loc": {
"start": {
"line": 1,
"column": 33
},
"end": {
"line": 1,
"column": 39
}
},
"expression": {
"type": "TSQualifiedName",
"start": 33,
"end": 36,
"loc": {
"start": {
"line": 1,
"column": 33
},
"end": {
"line": 1,
"column": 36
}
},
"left": {
"type": "Identifier",
"start": 33,
"end": 34,
"loc": {
"start": {
"line": 1,
"column": 33
},
"end": {
"line": 1,
"column": 34
},
"identifierName": "X"
},
"name": "X"
},
"right": {
"type": "Identifier",
"start": 35,
"end": 36,
"loc": {
"start": {
"line": 1,
"column": 35
},
"end": {
"line": 1,
"column": 36
},
"identifierName": "Y"
},
"name": "Y"
}
},
"typeParameters": {
"type": "TypeParameterInstantiation",
"start": 36,
"end": 39,
"loc": {
"start": {
"line": 1,
"column": 36
},
"end": {
"line": 1,
"column": 39
}
},
"params": [
{
"type": "TSTypeReference",
"start": 37,
"end": 38,
"loc": {
"start": {
"line": 1,
"column": 37
},
"end": {
"line": 1,
"column": 38
}
},
"typeName": {
"type": "Identifier",
"start": 37,
"end": 38,
"loc": {
"start": {
"line": 1,
"column": 37
},
"end": {
"line": 1,
"column": 38
},
"identifierName": "T"
},
"name": "T"
}
}
]
}
}
],
"body": {
"type": "ClassBody",
"start": 40,
"end": 42,
"loc": {
"start": {
"line": 1,
"column": 40
},
"end": {
"line": 1,
"column": 42
}
},
"body": []
},
"extra": {
"parenthesized": true,
"parenStart": 0
}
}
},
{
"type": "ExpressionStatement",
"start": 45,
"end": 91,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 46
}
},
"expression": {
"type": "ClassExpression",
"start": 46,
"end": 89,
"loc": {
"start": {
"line": 2,
"column": 1
},
"end": {
"line": 2,
"column": 44
}
},
"id": {
"type": "Identifier",
"start": 52,
"end": 53,
"loc": {
"start": {
"line": 2,
"column": 7
},
"end": {
"line": 2,
"column": 8
},
"identifierName": "C"
},
"name": "C"
},
"superClass": {
"type": "CallExpression",
"start": 62,
"end": 65,
"loc": {
"start": {
"line": 2,
"column": 17
},
"end": {
"line": 2,
"column": 20
}
},
"callee": {
"type": "Identifier",
"start": 62,
"end": 63,
"loc": {
"start": {
"line": 2,
"column": 17
},
"end": {
"line": 2,
"column": 18
},
"identifierName": "f"
},
"name": "f"
},
"arguments": []
},
"superTypeParameters": {
"type": "TypeParameterInstantiation",
"start": 65,
"end": 68,
"loc": {
"start": {
"line": 2,
"column": 20
},
"end": {
"line": 2,
"column": 23
}
},
"params": [
{
"type": "TSTypeReference",
"start": 66,
"end": 67,
"loc": {
"start": {
"line": 2,
"column": 21
},
"end": {
"line": 2,
"column": 22
}
},
"typeName": {
"type": "Identifier",
"start": 66,
"end": 67,
"loc": {
"start": {
"line": 2,
"column": 21
},
"end": {
"line": 2,
"column": 22
},
"identifierName": "T"
},
"name": "T"
}
}
]
},
"implements": [
{
"type": "TSExpressionWithTypeArguments",
"start": 80,
"end": 86,
"loc": {
"start": {
"line": 2,
"column": 35
},
"end": {
"line": 2,
"column": 41
}
},
"expression": {
"type": "TSQualifiedName",
"start": 80,
"end": 83,
"loc": {
"start": {
"line": 2,
"column": 35
},
"end": {
"line": 2,
"column": 38
}
},
"left": {
"type": "Identifier",
"start": 80,
"end": 81,
"loc": {
"start": {
"line": 2,
"column": 35
},
"end": {
"line": 2,
"column": 36
},
"identifierName": "X"
},
"name": "X"
},
"right": {
"type": "Identifier",
"start": 82,
"end": 83,
"loc": {
"start": {
"line": 2,
"column": 37
},
"end": {
"line": 2,
"column": 38
},
"identifierName": "Y"
},
"name": "Y"
}
},
"typeParameters": {
"type": "TypeParameterInstantiation",
"start": 83,
"end": 86,
"loc": {
"start": {
"line": 2,
"column": 38
},
"end": {
"line": 2,
"column": 41
}
},
"params": [
{
"type": "TSTypeReference",
"start": 84,
"end": 85,
"loc": {
"start": {
"line": 2,
"column": 39
},
"end": {
"line": 2,
"column": 40
}
},
"typeName": {
"type": "Identifier",
"start": 84,
"end": 85,
"loc": {
"start": {
"line": 2,
"column": 39
},
"end": {
"line": 2,
"column": 40
},
"identifierName": "T"
},
"name": "T"
}
}
]
}
}
],
"body": {
"type": "ClassBody",
"start": 87,
"end": 89,
"loc": {
"start": {
"line": 2,
"column": 42
},
"end": {
"line": 2,
"column": 44
}
},
"body": []
},
"extra": {
"parenthesized": true,
"parenStart": 45
}
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,2 @@
(class extends f()<T> {});
(class C extends f()<T> {});

View File

@@ -0,0 +1,316 @@
{
"type": "File",
"start": 0,
"end": 55,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 2,
"column": 28
}
},
"program": {
"type": "Program",
"start": 0,
"end": 55,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 2,
"column": 28
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 26,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 26
}
},
"expression": {
"type": "ClassExpression",
"start": 1,
"end": 24,
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 24
}
},
"id": null,
"superClass": {
"type": "CallExpression",
"start": 15,
"end": 18,
"loc": {
"start": {
"line": 1,
"column": 15
},
"end": {
"line": 1,
"column": 18
}
},
"callee": {
"type": "Identifier",
"start": 15,
"end": 16,
"loc": {
"start": {
"line": 1,
"column": 15
},
"end": {
"line": 1,
"column": 16
},
"identifierName": "f"
},
"name": "f"
},
"arguments": []
},
"superTypeParameters": {
"type": "TypeParameterInstantiation",
"start": 18,
"end": 21,
"loc": {
"start": {
"line": 1,
"column": 18
},
"end": {
"line": 1,
"column": 21
}
},
"params": [
{
"type": "TSTypeReference",
"start": 19,
"end": 20,
"loc": {
"start": {
"line": 1,
"column": 19
},
"end": {
"line": 1,
"column": 20
}
},
"typeName": {
"type": "Identifier",
"start": 19,
"end": 20,
"loc": {
"start": {
"line": 1,
"column": 19
},
"end": {
"line": 1,
"column": 20
},
"identifierName": "T"
},
"name": "T"
}
}
]
},
"body": {
"type": "ClassBody",
"start": 22,
"end": 24,
"loc": {
"start": {
"line": 1,
"column": 22
},
"end": {
"line": 1,
"column": 24
}
},
"body": []
},
"extra": {
"parenthesized": true,
"parenStart": 0
}
}
},
{
"type": "ExpressionStatement",
"start": 27,
"end": 55,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 28
}
},
"expression": {
"type": "ClassExpression",
"start": 28,
"end": 53,
"loc": {
"start": {
"line": 2,
"column": 1
},
"end": {
"line": 2,
"column": 26
}
},
"id": {
"type": "Identifier",
"start": 34,
"end": 35,
"loc": {
"start": {
"line": 2,
"column": 7
},
"end": {
"line": 2,
"column": 8
},
"identifierName": "C"
},
"name": "C"
},
"superClass": {
"type": "CallExpression",
"start": 44,
"end": 47,
"loc": {
"start": {
"line": 2,
"column": 17
},
"end": {
"line": 2,
"column": 20
}
},
"callee": {
"type": "Identifier",
"start": 44,
"end": 45,
"loc": {
"start": {
"line": 2,
"column": 17
},
"end": {
"line": 2,
"column": 18
},
"identifierName": "f"
},
"name": "f"
},
"arguments": []
},
"superTypeParameters": {
"type": "TypeParameterInstantiation",
"start": 47,
"end": 50,
"loc": {
"start": {
"line": 2,
"column": 20
},
"end": {
"line": 2,
"column": 23
}
},
"params": [
{
"type": "TSTypeReference",
"start": 48,
"end": 49,
"loc": {
"start": {
"line": 2,
"column": 21
},
"end": {
"line": 2,
"column": 22
}
},
"typeName": {
"type": "Identifier",
"start": 48,
"end": 49,
"loc": {
"start": {
"line": 2,
"column": 21
},
"end": {
"line": 2,
"column": 22
},
"identifierName": "T"
},
"name": "T"
}
}
]
},
"body": {
"type": "ClassBody",
"start": 51,
"end": 53,
"loc": {
"start": {
"line": 2,
"column": 24
},
"end": {
"line": 2,
"column": 26
}
},
"body": []
},
"extra": {
"parenthesized": true,
"parenStart": 27
}
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,2 @@
(class<T> {});
(class C<T> {});

View File

@@ -0,0 +1,220 @@
{
"type": "File",
"start": 0,
"end": 31,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 2,
"column": 16
}
},
"program": {
"type": "Program",
"start": 0,
"end": 31,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 2,
"column": 16
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 14,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 14
}
},
"expression": {
"type": "ClassExpression",
"start": 1,
"end": 12,
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 12
}
},
"id": null,
"typeParameters": {
"type": "TypeParameterDeclaration",
"start": 7,
"end": 9,
"loc": {
"start": {
"line": 1,
"column": 7
},
"end": {
"line": 1,
"column": 9
}
},
"params": [
{
"type": "TypeParameter",
"start": 7,
"end": 8,
"loc": {
"start": {
"line": 1,
"column": 7
},
"end": {
"line": 1,
"column": 8
}
},
"name": "T"
}
]
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 10,
"end": 12,
"loc": {
"start": {
"line": 1,
"column": 10
},
"end": {
"line": 1,
"column": 12
}
},
"body": []
},
"extra": {
"parenthesized": true,
"parenStart": 0
}
}
},
{
"type": "ExpressionStatement",
"start": 15,
"end": 31,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 16
}
},
"expression": {
"type": "ClassExpression",
"start": 16,
"end": 29,
"loc": {
"start": {
"line": 2,
"column": 1
},
"end": {
"line": 2,
"column": 14
}
},
"id": {
"type": "Identifier",
"start": 22,
"end": 23,
"loc": {
"start": {
"line": 2,
"column": 7
},
"end": {
"line": 2,
"column": 8
},
"identifierName": "C"
},
"name": "C"
},
"typeParameters": {
"type": "TypeParameterDeclaration",
"start": 24,
"end": 26,
"loc": {
"start": {
"line": 2,
"column": 9
},
"end": {
"line": 2,
"column": 11
}
},
"params": [
{
"type": "TypeParameter",
"start": 24,
"end": 25,
"loc": {
"start": {
"line": 2,
"column": 9
},
"end": {
"line": 2,
"column": 10
}
},
"name": "T"
}
]
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 27,
"end": 29,
"loc": {
"start": {
"line": 2,
"column": 12
},
"end": {
"line": 2,
"column": 14
}
},
"body": []
},
"extra": {
"parenthesized": true,
"parenStart": 15
}
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,2 @@
(class implements X.Y<T> {});
(class C implements X.Y<T> {});

View File

@@ -0,0 +1,383 @@
{
"type": "File",
"start": 0,
"end": 61,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 2,
"column": 31
}
},
"program": {
"type": "Program",
"start": 0,
"end": 61,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 2,
"column": 31
}
},
"sourceType": "module",
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 29,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 29
}
},
"expression": {
"type": "ClassExpression",
"start": 1,
"end": 27,
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 1,
"column": 27
}
},
"superClass": null,
"implements": [
{
"type": "TSExpressionWithTypeArguments",
"start": 18,
"end": 24,
"loc": {
"start": {
"line": 1,
"column": 18
},
"end": {
"line": 1,
"column": 24
}
},
"expression": {
"type": "TSQualifiedName",
"start": 18,
"end": 21,
"loc": {
"start": {
"line": 1,
"column": 18
},
"end": {
"line": 1,
"column": 21
}
},
"left": {
"type": "Identifier",
"start": 18,
"end": 19,
"loc": {
"start": {
"line": 1,
"column": 18
},
"end": {
"line": 1,
"column": 19
},
"identifierName": "X"
},
"name": "X"
},
"right": {
"type": "Identifier",
"start": 20,
"end": 21,
"loc": {
"start": {
"line": 1,
"column": 20
},
"end": {
"line": 1,
"column": 21
},
"identifierName": "Y"
},
"name": "Y"
}
},
"typeParameters": {
"type": "TypeParameterInstantiation",
"start": 21,
"end": 24,
"loc": {
"start": {
"line": 1,
"column": 21
},
"end": {
"line": 1,
"column": 24
}
},
"params": [
{
"type": "TSTypeReference",
"start": 22,
"end": 23,
"loc": {
"start": {
"line": 1,
"column": 22
},
"end": {
"line": 1,
"column": 23
}
},
"typeName": {
"type": "Identifier",
"start": 22,
"end": 23,
"loc": {
"start": {
"line": 1,
"column": 22
},
"end": {
"line": 1,
"column": 23
},
"identifierName": "T"
},
"name": "T"
}
}
]
}
}
],
"body": {
"type": "ClassBody",
"start": 25,
"end": 27,
"loc": {
"start": {
"line": 1,
"column": 25
},
"end": {
"line": 1,
"column": 27
}
},
"body": []
},
"extra": {
"parenthesized": true,
"parenStart": 0
}
}
},
{
"type": "ExpressionStatement",
"start": 30,
"end": 61,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 31
}
},
"expression": {
"type": "ClassExpression",
"start": 31,
"end": 59,
"loc": {
"start": {
"line": 2,
"column": 1
},
"end": {
"line": 2,
"column": 29
}
},
"id": {
"type": "Identifier",
"start": 37,
"end": 38,
"loc": {
"start": {
"line": 2,
"column": 7
},
"end": {
"line": 2,
"column": 8
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"implements": [
{
"type": "TSExpressionWithTypeArguments",
"start": 50,
"end": 56,
"loc": {
"start": {
"line": 2,
"column": 20
},
"end": {
"line": 2,
"column": 26
}
},
"expression": {
"type": "TSQualifiedName",
"start": 50,
"end": 53,
"loc": {
"start": {
"line": 2,
"column": 20
},
"end": {
"line": 2,
"column": 23
}
},
"left": {
"type": "Identifier",
"start": 50,
"end": 51,
"loc": {
"start": {
"line": 2,
"column": 20
},
"end": {
"line": 2,
"column": 21
},
"identifierName": "X"
},
"name": "X"
},
"right": {
"type": "Identifier",
"start": 52,
"end": 53,
"loc": {
"start": {
"line": 2,
"column": 22
},
"end": {
"line": 2,
"column": 23
},
"identifierName": "Y"
},
"name": "Y"
}
},
"typeParameters": {
"type": "TypeParameterInstantiation",
"start": 53,
"end": 56,
"loc": {
"start": {
"line": 2,
"column": 23
},
"end": {
"line": 2,
"column": 26
}
},
"params": [
{
"type": "TSTypeReference",
"start": 54,
"end": 55,
"loc": {
"start": {
"line": 2,
"column": 24
},
"end": {
"line": 2,
"column": 25
}
},
"typeName": {
"type": "Identifier",
"start": 54,
"end": 55,
"loc": {
"start": {
"line": 2,
"column": 24
},
"end": {
"line": 2,
"column": 25
},
"identifierName": "T"
},
"name": "T"
}
}
]
}
}
],
"body": {
"type": "ClassBody",
"start": 57,
"end": 59,
"loc": {
"start": {
"line": 2,
"column": 27
},
"end": {
"line": 2,
"column": 29
}
},
"body": []
},
"extra": {
"parenthesized": true,
"parenStart": 30
}
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1 @@
class C extends f()<T> implements X.Y<T> {}

View File

@@ -0,0 +1,279 @@
{
"type": "File",
"start": 0,
"end": 43,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 43
}
},
"program": {
"type": "Program",
"start": 0,
"end": 43,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 43
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 43,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 43
}
},
"id": {
"type": "Identifier",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
},
"identifierName": "C"
},
"name": "C"
},
"superClass": {
"type": "CallExpression",
"start": 16,
"end": 19,
"loc": {
"start": {
"line": 1,
"column": 16
},
"end": {
"line": 1,
"column": 19
}
},
"callee": {
"type": "Identifier",
"start": 16,
"end": 17,
"loc": {
"start": {
"line": 1,
"column": 16
},
"end": {
"line": 1,
"column": 17
},
"identifierName": "f"
},
"name": "f"
},
"arguments": []
},
"superTypeParameters": {
"type": "TypeParameterInstantiation",
"start": 19,
"end": 22,
"loc": {
"start": {
"line": 1,
"column": 19
},
"end": {
"line": 1,
"column": 22
}
},
"params": [
{
"type": "TSTypeReference",
"start": 20,
"end": 21,
"loc": {
"start": {
"line": 1,
"column": 20
},
"end": {
"line": 1,
"column": 21
}
},
"typeName": {
"type": "Identifier",
"start": 20,
"end": 21,
"loc": {
"start": {
"line": 1,
"column": 20
},
"end": {
"line": 1,
"column": 21
},
"identifierName": "T"
},
"name": "T"
}
}
]
},
"implements": [
{
"type": "TSExpressionWithTypeArguments",
"start": 34,
"end": 40,
"loc": {
"start": {
"line": 1,
"column": 34
},
"end": {
"line": 1,
"column": 40
}
},
"expression": {
"type": "TSQualifiedName",
"start": 34,
"end": 37,
"loc": {
"start": {
"line": 1,
"column": 34
},
"end": {
"line": 1,
"column": 37
}
},
"left": {
"type": "Identifier",
"start": 34,
"end": 35,
"loc": {
"start": {
"line": 1,
"column": 34
},
"end": {
"line": 1,
"column": 35
},
"identifierName": "X"
},
"name": "X"
},
"right": {
"type": "Identifier",
"start": 36,
"end": 37,
"loc": {
"start": {
"line": 1,
"column": 36
},
"end": {
"line": 1,
"column": 37
},
"identifierName": "Y"
},
"name": "Y"
}
},
"typeParameters": {
"type": "TypeParameterInstantiation",
"start": 37,
"end": 40,
"loc": {
"start": {
"line": 1,
"column": 37
},
"end": {
"line": 1,
"column": 40
}
},
"params": [
{
"type": "TSTypeReference",
"start": 38,
"end": 39,
"loc": {
"start": {
"line": 1,
"column": 38
},
"end": {
"line": 1,
"column": 39
}
},
"typeName": {
"type": "Identifier",
"start": 38,
"end": 39,
"loc": {
"start": {
"line": 1,
"column": 38
},
"end": {
"line": 1,
"column": 39
},
"identifierName": "T"
},
"name": "T"
}
}
]
}
}
],
"body": {
"type": "ClassBody",
"start": 41,
"end": 43,
"loc": {
"start": {
"line": 1,
"column": 41
},
"end": {
"line": 1,
"column": 43
}
},
"body": []
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1 @@
class C extends f()<T> {}

View File

@@ -0,0 +1,164 @@
{
"type": "File",
"start": 0,
"end": 25,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 25
}
},
"program": {
"type": "Program",
"start": 0,
"end": 25,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 25
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 25,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 25
}
},
"id": {
"type": "Identifier",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
},
"identifierName": "C"
},
"name": "C"
},
"superClass": {
"type": "CallExpression",
"start": 16,
"end": 19,
"loc": {
"start": {
"line": 1,
"column": 16
},
"end": {
"line": 1,
"column": 19
}
},
"callee": {
"type": "Identifier",
"start": 16,
"end": 17,
"loc": {
"start": {
"line": 1,
"column": 16
},
"end": {
"line": 1,
"column": 17
},
"identifierName": "f"
},
"name": "f"
},
"arguments": []
},
"superTypeParameters": {
"type": "TypeParameterInstantiation",
"start": 19,
"end": 22,
"loc": {
"start": {
"line": 1,
"column": 19
},
"end": {
"line": 1,
"column": 22
}
},
"params": [
{
"type": "TSTypeReference",
"start": 20,
"end": 21,
"loc": {
"start": {
"line": 1,
"column": 20
},
"end": {
"line": 1,
"column": 21
}
},
"typeName": {
"type": "Identifier",
"start": 20,
"end": 21,
"loc": {
"start": {
"line": 1,
"column": 20
},
"end": {
"line": 1,
"column": 21
},
"identifierName": "T"
},
"name": "T"
}
}
]
},
"body": {
"type": "ClassBody",
"start": 23,
"end": 25,
"loc": {
"start": {
"line": 1,
"column": 23
},
"end": {
"line": 1,
"column": 25
}
},
"body": []
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1 @@
class C<T extends object = { x: number }> {}

View File

@@ -0,0 +1,211 @@
{
"type": "File",
"start": 0,
"end": 44,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 44
}
},
"program": {
"type": "Program",
"start": 0,
"end": 44,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 44
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 44,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 44
}
},
"id": {
"type": "Identifier",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
},
"identifierName": "C"
},
"name": "C"
},
"typeParameters": {
"type": "TypeParameterDeclaration",
"start": 8,
"end": 41,
"loc": {
"start": {
"line": 1,
"column": 8
},
"end": {
"line": 1,
"column": 41
}
},
"params": [
{
"type": "TypeParameter",
"start": 8,
"end": 40,
"loc": {
"start": {
"line": 1,
"column": 8
},
"end": {
"line": 1,
"column": 40
}
},
"name": "T",
"constraint": {
"type": "TSObjectKeyword",
"start": 18,
"end": 24,
"loc": {
"start": {
"line": 1,
"column": 18
},
"end": {
"line": 1,
"column": 24
}
}
},
"default": {
"type": "TSTypeLiteral",
"start": 27,
"end": 40,
"loc": {
"start": {
"line": 1,
"column": 27
},
"end": {
"line": 1,
"column": 40
}
},
"members": [
{
"type": "TSPropertySignature",
"start": 29,
"end": 38,
"loc": {
"start": {
"line": 1,
"column": 29
},
"end": {
"line": 1,
"column": 38
}
},
"computed": false,
"key": {
"type": "Identifier",
"start": 29,
"end": 30,
"loc": {
"start": {
"line": 1,
"column": 29
},
"end": {
"line": 1,
"column": 30
},
"identifierName": "x"
},
"name": "x"
},
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 30,
"end": 38,
"loc": {
"start": {
"line": 1,
"column": 30
},
"end": {
"line": 1,
"column": 38
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 32,
"end": 38,
"loc": {
"start": {
"line": 1,
"column": 32
},
"end": {
"line": 1,
"column": 38
}
}
}
}
}
]
}
}
]
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 42,
"end": 44,
"loc": {
"start": {
"line": 1,
"column": 42
},
"end": {
"line": 1,
"column": 44
}
},
"body": []
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,3 @@
declare class C {
get<T>(): void;
}

View File

@@ -0,0 +1,188 @@
{
"type": "File",
"start": 0,
"end": 39,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 39,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 1
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 39,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 1
}
},
"id": {
"type": "Identifier",
"start": 14,
"end": 15,
"loc": {
"start": {
"line": 1,
"column": 14
},
"end": {
"line": 1,
"column": 15
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 16,
"end": 39,
"loc": {
"start": {
"line": 1,
"column": 16
},
"end": {
"line": 3,
"column": 1
}
},
"body": [
{
"type": "TSDeclareMethod",
"start": 22,
"end": 37,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 19
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 22,
"end": 25,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 7
},
"identifierName": "get"
},
"name": "get"
},
"kind": "method",
"typeParameters": {
"type": "TypeParameterDeclaration",
"start": 26,
"end": 28,
"loc": {
"start": {
"line": 2,
"column": 8
},
"end": {
"line": 2,
"column": 10
}
},
"params": [
{
"type": "TypeParameter",
"start": 26,
"end": 27,
"loc": {
"start": {
"line": 2,
"column": 8
},
"end": {
"line": 2,
"column": 9
}
},
"name": "T"
}
]
},
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [],
"returnType": {
"type": "TypeAnnotation",
"start": 30,
"end": 36,
"loc": {
"start": {
"line": 2,
"column": 12
},
"end": {
"line": 2,
"column": 18
}
},
"typeAnnotation": {
"type": "TSVoidKeyword",
"start": 32,
"end": 36,
"loc": {
"start": {
"line": 2,
"column": 14
},
"end": {
"line": 2,
"column": 18
}
}
}
}
}
]
},
"declare": true
}
],
"directives": []
}
}

View File

@@ -0,0 +1 @@
class C implements X.Y<T> {}

View File

@@ -0,0 +1,198 @@
{
"type": "File",
"start": 0,
"end": 28,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 28
}
},
"program": {
"type": "Program",
"start": 0,
"end": 28,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 28
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 28,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 28
}
},
"id": {
"type": "Identifier",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"implements": [
{
"type": "TSExpressionWithTypeArguments",
"start": 19,
"end": 25,
"loc": {
"start": {
"line": 1,
"column": 19
},
"end": {
"line": 1,
"column": 25
}
},
"expression": {
"type": "TSQualifiedName",
"start": 19,
"end": 22,
"loc": {
"start": {
"line": 1,
"column": 19
},
"end": {
"line": 1,
"column": 22
}
},
"left": {
"type": "Identifier",
"start": 19,
"end": 20,
"loc": {
"start": {
"line": 1,
"column": 19
},
"end": {
"line": 1,
"column": 20
},
"identifierName": "X"
},
"name": "X"
},
"right": {
"type": "Identifier",
"start": 21,
"end": 22,
"loc": {
"start": {
"line": 1,
"column": 21
},
"end": {
"line": 1,
"column": 22
},
"identifierName": "Y"
},
"name": "Y"
}
},
"typeParameters": {
"type": "TypeParameterInstantiation",
"start": 22,
"end": 25,
"loc": {
"start": {
"line": 1,
"column": 22
},
"end": {
"line": 1,
"column": 25
}
},
"params": [
{
"type": "TSTypeReference",
"start": 23,
"end": 24,
"loc": {
"start": {
"line": 1,
"column": 23
},
"end": {
"line": 1,
"column": 24
}
},
"typeName": {
"type": "Identifier",
"start": 23,
"end": 24,
"loc": {
"start": {
"line": 1,
"column": 23
},
"end": {
"line": 1,
"column": 24
},
"identifierName": "T"
},
"name": "T"
}
}
]
}
}
],
"body": {
"type": "ClassBody",
"start": 26,
"end": 28,
"loc": {
"start": {
"line": 1,
"column": 26
},
"end": {
"line": 1,
"column": 28
}
},
"body": []
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,4 @@
class C {
[x: string]: any;
readonly [x: string]: any;
}

View File

@@ -0,0 +1,273 @@
{
"type": "File",
"start": 0,
"end": 64,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 4,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 64,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 4,
"column": 1
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 64,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 4,
"column": 1
}
},
"id": {
"type": "Identifier",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 8,
"end": 64,
"loc": {
"start": {
"line": 1,
"column": 8
},
"end": {
"line": 4,
"column": 1
}
},
"body": [
{
"type": "TSIndexSignature",
"start": 14,
"end": 31,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 21
}
},
"parameters": [
{
"type": "Identifier",
"start": 15,
"end": 16,
"loc": {
"start": {
"line": 2,
"column": 5
},
"end": {
"line": 2,
"column": 6
},
"identifierName": "x"
},
"name": "x",
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 18,
"end": 24,
"loc": {
"start": {
"line": 2,
"column": 8
},
"end": {
"line": 2,
"column": 14
}
},
"typeAnnotation": {
"type": "TSStringKeyword",
"start": 18,
"end": 24,
"loc": {
"start": {
"line": 2,
"column": 8
},
"end": {
"line": 2,
"column": 14
}
}
}
}
}
],
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 25,
"end": 30,
"loc": {
"start": {
"line": 2,
"column": 15
},
"end": {
"line": 2,
"column": 20
}
},
"typeAnnotation": {
"type": "TSAnyKeyword",
"start": 27,
"end": 30,
"loc": {
"start": {
"line": 2,
"column": 17
},
"end": {
"line": 2,
"column": 20
}
}
}
}
},
{
"type": "TSIndexSignature",
"start": 36,
"end": 62,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 3,
"column": 30
}
},
"readonly": true,
"parameters": [
{
"type": "Identifier",
"start": 46,
"end": 47,
"loc": {
"start": {
"line": 3,
"column": 14
},
"end": {
"line": 3,
"column": 15
},
"identifierName": "x"
},
"name": "x",
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 49,
"end": 55,
"loc": {
"start": {
"line": 3,
"column": 17
},
"end": {
"line": 3,
"column": 23
}
},
"typeAnnotation": {
"type": "TSStringKeyword",
"start": 49,
"end": 55,
"loc": {
"start": {
"line": 3,
"column": 17
},
"end": {
"line": 3,
"column": 23
}
}
}
}
}
],
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 56,
"end": 61,
"loc": {
"start": {
"line": 3,
"column": 24
},
"end": {
"line": 3,
"column": 29
}
},
"typeAnnotation": {
"type": "TSAnyKeyword",
"start": 58,
"end": 61,
"loc": {
"start": {
"line": 3,
"column": 26
},
"end": {
"line": 3,
"column": 29
}
}
}
}
}
]
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,6 @@
class C {
public(): void;
public static(): void;
readonly = 0;
async<T>(): void;
}

View File

@@ -0,0 +1,382 @@
{
"type": "File",
"start": 0,
"end": 98,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 6,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 98,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 6,
"column": 1
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 98,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 6,
"column": 1
}
},
"id": {
"type": "Identifier",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 8,
"end": 98,
"loc": {
"start": {
"line": 1,
"column": 8
},
"end": {
"line": 6,
"column": 1
}
},
"body": [
{
"type": "TSDeclareMethod",
"start": 14,
"end": 29,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 19
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 14,
"end": 20,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 10
},
"identifierName": "public"
},
"name": "public"
},
"kind": "method",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [],
"returnType": {
"type": "TypeAnnotation",
"start": 22,
"end": 28,
"loc": {
"start": {
"line": 2,
"column": 12
},
"end": {
"line": 2,
"column": 18
}
},
"typeAnnotation": {
"type": "TSVoidKeyword",
"start": 24,
"end": 28,
"loc": {
"start": {
"line": 2,
"column": 14
},
"end": {
"line": 2,
"column": 18
}
}
}
}
},
{
"type": "TSDeclareMethod",
"start": 34,
"end": 56,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 3,
"column": 26
}
},
"accessibility": "public",
"kind": "method",
"computed": false,
"key": {
"type": "Identifier",
"start": 41,
"end": 47,
"loc": {
"start": {
"line": 3,
"column": 11
},
"end": {
"line": 3,
"column": 17
},
"identifierName": "static"
},
"name": "static"
},
"static": false,
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [],
"returnType": {
"type": "TypeAnnotation",
"start": 49,
"end": 55,
"loc": {
"start": {
"line": 3,
"column": 19
},
"end": {
"line": 3,
"column": 25
}
},
"typeAnnotation": {
"type": "TSVoidKeyword",
"start": 51,
"end": 55,
"loc": {
"start": {
"line": 3,
"column": 21
},
"end": {
"line": 3,
"column": 25
}
}
}
}
},
{
"type": "ClassProperty",
"start": 61,
"end": 74,
"loc": {
"start": {
"line": 4,
"column": 4
},
"end": {
"line": 4,
"column": 17
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 61,
"end": 69,
"loc": {
"start": {
"line": 4,
"column": 4
},
"end": {
"line": 4,
"column": 12
},
"identifierName": "readonly"
},
"name": "readonly"
},
"value": {
"type": "NumericLiteral",
"start": 72,
"end": 73,
"loc": {
"start": {
"line": 4,
"column": 15
},
"end": {
"line": 4,
"column": 16
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
},
{
"type": "TSDeclareMethod",
"start": 79,
"end": 96,
"loc": {
"start": {
"line": 5,
"column": 4
},
"end": {
"line": 5,
"column": 21
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 79,
"end": 84,
"loc": {
"start": {
"line": 5,
"column": 4
},
"end": {
"line": 5,
"column": 9
},
"identifierName": "async"
},
"name": "async"
},
"kind": "method",
"typeParameters": {
"type": "TypeParameterDeclaration",
"start": 85,
"end": 87,
"loc": {
"start": {
"line": 5,
"column": 10
},
"end": {
"line": 5,
"column": 12
}
},
"params": [
{
"type": "TypeParameter",
"start": 85,
"end": 86,
"loc": {
"start": {
"line": 5,
"column": 10
},
"end": {
"line": 5,
"column": 11
}
},
"name": "T"
}
]
},
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [],
"returnType": {
"type": "TypeAnnotation",
"start": 89,
"end": 95,
"loc": {
"start": {
"line": 5,
"column": 14
},
"end": {
"line": 5,
"column": 20
}
},
"typeAnnotation": {
"type": "TSVoidKeyword",
"start": 91,
"end": 95,
"loc": {
"start": {
"line": 5,
"column": 16
},
"end": {
"line": 5,
"column": 20
}
}
}
}
}
]
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,3 @@
class C {
public delete(): void;
}

View File

@@ -0,0 +1,155 @@
{
"type": "File",
"start": 0,
"end": 38,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 38,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 1
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 38,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 1
}
},
"id": {
"type": "Identifier",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 8,
"end": 38,
"loc": {
"start": {
"line": 1,
"column": 8
},
"end": {
"line": 3,
"column": 1
}
},
"body": [
{
"type": "TSDeclareMethod",
"start": 14,
"end": 36,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 26
}
},
"accessibility": "public",
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 21,
"end": 27,
"loc": {
"start": {
"line": 2,
"column": 11
},
"end": {
"line": 2,
"column": 17
},
"identifierName": "delete"
},
"name": "delete"
},
"kind": "method",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [],
"returnType": {
"type": "TypeAnnotation",
"start": 29,
"end": 35,
"loc": {
"start": {
"line": 2,
"column": 19
},
"end": {
"line": 2,
"column": 25
}
},
"typeAnnotation": {
"type": "TSVoidKeyword",
"start": 31,
"end": 35,
"loc": {
"start": {
"line": 2,
"column": 21
},
"end": {
"line": 2,
"column": 25
}
}
}
}
}
]
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,4 @@
class C {
[Symbol.iterator](): void;
[Symbol.iterator]?(): void;
}

View File

@@ -0,0 +1,291 @@
{
"type": "File",
"start": 0,
"end": 74,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 4,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 74,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 4,
"column": 1
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 74,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 4,
"column": 1
}
},
"id": {
"type": "Identifier",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 8,
"end": 74,
"loc": {
"start": {
"line": 1,
"column": 8
},
"end": {
"line": 4,
"column": 1
}
},
"body": [
{
"type": "TSDeclareMethod",
"start": 14,
"end": 40,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 30
}
},
"static": false,
"computed": true,
"key": {
"type": "MemberExpression",
"start": 15,
"end": 30,
"loc": {
"start": {
"line": 2,
"column": 5
},
"end": {
"line": 2,
"column": 20
}
},
"object": {
"type": "Identifier",
"start": 15,
"end": 21,
"loc": {
"start": {
"line": 2,
"column": 5
},
"end": {
"line": 2,
"column": 11
},
"identifierName": "Symbol"
},
"name": "Symbol"
},
"property": {
"type": "Identifier",
"start": 22,
"end": 30,
"loc": {
"start": {
"line": 2,
"column": 12
},
"end": {
"line": 2,
"column": 20
},
"identifierName": "iterator"
},
"name": "iterator"
},
"computed": false
},
"kind": "method",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [],
"returnType": {
"type": "TypeAnnotation",
"start": 33,
"end": 39,
"loc": {
"start": {
"line": 2,
"column": 23
},
"end": {
"line": 2,
"column": 29
}
},
"typeAnnotation": {
"type": "TSVoidKeyword",
"start": 35,
"end": 39,
"loc": {
"start": {
"line": 2,
"column": 25
},
"end": {
"line": 2,
"column": 29
}
}
}
}
},
{
"type": "TSDeclareMethod",
"start": 45,
"end": 72,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 3,
"column": 31
}
},
"static": false,
"computed": true,
"key": {
"type": "MemberExpression",
"start": 46,
"end": 61,
"loc": {
"start": {
"line": 3,
"column": 5
},
"end": {
"line": 3,
"column": 20
}
},
"object": {
"type": "Identifier",
"start": 46,
"end": 52,
"loc": {
"start": {
"line": 3,
"column": 5
},
"end": {
"line": 3,
"column": 11
},
"identifierName": "Symbol"
},
"name": "Symbol"
},
"property": {
"type": "Identifier",
"start": 53,
"end": 61,
"loc": {
"start": {
"line": 3,
"column": 12
},
"end": {
"line": 3,
"column": 20
},
"identifierName": "iterator"
},
"name": "iterator"
},
"computed": false
},
"optional": true,
"kind": "method",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [],
"returnType": {
"type": "TypeAnnotation",
"start": 65,
"end": 71,
"loc": {
"start": {
"line": 3,
"column": 24
},
"end": {
"line": 3,
"column": 30
}
},
"typeAnnotation": {
"type": "TSVoidKeyword",
"start": 67,
"end": 71,
"loc": {
"start": {
"line": 3,
"column": 26
},
"end": {
"line": 3,
"column": 30
}
}
}
}
}
]
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,4 @@
class C {
f<T>(a: T, b?: T, ...c: T[]): T {}
[Symbol.iterator]<T>(): T {}
}

View File

@@ -0,0 +1,615 @@
{
"type": "File",
"start": 0,
"end": 83,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 4,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 83,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 4,
"column": 1
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 83,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 4,
"column": 1
}
},
"id": {
"type": "Identifier",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 8,
"end": 83,
"loc": {
"start": {
"line": 1,
"column": 8
},
"end": {
"line": 4,
"column": 1
}
},
"body": [
{
"type": "ClassMethod",
"start": 14,
"end": 48,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 38
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 14,
"end": 15,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 5
},
"identifierName": "f"
},
"name": "f"
},
"kind": "method",
"typeParameters": {
"type": "TypeParameterDeclaration",
"start": 16,
"end": 18,
"loc": {
"start": {
"line": 2,
"column": 6
},
"end": {
"line": 2,
"column": 8
}
},
"params": [
{
"type": "TypeParameter",
"start": 16,
"end": 17,
"loc": {
"start": {
"line": 2,
"column": 6
},
"end": {
"line": 2,
"column": 7
}
},
"name": "T"
}
]
},
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [
{
"type": "Identifier",
"start": 19,
"end": 23,
"loc": {
"start": {
"line": 2,
"column": 9
},
"end": {
"line": 2,
"column": 13
},
"identifierName": "a"
},
"name": "a",
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 20,
"end": 23,
"loc": {
"start": {
"line": 2,
"column": 10
},
"end": {
"line": 2,
"column": 13
}
},
"typeAnnotation": {
"type": "TSTypeReference",
"start": 22,
"end": 23,
"loc": {
"start": {
"line": 2,
"column": 12
},
"end": {
"line": 2,
"column": 13
}
},
"typeName": {
"type": "Identifier",
"start": 22,
"end": 23,
"loc": {
"start": {
"line": 2,
"column": 12
},
"end": {
"line": 2,
"column": 13
},
"identifierName": "T"
},
"name": "T"
}
}
}
},
{
"type": "Identifier",
"start": 25,
"end": 30,
"loc": {
"start": {
"line": 2,
"column": 15
},
"end": {
"line": 2,
"column": 20
},
"identifierName": "b"
},
"name": "b",
"optional": true,
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 27,
"end": 30,
"loc": {
"start": {
"line": 2,
"column": 17
},
"end": {
"line": 2,
"column": 20
}
},
"typeAnnotation": {
"type": "TSTypeReference",
"start": 29,
"end": 30,
"loc": {
"start": {
"line": 2,
"column": 19
},
"end": {
"line": 2,
"column": 20
}
},
"typeName": {
"type": "Identifier",
"start": 29,
"end": 30,
"loc": {
"start": {
"line": 2,
"column": 19
},
"end": {
"line": 2,
"column": 20
},
"identifierName": "T"
},
"name": "T"
}
}
}
},
{
"type": "RestElement",
"start": 32,
"end": 41,
"loc": {
"start": {
"line": 2,
"column": 22
},
"end": {
"line": 2,
"column": 31
}
},
"argument": {
"type": "Identifier",
"start": 35,
"end": 36,
"loc": {
"start": {
"line": 2,
"column": 25
},
"end": {
"line": 2,
"column": 26
},
"identifierName": "c"
},
"name": "c"
},
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 36,
"end": 41,
"loc": {
"start": {
"line": 2,
"column": 26
},
"end": {
"line": 2,
"column": 31
}
},
"typeAnnotation": {
"type": "TSArrayType",
"start": 38,
"end": 41,
"loc": {
"start": {
"line": 2,
"column": 28
},
"end": {
"line": 2,
"column": 31
}
},
"elementType": {
"type": "TSTypeReference",
"start": 38,
"end": 39,
"loc": {
"start": {
"line": 2,
"column": 28
},
"end": {
"line": 2,
"column": 29
}
},
"typeName": {
"type": "Identifier",
"start": 38,
"end": 39,
"loc": {
"start": {
"line": 2,
"column": 28
},
"end": {
"line": 2,
"column": 29
},
"identifierName": "T"
},
"name": "T"
}
}
}
}
}
],
"returnType": {
"type": "TypeAnnotation",
"start": 42,
"end": 45,
"loc": {
"start": {
"line": 2,
"column": 32
},
"end": {
"line": 2,
"column": 35
}
},
"typeAnnotation": {
"type": "TSTypeReference",
"start": 44,
"end": 45,
"loc": {
"start": {
"line": 2,
"column": 34
},
"end": {
"line": 2,
"column": 35
}
},
"typeName": {
"type": "Identifier",
"start": 44,
"end": 45,
"loc": {
"start": {
"line": 2,
"column": 34
},
"end": {
"line": 2,
"column": 35
},
"identifierName": "T"
},
"name": "T"
}
}
},
"body": {
"type": "BlockStatement",
"start": 46,
"end": 48,
"loc": {
"start": {
"line": 2,
"column": 36
},
"end": {
"line": 2,
"column": 38
}
},
"body": [],
"directives": []
}
},
{
"type": "ClassMethod",
"start": 53,
"end": 81,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 3,
"column": 32
}
},
"static": false,
"computed": true,
"key": {
"type": "MemberExpression",
"start": 54,
"end": 69,
"loc": {
"start": {
"line": 3,
"column": 5
},
"end": {
"line": 3,
"column": 20
}
},
"object": {
"type": "Identifier",
"start": 54,
"end": 60,
"loc": {
"start": {
"line": 3,
"column": 5
},
"end": {
"line": 3,
"column": 11
},
"identifierName": "Symbol"
},
"name": "Symbol"
},
"property": {
"type": "Identifier",
"start": 61,
"end": 69,
"loc": {
"start": {
"line": 3,
"column": 12
},
"end": {
"line": 3,
"column": 20
},
"identifierName": "iterator"
},
"name": "iterator"
},
"computed": false
},
"kind": "method",
"typeParameters": {
"type": "TypeParameterDeclaration",
"start": 71,
"end": 73,
"loc": {
"start": {
"line": 3,
"column": 22
},
"end": {
"line": 3,
"column": 24
}
},
"params": [
{
"type": "TypeParameter",
"start": 71,
"end": 72,
"loc": {
"start": {
"line": 3,
"column": 22
},
"end": {
"line": 3,
"column": 23
}
},
"name": "T"
}
]
},
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [],
"returnType": {
"type": "TypeAnnotation",
"start": 75,
"end": 78,
"loc": {
"start": {
"line": 3,
"column": 26
},
"end": {
"line": 3,
"column": 29
}
},
"typeAnnotation": {
"type": "TSTypeReference",
"start": 77,
"end": 78,
"loc": {
"start": {
"line": 3,
"column": 28
},
"end": {
"line": 3,
"column": 29
}
},
"typeName": {
"type": "Identifier",
"start": 77,
"end": 78,
"loc": {
"start": {
"line": 3,
"column": 28
},
"end": {
"line": 3,
"column": 29
},
"identifierName": "T"
},
"name": "T"
}
}
},
"body": {
"type": "BlockStatement",
"start": 79,
"end": 81,
"loc": {
"start": {
"line": 3,
"column": 30
},
"end": {
"line": 3,
"column": 32
}
},
"body": [],
"directives": []
}
}
]
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,4 @@
class C {
f();
f(): void;
}

View File

@@ -0,0 +1,194 @@
{
"type": "File",
"start": 0,
"end": 35,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 4,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 35,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 4,
"column": 1
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 35,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 4,
"column": 1
}
},
"id": {
"type": "Identifier",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 8,
"end": 35,
"loc": {
"start": {
"line": 1,
"column": 8
},
"end": {
"line": 4,
"column": 1
}
},
"body": [
{
"type": "TSDeclareMethod",
"start": 14,
"end": 18,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 8
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 14,
"end": 15,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 5
},
"identifierName": "f"
},
"name": "f"
},
"kind": "method",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": []
},
{
"type": "TSDeclareMethod",
"start": 23,
"end": 33,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 3,
"column": 14
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 23,
"end": 24,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 3,
"column": 5
},
"identifierName": "f"
},
"name": "f"
},
"kind": "method",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [],
"returnType": {
"type": "TypeAnnotation",
"start": 26,
"end": 32,
"loc": {
"start": {
"line": 3,
"column": 7
},
"end": {
"line": 3,
"column": 13
}
},
"typeAnnotation": {
"type": "TSVoidKeyword",
"start": 28,
"end": 32,
"loc": {
"start": {
"line": 3,
"column": 9
},
"end": {
"line": 3,
"column": 13
}
}
}
}
}
]
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,3 @@
class C {
m?(): void {}
}

View File

@@ -0,0 +1,172 @@
{
"type": "File",
"start": 0,
"end": 29,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 29,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 1
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 29,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 1
}
},
"id": {
"type": "Identifier",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 8,
"end": 29,
"loc": {
"start": {
"line": 1,
"column": 8
},
"end": {
"line": 3,
"column": 1
}
},
"body": [
{
"type": "ClassMethod",
"start": 14,
"end": 27,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 17
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 14,
"end": 15,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 5
},
"identifierName": "m"
},
"name": "m"
},
"optional": true,
"kind": "method",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [],
"returnType": {
"type": "TypeAnnotation",
"start": 18,
"end": 24,
"loc": {
"start": {
"line": 2,
"column": 8
},
"end": {
"line": 2,
"column": 14
}
},
"typeAnnotation": {
"type": "TSVoidKeyword",
"start": 20,
"end": 24,
"loc": {
"start": {
"line": 2,
"column": 10
},
"end": {
"line": 2,
"column": 14
}
}
}
},
"body": {
"type": "BlockStatement",
"start": 25,
"end": 27,
"loc": {
"start": {
"line": 2,
"column": 15
},
"end": {
"line": 2,
"column": 17
}
},
"body": [],
"directives": []
}
}
]
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,3 @@
class C {
readonly m() {}
}

View File

@@ -0,0 +1,3 @@
{
"throws": "Unexpected token, expected ; (2:14)"
}

View File

@@ -0,0 +1,3 @@
class C {
f(): void {}
}

View File

@@ -0,0 +1,171 @@
{
"type": "File",
"start": 0,
"end": 28,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 28,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 1
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 28,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 1
}
},
"id": {
"type": "Identifier",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 8,
"end": 28,
"loc": {
"start": {
"line": 1,
"column": 8
},
"end": {
"line": 3,
"column": 1
}
},
"body": [
{
"type": "ClassMethod",
"start": 14,
"end": 26,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 16
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 14,
"end": 15,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 5
},
"identifierName": "f"
},
"name": "f"
},
"kind": "method",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [],
"returnType": {
"type": "TypeAnnotation",
"start": 17,
"end": 23,
"loc": {
"start": {
"line": 2,
"column": 7
},
"end": {
"line": 2,
"column": 13
}
},
"typeAnnotation": {
"type": "TSVoidKeyword",
"start": 19,
"end": 23,
"loc": {
"start": {
"line": 2,
"column": 9
},
"end": {
"line": 2,
"column": 13
}
}
}
},
"body": {
"type": "BlockStatement",
"start": 24,
"end": 26,
"loc": {
"start": {
"line": 2,
"column": 14
},
"end": {
"line": 2,
"column": 16
}
},
"body": [],
"directives": []
}
}
]
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,6 @@
class C
{
m()
{
}
}

View File

@@ -0,0 +1,141 @@
{
"type": "File",
"start": 0,
"end": 31,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 6,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 31,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 6,
"column": 1
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 31,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 6,
"column": 1
}
},
"id": {
"type": "Identifier",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 8,
"end": 31,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 6,
"column": 1
}
},
"body": [
{
"type": "ClassMethod",
"start": 14,
"end": 29,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 5,
"column": 5
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 14,
"end": 15,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 3,
"column": 5
},
"identifierName": "m"
},
"name": "m"
},
"kind": "method",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [],
"body": {
"type": "BlockStatement",
"start": 22,
"end": 29,
"loc": {
"start": {
"line": 4,
"column": 4
},
"end": {
"line": 5,
"column": 5
}
},
"body": [],
"directives": []
}
}
]
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,5 @@
class C
{
m()
n()
}

View File

@@ -0,0 +1,164 @@
{
"type": "File",
"start": 0,
"end": 27,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 5,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 27,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 5,
"column": 1
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 27,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 5,
"column": 1
}
},
"id": {
"type": "Identifier",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 8,
"end": 27,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 5,
"column": 1
}
},
"body": [
{
"type": "TSDeclareMethod",
"start": 14,
"end": 17,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 3,
"column": 7
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 14,
"end": 15,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 3,
"column": 5
},
"identifierName": "m"
},
"name": "m"
},
"kind": "method",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": []
},
{
"type": "TSDeclareMethod",
"start": 22,
"end": 25,
"loc": {
"start": {
"line": 4,
"column": 4
},
"end": {
"line": 4,
"column": 7
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 22,
"end": 23,
"loc": {
"start": {
"line": 4,
"column": 4
},
"end": {
"line": 4,
"column": 5
},
"identifierName": "n"
},
"name": "n"
},
"kind": "method",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": []
}
]
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,11 @@
// Copy of modifiers-methods with 'get'
abstract class C {
abstract get a();
static get s() { return 0; }
public abstract get pua();
public static get pus() { return 0; }
public get pu() { return 0; }
protected get po() { return 0; }
private get pi() { return 0; }
}

View File

@@ -0,0 +1,673 @@
{
"type": "File",
"start": 0,
"end": 295,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 11,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 295,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 11,
"column": 1
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 40,
"end": 295,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 11,
"column": 1
}
},
"abstract": true,
"id": {
"type": "Identifier",
"start": 55,
"end": 56,
"loc": {
"start": {
"line": 2,
"column": 15
},
"end": {
"line": 2,
"column": 16
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 57,
"end": 295,
"loc": {
"start": {
"line": 2,
"column": 17
},
"end": {
"line": 11,
"column": 1
}
},
"body": [
{
"type": "TSDeclareMethod",
"start": 63,
"end": 80,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 3,
"column": 21
}
},
"abstract": true,
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 76,
"end": 77,
"loc": {
"start": {
"line": 3,
"column": 17
},
"end": {
"line": 3,
"column": 18
},
"identifierName": "a"
},
"name": "a"
},
"kind": "get",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": []
},
{
"type": "ClassMethod",
"start": 85,
"end": 113,
"loc": {
"start": {
"line": 4,
"column": 4
},
"end": {
"line": 4,
"column": 32
}
},
"static": true,
"computed": false,
"key": {
"type": "Identifier",
"start": 96,
"end": 97,
"loc": {
"start": {
"line": 4,
"column": 15
},
"end": {
"line": 4,
"column": 16
},
"identifierName": "s"
},
"name": "s"
},
"kind": "get",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [],
"body": {
"type": "BlockStatement",
"start": 100,
"end": 113,
"loc": {
"start": {
"line": 4,
"column": 19
},
"end": {
"line": 4,
"column": 32
}
},
"body": [
{
"type": "ReturnStatement",
"start": 102,
"end": 111,
"loc": {
"start": {
"line": 4,
"column": 21
},
"end": {
"line": 4,
"column": 30
}
},
"argument": {
"type": "NumericLiteral",
"start": 109,
"end": 110,
"loc": {
"start": {
"line": 4,
"column": 28
},
"end": {
"line": 4,
"column": 29
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
],
"directives": []
}
},
{
"type": "TSDeclareMethod",
"start": 118,
"end": 144,
"loc": {
"start": {
"line": 5,
"column": 4
},
"end": {
"line": 5,
"column": 30
}
},
"accessibility": "public",
"abstract": true,
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 138,
"end": 141,
"loc": {
"start": {
"line": 5,
"column": 24
},
"end": {
"line": 5,
"column": 27
},
"identifierName": "pua"
},
"name": "pua"
},
"kind": "get",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": []
},
{
"type": "ClassMethod",
"start": 149,
"end": 186,
"loc": {
"start": {
"line": 6,
"column": 4
},
"end": {
"line": 6,
"column": 41
}
},
"accessibility": "public",
"static": true,
"computed": false,
"key": {
"type": "Identifier",
"start": 167,
"end": 170,
"loc": {
"start": {
"line": 6,
"column": 22
},
"end": {
"line": 6,
"column": 25
},
"identifierName": "pus"
},
"name": "pus"
},
"kind": "get",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [],
"body": {
"type": "BlockStatement",
"start": 173,
"end": 186,
"loc": {
"start": {
"line": 6,
"column": 28
},
"end": {
"line": 6,
"column": 41
}
},
"body": [
{
"type": "ReturnStatement",
"start": 175,
"end": 184,
"loc": {
"start": {
"line": 6,
"column": 30
},
"end": {
"line": 6,
"column": 39
}
},
"argument": {
"type": "NumericLiteral",
"start": 182,
"end": 183,
"loc": {
"start": {
"line": 6,
"column": 37
},
"end": {
"line": 6,
"column": 38
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
],
"directives": []
}
},
{
"type": "ClassMethod",
"start": 192,
"end": 221,
"loc": {
"start": {
"line": 8,
"column": 4
},
"end": {
"line": 8,
"column": 33
}
},
"accessibility": "public",
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 203,
"end": 205,
"loc": {
"start": {
"line": 8,
"column": 15
},
"end": {
"line": 8,
"column": 17
},
"identifierName": "pu"
},
"name": "pu"
},
"kind": "get",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [],
"body": {
"type": "BlockStatement",
"start": 208,
"end": 221,
"loc": {
"start": {
"line": 8,
"column": 20
},
"end": {
"line": 8,
"column": 33
}
},
"body": [
{
"type": "ReturnStatement",
"start": 210,
"end": 219,
"loc": {
"start": {
"line": 8,
"column": 22
},
"end": {
"line": 8,
"column": 31
}
},
"argument": {
"type": "NumericLiteral",
"start": 217,
"end": 218,
"loc": {
"start": {
"line": 8,
"column": 29
},
"end": {
"line": 8,
"column": 30
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
],
"directives": []
}
},
{
"type": "ClassMethod",
"start": 226,
"end": 258,
"loc": {
"start": {
"line": 9,
"column": 4
},
"end": {
"line": 9,
"column": 36
}
},
"accessibility": "protected",
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 240,
"end": 242,
"loc": {
"start": {
"line": 9,
"column": 18
},
"end": {
"line": 9,
"column": 20
},
"identifierName": "po"
},
"name": "po"
},
"kind": "get",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [],
"body": {
"type": "BlockStatement",
"start": 245,
"end": 258,
"loc": {
"start": {
"line": 9,
"column": 23
},
"end": {
"line": 9,
"column": 36
}
},
"body": [
{
"type": "ReturnStatement",
"start": 247,
"end": 256,
"loc": {
"start": {
"line": 9,
"column": 25
},
"end": {
"line": 9,
"column": 34
}
},
"argument": {
"type": "NumericLiteral",
"start": 254,
"end": 255,
"loc": {
"start": {
"line": 9,
"column": 32
},
"end": {
"line": 9,
"column": 33
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
],
"directives": []
}
},
{
"type": "ClassMethod",
"start": 263,
"end": 293,
"loc": {
"start": {
"line": 10,
"column": 4
},
"end": {
"line": 10,
"column": 34
}
},
"accessibility": "private",
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 275,
"end": 277,
"loc": {
"start": {
"line": 10,
"column": 16
},
"end": {
"line": 10,
"column": 18
},
"identifierName": "pi"
},
"name": "pi"
},
"kind": "get",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [],
"body": {
"type": "BlockStatement",
"start": 280,
"end": 293,
"loc": {
"start": {
"line": 10,
"column": 21
},
"end": {
"line": 10,
"column": 34
}
},
"body": [
{
"type": "ReturnStatement",
"start": 282,
"end": 291,
"loc": {
"start": {
"line": 10,
"column": 23
},
"end": {
"line": 10,
"column": 32
}
},
"argument": {
"type": "NumericLiteral",
"start": 289,
"end": 290,
"loc": {
"start": {
"line": 10,
"column": 30
},
"end": {
"line": 10,
"column": 31
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
],
"directives": []
}
}
]
},
"leadingComments": [
{
"type": "CommentLine",
"value": " Copy of modifiers-methods with 'get'",
"start": 0,
"end": 39,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 39
}
}
}
]
}
],
"directives": []
},
"comments": [
{
"type": "CommentLine",
"value": " Copy of modifiers-methods with 'get'",
"start": 0,
"end": 39,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 39
}
}
}
]
}

View File

@@ -0,0 +1,11 @@
// Copy of modifiers-methods with 'async'
abstract class C {
abstract async a();
static async s() {}
public abstract async pua();
public static async pus() {}
public async pu() {}
protected async po() {}
private async pi() {}
}

View File

@@ -0,0 +1,493 @@
{
"type": "File",
"start": 0,
"end": 256,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 11,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 256,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 11,
"column": 1
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 42,
"end": 256,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 11,
"column": 1
}
},
"abstract": true,
"id": {
"type": "Identifier",
"start": 57,
"end": 58,
"loc": {
"start": {
"line": 2,
"column": 15
},
"end": {
"line": 2,
"column": 16
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 59,
"end": 256,
"loc": {
"start": {
"line": 2,
"column": 17
},
"end": {
"line": 11,
"column": 1
}
},
"body": [
{
"type": "TSDeclareMethod",
"start": 65,
"end": 84,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 3,
"column": 23
}
},
"abstract": true,
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 80,
"end": 81,
"loc": {
"start": {
"line": 3,
"column": 19
},
"end": {
"line": 3,
"column": 20
},
"identifierName": "a"
},
"name": "a"
},
"kind": "method",
"id": null,
"generator": false,
"expression": false,
"async": true,
"params": []
},
{
"type": "ClassMethod",
"start": 89,
"end": 108,
"loc": {
"start": {
"line": 4,
"column": 4
},
"end": {
"line": 4,
"column": 23
}
},
"static": true,
"computed": false,
"key": {
"type": "Identifier",
"start": 102,
"end": 103,
"loc": {
"start": {
"line": 4,
"column": 17
},
"end": {
"line": 4,
"column": 18
},
"identifierName": "s"
},
"name": "s"
},
"kind": "method",
"id": null,
"generator": false,
"expression": false,
"async": true,
"params": [],
"body": {
"type": "BlockStatement",
"start": 106,
"end": 108,
"loc": {
"start": {
"line": 4,
"column": 21
},
"end": {
"line": 4,
"column": 23
}
},
"body": [],
"directives": []
}
},
{
"type": "TSDeclareMethod",
"start": 113,
"end": 141,
"loc": {
"start": {
"line": 5,
"column": 4
},
"end": {
"line": 5,
"column": 32
}
},
"accessibility": "public",
"abstract": true,
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 135,
"end": 138,
"loc": {
"start": {
"line": 5,
"column": 26
},
"end": {
"line": 5,
"column": 29
},
"identifierName": "pua"
},
"name": "pua"
},
"kind": "method",
"id": null,
"generator": false,
"expression": false,
"async": true,
"params": []
},
{
"type": "ClassMethod",
"start": 146,
"end": 174,
"loc": {
"start": {
"line": 6,
"column": 4
},
"end": {
"line": 6,
"column": 32
}
},
"accessibility": "public",
"static": true,
"computed": false,
"key": {
"type": "Identifier",
"start": 166,
"end": 169,
"loc": {
"start": {
"line": 6,
"column": 24
},
"end": {
"line": 6,
"column": 27
},
"identifierName": "pus"
},
"name": "pus"
},
"kind": "method",
"id": null,
"generator": false,
"expression": false,
"async": true,
"params": [],
"body": {
"type": "BlockStatement",
"start": 172,
"end": 174,
"loc": {
"start": {
"line": 6,
"column": 30
},
"end": {
"line": 6,
"column": 32
}
},
"body": [],
"directives": []
}
},
{
"type": "ClassMethod",
"start": 180,
"end": 200,
"loc": {
"start": {
"line": 8,
"column": 4
},
"end": {
"line": 8,
"column": 24
}
},
"accessibility": "public",
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 193,
"end": 195,
"loc": {
"start": {
"line": 8,
"column": 17
},
"end": {
"line": 8,
"column": 19
},
"identifierName": "pu"
},
"name": "pu"
},
"kind": "method",
"id": null,
"generator": false,
"expression": false,
"async": true,
"params": [],
"body": {
"type": "BlockStatement",
"start": 198,
"end": 200,
"loc": {
"start": {
"line": 8,
"column": 22
},
"end": {
"line": 8,
"column": 24
}
},
"body": [],
"directives": []
}
},
{
"type": "ClassMethod",
"start": 205,
"end": 228,
"loc": {
"start": {
"line": 9,
"column": 4
},
"end": {
"line": 9,
"column": 27
}
},
"accessibility": "protected",
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 221,
"end": 223,
"loc": {
"start": {
"line": 9,
"column": 20
},
"end": {
"line": 9,
"column": 22
},
"identifierName": "po"
},
"name": "po"
},
"kind": "method",
"id": null,
"generator": false,
"expression": false,
"async": true,
"params": [],
"body": {
"type": "BlockStatement",
"start": 226,
"end": 228,
"loc": {
"start": {
"line": 9,
"column": 25
},
"end": {
"line": 9,
"column": 27
}
},
"body": [],
"directives": []
}
},
{
"type": "ClassMethod",
"start": 233,
"end": 254,
"loc": {
"start": {
"line": 10,
"column": 4
},
"end": {
"line": 10,
"column": 25
}
},
"accessibility": "private",
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 247,
"end": 249,
"loc": {
"start": {
"line": 10,
"column": 18
},
"end": {
"line": 10,
"column": 20
},
"identifierName": "pi"
},
"name": "pi"
},
"kind": "method",
"id": null,
"generator": false,
"expression": false,
"async": true,
"params": [],
"body": {
"type": "BlockStatement",
"start": 252,
"end": 254,
"loc": {
"start": {
"line": 10,
"column": 23
},
"end": {
"line": 10,
"column": 25
}
},
"body": [],
"directives": []
}
}
]
},
"leadingComments": [
{
"type": "CommentLine",
"value": " Copy of modifiers-methods with 'async'",
"start": 0,
"end": 41,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 41
}
}
}
]
}
],
"directives": []
},
"comments": [
{
"type": "CommentLine",
"value": " Copy of modifiers-methods with 'async'",
"start": 0,
"end": 41,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 1,
"column": 41
}
}
}
]
}

View File

@@ -0,0 +1,21 @@
abstract class C {
readonly r;
readonly r2?: number;
abstract a;
static s;
public pu;
protected po;
private pi;
readonly abstract ra;
abstract readonly ar;
static readonly sr;
public readonly pur;
public abstract pua;
public static pus;
public readonly abstract pura;
public abstract readonly puar;
public static readonly pusr;
}

View File

@@ -0,0 +1,700 @@
{
"type": "File",
"start": 0,
"end": 396,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 21,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 396,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 21,
"column": 1
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 396,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 21,
"column": 1
}
},
"abstract": true,
"id": {
"type": "Identifier",
"start": 15,
"end": 16,
"loc": {
"start": {
"line": 1,
"column": 15
},
"end": {
"line": 1,
"column": 16
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 17,
"end": 396,
"loc": {
"start": {
"line": 1,
"column": 17
},
"end": {
"line": 21,
"column": 1
}
},
"body": [
{
"type": "ClassProperty",
"start": 23,
"end": 34,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 15
}
},
"readonly": true,
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 32,
"end": 33,
"loc": {
"start": {
"line": 2,
"column": 13
},
"end": {
"line": 2,
"column": 14
},
"identifierName": "r"
},
"name": "r"
},
"value": null
},
{
"type": "ClassProperty",
"start": 39,
"end": 60,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 3,
"column": 25
}
},
"readonly": true,
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 48,
"end": 50,
"loc": {
"start": {
"line": 3,
"column": 13
},
"end": {
"line": 3,
"column": 15
},
"identifierName": "r2"
},
"name": "r2"
},
"optional": true,
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 51,
"end": 59,
"loc": {
"start": {
"line": 3,
"column": 16
},
"end": {
"line": 3,
"column": 24
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 53,
"end": 59,
"loc": {
"start": {
"line": 3,
"column": 18
},
"end": {
"line": 3,
"column": 24
}
}
}
},
"value": null
},
{
"type": "ClassProperty",
"start": 65,
"end": 76,
"loc": {
"start": {
"line": 4,
"column": 4
},
"end": {
"line": 4,
"column": 15
}
},
"abstract": true,
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 74,
"end": 75,
"loc": {
"start": {
"line": 4,
"column": 13
},
"end": {
"line": 4,
"column": 14
},
"identifierName": "a"
},
"name": "a"
},
"value": null
},
{
"type": "ClassProperty",
"start": 81,
"end": 90,
"loc": {
"start": {
"line": 5,
"column": 4
},
"end": {
"line": 5,
"column": 13
}
},
"static": true,
"computed": false,
"key": {
"type": "Identifier",
"start": 88,
"end": 89,
"loc": {
"start": {
"line": 5,
"column": 11
},
"end": {
"line": 5,
"column": 12
},
"identifierName": "s"
},
"name": "s"
},
"value": null
},
{
"type": "ClassProperty",
"start": 96,
"end": 106,
"loc": {
"start": {
"line": 7,
"column": 4
},
"end": {
"line": 7,
"column": 14
}
},
"accessibility": "public",
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 103,
"end": 105,
"loc": {
"start": {
"line": 7,
"column": 11
},
"end": {
"line": 7,
"column": 13
},
"identifierName": "pu"
},
"name": "pu"
},
"value": null
},
{
"type": "ClassProperty",
"start": 111,
"end": 124,
"loc": {
"start": {
"line": 8,
"column": 4
},
"end": {
"line": 8,
"column": 17
}
},
"accessibility": "protected",
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 121,
"end": 123,
"loc": {
"start": {
"line": 8,
"column": 14
},
"end": {
"line": 8,
"column": 16
},
"identifierName": "po"
},
"name": "po"
},
"value": null
},
{
"type": "ClassProperty",
"start": 129,
"end": 140,
"loc": {
"start": {
"line": 9,
"column": 4
},
"end": {
"line": 9,
"column": 15
}
},
"accessibility": "private",
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 137,
"end": 139,
"loc": {
"start": {
"line": 9,
"column": 12
},
"end": {
"line": 9,
"column": 14
},
"identifierName": "pi"
},
"name": "pi"
},
"value": null
},
{
"type": "ClassProperty",
"start": 146,
"end": 167,
"loc": {
"start": {
"line": 11,
"column": 4
},
"end": {
"line": 11,
"column": 25
}
},
"abstract": true,
"readonly": true,
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 164,
"end": 166,
"loc": {
"start": {
"line": 11,
"column": 22
},
"end": {
"line": 11,
"column": 24
},
"identifierName": "ra"
},
"name": "ra"
},
"value": null
},
{
"type": "ClassProperty",
"start": 172,
"end": 193,
"loc": {
"start": {
"line": 12,
"column": 4
},
"end": {
"line": 12,
"column": 25
}
},
"abstract": true,
"readonly": true,
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 190,
"end": 192,
"loc": {
"start": {
"line": 12,
"column": 22
},
"end": {
"line": 12,
"column": 24
},
"identifierName": "ar"
},
"name": "ar"
},
"value": null
},
{
"type": "ClassProperty",
"start": 198,
"end": 217,
"loc": {
"start": {
"line": 13,
"column": 4
},
"end": {
"line": 13,
"column": 23
}
},
"readonly": true,
"static": true,
"computed": false,
"key": {
"type": "Identifier",
"start": 214,
"end": 216,
"loc": {
"start": {
"line": 13,
"column": 20
},
"end": {
"line": 13,
"column": 22
},
"identifierName": "sr"
},
"name": "sr"
},
"value": null
},
{
"type": "ClassProperty",
"start": 223,
"end": 243,
"loc": {
"start": {
"line": 15,
"column": 4
},
"end": {
"line": 15,
"column": 24
}
},
"accessibility": "public",
"readonly": true,
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 239,
"end": 242,
"loc": {
"start": {
"line": 15,
"column": 20
},
"end": {
"line": 15,
"column": 23
},
"identifierName": "pur"
},
"name": "pur"
},
"value": null
},
{
"type": "ClassProperty",
"start": 248,
"end": 268,
"loc": {
"start": {
"line": 16,
"column": 4
},
"end": {
"line": 16,
"column": 24
}
},
"accessibility": "public",
"abstract": true,
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 264,
"end": 267,
"loc": {
"start": {
"line": 16,
"column": 20
},
"end": {
"line": 16,
"column": 23
},
"identifierName": "pua"
},
"name": "pua"
},
"value": null
},
{
"type": "ClassProperty",
"start": 273,
"end": 291,
"loc": {
"start": {
"line": 17,
"column": 4
},
"end": {
"line": 17,
"column": 22
}
},
"accessibility": "public",
"static": true,
"computed": false,
"key": {
"type": "Identifier",
"start": 287,
"end": 290,
"loc": {
"start": {
"line": 17,
"column": 18
},
"end": {
"line": 17,
"column": 21
},
"identifierName": "pus"
},
"name": "pus"
},
"value": null
},
{
"type": "ClassProperty",
"start": 296,
"end": 326,
"loc": {
"start": {
"line": 18,
"column": 4
},
"end": {
"line": 18,
"column": 34
}
},
"accessibility": "public",
"abstract": true,
"readonly": true,
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 321,
"end": 325,
"loc": {
"start": {
"line": 18,
"column": 29
},
"end": {
"line": 18,
"column": 33
},
"identifierName": "pura"
},
"name": "pura"
},
"value": null
},
{
"type": "ClassProperty",
"start": 331,
"end": 361,
"loc": {
"start": {
"line": 19,
"column": 4
},
"end": {
"line": 19,
"column": 34
}
},
"accessibility": "public",
"abstract": true,
"readonly": true,
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 356,
"end": 360,
"loc": {
"start": {
"line": 19,
"column": 29
},
"end": {
"line": 19,
"column": 33
},
"identifierName": "puar"
},
"name": "puar"
},
"value": null
},
{
"type": "ClassProperty",
"start": 366,
"end": 394,
"loc": {
"start": {
"line": 20,
"column": 4
},
"end": {
"line": 20,
"column": 32
}
},
"accessibility": "public",
"readonly": true,
"static": true,
"computed": false,
"key": {
"type": "Identifier",
"start": 389,
"end": 393,
"loc": {
"start": {
"line": 20,
"column": 27
},
"end": {
"line": 20,
"column": 31
},
"identifierName": "pusr"
},
"name": "pusr"
},
"value": null
}
]
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,3 @@
class C {
constructor(public []) {}
}

View File

@@ -0,0 +1,3 @@
{
"throws": "A parameter property may not be declared using a binding pattern. (2:23)"
}

View File

@@ -0,0 +1,3 @@
class C {
constructor(@foo readonly x: number) {}
}

View File

@@ -0,0 +1,239 @@
{
"type": "File",
"start": 0,
"end": 55,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 55,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 1
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 55,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 1
}
},
"id": {
"type": "Identifier",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 8,
"end": 55,
"loc": {
"start": {
"line": 1,
"column": 8
},
"end": {
"line": 3,
"column": 1
}
},
"body": [
{
"type": "ClassMethod",
"start": 14,
"end": 53,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 43
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 14,
"end": 25,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 15
},
"identifierName": "constructor"
},
"name": "constructor"
},
"kind": "constructor",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [
{
"type": "TSParameterProperty",
"start": 40,
"end": 49,
"loc": {
"start": {
"line": 2,
"column": 30
},
"end": {
"line": 2,
"column": 39
}
},
"decorators": [
{
"type": "Decorator",
"start": 26,
"end": 30,
"loc": {
"start": {
"line": 2,
"column": 16
},
"end": {
"line": 2,
"column": 20
}
},
"expression": {
"type": "Identifier",
"start": 27,
"end": 30,
"loc": {
"start": {
"line": 2,
"column": 17
},
"end": {
"line": 2,
"column": 20
},
"identifierName": "foo"
},
"name": "foo"
}
}
],
"readonly": true,
"parameter": {
"type": "Identifier",
"start": 40,
"end": 49,
"loc": {
"start": {
"line": 2,
"column": 30
},
"end": {
"line": 2,
"column": 39
},
"identifierName": "x"
},
"name": "x",
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 41,
"end": 49,
"loc": {
"start": {
"line": 2,
"column": 31
},
"end": {
"line": 2,
"column": 39
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 43,
"end": 49,
"loc": {
"start": {
"line": 2,
"column": 33
},
"end": {
"line": 2,
"column": 39
}
}
}
}
}
}
],
"body": {
"type": "BlockStatement",
"start": 51,
"end": 53,
"loc": {
"start": {
"line": 2,
"column": 41
},
"end": {
"line": 2,
"column": 43
}
},
"body": [],
"directives": []
}
}
]
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,3 @@
{
"plugins": ["typescript", "decorators"]
}

View File

@@ -0,0 +1,11 @@
class C {
constructor(
readonly r,
public pu: number,
protected po?,
private pi?: number,
public readonly pur,
// Also works on AssignmentPattern
readonly x = 0,
public y?: number = 0) {}
}

View File

@@ -0,0 +1,575 @@
{
"type": "File",
"start": 0,
"end": 257,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 11,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 257,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 11,
"column": 1
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 257,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 11,
"column": 1
}
},
"id": {
"type": "Identifier",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 8,
"end": 257,
"loc": {
"start": {
"line": 1,
"column": 8
},
"end": {
"line": 11,
"column": 1
}
},
"body": [
{
"type": "ClassMethod",
"start": 14,
"end": 255,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 10,
"column": 33
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 14,
"end": 25,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 15
},
"identifierName": "constructor"
},
"name": "constructor"
},
"kind": "constructor",
"id": null,
"generator": false,
"expression": false,
"async": false,
"params": [
{
"type": "TSParameterProperty",
"start": 44,
"end": 45,
"loc": {
"start": {
"line": 3,
"column": 17
},
"end": {
"line": 3,
"column": 18
}
},
"readonly": true,
"parameter": {
"type": "Identifier",
"start": 44,
"end": 45,
"loc": {
"start": {
"line": 3,
"column": 17
},
"end": {
"line": 3,
"column": 18
},
"identifierName": "r"
},
"name": "r"
}
},
{
"type": "TSParameterProperty",
"start": 62,
"end": 72,
"loc": {
"start": {
"line": 4,
"column": 15
},
"end": {
"line": 4,
"column": 25
}
},
"accessibility": "public",
"parameter": {
"type": "Identifier",
"start": 62,
"end": 72,
"loc": {
"start": {
"line": 4,
"column": 15
},
"end": {
"line": 4,
"column": 25
},
"identifierName": "pu"
},
"name": "pu",
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 64,
"end": 72,
"loc": {
"start": {
"line": 4,
"column": 17
},
"end": {
"line": 4,
"column": 25
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 66,
"end": 72,
"loc": {
"start": {
"line": 4,
"column": 19
},
"end": {
"line": 4,
"column": 25
}
}
}
}
}
},
{
"type": "TSParameterProperty",
"start": 92,
"end": 95,
"loc": {
"start": {
"line": 5,
"column": 18
},
"end": {
"line": 5,
"column": 21
}
},
"accessibility": "protected",
"parameter": {
"type": "Identifier",
"start": 92,
"end": 95,
"loc": {
"start": {
"line": 5,
"column": 18
},
"end": {
"line": 5,
"column": 21
},
"identifierName": "po"
},
"name": "po",
"optional": true
}
},
{
"type": "TSParameterProperty",
"start": 113,
"end": 124,
"loc": {
"start": {
"line": 6,
"column": 16
},
"end": {
"line": 6,
"column": 27
}
},
"accessibility": "private",
"parameter": {
"type": "Identifier",
"start": 113,
"end": 124,
"loc": {
"start": {
"line": 6,
"column": 16
},
"end": {
"line": 6,
"column": 27
},
"identifierName": "pi"
},
"name": "pi",
"optional": true,
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 116,
"end": 124,
"loc": {
"start": {
"line": 6,
"column": 19
},
"end": {
"line": 6,
"column": 27
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 118,
"end": 124,
"loc": {
"start": {
"line": 6,
"column": 21
},
"end": {
"line": 6,
"column": 27
}
}
}
}
}
},
{
"type": "TSParameterProperty",
"start": 150,
"end": 153,
"loc": {
"start": {
"line": 7,
"column": 24
},
"end": {
"line": 7,
"column": 27
}
},
"accessibility": "public",
"readonly": true,
"parameter": {
"type": "Identifier",
"start": 150,
"end": 153,
"loc": {
"start": {
"line": 7,
"column": 24
},
"end": {
"line": 7,
"column": 27
},
"identifierName": "pur"
},
"name": "pur"
}
},
{
"type": "TSParameterProperty",
"start": 215,
"end": 220,
"loc": {
"start": {
"line": 9,
"column": 17
},
"end": {
"line": 9,
"column": 22
}
},
"readonly": true,
"parameter": {
"type": "AssignmentPattern",
"start": 215,
"end": 220,
"loc": {
"start": {
"line": 9,
"column": 17
},
"end": {
"line": 9,
"column": 22
}
},
"left": {
"type": "Identifier",
"start": 215,
"end": 216,
"loc": {
"start": {
"line": 9,
"column": 17
},
"end": {
"line": 9,
"column": 18
},
"identifierName": "x"
},
"name": "x",
"leadingComments": null
},
"right": {
"type": "NumericLiteral",
"start": 219,
"end": 220,
"loc": {
"start": {
"line": 9,
"column": 21
},
"end": {
"line": 9,
"column": 22
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
},
"leadingComments": null
},
"leadingComments": [
{
"type": "CommentLine",
"value": " Also works on AssignmentPattern",
"start": 163,
"end": 197,
"loc": {
"start": {
"line": 8,
"column": 8
},
"end": {
"line": 8,
"column": 42
}
}
}
]
},
{
"type": "TSParameterProperty",
"start": 237,
"end": 251,
"loc": {
"start": {
"line": 10,
"column": 15
},
"end": {
"line": 10,
"column": 29
}
},
"accessibility": "public",
"parameter": {
"type": "AssignmentPattern",
"start": 237,
"end": 251,
"loc": {
"start": {
"line": 10,
"column": 15
},
"end": {
"line": 10,
"column": 29
}
},
"left": {
"type": "Identifier",
"start": 237,
"end": 247,
"loc": {
"start": {
"line": 10,
"column": 15
},
"end": {
"line": 10,
"column": 25
},
"identifierName": "y"
},
"name": "y",
"optional": true,
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 239,
"end": 247,
"loc": {
"start": {
"line": 10,
"column": 17
},
"end": {
"line": 10,
"column": 25
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 241,
"end": 247,
"loc": {
"start": {
"line": 10,
"column": 19
},
"end": {
"line": 10,
"column": 25
}
}
}
}
},
"right": {
"type": "NumericLiteral",
"start": 250,
"end": 251,
"loc": {
"start": {
"line": 10,
"column": 28
},
"end": {
"line": 10,
"column": 29
}
},
"extra": {
"rawValue": 0,
"raw": "0"
},
"value": 0
}
}
}
],
"body": {
"type": "BlockStatement",
"start": 253,
"end": 255,
"loc": {
"start": {
"line": 10,
"column": 31
},
"end": {
"line": 10,
"column": 33
}
},
"body": [],
"directives": []
}
}
]
}
}
],
"directives": []
},
"comments": [
{
"type": "CommentLine",
"value": " Also works on AssignmentPattern",
"start": 163,
"end": 197,
"loc": {
"start": {
"line": 8,
"column": 8
},
"end": {
"line": 8,
"column": 42
}
}
}
]
}

View File

@@ -0,0 +1,6 @@
class C {
x;
x?;
x: number;
x: number = 1;
}

View File

@@ -0,0 +1,304 @@
{
"type": "File",
"start": 0,
"end": 60,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 6,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 60,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 6,
"column": 1
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 60,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 6,
"column": 1
}
},
"id": {
"type": "Identifier",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 8,
"end": 60,
"loc": {
"start": {
"line": 1,
"column": 8
},
"end": {
"line": 6,
"column": 1
}
},
"body": [
{
"type": "ClassProperty",
"start": 14,
"end": 16,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 6
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 14,
"end": 15,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 5
},
"identifierName": "x"
},
"name": "x"
},
"value": null
},
{
"type": "ClassProperty",
"start": 21,
"end": 24,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 3,
"column": 7
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 21,
"end": 22,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 3,
"column": 5
},
"identifierName": "x"
},
"name": "x"
},
"optional": true,
"value": null
},
{
"type": "ClassProperty",
"start": 29,
"end": 39,
"loc": {
"start": {
"line": 4,
"column": 4
},
"end": {
"line": 4,
"column": 14
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 29,
"end": 30,
"loc": {
"start": {
"line": 4,
"column": 4
},
"end": {
"line": 4,
"column": 5
},
"identifierName": "x"
},
"name": "x"
},
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 30,
"end": 38,
"loc": {
"start": {
"line": 4,
"column": 5
},
"end": {
"line": 4,
"column": 13
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 32,
"end": 38,
"loc": {
"start": {
"line": 4,
"column": 7
},
"end": {
"line": 4,
"column": 13
}
}
}
},
"value": null
},
{
"type": "ClassProperty",
"start": 44,
"end": 58,
"loc": {
"start": {
"line": 5,
"column": 4
},
"end": {
"line": 5,
"column": 18
}
},
"static": false,
"computed": false,
"key": {
"type": "Identifier",
"start": 44,
"end": 45,
"loc": {
"start": {
"line": 5,
"column": 4
},
"end": {
"line": 5,
"column": 5
},
"identifierName": "x"
},
"name": "x"
},
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 45,
"end": 53,
"loc": {
"start": {
"line": 5,
"column": 5
},
"end": {
"line": 5,
"column": 13
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 47,
"end": 53,
"loc": {
"start": {
"line": 5,
"column": 7
},
"end": {
"line": 5,
"column": 13
}
}
}
},
"value": {
"type": "NumericLiteral",
"start": 56,
"end": 57,
"loc": {
"start": {
"line": 5,
"column": 16
},
"end": {
"line": 5,
"column": 17
}
},
"extra": {
"rawValue": 1,
"raw": "1"
},
"value": 1
}
}
]
}
}
],
"directives": []
}
}

View File

@@ -0,0 +1,4 @@
class C {
[Symbol.iterator]: number;
[Symbol.iterator]?: number;
}

View File

@@ -0,0 +1,281 @@
{
"type": "File",
"start": 0,
"end": 74,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 4,
"column": 1
}
},
"program": {
"type": "Program",
"start": 0,
"end": 74,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 4,
"column": 1
}
},
"sourceType": "module",
"body": [
{
"type": "ClassDeclaration",
"start": 0,
"end": 74,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 4,
"column": 1
}
},
"id": {
"type": "Identifier",
"start": 6,
"end": 7,
"loc": {
"start": {
"line": 1,
"column": 6
},
"end": {
"line": 1,
"column": 7
},
"identifierName": "C"
},
"name": "C"
},
"superClass": null,
"body": {
"type": "ClassBody",
"start": 8,
"end": 74,
"loc": {
"start": {
"line": 1,
"column": 8
},
"end": {
"line": 4,
"column": 1
}
},
"body": [
{
"type": "ClassProperty",
"start": 14,
"end": 40,
"loc": {
"start": {
"line": 2,
"column": 4
},
"end": {
"line": 2,
"column": 30
}
},
"static": false,
"computed": true,
"key": {
"type": "MemberExpression",
"start": 15,
"end": 30,
"loc": {
"start": {
"line": 2,
"column": 5
},
"end": {
"line": 2,
"column": 20
}
},
"object": {
"type": "Identifier",
"start": 15,
"end": 21,
"loc": {
"start": {
"line": 2,
"column": 5
},
"end": {
"line": 2,
"column": 11
},
"identifierName": "Symbol"
},
"name": "Symbol"
},
"property": {
"type": "Identifier",
"start": 22,
"end": 30,
"loc": {
"start": {
"line": 2,
"column": 12
},
"end": {
"line": 2,
"column": 20
},
"identifierName": "iterator"
},
"name": "iterator"
},
"computed": false
},
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 31,
"end": 39,
"loc": {
"start": {
"line": 2,
"column": 21
},
"end": {
"line": 2,
"column": 29
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 33,
"end": 39,
"loc": {
"start": {
"line": 2,
"column": 23
},
"end": {
"line": 2,
"column": 29
}
}
}
},
"value": null
},
{
"type": "ClassProperty",
"start": 45,
"end": 72,
"loc": {
"start": {
"line": 3,
"column": 4
},
"end": {
"line": 3,
"column": 31
}
},
"static": false,
"computed": true,
"key": {
"type": "MemberExpression",
"start": 46,
"end": 61,
"loc": {
"start": {
"line": 3,
"column": 5
},
"end": {
"line": 3,
"column": 20
}
},
"object": {
"type": "Identifier",
"start": 46,
"end": 52,
"loc": {
"start": {
"line": 3,
"column": 5
},
"end": {
"line": 3,
"column": 11
},
"identifierName": "Symbol"
},
"name": "Symbol"
},
"property": {
"type": "Identifier",
"start": 53,
"end": 61,
"loc": {
"start": {
"line": 3,
"column": 12
},
"end": {
"line": 3,
"column": 20
},
"identifierName": "iterator"
},
"name": "iterator"
},
"computed": false
},
"optional": true,
"typeAnnotation": {
"type": "TypeAnnotation",
"start": 63,
"end": 71,
"loc": {
"start": {
"line": 3,
"column": 22
},
"end": {
"line": 3,
"column": 30
}
},
"typeAnnotation": {
"type": "TSNumberKeyword",
"start": 65,
"end": 71,
"loc": {
"start": {
"line": 3,
"column": 24
},
"end": {
"line": 3,
"column": 30
}
}
}
},
"value": null
}
]
}
}
],
"directives": []
}
}

Some files were not shown because too many files have changed in this diff Show More