Skip to content

Commit 3abda0a

Browse files
committed
More tests, use different regex class for pragma capture
1 parent fa36640 commit 3abda0a

14 files changed

+227
-4
lines changed

src/compiler/parser.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -6189,7 +6189,7 @@ namespace ts {
61896189

61906190
function extractPragmas(text: string) {
61916191
const pragmas: { pragma: string, value: string | undefined }[] = [];
6192-
const pragmaRegEx = /@(\w+)(\W+(\w+)(\W+|$))?/gim;
6192+
const pragmaRegEx = /@(\S+)(\s+([\S]+)(\s+|$))?/gim;
61936193
let matchResult: RegExpMatchArray;
61946194
while (matchResult = pragmaRegEx.exec(text)) {
61956195
pragmas.push({ pragma: matchResult[1], value: matchResult[3] });

tests/baselines/reference/inlineJsxFactoryDeclarations.js

+11
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,12 @@ declare global {
1010
}
1111
export function dom(): void;
1212
export function otherdom(): void;
13+
export function createElement(): void;
1314
export { dom as default };
15+
//// [otherreacty.tsx]
16+
/** @jsx React.createElement */
17+
import * as React from "./renderer";
18+
<h></h>
1419
//// [other.tsx]
1520
/** @jsx h */
1621
import { dom as h } from "./renderer"
@@ -32,6 +37,12 @@ export * from "./othernoalias";
3237
export * from "./reacty";
3338

3439

40+
//// [otherreacty.js]
41+
"use strict";
42+
exports.__esModule = true;
43+
/** @jsx React.createElement */
44+
var React = require("./renderer");
45+
React.createElement("h", null);
3546
//// [other.js]
3647
"use strict";
3748
exports.__esModule = true;

tests/baselines/reference/inlineJsxFactoryDeclarations.symbols

+14-2
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,21 @@ export function dom(): void;
1919
export function otherdom(): void;
2020
>otherdom : Symbol(otherdom, Decl(renderer.d.ts, 7, 28))
2121

22+
export function createElement(): void;
23+
>createElement : Symbol(createElement, Decl(renderer.d.ts, 8, 33))
24+
2225
export { dom as default };
23-
>dom : Symbol(default, Decl(renderer.d.ts, 9, 8))
24-
>default : Symbol(default, Decl(renderer.d.ts, 9, 8))
26+
>dom : Symbol(default, Decl(renderer.d.ts, 10, 8))
27+
>default : Symbol(default, Decl(renderer.d.ts, 10, 8))
28+
29+
=== tests/cases/conformance/jsx/inline/otherreacty.tsx ===
30+
/** @jsx React.createElement */
31+
import * as React from "./renderer";
32+
>React : Symbol(React, Decl(otherreacty.tsx, 1, 6))
33+
34+
<h></h>
35+
>h : Symbol(JSX.IntrinsicElements, Decl(renderer.d.ts, 1, 19))
36+
>h : Symbol(JSX.IntrinsicElements, Decl(renderer.d.ts, 1, 19))
2537

2638
=== tests/cases/conformance/jsx/inline/other.tsx ===
2739
/** @jsx h */

tests/baselines/reference/inlineJsxFactoryDeclarations.types

+13
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,23 @@ export function dom(): void;
1919
export function otherdom(): void;
2020
>otherdom : () => void
2121

22+
export function createElement(): void;
23+
>createElement : () => void
24+
2225
export { dom as default };
2326
>dom : () => void
2427
>default : () => void
2528

29+
=== tests/cases/conformance/jsx/inline/otherreacty.tsx ===
30+
/** @jsx React.createElement */
31+
import * as React from "./renderer";
32+
>React : typeof React
33+
34+
<h></h>
35+
><h></h> : any
36+
>h : any
37+
>h : any
38+
2639
=== tests/cases/conformance/jsx/inline/other.tsx ===
2740
/** @jsx h */
2841
import { dom as h } from "./renderer"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
//// [tests/cases/conformance/jsx/inline/inlineJsxFactoryOverridesCompilerOption.tsx] ////
2+
3+
//// [renderer.d.ts]
4+
declare global {
5+
namespace JSX {
6+
interface IntrinsicElements {
7+
[e: string]: any;
8+
}
9+
}
10+
}
11+
export function dom(): void;
12+
export { dom as p };
13+
//// [reacty.tsx]
14+
/** @jsx dom */
15+
import {dom} from "./renderer";
16+
<h></h>
17+
//// [index.tsx]
18+
import { p } from "./renderer";
19+
<h></h>
20+
21+
22+
//// [reacty.js]
23+
"use strict";
24+
exports.__esModule = true;
25+
/** @jsx dom */
26+
var renderer_1 = require("./renderer");
27+
renderer_1.dom("h", null);
28+
//// [index.js]
29+
"use strict";
30+
exports.__esModule = true;
31+
var renderer_1 = require("./renderer");
32+
renderer_1.p("h", null);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
=== tests/cases/conformance/jsx/inline/renderer.d.ts ===
2+
declare global {
3+
>global : Symbol(global, Decl(renderer.d.ts, 0, 0))
4+
5+
namespace JSX {
6+
>JSX : Symbol(JSX, Decl(renderer.d.ts, 0, 16))
7+
8+
interface IntrinsicElements {
9+
>IntrinsicElements : Symbol(IntrinsicElements, Decl(renderer.d.ts, 1, 19))
10+
11+
[e: string]: any;
12+
>e : Symbol(e, Decl(renderer.d.ts, 3, 13))
13+
}
14+
}
15+
}
16+
export function dom(): void;
17+
>dom : Symbol(dom, Decl(renderer.d.ts, 6, 1))
18+
19+
export { dom as p };
20+
>dom : Symbol(p, Decl(renderer.d.ts, 8, 8))
21+
>p : Symbol(p, Decl(renderer.d.ts, 8, 8))
22+
23+
=== tests/cases/conformance/jsx/inline/reacty.tsx ===
24+
/** @jsx dom */
25+
import {dom} from "./renderer";
26+
>dom : Symbol(dom, Decl(reacty.tsx, 1, 8))
27+
28+
<h></h>
29+
>h : Symbol(JSX.IntrinsicElements, Decl(renderer.d.ts, 1, 19))
30+
>h : Symbol(JSX.IntrinsicElements, Decl(renderer.d.ts, 1, 19))
31+
32+
=== tests/cases/conformance/jsx/inline/index.tsx ===
33+
import { p } from "./renderer";
34+
>p : Symbol(p, Decl(index.tsx, 0, 8))
35+
36+
<h></h>
37+
>h : Symbol(JSX.IntrinsicElements, Decl(renderer.d.ts, 1, 19))
38+
>h : Symbol(JSX.IntrinsicElements, Decl(renderer.d.ts, 1, 19))
39+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
=== tests/cases/conformance/jsx/inline/renderer.d.ts ===
2+
declare global {
3+
>global : any
4+
5+
namespace JSX {
6+
>JSX : any
7+
8+
interface IntrinsicElements {
9+
>IntrinsicElements : IntrinsicElements
10+
11+
[e: string]: any;
12+
>e : string
13+
}
14+
}
15+
}
16+
export function dom(): void;
17+
>dom : () => void
18+
19+
export { dom as p };
20+
>dom : () => void
21+
>p : () => void
22+
23+
=== tests/cases/conformance/jsx/inline/reacty.tsx ===
24+
/** @jsx dom */
25+
import {dom} from "./renderer";
26+
>dom : () => void
27+
28+
<h></h>
29+
><h></h> : any
30+
>h : any
31+
>h : any
32+
33+
=== tests/cases/conformance/jsx/inline/index.tsx ===
34+
import { p } from "./renderer";
35+
>p : () => void
36+
37+
<h></h>
38+
><h></h> : any
39+
>h : any
40+
>h : any
41+

tests/baselines/reference/inlineJsxFactoryWithFragmentIsError.errors.txt

+8
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
tests/cases/conformance/jsx/inline/index.tsx(3,1): error TS17017: JSX fragment is not supported when using an inline JSX factory pragma
2+
tests/cases/conformance/jsx/inline/reacty.tsx(3,1): error TS17017: JSX fragment is not supported when using an inline JSX factory pragma
23

34

45
==== tests/cases/conformance/jsx/inline/renderer.d.ts (0 errors) ====
@@ -10,6 +11,13 @@ tests/cases/conformance/jsx/inline/index.tsx(3,1): error TS17017: JSX fragment i
1011
}
1112
}
1213
export function dom(): void;
14+
export function createElement(): void;
15+
==== tests/cases/conformance/jsx/inline/reacty.tsx (1 errors) ====
16+
/** @jsx React.createElement */
17+
import * as React from "./renderer";
18+
<><h></h></>
19+
~~~~~~~~~~~~
20+
!!! error TS17017: JSX fragment is not supported when using an inline JSX factory pragma
1321
==== tests/cases/conformance/jsx/inline/index.tsx (1 errors) ====
1422
/** @jsx dom */
1523
import { dom } from "./renderer";

tests/baselines/reference/inlineJsxFactoryWithFragmentIsError.js

+13-1
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,24 @@ declare global {
88
}
99
}
1010
}
11-
export function dom(): void;
11+
export function dom(): void;
12+
export function createElement(): void;
13+
//// [reacty.tsx]
14+
/** @jsx React.createElement */
15+
import * as React from "./renderer";
16+
<><h></h></>
1217
//// [index.tsx]
1318
/** @jsx dom */
1419
import { dom } from "./renderer";
1520
<><h></h></>
1621

22+
//// [reacty.js]
23+
"use strict";
24+
exports.__esModule = true;
25+
/** @jsx React.createElement */
26+
var React = require("./renderer");
27+
React.createElement(React.Fragment, null,
28+
React.createElement("h", null));
1729
//// [index.js]
1830
"use strict";
1931
exports.__esModule = true;

tests/baselines/reference/inlineJsxFactoryWithFragmentIsError.symbols

+12
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,18 @@ declare global {
1616
export function dom(): void;
1717
>dom : Symbol(dom, Decl(renderer.d.ts, 6, 1))
1818

19+
export function createElement(): void;
20+
>createElement : Symbol(createElement, Decl(renderer.d.ts, 7, 28))
21+
22+
=== tests/cases/conformance/jsx/inline/reacty.tsx ===
23+
/** @jsx React.createElement */
24+
import * as React from "./renderer";
25+
>React : Symbol(React, Decl(reacty.tsx, 1, 6))
26+
27+
<><h></h></>
28+
>h : Symbol(JSX.IntrinsicElements, Decl(renderer.d.ts, 1, 19))
29+
>h : Symbol(JSX.IntrinsicElements, Decl(renderer.d.ts, 1, 19))
30+
1931
=== tests/cases/conformance/jsx/inline/index.tsx ===
2032
/** @jsx dom */
2133
import { dom } from "./renderer";

tests/baselines/reference/inlineJsxFactoryWithFragmentIsError.types

+14
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,20 @@ declare global {
1616
export function dom(): void;
1717
>dom : () => void
1818

19+
export function createElement(): void;
20+
>createElement : () => void
21+
22+
=== tests/cases/conformance/jsx/inline/reacty.tsx ===
23+
/** @jsx React.createElement */
24+
import * as React from "./renderer";
25+
>React : typeof React
26+
27+
<><h></h></>
28+
><><h></h></> : any
29+
><h></h> : any
30+
>h : any
31+
>h : any
32+
1933
=== tests/cases/conformance/jsx/inline/index.tsx ===
2034
/** @jsx dom */
2135
import { dom } from "./renderer";

tests/cases/conformance/jsx/inline/inlineJsxFactoryDeclarations.tsx

+5
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@ declare global {
99
}
1010
export function dom(): void;
1111
export function otherdom(): void;
12+
export function createElement(): void;
1213
export { dom as default };
14+
// @filename: otherreacty.tsx
15+
/** @jsx React.createElement */
16+
import * as React from "./renderer";
17+
<h></h>
1318
// @filename: other.tsx
1419
/** @jsx h */
1520
import { dom as h } from "./renderer"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// @jsx: react
2+
// @jsxFactory: p
3+
// @filename: renderer.d.ts
4+
declare global {
5+
namespace JSX {
6+
interface IntrinsicElements {
7+
[e: string]: any;
8+
}
9+
}
10+
}
11+
export function dom(): void;
12+
export { dom as p };
13+
// @filename: reacty.tsx
14+
/** @jsx dom */
15+
import {dom} from "./renderer";
16+
<h></h>
17+
// @filename: index.tsx
18+
import { p } from "./renderer";
19+
<h></h>

tests/cases/conformance/jsx/inline/inlineJsxFactoryWithFragmentIsError.tsx

+5
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ declare global {
88
}
99
}
1010
export function dom(): void;
11+
export function createElement(): void;
12+
// @filename: reacty.tsx
13+
/** @jsx React.createElement */
14+
import * as React from "./renderer";
15+
<><h></h></>
1116
// @filename: index.tsx
1217
/** @jsx dom */
1318
import { dom } from "./renderer";

0 commit comments

Comments
 (0)