This repository was archived by the owner on Mar 8, 2020. It is now read-only.
This repository was archived by the owner on Mar 8, 2020. It is now read-only.
UASTv2 has no tokens for JSX Nodes #58
Closed
Description
JSX is a syntax extension to JavaScript. It can be converted to a proper JS with babel tool.
The bug I found is that UASTv1 provides a lot of tokens while UASTv2 don't
Here is the data to reproduce:
The JSX code
class TestIdTestApp extends React.Component {
render() {
return (
<View>
<Text testID="Text">text</Text>
</View>
);
}
}
UASTv1
Start Position Token Internal Role Roles Tree
(0, 1, 1) |''| File FILE
(0, 1, 1) |''| Program ┣ MODULE
(0, 1, 1) |''| ClassDeclaration ┃ ┣ DECLARATION, TYPE, STATEMENT
(6, 1, 7) |'TestIdTestApp'| Identifier ┃ ┃ ┣ EXPRESSION, IDENTIFIER, TYPE, NAME
(28, 1, 29) |''| MemberExpression ┃ ┃ ┣ QUALIFIED, EXPRESSION, IDENTIFIER, TYPE, BASE
(28, 1, 29) |'React'| Identifier ┃ ┃ ┃ ┣ EXPRESSION, IDENTIFIER
(34, 1, 35) |'Component'| Identifier ┃ ┃ ┃ ┗ EXPRESSION, IDENTIFIER
(44, 1, 45) |''| ClassBody ┃ ┃ ┣ TYPE, BODY
(48, 2, 3) |''| ClassMethod ┃ ┃ ┃ ┣ DECLARATION, FUNCTION, STATEMENT
(48, 2, 3) |'render'| Identifier ┃ ┃ ┃ ┃ ┣ EXPRESSION, IDENTIFIER, KEY, NAME
(57, 2, 12) |''| BlockStatement ┃ ┃ ┃ ┃ ┣ FUNCTION, BODY, STATEMENT, BLOCK, SCOPE, VALUE
(63, 3, 5) |''| ReturnStatement ┃ ┃ ┃ ┃ ┃ ┣ STATEMENT, RETURN
(78, 4, 7) |''| JSXElement ┃ ┃ ┃ ┃ ┃ ┃ ┣ UNANNOTATED
(78, 4, 7) |''| JSXOpeningElement ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ UNANNOTATED
(79, 4, 8) |'View'| JSXIdentifier ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ UNANNOTATED
(84, 4, 13) |'\n '| JSXText ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ UNANNOTATED
(93, 5, 9) |''| JSXElement ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ UNANNOTATED
(93, 5, 9) |''| JSXOpeningElement ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ UNANNOTATED
(94, 5, 10) |'Text'| JSXIdentifier ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ UNANNOTATED
(99, 5, 15) |''| JSXAttribute ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ UNANNOTATED
(99, 5, 15) |'testID'| JSXIdentifier ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ UNANNOTATED
(106, 5, 22) |'Text'| StringLiteral ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ ┗ EXPRESSION, LITERAL, STRING
(113, 5, 29) |'text'| JSXText ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ UNANNOTATED
(117, 5, 33) |''| JSXClosingElement ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ UNANNOTATED
(119, 5, 35) |'Text'| JSXIdentifier ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ ┗ UNANNOTATED
(124, 5, 40) |'\n '| JSXText ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ UNANNOTATED
(131, 6, 7) |''| JSXClosingElement ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ UNANNOTATED
(133, 6, 9) |'View'| JSXIdentifier ┗ ┗ ┗ ┗ ┗ ┗ ┗ ┗ ┗ UNANNOTATED
UASTv2
(0, 1, 1) |''| File FILE
(0, 1, 1) |''| Program ┣ MODULE
(0, 1, 1) |''| ClassDeclaration ┃ ┣ DECLARATION, TYPE, STATEMENT
(6, 1, 7) |'TestIdTestApp'| Identifier ┃ ┃ ┣ EXPRESSION, IDENTIFIER, TYPE, NAME
(28, 1, 29) |''| MemberExpression ┃ ┃ ┣ QUALIFIED, EXPRESSION, IDENTIFIER, TYPE, BASE
(28, 1, 29) |'React'| Identifier ┃ ┃ ┃ ┣ EXPRESSION, IDENTIFIER
(34, 1, 35) |'Component'| Identifier ┃ ┃ ┃ ┗ EXPRESSION, IDENTIFIER
(44, 1, 45) |''| ClassBody ┃ ┃ ┣ TYPE, BODY
(48, 2, 3) |''| ClassMethod ┃ ┃ ┃ ┣ DECLARATION, FUNCTION, STATEMENT
(48, 2, 3) |'render'| Identifier ┃ ┃ ┃ ┃ ┣ EXPRESSION, IDENTIFIER, KEY, NAME
(57, 2, 12) |''| BlockStatement ┃ ┃ ┃ ┃ ┣ STATEMENT, BLOCK, SCOPE, FUNCTION, BODY, VALUE
(63, 3, 5) |''| ReturnStatement ┃ ┃ ┃ ┃ ┃ ┣ STATEMENT, RETURN
(78, 4, 7) |''| JSXElement ┃ ┃ ┃ ┃ ┃ ┃ ┣ INCOMPLETE
(78, 4, 7) |''| JSXOpeningElement ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ BLOCK, INCOMPLETE
(79, 4, 8) |''| JSXIdentifier ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ IDENTIFIER, INCOMPLETE
(84, 4, 13) |''| JSXText ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ UNANNOTATED
(93, 5, 9) |''| JSXElement ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ INCOMPLETE
(93, 5, 9) |''| JSXOpeningElement ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ BLOCK, INCOMPLETE
(94, 5, 10) |''| JSXIdentifier ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ IDENTIFIER, INCOMPLETE
(99, 5, 15) |''| JSXAttribute ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ INCOMPLETE
(99, 5, 15) |''| JSXIdentifier ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ IDENTIFIER, INCOMPLETE
(106, 5, 22) |'"Text"'| StringLiteral ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ ┗ EXPRESSION, LITERAL, STRING
(113, 5, 29) |''| JSXText ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ UNANNOTATED
(117, 5, 33) |''| JSXClosingElement ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ UNANNOTATED
(119, 5, 35) |''| JSXIdentifier ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ ┗ IDENTIFIER, INCOMPLETE
(124, 5, 40) |''| JSXText ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ UNANNOTATED
(131, 6, 7) |''| JSXClosingElement ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ UNANNOTATED
(133, 6, 9) |''| JSXIdentifier ┗ ┗ ┗ ┗ ┗ ┗ ┗ ┗ ┗ IDENTIFIER, INCOMPLETE
Should be easy to fix because all positional information is saved.
drivers are v1.2.0 and v.2.6.0