Skip to content

Commit fe8099a

Browse files
committed
jsxFrag pragma test
1 parent b0b66f0 commit fe8099a

File tree

5 files changed

+170
-4
lines changed

5 files changed

+170
-4
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
//// [tests/cases/conformance/jsx/inline/inlineJsxAndJsxFragPragma.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 h(): void;
12+
export function jsx(): void;
13+
export function Fragment(): void;
14+
15+
//// [preacty.tsx]
16+
/**
17+
* @jsx h
18+
* @jsxFrag Fragment
19+
*/
20+
import {h, Fragment} from "./renderer";
21+
<><div></div></>
22+
23+
//// [snabbdomy.tsx]
24+
/* @jsx jsx */
25+
/* @jsxfrag null */
26+
import {jsx} from "./renderer";
27+
<><span></span></>
28+
29+
//// [preacty.js]
30+
"use strict";
31+
exports.__esModule = true;
32+
/**
33+
* @jsx h
34+
* @jsxFrag Fragment
35+
*/
36+
var renderer_1 = require("./renderer");
37+
renderer_1.h(renderer_1.Fragment, null,
38+
renderer_1.h("div", null));
39+
//// [snabbdomy.js]
40+
"use strict";
41+
exports.__esModule = true;
42+
/* @jsx jsx */
43+
/* @jsxfrag null */
44+
var renderer_1 = require("./renderer");
45+
renderer_1.jsx(null, null,
46+
renderer_1.jsx("span", null));
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
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 h(): void;
17+
>h : Symbol(h, Decl(renderer.d.ts, 6, 1))
18+
19+
export function jsx(): void;
20+
>jsx : Symbol(jsx, Decl(renderer.d.ts, 7, 26))
21+
22+
export function Fragment(): void;
23+
>Fragment : Symbol(Fragment, Decl(renderer.d.ts, 8, 28))
24+
25+
=== tests/cases/conformance/jsx/inline/preacty.tsx ===
26+
/**
27+
* @jsx h
28+
* @jsxFrag Fragment
29+
*/
30+
import {h, Fragment} from "./renderer";
31+
>h : Symbol(h, Decl(preacty.tsx, 4, 8))
32+
>Fragment : Symbol(Fragment, Decl(preacty.tsx, 4, 10))
33+
34+
<><div></div></>
35+
>div : Symbol(JSX.IntrinsicElements, Decl(renderer.d.ts, 1, 19))
36+
>div : Symbol(JSX.IntrinsicElements, Decl(renderer.d.ts, 1, 19))
37+
38+
=== tests/cases/conformance/jsx/inline/snabbdomy.tsx ===
39+
/* @jsx jsx */
40+
/* @jsxfrag null */
41+
import {jsx} from "./renderer";
42+
>jsx : Symbol(jsx, Decl(snabbdomy.tsx, 2, 8))
43+
44+
<><span></span></>
45+
>span : Symbol(JSX.IntrinsicElements, Decl(renderer.d.ts, 1, 19))
46+
>span : Symbol(JSX.IntrinsicElements, Decl(renderer.d.ts, 1, 19))
47+
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
=== tests/cases/conformance/jsx/inline/renderer.d.ts ===
2+
declare global {
3+
>global : any
4+
5+
namespace JSX {
6+
interface IntrinsicElements {
7+
[e: string]: any;
8+
>e : string
9+
}
10+
}
11+
}
12+
export function h(): void;
13+
>h : () => void
14+
15+
export function jsx(): void;
16+
>jsx : () => void
17+
18+
export function Fragment(): void;
19+
>Fragment : () => void
20+
21+
=== tests/cases/conformance/jsx/inline/preacty.tsx ===
22+
/**
23+
* @jsx h
24+
* @jsxFrag Fragment
25+
*/
26+
import {h, Fragment} from "./renderer";
27+
>h : () => void
28+
>Fragment : () => void
29+
30+
<><div></div></>
31+
><><div></div></> : error
32+
><div></div> : error
33+
>div : any
34+
>div : any
35+
36+
=== tests/cases/conformance/jsx/inline/snabbdomy.tsx ===
37+
/* @jsx jsx */
38+
/* @jsxfrag null */
39+
import {jsx} from "./renderer";
40+
>jsx : () => void
41+
42+
<><span></span></>
43+
><><span></span></> : error
44+
><span></span> : error
45+
>span : any
46+
>span : any
47+

tests/baselines/reference/inlineJsxFactoryWithFragmentIsError.errors.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
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
1+
tests/cases/conformance/jsx/inline/index.tsx(3,1): error TS17017: An @jsxFrag pragma is required when using an @jsx pragma with JSX fragments.
2+
tests/cases/conformance/jsx/inline/reacty.tsx(3,1): error TS17017: An @jsxFrag pragma is required when using an @jsx pragma with JSX fragments.
33

44

55
==== tests/cases/conformance/jsx/inline/renderer.d.ts (0 errors) ====
@@ -17,10 +17,10 @@ tests/cases/conformance/jsx/inline/reacty.tsx(3,1): error TS17017: JSX fragment
1717
import * as React from "./renderer";
1818
<><h></h></>
1919
~~~~~~~~~~~~
20-
!!! error TS17017: JSX fragment is not supported when using an inline JSX factory pragma
20+
!!! error TS17017: An @jsxFrag pragma is required when using an @jsx pragma with JSX fragments.
2121
==== tests/cases/conformance/jsx/inline/index.tsx (1 errors) ====
2222
/** @jsx dom */
2323
import { dom } from "./renderer";
2424
<><h></h></>
2525
~~~~~~~~~~~~
26-
!!! error TS17017: JSX fragment is not supported when using an inline JSX factory pragma
26+
!!! error TS17017: An @jsxFrag pragma is required when using an @jsx pragma with JSX fragments.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// @jsx: react
2+
// @filename: renderer.d.ts
3+
declare global {
4+
namespace JSX {
5+
interface IntrinsicElements {
6+
[e: string]: any;
7+
}
8+
}
9+
}
10+
export function h(): void;
11+
export function jsx(): void;
12+
export function Fragment(): void;
13+
14+
// @filename: preacty.tsx
15+
/**
16+
* @jsx h
17+
* @jsxFrag Fragment
18+
*/
19+
import {h, Fragment} from "./renderer";
20+
<><div></div></>
21+
22+
// @filename: snabbdomy.tsx
23+
/* @jsx jsx */
24+
/* @jsxfrag null */
25+
import {jsx} from "./renderer";
26+
<><span></span></>

0 commit comments

Comments
 (0)