Merge pull request #5007 from RyanCavanaugh/fix4514

Allow /* comments between < and JSX element name
This commit is contained in:
Ryan Cavanaugh 2015-09-29 11:55:29 -07:00
commit c452606cc1
5 changed files with 59 additions and 1 deletions

View file

@ -1361,7 +1361,9 @@ namespace ts {
if (text.charCodeAt(pos + 1) === CharacterCodes.equals) {
return pos += 2, token = SyntaxKind.LessThanEqualsToken;
}
if (text.charCodeAt(pos + 1) === CharacterCodes.slash && languageVariant === LanguageVariant.JSX) {
if (languageVariant === LanguageVariant.JSX &&
text.charCodeAt(pos + 1) === CharacterCodes.slash &&
text.charCodeAt(pos + 2) !== CharacterCodes.asterisk) {
return pos += 2, token = SyntaxKind.LessThanSlashToken;
}
return pos++, token = SyntaxKind.LessThanToken;

View file

@ -0,0 +1,11 @@
//// [tsxParseTests2.tsx]
declare module JSX {
interface Element { }
interface IntrinsicElements { div; span; }
}
var x = </**/div></div>;
//// [tsxParseTests2.jsx]
var x = <div></div>;

View file

@ -0,0 +1,18 @@
=== tests/cases/conformance/jsx/tsxParseTests2.tsx ===
declare module JSX {
>JSX : Symbol(JSX, Decl(tsxParseTests2.tsx, 0, 0))
interface Element { }
>Element : Symbol(Element, Decl(tsxParseTests2.tsx, 0, 20))
interface IntrinsicElements { div; span; }
>IntrinsicElements : Symbol(IntrinsicElements, Decl(tsxParseTests2.tsx, 1, 22))
>div : Symbol(div, Decl(tsxParseTests2.tsx, 2, 30))
>span : Symbol(span, Decl(tsxParseTests2.tsx, 2, 35))
}
var x = </**/div></div>;
>x : Symbol(x, Decl(tsxParseTests2.tsx, 5, 3))
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxParseTests2.tsx, 2, 30))
>div : Symbol(JSX.IntrinsicElements.div, Decl(tsxParseTests2.tsx, 2, 30))

View file

@ -0,0 +1,19 @@
=== tests/cases/conformance/jsx/tsxParseTests2.tsx ===
declare module JSX {
>JSX : any
interface Element { }
>Element : Element
interface IntrinsicElements { div; span; }
>IntrinsicElements : IntrinsicElements
>div : any
>span : any
}
var x = </**/div></div>;
>x : JSX.Element
></**/div></div> : JSX.Element
>div : any
>div : any

View file

@ -0,0 +1,8 @@
//@filename: file.tsx
//@jsx: preserve
declare module JSX {
interface Element { }
interface IntrinsicElements { div; span; }
}
var x = </**/div></div>;