Skip to content

Commit 07b4857

Browse files
Kanchalai Tanglertsampanmhegazy
authored andcommitted
Update baselines
1 parent 62c0e69 commit 07b4857

10 files changed

+397
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
//// [file.tsx]
2+
import React = require('react');
3+
4+
const decorator = function <T>(Component: React.StatelessComponent<T>): React.StatelessComponent<T> {
5+
return (props) => <Component {...props}></Component>
6+
};
7+
8+
const decorator2 = function <T extends { x: number }>(Component: React.StatelessComponent<T>): React.StatelessComponent<T> {
9+
return (props) => <Component {...props} x={2} ></Component>
10+
};
11+
12+
const decorator3 = function <T extends { x: number }, U extends { x: number } >(Component: React.StatelessComponent<T>): React.StatelessComponent<T> {
13+
return (props) => <Component x={2} {...props} ></Component>
14+
};
15+
16+
//// [file.jsx]
17+
"use strict";
18+
exports.__esModule = true;
19+
var React = require("react");
20+
var decorator = function (Component) {
21+
return function (props) { return <Component {...props}></Component>; };
22+
};
23+
var decorator2 = function (Component) {
24+
return function (props) { return <Component {...props} x={2}></Component>; };
25+
};
26+
var decorator3 = function (Component) {
27+
return function (props) { return <Component x={2} {...props}></Component>; };
28+
};
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
=== tests/cases/conformance/jsx/file.tsx ===
2+
import React = require('react');
3+
>React : Symbol(React, Decl(file.tsx, 0, 0))
4+
5+
const decorator = function <T>(Component: React.StatelessComponent<T>): React.StatelessComponent<T> {
6+
>decorator : Symbol(decorator, Decl(file.tsx, 2, 5))
7+
>T : Symbol(T, Decl(file.tsx, 2, 28))
8+
>Component : Symbol(Component, Decl(file.tsx, 2, 31))
9+
>React : Symbol(React, Decl(file.tsx, 0, 0))
10+
>StatelessComponent : Symbol(React.StatelessComponent, Decl(react.d.ts, 197, 40))
11+
>T : Symbol(T, Decl(file.tsx, 2, 28))
12+
>React : Symbol(React, Decl(file.tsx, 0, 0))
13+
>StatelessComponent : Symbol(React.StatelessComponent, Decl(react.d.ts, 197, 40))
14+
>T : Symbol(T, Decl(file.tsx, 2, 28))
15+
16+
return (props) => <Component {...props}></Component>
17+
>props : Symbol(props, Decl(file.tsx, 3, 12))
18+
>Component : Symbol(Component, Decl(file.tsx, 2, 31))
19+
>props : Symbol(props, Decl(file.tsx, 3, 12))
20+
>Component : Symbol(Component, Decl(file.tsx, 2, 31))
21+
22+
};
23+
24+
const decorator2 = function <T extends { x: number }>(Component: React.StatelessComponent<T>): React.StatelessComponent<T> {
25+
>decorator2 : Symbol(decorator2, Decl(file.tsx, 6, 5))
26+
>T : Symbol(T, Decl(file.tsx, 6, 29))
27+
>x : Symbol(x, Decl(file.tsx, 6, 40))
28+
>Component : Symbol(Component, Decl(file.tsx, 6, 54))
29+
>React : Symbol(React, Decl(file.tsx, 0, 0))
30+
>StatelessComponent : Symbol(React.StatelessComponent, Decl(react.d.ts, 197, 40))
31+
>T : Symbol(T, Decl(file.tsx, 6, 29))
32+
>React : Symbol(React, Decl(file.tsx, 0, 0))
33+
>StatelessComponent : Symbol(React.StatelessComponent, Decl(react.d.ts, 197, 40))
34+
>T : Symbol(T, Decl(file.tsx, 6, 29))
35+
36+
return (props) => <Component {...props} x={2} ></Component>
37+
>props : Symbol(props, Decl(file.tsx, 7, 12))
38+
>Component : Symbol(Component, Decl(file.tsx, 6, 54))
39+
>props : Symbol(props, Decl(file.tsx, 7, 12))
40+
>x : Symbol(x, Decl(file.tsx, 7, 43))
41+
>Component : Symbol(Component, Decl(file.tsx, 6, 54))
42+
43+
};
44+
45+
const decorator3 = function <T extends { x: number }, U extends { x: number } >(Component: React.StatelessComponent<T>): React.StatelessComponent<T> {
46+
>decorator3 : Symbol(decorator3, Decl(file.tsx, 10, 5))
47+
>T : Symbol(T, Decl(file.tsx, 10, 29))
48+
>x : Symbol(x, Decl(file.tsx, 10, 40))
49+
>U : Symbol(U, Decl(file.tsx, 10, 53))
50+
>x : Symbol(x, Decl(file.tsx, 10, 65))
51+
>Component : Symbol(Component, Decl(file.tsx, 10, 80))
52+
>React : Symbol(React, Decl(file.tsx, 0, 0))
53+
>StatelessComponent : Symbol(React.StatelessComponent, Decl(react.d.ts, 197, 40))
54+
>T : Symbol(T, Decl(file.tsx, 10, 29))
55+
>React : Symbol(React, Decl(file.tsx, 0, 0))
56+
>StatelessComponent : Symbol(React.StatelessComponent, Decl(react.d.ts, 197, 40))
57+
>T : Symbol(T, Decl(file.tsx, 10, 29))
58+
59+
return (props) => <Component x={2} {...props} ></Component>
60+
>props : Symbol(props, Decl(file.tsx, 11, 12))
61+
>Component : Symbol(Component, Decl(file.tsx, 10, 80))
62+
>x : Symbol(x, Decl(file.tsx, 11, 32))
63+
>props : Symbol(props, Decl(file.tsx, 11, 12))
64+
>Component : Symbol(Component, Decl(file.tsx, 10, 80))
65+
66+
};
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
=== tests/cases/conformance/jsx/file.tsx ===
2+
import React = require('react');
3+
>React : typeof React
4+
5+
const decorator = function <T>(Component: React.StatelessComponent<T>): React.StatelessComponent<T> {
6+
>decorator : <T>(Component: React.StatelessComponent<T>) => React.StatelessComponent<T>
7+
>function <T>(Component: React.StatelessComponent<T>): React.StatelessComponent<T> { return (props) => <Component {...props}></Component>} : <T>(Component: React.StatelessComponent<T>) => React.StatelessComponent<T>
8+
>T : T
9+
>Component : React.StatelessComponent<T>
10+
>React : any
11+
>StatelessComponent : React.StatelessComponent<P>
12+
>T : T
13+
>React : any
14+
>StatelessComponent : React.StatelessComponent<P>
15+
>T : T
16+
17+
return (props) => <Component {...props}></Component>
18+
>(props) => <Component {...props}></Component> : (props: T & { children?: React.ReactNode; }) => JSX.Element
19+
>props : T & { children?: React.ReactNode; }
20+
><Component {...props}></Component> : JSX.Element
21+
>Component : React.StatelessComponent<T>
22+
>props : T & { children?: React.ReactNode; }
23+
>Component : React.StatelessComponent<T>
24+
25+
};
26+
27+
const decorator2 = function <T extends { x: number }>(Component: React.StatelessComponent<T>): React.StatelessComponent<T> {
28+
>decorator2 : <T extends { x: number; }>(Component: React.StatelessComponent<T>) => React.StatelessComponent<T>
29+
>function <T extends { x: number }>(Component: React.StatelessComponent<T>): React.StatelessComponent<T> { return (props) => <Component {...props} x={2} ></Component>} : <T extends { x: number; }>(Component: React.StatelessComponent<T>) => React.StatelessComponent<T>
30+
>T : T
31+
>x : number
32+
>Component : React.StatelessComponent<T>
33+
>React : any
34+
>StatelessComponent : React.StatelessComponent<P>
35+
>T : T
36+
>React : any
37+
>StatelessComponent : React.StatelessComponent<P>
38+
>T : T
39+
40+
return (props) => <Component {...props} x={2} ></Component>
41+
>(props) => <Component {...props} x={2} ></Component> : (props: T & { children?: React.ReactNode; }) => JSX.Element
42+
>props : T & { children?: React.ReactNode; }
43+
><Component {...props} x={2} ></Component> : JSX.Element
44+
>Component : React.StatelessComponent<T>
45+
>props : T & { children?: React.ReactNode; }
46+
>x : number
47+
>2 : 2
48+
>Component : React.StatelessComponent<T>
49+
50+
};
51+
52+
const decorator3 = function <T extends { x: number }, U extends { x: number } >(Component: React.StatelessComponent<T>): React.StatelessComponent<T> {
53+
>decorator3 : <T extends { x: number; }, U extends { x: number; }>(Component: React.StatelessComponent<T>) => React.StatelessComponent<T>
54+
>function <T extends { x: number }, U extends { x: number } >(Component: React.StatelessComponent<T>): React.StatelessComponent<T> { return (props) => <Component x={2} {...props} ></Component>} : <T extends { x: number; }, U extends { x: number; }>(Component: React.StatelessComponent<T>) => React.StatelessComponent<T>
55+
>T : T
56+
>x : number
57+
>U : U
58+
>x : number
59+
>Component : React.StatelessComponent<T>
60+
>React : any
61+
>StatelessComponent : React.StatelessComponent<P>
62+
>T : T
63+
>React : any
64+
>StatelessComponent : React.StatelessComponent<P>
65+
>T : T
66+
67+
return (props) => <Component x={2} {...props} ></Component>
68+
>(props) => <Component x={2} {...props} ></Component> : (props: T & { children?: React.ReactNode; }) => JSX.Element
69+
>props : T & { children?: React.ReactNode; }
70+
><Component x={2} {...props} ></Component> : JSX.Element
71+
>Component : React.StatelessComponent<T>
72+
>x : number
73+
>2 : 2
74+
>props : T & { children?: React.ReactNode; }
75+
>Component : React.StatelessComponent<T>
76+
77+
};
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
tests/cases/conformance/jsx/file.tsx(4,45): error TS2339: Property 'y' does not exist on type 'IntrinsicAttributes & { x: number; } & { children?: ReactNode; }'.
2+
3+
4+
==== tests/cases/conformance/jsx/file.tsx (1 errors) ====
5+
import React = require('react');
6+
7+
const decorator4 = function <T extends { x: number }>(Component: React.StatelessComponent<T>): React.StatelessComponent<T> {
8+
return (props) => <Component {...props} y={"blah"} ></Component>
9+
~~~~~~~~~~
10+
!!! error TS2339: Property 'y' does not exist on type 'IntrinsicAttributes & { x: number; } & { children?: ReactNode; }'.
11+
};
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//// [file.tsx]
2+
import React = require('react');
3+
4+
const decorator4 = function <T extends { x: number }>(Component: React.StatelessComponent<T>): React.StatelessComponent<T> {
5+
return (props) => <Component {...props} y={"blah"} ></Component>
6+
};
7+
8+
//// [file.jsx]
9+
"use strict";
10+
exports.__esModule = true;
11+
var React = require("react");
12+
var decorator4 = function (Component) {
13+
return function (props) { return <Component {...props} y={"blah"}></Component>; };
14+
};
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
//// [file.tsx]
2+
import React = require('react');
3+
4+
class B1<T extends { x: string } = { x:string } > extends React.Component<T, {}> {
5+
render() {
6+
return <div>hi</div>;
7+
}
8+
}
9+
class B<U> extends React.Component<U, {}> {
10+
render() {
11+
return <B1 {...this.props} x="hi" />;
12+
}
13+
}
14+
15+
//// [file.jsx]
16+
"use strict";
17+
var __extends = (this && this.__extends) || (function () {
18+
var extendStatics = Object.setPrototypeOf ||
19+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
20+
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
21+
return function (d, b) {
22+
extendStatics(d, b);
23+
function __() { this.constructor = d; }
24+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
25+
};
26+
})();
27+
exports.__esModule = true;
28+
var React = require("react");
29+
var B1 = (function (_super) {
30+
__extends(B1, _super);
31+
function B1() {
32+
return _super !== null && _super.apply(this, arguments) || this;
33+
}
34+
B1.prototype.render = function () {
35+
return <div>hi</div>;
36+
};
37+
return B1;
38+
}(React.Component));
39+
var B = (function (_super) {
40+
__extends(B, _super);
41+
function B() {
42+
return _super !== null && _super.apply(this, arguments) || this;
43+
}
44+
B.prototype.render = function () {
45+
return <B1 {...this.props} x="hi"/>;
46+
};
47+
return B;
48+
}(React.Component));
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
=== tests/cases/conformance/jsx/file.tsx ===
2+
import React = require('react');
3+
>React : Symbol(React, Decl(file.tsx, 0, 0))
4+
5+
class B1<T extends { x: string } = { x:string } > extends React.Component<T, {}> {
6+
>B1 : Symbol(B1, Decl(file.tsx, 0, 32))
7+
>T : Symbol(T, Decl(file.tsx, 2, 9))
8+
>x : Symbol(x, Decl(file.tsx, 2, 20))
9+
>x : Symbol(x, Decl(file.tsx, 2, 36))
10+
>React.Component : Symbol(React.Component, Decl(react.d.ts, 158, 55))
11+
>React : Symbol(React, Decl(file.tsx, 0, 0))
12+
>Component : Symbol(React.Component, Decl(react.d.ts, 158, 55))
13+
>T : Symbol(T, Decl(file.tsx, 2, 9))
14+
15+
render() {
16+
>render : Symbol(B1.render, Decl(file.tsx, 2, 82))
17+
18+
return <div>hi</div>;
19+
>div : Symbol(JSX.IntrinsicElements.div, Decl(react.d.ts, 2399, 45))
20+
>div : Symbol(JSX.IntrinsicElements.div, Decl(react.d.ts, 2399, 45))
21+
}
22+
}
23+
class B<U> extends React.Component<U, {}> {
24+
>B : Symbol(B, Decl(file.tsx, 6, 1))
25+
>U : Symbol(U, Decl(file.tsx, 7, 8))
26+
>React.Component : Symbol(React.Component, Decl(react.d.ts, 158, 55))
27+
>React : Symbol(React, Decl(file.tsx, 0, 0))
28+
>Component : Symbol(React.Component, Decl(react.d.ts, 158, 55))
29+
>U : Symbol(U, Decl(file.tsx, 7, 8))
30+
31+
render() {
32+
>render : Symbol(B.render, Decl(file.tsx, 7, 43))
33+
34+
return <B1 {...this.props} x="hi" />;
35+
>B1 : Symbol(B1, Decl(file.tsx, 0, 32))
36+
>this.props : Symbol(React.Component.props, Decl(react.d.ts, 166, 37))
37+
>this : Symbol(B, Decl(file.tsx, 6, 1))
38+
>props : Symbol(React.Component.props, Decl(react.d.ts, 166, 37))
39+
>x : Symbol(x, Decl(file.tsx, 9, 34))
40+
}
41+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
=== tests/cases/conformance/jsx/file.tsx ===
2+
import React = require('react');
3+
>React : typeof React
4+
5+
class B1<T extends { x: string } = { x:string } > extends React.Component<T, {}> {
6+
>B1 : B1<T>
7+
>T : T
8+
>x : string
9+
>x : string
10+
>React.Component : React.Component<T, {}>
11+
>React : typeof React
12+
>Component : typeof React.Component
13+
>T : T
14+
15+
render() {
16+
>render : () => JSX.Element
17+
18+
return <div>hi</div>;
19+
><div>hi</div> : JSX.Element
20+
>div : any
21+
>div : any
22+
}
23+
}
24+
class B<U> extends React.Component<U, {}> {
25+
>B : B<U>
26+
>U : U
27+
>React.Component : React.Component<U, {}>
28+
>React : typeof React
29+
>Component : typeof React.Component
30+
>U : U
31+
32+
render() {
33+
>render : () => JSX.Element
34+
35+
return <B1 {...this.props} x="hi" />;
36+
><B1 {...this.props} x="hi" /> : JSX.Element
37+
>B1 : typeof B1
38+
>this.props : U & { children?: React.ReactNode; }
39+
>this : this
40+
>props : U & { children?: React.ReactNode; }
41+
>x : string
42+
}
43+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
tests/cases/conformance/jsx/file.tsx(11,36): error TS2339: Property 'x' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<B1<{}>> & { children?: ReactNode; }'.
2+
3+
4+
==== tests/cases/conformance/jsx/file.tsx (1 errors) ====
5+
import React = require('react');
6+
7+
class B1<T extends { x: string }> extends React.Component<T, {}> {
8+
render() {
9+
return <div>hi</div>;
10+
}
11+
}
12+
class B<U> extends React.Component<U, {}> {
13+
render() {
14+
// Should be an ok but as of 2.3.3 this will be an error as we will instantiate B1.props to be empty object
15+
return <B1 {...this.props} x="hi" />;
16+
~~~~~~
17+
!!! error TS2339: Property 'x' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<B1<{}>> & { children?: ReactNode; }'.
18+
}
19+
}

0 commit comments

Comments
 (0)