File tree Expand file tree Collapse file tree 7 files changed +668
-1
lines changed
tests/jsx/basic/issue-10698
swc/tests/fixture/issues-10xxx/10698 Expand file tree Collapse file tree 7 files changed +668
-1
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+ swc_ecma_parser : patch
3
+ swc_core : patch
4
+ ---
5
+
6
+ fix(es/parser): Support keywords as JSX member expression properties
Original file line number Diff line number Diff line change
1
+ {
2
+ "jsc" : {
3
+ "parser" : {
4
+ "syntax" : " ecmascript" ,
5
+ "jsx" : true
6
+ },
7
+ "transform" : {
8
+ "react" : {
9
+ "runtime" : " automatic" ,
10
+ "throwIfNamespace" : false
11
+ }
12
+ }
13
+ }
14
+ }
Original file line number Diff line number Diff line change
1
+ const render = ( ) => {
2
+ return < widget . component . type /> ;
3
+ } ;
4
+
5
+ const foo = ( ) => {
6
+ return (
7
+ < widget . string >
8
+ < Foo . interface />
9
+ </ widget . string >
10
+ ) ;
11
+ } ;
12
+
13
+ const bar = ( ) => {
14
+ return < widget :number > </ widget :number > ;
15
+ } ;
Original file line number Diff line number Diff line change
1
+ var _require = require ( "react/jsx-runtime" ) , _jsx = _require . jsx ;
2
+ var render = function ( ) {
3
+ return /*#__PURE__*/ _jsx ( widget . component . type , { } ) ;
4
+ } ;
5
+ var foo = function ( ) {
6
+ return /*#__PURE__*/ _jsx ( widget . string , {
7
+ children : /*#__PURE__*/ _jsx ( Foo . interface , { } )
8
+ } ) ;
9
+ } ;
10
+ var bar = function ( ) {
11
+ return /*#__PURE__*/ _jsx ( "widget:number" , { } ) ;
12
+ } ;
Original file line number Diff line number Diff line change @@ -8,6 +8,7 @@ use swc_ecma_lexer::{
8
8
buffer:: Buffer ,
9
9
expr:: { parse_assignment_expr, parse_str_lit} ,
10
10
get_qualified_jsx_name,
11
+ ident:: parse_ident_name,
11
12
jsx:: {
12
13
jsx_expr_container_to_jsx_attr_value, parse_jsx_expr_container,
13
14
parse_jsx_spread_child,
@@ -84,7 +85,7 @@ impl<I: Tokens> Parser<I> {
84
85
} ;
85
86
while self . input_mut ( ) . eat ( & Token :: Dot ) {
86
87
let _ = self . input_mut ( ) . cur ( ) ;
87
- let prop: IdentName = self . parse_jsx_ident ( ) ? . into ( ) ;
88
+ let prop: IdentName = parse_ident_name ( self ) ? ;
88
89
let new_node = JSXElementName :: JSXMemberExpr ( JSXMemberExpr {
89
90
span : self . span ( start) ,
90
91
obj : match node {
Original file line number Diff line number Diff line change
1
+ < widget . component . type /> ;
2
+
3
+ < widget . string >
4
+ < Foo . interface />
5
+ </ widget . string > ;
6
+
7
+ < widget :number > </ widget :number > ;
8
+
9
+ < a-b . type /> ;
10
+ < a-type . c /> ;
11
+ < a-type . type /> ;
12
+ < type-type . type /> ;
13
+ < type-b . type /> ;
14
+ < type-type . c /> ;
You can’t perform that action at this time.
0 commit comments