Skip to content

Commit dfa1a90

Browse files
Merge pull request microsoft#22135 from uniqueiniquity/jsxFragmentHash
Allow characters in JsxText inside JsxFragment that usually don't scan
2 parents 36bebe9 + 71ff6dd commit dfa1a90

9 files changed

Lines changed: 20 additions & 5 deletions

src/compiler/parser.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4182,8 +4182,9 @@ namespace ts {
41824182
parseExpected(SyntaxKind.LessThanToken);
41834183

41844184
if (token() === SyntaxKind.GreaterThanToken) {
4185-
parseExpected(SyntaxKind.GreaterThanToken);
4185+
// See below for explanation of scanJsxText
41864186
const node: JsxOpeningFragment = <JsxOpeningFragment>createNode(SyntaxKind.JsxOpeningFragment, fullStart);
4187+
scanJsxText();
41874188
return finishNode(node);
41884189
}
41894190

tests/baselines/reference/tsxFragmentPreserveEmit.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ declare var React: any;
1212
< /*starting wrap*/ ></ /*ending wrap*/>; // comments in the tags
1313
<>hi</>; // text inside
1414
<><span>hi</span><div>bye</div></>; // children
15-
<><span>1</span><><span>2.1</span><span>2.2</span></><span>3</span></>; // nested fragments
15+
<><span>1</span><><span>2.1</span><span>2.2</span></><span>3</span></>; // nested fragments
16+
<>#</>; // # would cause scanning error if not in jsxtext
1617

1718
//// [file.jsx]
1819
<></>; // no whitespace
@@ -21,3 +22,4 @@ declare var React: any;
2122
<>hi</>; // text inside
2223
<><span>hi</span><div>bye</div></>; // children
2324
<><span>1</span><><span>2.1</span><span>2.2</span></><span>3</span></>; // nested fragments
25+
<>#</>; // # would cause scanning error if not in jsxtext

tests/baselines/reference/tsxFragmentPreserveEmit.symbols

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,4 @@ declare var React: any;
3535
>span : Symbol(JSX.IntrinsicElements, Decl(file.tsx, 1, 22))
3636
>span : Symbol(JSX.IntrinsicElements, Decl(file.tsx, 1, 22))
3737

38+
<>#</>; // # would cause scanning error if not in jsxtext

tests/baselines/reference/tsxFragmentPreserveEmit.types

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,6 @@ declare var React: any;
5252
>span : any
5353
>span : any
5454

55+
<>#</>; // # would cause scanning error if not in jsxtext
56+
><>#</> : JSX.Element
57+

tests/baselines/reference/tsxFragmentReactEmit.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ declare var React: any;
1212
< /*starting wrap*/ ></ /*ending wrap*/>; // comments in the tags
1313
<>hi</>; // text inside
1414
<><span>hi</span><div>bye</div></>; // children
15-
<><span>1</span><><span>2.1</span><span>2.2</span></><span>3</span></>; // nested fragments
15+
<><span>1</span><><span>2.1</span><span>2.2</span></><span>3</span></>; // nested fragments
16+
<>#</>; // # would cause scanning error if not in jsxtext
1617

1718
//// [file.js]
1819
React.createElement(React.Fragment, null); // no whitespace
@@ -28,3 +29,4 @@ React.createElement(React.Fragment, null,
2829
React.createElement("span", null, "2.1"),
2930
React.createElement("span", null, "2.2")),
3031
React.createElement("span", null, "3")); // nested fragments
32+
React.createElement(React.Fragment, null, "#"); // # would cause scanning error if not in jsxtext

tests/baselines/reference/tsxFragmentReactEmit.symbols

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,4 @@ declare var React: any;
3535
>span : Symbol(JSX.IntrinsicElements, Decl(file.tsx, 1, 22))
3636
>span : Symbol(JSX.IntrinsicElements, Decl(file.tsx, 1, 22))
3737

38+
<>#</>; // # would cause scanning error if not in jsxtext

tests/baselines/reference/tsxFragmentReactEmit.types

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,6 @@ declare var React: any;
5252
>span : any
5353
>span : any
5454

55+
<>#</>; // # would cause scanning error if not in jsxtext
56+
><>#</> : JSX.Element
57+

tests/cases/conformance/jsx/tsxFragmentPreserveEmit.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@ declare var React: any;
1414
< /*starting wrap*/ ></ /*ending wrap*/>; // comments in the tags
1515
<>hi</>; // text inside
1616
<><span>hi</span><div>bye</div></>; // children
17-
<><span>1</span><><span>2.1</span><span>2.2</span></><span>3</span></>; // nested fragments
17+
<><span>1</span><><span>2.1</span><span>2.2</span></><span>3</span></>; // nested fragments
18+
<>#</>; // # would cause scanning error if not in jsxtext

tests/cases/conformance/jsx/tsxFragmentReactEmit.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@ declare var React: any;
1414
< /*starting wrap*/ ></ /*ending wrap*/>; // comments in the tags
1515
<>hi</>; // text inside
1616
<><span>hi</span><div>bye</div></>; // children
17-
<><span>1</span><><span>2.1</span><span>2.2</span></><span>3</span></>; // nested fragments
17+
<><span>1</span><><span>2.1</span><span>2.2</span></><span>3</span></>; // nested fragments
18+
<>#</>; // # would cause scanning error if not in jsxtext

0 commit comments

Comments
 (0)