Skip to content

Commit c452606

Browse files
committed
Merge pull request microsoft#5007 from RyanCavanaugh/fix4514
Allow /* comments between < and JSX element name
2 parents 784fe58 + e313e2e commit c452606

5 files changed

Lines changed: 59 additions & 1 deletion

File tree

src/compiler/scanner.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1361,7 +1361,9 @@ namespace ts {
13611361
if (text.charCodeAt(pos + 1) === CharacterCodes.equals) {
13621362
return pos += 2, token = SyntaxKind.LessThanEqualsToken;
13631363
}
1364-
if (text.charCodeAt(pos + 1) === CharacterCodes.slash && languageVariant === LanguageVariant.JSX) {
1364+
if (languageVariant === LanguageVariant.JSX &&
1365+
text.charCodeAt(pos + 1) === CharacterCodes.slash &&
1366+
text.charCodeAt(pos + 2) !== CharacterCodes.asterisk) {
13651367
return pos += 2, token = SyntaxKind.LessThanSlashToken;
13661368
}
13671369
return pos++, token = SyntaxKind.LessThanToken;
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//// [tsxParseTests2.tsx]
2+
declare module JSX {
3+
interface Element { }
4+
interface IntrinsicElements { div; span; }
5+
}
6+
7+
var x = </**/div></div>;
8+
9+
10+
//// [tsxParseTests2.jsx]
11+
var x = <div></div>;
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
=== tests/cases/conformance/jsx/tsxParseTests2.tsx ===
2+
declare module JSX {
3+
>JSX : Symbol(JSX, Decl(tsxParseTests2.tsx, 0, 0))
4+
5+
interface Element { }
6+
>Element : Symbol(Element, Decl(tsxParseTests2.tsx, 0, 20))
7+
8+
interface IntrinsicElements { div; span; }
9+
>IntrinsicElements : Symbol(IntrinsicElements, Decl(tsxParseTests2.tsx, 1, 22))
10+
>div : Symbol(div, Decl(tsxParseTests2.tsx, 2, 30))
11+
>span : Symbol(span, Decl(tsxParseTests2.tsx, 2, 35))
12+
}
13+
14+
var x = </**/div></div>;
15+
>x : Symbol(x, Decl(tsxParseTests2.tsx, 5, 3))
16+
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxParseTests2.tsx, 2, 30))
17+
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxParseTests2.tsx, 2, 30))
18+
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
=== tests/cases/conformance/jsx/tsxParseTests2.tsx ===
2+
declare module JSX {
3+
>JSX : any
4+
5+
interface Element { }
6+
>Element : Element
7+
8+
interface IntrinsicElements { div; span; }
9+
>IntrinsicElements : IntrinsicElements
10+
>div : any
11+
>span : any
12+
}
13+
14+
var x = </**/div></div>;
15+
>x : JSX.Element
16+
></**/div></div> : JSX.Element
17+
>div : any
18+
>div : any
19+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//@filename: file.tsx
2+
//@jsx: preserve
3+
declare module JSX {
4+
interface Element { }
5+
interface IntrinsicElements { div; span; }
6+
}
7+
8+
var x = </**/div></div>;

0 commit comments

Comments
 (0)