JsModule {
bom_token: missing (optional),
interpreter_token: missing (optional),
directives: JsDirectiveList [],
items: JsModuleItemList [
TsInterfaceDeclaration {
interface_token: INTERFACE_KW@0..10 "interface" [] [Whitespace(" ")],
id: TsIdentifierBinding {
name_token: IDENT@10..12 "A" [] [Whitespace(" ")],
},
type_parameters: missing (optional),
extends_clause: missing (optional),
l_curly_token: L_CURLY@12..13 "{" [] [],
members: TsTypeMemberList [],
r_curly_token: R_CURLY@13..14 "}" [] [],
},
TsInterfaceDeclaration {
interface_token: INTERFACE_KW@14..25 "interface" [Newline("\n")] [Whitespace(" ")],
id: TsIdentifierBinding {
name_token: IDENT@25..27 "B" [] [Whitespace(" ")],
},
type_parameters: missing (optional),
extends_clause: TsExtendsClause {
extends_token: EXTENDS_KW@27..35 "extends" [] [Whitespace(" ")],
types: TsTypeList [
TsNameWithTypeArguments {
name: JsReferenceIdentifier {
value_token: IDENT@35..36 "A" [] [],
},
type_arguments: missing (optional),
},
COMMA@36..38 "," [] [Whitespace(" ")],
missing element,
],
},
l_curly_token: L_CURLY@38..39 "{" [] [],
members: TsTypeMemberList [],
r_curly_token: R_CURLY@39..40 "}" [] [],
},
],
eof_token: EOF@40..41 "" [Newline("\n")] [],
}
0: JS_MODULE@0..41
0: (empty)
1: (empty)
2: JS_DIRECTIVE_LIST@0..0
3: JS_MODULE_ITEM_LIST@0..40
0: TS_INTERFACE_DECLARATION@0..14
0: INTERFACE_KW@0..10 "interface" [] [Whitespace(" ")]
1: TS_IDENTIFIER_BINDING@10..12
0: IDENT@10..12 "A" [] [Whitespace(" ")]
2: (empty)
3: (empty)
4: L_CURLY@12..13 "{" [] []
5: TS_TYPE_MEMBER_LIST@13..13
6: R_CURLY@13..14 "}" [] []
1: TS_INTERFACE_DECLARATION@14..40
0: INTERFACE_KW@14..25 "interface" [Newline("\n")] [Whitespace(" ")]
1: TS_IDENTIFIER_BINDING@25..27
0: IDENT@25..27 "B" [] [Whitespace(" ")]
2: (empty)
3: TS_EXTENDS_CLAUSE@27..38
0: EXTENDS_KW@27..35 "extends" [] [Whitespace(" ")]
1: TS_TYPE_LIST@35..38
0: TS_NAME_WITH_TYPE_ARGUMENTS@35..36
0: JS_REFERENCE_IDENTIFIER@35..36
0: IDENT@35..36 "A" [] []
1: (empty)
1: COMMA@36..38 "," [] [Whitespace(" ")]
2: (empty)
4: L_CURLY@38..39 "{" [] []
5: TS_TYPE_MEMBER_LIST@39..39
6: R_CURLY@39..40 "}" [] []
4: EOF@40..41 "" [Newline("\n")] []
--
ts_extends_trailing_comma.ts:2:22 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Trailing comma not allowed.
1 │ interface A {}
> 2 │ interface B extends A, {}
│ ^
3 │
--
interface A {}
interface B extends A, {}