JsModule {
bom_token: missing (optional),
interpreter_token: missing (optional),
directives: JsDirectiveList [],
items: JsModuleItemList [
JsFunctionDeclaration {
async_token: missing (optional),
function_token: FUNCTION_KW@0..9 "function" [] [Whitespace(" ")],
star_token: missing (optional),
id: JsIdentifierBinding {
name_token: IDENT@9..13 "test" [] [],
},
type_parameters: missing (optional),
parameters: JsParameters {
l_paren_token: L_PAREN@13..14 "(" [] [],
items: JsParameterList [
JsFormalParameter {
decorators: JsDecoratorList [],
binding: JsIdentifierBinding {
name_token: IDENT@14..15 "a" [] [],
},
question_mark_token: missing (optional),
type_annotation: TsTypeAnnotation {
colon_token: COLON@15..17 ":" [] [Whitespace(" ")],
ty: TsStringType {
string_token: STRING_KW@17..23 "string" [] [],
},
},
initializer: missing (optional),
},
COMMA@23..25 "," [] [Whitespace(" ")],
JsFormalParameter {
decorators: JsDecoratorList [],
binding: JsIdentifierBinding {
name_token: IDENT@25..26 "b" [] [],
},
question_mark_token: QUESTION@26..27 "?" [] [],
type_annotation: TsTypeAnnotation {
colon_token: COLON@27..29 ":" [] [Whitespace(" ")],
ty: TsNumberType {
number_token: NUMBER_KW@29..35 "number" [] [],
},
},
initializer: missing (optional),
},
COMMA@35..37 "," [] [Whitespace(" ")],
JsFormalParameter {
decorators: JsDecoratorList [],
binding: JsIdentifierBinding {
name_token: IDENT@37..38 "c" [] [],
},
question_mark_token: missing (optional),
type_annotation: missing (optional),
initializer: JsInitializerClause {
eq_token: EQ@38..39 "=" [] [],
expression: JsStringLiteralExpression {
value_token: JS_STRING_LITERAL@39..48 "\"default\"" [] [],
},
},
},
],
r_paren_token: R_PAREN@48..50 ")" [] [Whitespace(" ")],
},
return_type_annotation: missing (optional),
body: JsFunctionBody {
l_curly_token: L_CURLY@50..51 "{" [] [],
directives: JsDirectiveList [],
statements: JsStatementList [],
r_curly_token: R_CURLY@51..52 "}" [] [],
},
},
JsFunctionDeclaration {
async_token: missing (optional),
function_token: FUNCTION_KW@52..62 "function" [Newline("\n")] [Whitespace(" ")],
star_token: missing (optional),
id: JsIdentifierBinding {
name_token: IDENT@62..67 "test2" [] [],
},
type_parameters: TsTypeParameters {
l_angle_token: L_ANGLE@67..68 "<" [] [],
items: TsTypeParameterList [
TsTypeParameter {
modifiers: TsTypeParameterModifierList [],
name: TsTypeParameterName {
ident_token: IDENT@68..69 "A" [] [],
},
constraint: missing (optional),
default: missing (optional),
},
COMMA@69..71 "," [] [Whitespace(" ")],
TsTypeParameter {
modifiers: TsTypeParameterModifierList [],
name: TsTypeParameterName {
ident_token: IDENT@71..73 "B" [] [Whitespace(" ")],
},
constraint: TsTypeConstraintClause {
extends_token: EXTENDS_KW@73..81 "extends" [] [Whitespace(" ")],
ty: TsReferenceType {
name: JsReferenceIdentifier {
value_token: IDENT@81..82 "A" [] [],
},
type_arguments: missing (optional),
},
},
default: missing (optional),
},
COMMA@82..84 "," [] [Whitespace(" ")],
TsTypeParameter {
modifiers: TsTypeParameterModifierList [],
name: TsTypeParameterName {
ident_token: IDENT@84..86 "C" [] [Whitespace(" ")],
},
constraint: missing (optional),
default: TsDefaultTypeClause {
eq_token: EQ@86..88 "=" [] [Whitespace(" ")],
ty: TsReferenceType {
name: JsReferenceIdentifier {
value_token: IDENT@88..89 "A" [] [],
},
type_arguments: missing (optional),
},
},
},
],
r_angle_token: R_ANGLE@89..90 ">" [] [],
},
parameters: JsParameters {
l_paren_token: L_PAREN@90..91 "(" [] [],
items: JsParameterList [
JsFormalParameter {
decorators: JsDecoratorList [],
binding: JsIdentifierBinding {
name_token: IDENT@91..92 "a" [] [],
},
question_mark_token: missing (optional),
type_annotation: TsTypeAnnotation {
colon_token: COLON@92..94 ":" [] [Whitespace(" ")],
ty: TsReferenceType {
name: JsReferenceIdentifier {
value_token: IDENT@94..95 "A" [] [],
},
type_arguments: missing (optional),
},
},
initializer: missing (optional),
},
COMMA@95..97 "," [] [Whitespace(" ")],
JsFormalParameter {
decorators: JsDecoratorList [],
binding: JsIdentifierBinding {
name_token: IDENT@97..98 "b" [] [],
},
question_mark_token: missing (optional),
type_annotation: TsTypeAnnotation {
colon_token: COLON@98..100 ":" [] [Whitespace(" ")],
ty: TsReferenceType {
name: JsReferenceIdentifier {
value_token: IDENT@100..101 "B" [] [],
},
type_arguments: missing (optional),
},
},
initializer: missing (optional),
},
COMMA@101..103 "," [] [Whitespace(" ")],
JsFormalParameter {
decorators: JsDecoratorList [],
binding: JsIdentifierBinding {
name_token: IDENT@103..104 "c" [] [],
},
question_mark_token: missing (optional),
type_annotation: TsTypeAnnotation {
colon_token: COLON@104..106 ":" [] [Whitespace(" ")],
ty: TsReferenceType {
name: JsReferenceIdentifier {
value_token: IDENT@106..107 "C" [] [],
},
type_arguments: missing (optional),
},
},
initializer: missing (optional),
},
],
r_paren_token: R_PAREN@107..109 ")" [] [Whitespace(" ")],
},
return_type_annotation: missing (optional),
body: JsFunctionBody {
l_curly_token: L_CURLY@109..110 "{" [] [],
directives: JsDirectiveList [],
statements: JsStatementList [],
r_curly_token: R_CURLY@110..111 "}" [] [],
},
},
],
eof_token: EOF@111..112 "" [Newline("\n")] [],
}
0: JS_MODULE@0..112
0: (empty)
1: (empty)
2: JS_DIRECTIVE_LIST@0..0
3: JS_MODULE_ITEM_LIST@0..111
0: JS_FUNCTION_DECLARATION@0..52
0: (empty)
1: FUNCTION_KW@0..9 "function" [] [Whitespace(" ")]
2: (empty)
3: JS_IDENTIFIER_BINDING@9..13
0: IDENT@9..13 "test" [] []
4: (empty)
5: JS_PARAMETERS@13..50
0: L_PAREN@13..14 "(" [] []
1: JS_PARAMETER_LIST@14..48
0: JS_FORMAL_PARAMETER@14..23
0: JS_DECORATOR_LIST@14..14
1: JS_IDENTIFIER_BINDING@14..15
0: IDENT@14..15 "a" [] []
2: (empty)
3: TS_TYPE_ANNOTATION@15..23
0: COLON@15..17 ":" [] [Whitespace(" ")]
1: TS_STRING_TYPE@17..23
0: STRING_KW@17..23 "string" [] []
4: (empty)
1: COMMA@23..25 "," [] [Whitespace(" ")]
2: JS_FORMAL_PARAMETER@25..35
0: JS_DECORATOR_LIST@25..25
1: JS_IDENTIFIER_BINDING@25..26
0: IDENT@25..26 "b" [] []
2: QUESTION@26..27 "?" [] []
3: TS_TYPE_ANNOTATION@27..35
0: COLON@27..29 ":" [] [Whitespace(" ")]
1: TS_NUMBER_TYPE@29..35
0: NUMBER_KW@29..35 "number" [] []
4: (empty)
3: COMMA@35..37 "," [] [Whitespace(" ")]
4: JS_FORMAL_PARAMETER@37..48
0: JS_DECORATOR_LIST@37..37
1: JS_IDENTIFIER_BINDING@37..38
0: IDENT@37..38 "c" [] []
2: (empty)
3: (empty)
4: JS_INITIALIZER_CLAUSE@38..48
0: EQ@38..39 "=" [] []
1: JS_STRING_LITERAL_EXPRESSION@39..48
0: JS_STRING_LITERAL@39..48 "\"default\"" [] []
2: R_PAREN@48..50 ")" [] [Whitespace(" ")]
6: (empty)
7: JS_FUNCTION_BODY@50..52
0: L_CURLY@50..51 "{" [] []
1: JS_DIRECTIVE_LIST@51..51
2: JS_STATEMENT_LIST@51..51
3: R_CURLY@51..52 "}" [] []
1: JS_FUNCTION_DECLARATION@52..111
0: (empty)
1: FUNCTION_KW@52..62 "function" [Newline("\n")] [Whitespace(" ")]
2: (empty)
3: JS_IDENTIFIER_BINDING@62..67
0: IDENT@62..67 "test2" [] []
4: TS_TYPE_PARAMETERS@67..90
0: L_ANGLE@67..68 "<" [] []
1: TS_TYPE_PARAMETER_LIST@68..89
0: TS_TYPE_PARAMETER@68..69
0: TS_TYPE_PARAMETER_MODIFIER_LIST@68..68
1: TS_TYPE_PARAMETER_NAME@68..69
0: IDENT@68..69 "A" [] []
2: (empty)
3: (empty)
1: COMMA@69..71 "," [] [Whitespace(" ")]
2: TS_TYPE_PARAMETER@71..82
0: TS_TYPE_PARAMETER_MODIFIER_LIST@71..71
1: TS_TYPE_PARAMETER_NAME@71..73
0: IDENT@71..73 "B" [] [Whitespace(" ")]
2: TS_TYPE_CONSTRAINT_CLAUSE@73..82
0: EXTENDS_KW@73..81 "extends" [] [Whitespace(" ")]
1: TS_REFERENCE_TYPE@81..82
0: JS_REFERENCE_IDENTIFIER@81..82
0: IDENT@81..82 "A" [] []
1: (empty)
3: (empty)
3: COMMA@82..84 "," [] [Whitespace(" ")]
4: TS_TYPE_PARAMETER@84..89
0: TS_TYPE_PARAMETER_MODIFIER_LIST@84..84
1: TS_TYPE_PARAMETER_NAME@84..86
0: IDENT@84..86 "C" [] [Whitespace(" ")]
2: (empty)
3: TS_DEFAULT_TYPE_CLAUSE@86..89
0: EQ@86..88 "=" [] [Whitespace(" ")]
1: TS_REFERENCE_TYPE@88..89
0: JS_REFERENCE_IDENTIFIER@88..89
0: IDENT@88..89 "A" [] []
1: (empty)
2: R_ANGLE@89..90 ">" [] []
5: JS_PARAMETERS@90..109
0: L_PAREN@90..91 "(" [] []
1: JS_PARAMETER_LIST@91..107
0: JS_FORMAL_PARAMETER@91..95
0: JS_DECORATOR_LIST@91..91
1: JS_IDENTIFIER_BINDING@91..92
0: IDENT@91..92 "a" [] []
2: (empty)
3: TS_TYPE_ANNOTATION@92..95
0: COLON@92..94 ":" [] [Whitespace(" ")]
1: TS_REFERENCE_TYPE@94..95
0: JS_REFERENCE_IDENTIFIER@94..95
0: IDENT@94..95 "A" [] []
1: (empty)
4: (empty)
1: COMMA@95..97 "," [] [Whitespace(" ")]
2: JS_FORMAL_PARAMETER@97..101
0: JS_DECORATOR_LIST@97..97
1: JS_IDENTIFIER_BINDING@97..98
0: IDENT@97..98 "b" [] []
2: (empty)
3: TS_TYPE_ANNOTATION@98..101
0: COLON@98..100 ":" [] [Whitespace(" ")]
1: TS_REFERENCE_TYPE@100..101
0: JS_REFERENCE_IDENTIFIER@100..101
0: IDENT@100..101 "B" [] []
1: (empty)
4: (empty)
3: COMMA@101..103 "," [] [Whitespace(" ")]
4: JS_FORMAL_PARAMETER@103..107
0: JS_DECORATOR_LIST@103..103
1: JS_IDENTIFIER_BINDING@103..104
0: IDENT@103..104 "c" [] []
2: (empty)
3: TS_TYPE_ANNOTATION@104..107
0: COLON@104..106 ":" [] [Whitespace(" ")]
1: TS_REFERENCE_TYPE@106..107
0: JS_REFERENCE_IDENTIFIER@106..107
0: IDENT@106..107 "C" [] []
1: (empty)
4: (empty)
2: R_PAREN@107..109 ")" [] [Whitespace(" ")]
6: (empty)
7: JS_FUNCTION_BODY@109..111
0: L_CURLY@109..110 "{" [] []
1: JS_DIRECTIVE_LIST@110..110
2: JS_STATEMENT_LIST@110..110
3: R_CURLY@110..111 "}" [] []
4: EOF@111..112 "" [Newline("\n")] []