Skip to content
This repository was archived by the owner on Jan 14, 2019. It is now read-only.

Commit af73af2

Browse files
armano2JamesHenry
authored andcommitted
fix: parsing comments in jsx (#82)
1 parent 15b2021 commit af73af2

11 files changed

+5224
-778
lines changed

src/convert-comments.ts

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,12 @@ export function convertComments(
107107
* Create a TypeScript Scanner, with skipTrivia set to false so that
108108
* we can parse the comments
109109
*/
110-
const triviaScanner = ts.createScanner(ast.languageVersion, false, 0, code);
110+
const triviaScanner = ts.createScanner(
111+
ast.languageVersion,
112+
false,
113+
ast.languageVariant,
114+
code
115+
);
111116

112117
let kind = triviaScanner.scan();
113118
while (kind !== ts.SyntaxKind.EndOfFileToken) {
@@ -123,8 +128,21 @@ export function convertComments(
123128
comments.push(comment);
124129
break;
125130
}
131+
case ts.SyntaxKind.GreaterThanToken:
132+
container = nodeUtils.getNodeContainer(ast, start, end);
133+
if (
134+
container &&
135+
container.parent &&
136+
container.parent.kind === ts.SyntaxKind.JsxOpeningElement &&
137+
container.parent.parent &&
138+
container.parent.parent.kind === ts.SyntaxKind.JsxElement
139+
) {
140+
kind = triviaScanner.reScanJsxToken();
141+
continue;
142+
}
143+
break;
126144
case ts.SyntaxKind.CloseBraceToken:
127-
container = nodeUtils.getNodeContainer(ast, start, end) as ts.Node;
145+
container = nodeUtils.getNodeContainer(ast, start, end);
128146

129147
if (
130148
container.kind === ts.SyntaxKind.TemplateMiddle ||
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const pure = () => {
2+
return (
3+
<Foo></Foo> // Foo
4+
);
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const pure = () => {
2+
return (
3+
<Foo /> // Foo
4+
);
5+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
const pure = () => {
2+
return (
3+
<Foo>
4+
/**
5+
* test
6+
*/
7+
</Foo>
8+
);
9+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
const link = (<a href="http://example.com">http://example.com</a>);
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
if (1 >/* Test */2) {
2+
test( 2 >> 3);
3+
const foo = <test>//</test>
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
if (1 </* Test */2) {
2+
test( 2 >> 3);
3+
const foo = <test>//</test>
4+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
const foo = <Foo> // test
2+
bar;

0 commit comments

Comments
 (0)