Skip to content

Commit

Permalink
fix(jsx): JSXText node should have raw
Browse files Browse the repository at this point in the history
closes #129
  • Loading branch information
3cp committed Oct 27, 2020
1 parent bbd8b8a commit 5ea7bda
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 34 deletions.
3 changes: 2 additions & 1 deletion src/lexer/jsx.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ export function scanJSXString(parser: ParserState, context: Context): Token {
*
* @param parser The parser object
*/
export function scanJSXToken(parser: ParserState): Token {
export function scanJSXToken(parser: ParserState, context: Context): Token {
parser.startPos = parser.tokenPos = parser.index;
parser.startColumn = parser.colPos = parser.column;
parser.startLine = parser.linePos = parser.line;
Expand Down Expand Up @@ -97,6 +97,7 @@ export function scanJSXToken(parser: ParserState): Token {
}

parser.tokenValue = parser.source.slice(parser.tokenPos, parser.index);
if (context & Context.OptionsRaw) parser.tokenRaw = parser.tokenValue;
parser.token = Token.JSXText;
}
}
Expand Down
35 changes: 24 additions & 11 deletions src/parser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8725,7 +8725,7 @@ export function parseOpeningFragment(
line: number,
column: number
): ESTree.JSXOpeningFragment {
scanJSXToken(parser);
scanJSXToken(parser, context);
return finishNode(parser, context, start, line, column, {
type: 'JSXOpeningFragment'
});
Expand Down Expand Up @@ -8754,7 +8754,7 @@ function parseJSXClosingElement(
if (inJSXChild) {
consume(parser, context, Token.GreaterThan);
} else {
parser.token = scanJSXToken(parser);
parser.token = scanJSXToken(parser, context);
}

return finishNode(parser, context, start, line, column, {
Expand Down Expand Up @@ -8806,7 +8806,7 @@ export function parseJSXChildren(parser: ParserState, context: Context): ESTree.
parser.index = parser.tokenPos = parser.startPos;
parser.column = parser.colPos = parser.startColumn;
parser.line = parser.linePos = parser.startLine;
scanJSXToken(parser);
scanJSXToken(parser, context);
children.push(parseJSXChild(parser, context, parser.tokenPos, parser.linePos, parser.colPos));
}
return children;
Expand Down Expand Up @@ -8846,11 +8846,24 @@ export function parseJSXText(
line: number,
column: number
): ESTree.JSXText {
scanJSXToken(parser);
return finishNode(parser, context, start, line, column, {
type: 'JSXText',
value: parser.tokenValue as string
});
scanJSXToken(parser, context);
return finishNode(
parser,
context,
start,
line,
column,
context & Context.OptionsRaw
? {
type: 'JSXText',
value: parser.tokenValue as string,
raw: parser.tokenRaw
}
: {
type: 'JSXText',
value: parser.tokenValue as string
}
);
}

/**
Expand Down Expand Up @@ -8879,13 +8892,13 @@ function parseJSXOpeningFragmentOrSelfCloseElement(
const selfClosing = parser.token === Token.Divide;

if (parser.token === Token.GreaterThan) {
scanJSXToken(parser);
scanJSXToken(parser, context);
} else {
consume(parser, context, Token.Divide);
if (inJSXChild) {
consume(parser, context, Token.GreaterThan);
} else {
scanJSXToken(parser);
scanJSXToken(parser, context);
}
}

Expand Down Expand Up @@ -9113,7 +9126,7 @@ function parseJSXExpressionContainer(
if (inJSXChild) {
consume(parser, context, Token.RightBrace);
} else {
scanJSXToken(parser);
scanJSXToken(parser, context);
}

return finishNode(parser, context, start, line, column, {
Expand Down
64 changes: 42 additions & 22 deletions test/parser/miscellaneous/jsx.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1746,7 +1746,7 @@ describe('Miscellaneous - JSX', () => {
}
],
[
`<div id={aa} class="className" ></div>`,
`<div id={aa} class="className" > t </div>`,
Context.OptionsJSX | Context.OptionsRanges | Context.OptionsLoc | Context.OptionsRaw,
{
type: 'Program',
Expand All @@ -1756,7 +1756,26 @@ describe('Miscellaneous - JSX', () => {
type: 'ExpressionStatement',
expression: {
type: 'JSXElement',
children: [],
children: [
{
type: 'JSXText',
value: ' t ',
raw: ' t ',
start: 32,
end: 35,
range: [32, 35],
loc: {
start: {
line: 1,
column: 32
},
end: {
line: 1,
column: 35
}
}
}
],
openingElement: {
type: 'JSXOpeningElement',
name: {
Expand Down Expand Up @@ -1915,74 +1934,74 @@ describe('Miscellaneous - JSX', () => {
name: {
type: 'JSXIdentifier',
name: 'div',
start: 34,
end: 37,
range: [34, 37],
start: 37,
end: 40,
range: [37, 40],
loc: {
start: {
line: 1,
column: 34
column: 37
},
end: {
line: 1,
column: 37
column: 40
}
}
},
start: 32,
end: 38,
range: [32, 38],
start: 35,
end: 41,
range: [35, 41],
loc: {
start: {
line: 1,
column: 32
column: 35
},
end: {
line: 1,
column: 38
column: 41
}
}
},
start: 0,
end: 38,
range: [0, 38],
end: 41,
range: [0, 41],
loc: {
start: {
line: 1,
column: 0
},
end: {
line: 1,
column: 38
column: 41
}
}
},
start: 0,
end: 38,
range: [0, 38],
end: 41,
range: [0, 41],
loc: {
start: {
line: 1,
column: 0
},
end: {
line: 1,
column: 38
column: 41
}
}
}
],
start: 0,
end: 38,
range: [0, 38],
end: 41,
range: [0, 41],
loc: {
start: {
line: 1,
column: 0
},
end: {
line: 1,
column: 38
column: 41
}
}
}
Expand Down Expand Up @@ -10249,7 +10268,8 @@ describe('Miscellaneous - JSX', () => {
start: 5,
end: 13,
range: [5, 13],
value: ' foo:bar'
value: ' foo:bar',
raw: ' foo:bar'
}
]
}
Expand Down

0 comments on commit 5ea7bda

Please sign in to comment.