diff --git a/tests/baselines/reference/checkJsxChildrenProperty2.errors.txt b/tests/baselines/reference/checkJsxChildrenProperty2.errors.txt
index 6bb91bd638..aeeceb8652 100644
--- a/tests/baselines/reference/checkJsxChildrenProperty2.errors.txt
+++ b/tests/baselines/reference/checkJsxChildrenProperty2.errors.txt
@@ -2,7 +2,6 @@ tests/cases/conformance/jsx/file.tsx(14,15): error TS2322: Type '{ a: 10; b: "hi
Type '{ a: 10; b: "hi"; }' is not assignable to type 'Prop'.
Property 'children' is missing in type '{ a: 10; b: "hi"; }'.
tests/cases/conformance/jsx/file.tsx(17,11): error TS2710: 'children' are specified twice. The attribute named 'children' will be overwritten.
-tests/cases/conformance/jsx/file.tsx(25,11): error TS2710: 'children' are specified twice. The attribute named 'children' will be overwritten.
tests/cases/conformance/jsx/file.tsx(31,11): error TS2322: Type '{ a: 10; b: "hi"; children: (Element | ((name: string) => Element))[]; }' is not assignable to type 'IntrinsicAttributes & Prop'.
Type '{ a: 10; b: "hi"; children: (Element | ((name: string) => Element))[]; }' is not assignable to type 'Prop'.
Types of property 'children' are incompatible.
@@ -29,7 +28,7 @@ tests/cases/conformance/jsx/file.tsx(49,11): error TS2322: Type '{ a: 10; b: "hi
Property 'type' is missing in type 'Element[]'.
-==== tests/cases/conformance/jsx/file.tsx (7 errors) ====
+==== tests/cases/conformance/jsx/file.tsx (6 errors) ====
import React = require('react');
interface Prop {
@@ -61,8 +60,6 @@ tests/cases/conformance/jsx/file.tsx(49,11): error TS2322: Type '{ a: 10; b: "hi
}
let k1 =
- ~~~~~~~~~~~~~~~~~~~~
-!!! error TS2710: 'children' are specified twice. The attribute named 'children' will be overwritten.
hi hi hi!
;
diff --git a/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes02.errors.txt b/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes02.errors.txt
index 28c550ccda..0790c09295 100644
--- a/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes02.errors.txt
+++ b/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes02.errors.txt
@@ -1,18 +1,17 @@
tests/cases/conformance/types/contextualTypes/jsxAttributes/file.tsx(27,24): error TS2322: Type '{ extra: true; onClick: (k: "left" | "right") => void; }' is not assignable to type 'IntrinsicAttributes & LinkProps'.
- Property 'extra' does not exist on type 'IntrinsicAttributes & LinkProps'.
+ Type '{ extra: true; onClick: (k: "left" | "right") => void; }' is not assignable to type 'LinkProps'.
+ Property 'goTo' is missing in type '{ extra: true; onClick: (k: "left" | "right") => void; }'.
+tests/cases/conformance/types/contextualTypes/jsxAttributes/file.tsx(27,64): error TS2339: Property 'extra' does not exist on type 'IntrinsicAttributes & LinkProps'.
tests/cases/conformance/types/contextualTypes/jsxAttributes/file.tsx(28,24): error TS2322: Type '{ onClick: (k: "left" | "right") => void; extra: true; }' is not assignable to type 'IntrinsicAttributes & LinkProps'.
Property 'onClick' does not exist on type 'IntrinsicAttributes & LinkProps'.
-tests/cases/conformance/types/contextualTypes/jsxAttributes/file.tsx(29,24): error TS2322: Type '{ extra: true; goTo: "home"; }' is not assignable to type 'IntrinsicAttributes & LinkProps'.
- Property 'extra' does not exist on type 'IntrinsicAttributes & LinkProps'.
+tests/cases/conformance/types/contextualTypes/jsxAttributes/file.tsx(29,43): error TS2339: Property 'extra' does not exist on type 'IntrinsicAttributes & LinkProps'.
tests/cases/conformance/types/contextualTypes/jsxAttributes/file.tsx(30,24): error TS2322: Type '{ goTo: "home"; extra: true; }' is not assignable to type 'IntrinsicAttributes & LinkProps'.
Property 'extra' does not exist on type 'IntrinsicAttributes & LinkProps'.
-tests/cases/conformance/types/contextualTypes/jsxAttributes/file.tsx(33,25): error TS2322: Type '{ extra: true; onClick: (k: "left" | "right") => void; }' is not assignable to type 'IntrinsicAttributes & ButtonProps'.
- Property 'extra' does not exist on type 'IntrinsicAttributes & ButtonProps'.
-tests/cases/conformance/types/contextualTypes/jsxAttributes/file.tsx(36,25): error TS2322: Type '{ extra: true; goTo: "home"; }' is not assignable to type 'IntrinsicAttributes & LinkProps'.
- Property 'extra' does not exist on type 'IntrinsicAttributes & LinkProps'.
+tests/cases/conformance/types/contextualTypes/jsxAttributes/file.tsx(33,65): error TS2339: Property 'extra' does not exist on type 'IntrinsicAttributes & ButtonProps'.
+tests/cases/conformance/types/contextualTypes/jsxAttributes/file.tsx(36,44): error TS2339: Property 'extra' does not exist on type 'IntrinsicAttributes & LinkProps'.
-==== tests/cases/conformance/types/contextualTypes/jsxAttributes/file.tsx (6 errors) ====
+==== tests/cases/conformance/types/contextualTypes/jsxAttributes/file.tsx (7 errors) ====
import React = require('react')
export interface ClickableProps {
@@ -42,15 +41,17 @@ tests/cases/conformance/types/contextualTypes/jsxAttributes/file.tsx(36,25): err
const b0 = {console.log(k)}}} extra />; // k has type "left" | "right"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2322: Type '{ extra: true; onClick: (k: "left" | "right") => void; }' is not assignable to type 'IntrinsicAttributes & LinkProps'.
-!!! error TS2322: Property 'extra' does not exist on type 'IntrinsicAttributes & LinkProps'.
+!!! error TS2322: Type '{ extra: true; onClick: (k: "left" | "right") => void; }' is not assignable to type 'LinkProps'.
+!!! error TS2322: Property 'goTo' is missing in type '{ extra: true; onClick: (k: "left" | "right") => void; }'.
+ ~~~~~
+!!! error TS2339: Property 'extra' does not exist on type 'IntrinsicAttributes & LinkProps'.
const b2 = {console.log(k)}} extra />; // k has type "left" | "right"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2322: Type '{ onClick: (k: "left" | "right") => void; extra: true; }' is not assignable to type 'IntrinsicAttributes & LinkProps'.
!!! error TS2322: Property 'onClick' does not exist on type 'IntrinsicAttributes & LinkProps'.
const b3 = ; // goTo has type"home" | "contact"
- ~~~~~~~~~~~~~~~~~~~~~~~~
-!!! error TS2322: Type '{ extra: true; goTo: "home"; }' is not assignable to type 'IntrinsicAttributes & LinkProps'.
-!!! error TS2322: Property 'extra' does not exist on type 'IntrinsicAttributes & LinkProps'.
+ ~~~~~
+!!! error TS2339: Property 'extra' does not exist on type 'IntrinsicAttributes & LinkProps'.
const b4 = ; // goTo has type "home" | "contact"
~~~~~~~~~~~~~~~~~
!!! error TS2322: Type '{ goTo: "home"; extra: true; }' is not assignable to type 'IntrinsicAttributes & LinkProps'.
@@ -58,13 +59,11 @@ tests/cases/conformance/types/contextualTypes/jsxAttributes/file.tsx(36,25): err
export function NoOverload(buttonProps: ButtonProps): JSX.Element { return undefined }
const c1 = {console.log(k)}}} extra />; // k has type any
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-!!! error TS2322: Type '{ extra: true; onClick: (k: "left" | "right") => void; }' is not assignable to type 'IntrinsicAttributes & ButtonProps'.
-!!! error TS2322: Property 'extra' does not exist on type 'IntrinsicAttributes & ButtonProps'.
+ ~~~~~
+!!! error TS2339: Property 'extra' does not exist on type 'IntrinsicAttributes & ButtonProps'.
export function NoOverload1(linkProps: LinkProps): JSX.Element { return undefined }
const d1 = ; // goTo has type "home" | "contact"
- ~~~~~~~~~~~~~~~~~~~~~~~~
-!!! error TS2322: Type '{ extra: true; goTo: "home"; }' is not assignable to type 'IntrinsicAttributes & LinkProps'.
-!!! error TS2322: Property 'extra' does not exist on type 'IntrinsicAttributes & LinkProps'.
+ ~~~~~
+!!! error TS2339: Property 'extra' does not exist on type 'IntrinsicAttributes & LinkProps'.
\ No newline at end of file
diff --git a/tests/baselines/reference/tsxAttributeResolution3.errors.txt b/tests/baselines/reference/tsxAttributeResolution3.errors.txt
index d5517ea31a..b4ec56c0c4 100644
--- a/tests/baselines/reference/tsxAttributeResolution3.errors.txt
+++ b/tests/baselines/reference/tsxAttributeResolution3.errors.txt
@@ -6,11 +6,9 @@ tests/cases/conformance/jsx/file.tsx(23,8): error TS2322: Type '{ y: number; }'
tests/cases/conformance/jsx/file.tsx(31,8): error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'Attribs1'.
Types of property 'x' are incompatible.
Type 'number' is not assignable to type 'string'.
-tests/cases/conformance/jsx/file.tsx(35,8): error TS2322: Type '{ x: string; y: number; extra: number; }' is not assignable to type 'Attribs1'.
- Property 'extra' does not exist on type 'Attribs1'.
-==== tests/cases/conformance/jsx/file.tsx (4 errors) ====
+==== tests/cases/conformance/jsx/file.tsx (3 errors) ====
declare module JSX {
interface Element { }
interface IntrinsicElements {
@@ -54,12 +52,9 @@ tests/cases/conformance/jsx/file.tsx(35,8): error TS2322: Type '{ x: string; y:
!!! error TS2322: Types of property 'x' are incompatible.
!!! error TS2322: Type 'number' is not assignable to type 'string'.
- // Error
+ // Ok
var obj6 = { x: 'ok', y: 32, extra: 100 };
- ~~~~~~~~~
-!!! error TS2322: Type '{ x: string; y: number; extra: number; }' is not assignable to type 'Attribs1'.
-!!! error TS2322: Property 'extra' does not exist on type 'Attribs1'.
// OK (spread override)
var obj7 = { x: 'foo' };
diff --git a/tests/baselines/reference/tsxAttributeResolution3.js b/tests/baselines/reference/tsxAttributeResolution3.js
index c96fd77e28..692fb4ba0b 100644
--- a/tests/baselines/reference/tsxAttributeResolution3.js
+++ b/tests/baselines/reference/tsxAttributeResolution3.js
@@ -31,7 +31,7 @@ var obj4 = { x: 32, y: 32 };
var obj5 = { x: 32, y: 32 };
-// Error
+// Ok
var obj6 = { x: 'ok', y: 32, extra: 100 };
@@ -56,7 +56,7 @@ var obj4 = { x: 32, y: 32 };
// Error
var obj5 = { x: 32, y: 32 };
;
-// Error
+// Ok
var obj6 = { x: 'ok', y: 32, extra: 100 };
;
// OK (spread override)
diff --git a/tests/baselines/reference/tsxSpreadAttributesResolution12.errors.txt b/tests/baselines/reference/tsxSpreadAttributesResolution12.errors.txt
index 0c1ebce61b..a43c927064 100644
--- a/tests/baselines/reference/tsxSpreadAttributesResolution12.errors.txt
+++ b/tests/baselines/reference/tsxSpreadAttributesResolution12.errors.txt
@@ -6,9 +6,13 @@ tests/cases/conformance/jsx/file.tsx(28,25): error TS2322: Type '{ y: true; x: 3
Type '{ y: true; x: 3; overwrite: "hi"; }' is not assignable to type 'Prop'.
Types of property 'x' are incompatible.
Type '3' is not assignable to type '2'.
+tests/cases/conformance/jsx/file.tsx(30,25): error TS2322: Type '{ y: true; x: 2; overwrite: "hi"; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Prop & { children?: ReactNode; }'.
+ Type '{ y: true; x: 2; overwrite: "hi"; }' is not assignable to type 'Prop'.
+ Types of property 'y' are incompatible.
+ Type 'true' is not assignable to type 'false'.
-==== tests/cases/conformance/jsx/file.tsx (2 errors) ====
+==== tests/cases/conformance/jsx/file.tsx (3 errors) ====
import React = require('react');
const obj = {};
@@ -48,4 +52,11 @@ tests/cases/conformance/jsx/file.tsx(28,25): error TS2322: Type '{ y: true; x: 3
!!! error TS2322: Types of property 'x' are incompatible.
!!! error TS2322: Type '3' is not assignable to type '2'.
let x2 =
+ let x3 =
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+!!! error TS2322: Type '{ y: true; x: 2; overwrite: "hi"; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Prop & { children?: ReactNode; }'.
+!!! error TS2322: Type '{ y: true; x: 2; overwrite: "hi"; }' is not assignable to type 'Prop'.
+!!! error TS2322: Types of property 'y' are incompatible.
+!!! error TS2322: Type 'true' is not assignable to type 'false'.
+
\ No newline at end of file
diff --git a/tests/baselines/reference/tsxSpreadAttributesResolution12.js b/tests/baselines/reference/tsxSpreadAttributesResolution12.js
index 8551a3f1ba..a68755a759 100644
--- a/tests/baselines/reference/tsxSpreadAttributesResolution12.js
+++ b/tests/baselines/reference/tsxSpreadAttributesResolution12.js
@@ -28,6 +28,8 @@ let anyobj: any;
let x =
let x1 =
let x2 =
+let x3 =
+
//// [file.jsx]
@@ -67,3 +69,4 @@ var anyobj;
var x = ;
var x1 = ;
var x2 = ;
+var x3 = ;
diff --git a/tests/baselines/reference/tsxSpreadAttributesResolution2.errors.txt b/tests/baselines/reference/tsxSpreadAttributesResolution2.errors.txt
index 57b616124d..a4314f9718 100644
--- a/tests/baselines/reference/tsxSpreadAttributesResolution2.errors.txt
+++ b/tests/baselines/reference/tsxSpreadAttributesResolution2.errors.txt
@@ -8,9 +8,18 @@ tests/cases/conformance/jsx/file.tsx(19,19): error TS2322: Type '{ x: true; y: t
Type '{ x: true; y: true; }' is not assignable to type 'PoisonedProp'.
Types of property 'x' are incompatible.
Type 'true' is not assignable to type 'string'.
+tests/cases/conformance/jsx/file.tsx(20,19): error TS2322: Type '{ x: number; y: "2"; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode; }'.
+ Type '{ x: number; y: "2"; }' is not assignable to type 'PoisonedProp'.
+ Types of property 'x' are incompatible.
+ Type 'number' is not assignable to type 'string'.
+tests/cases/conformance/jsx/file.tsx(21,20): error TS2322: Type '{ X: "hi"; x: number; y: "2"; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode; }'.
+ Type '{ X: "hi"; x: number; y: "2"; }' is not assignable to type 'PoisonedProp'.
+ Types of property 'x' are incompatible.
+ Type 'number' is not assignable to type 'string'.
+tests/cases/conformance/jsx/file.tsx(21,40): error TS2339: Property 'X' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode; }'.
-==== tests/cases/conformance/jsx/file.tsx (3 errors) ====
+==== tests/cases/conformance/jsx/file.tsx (6 errors) ====
import React = require('react');
interface PoisonedProp {
@@ -42,4 +51,18 @@ tests/cases/conformance/jsx/file.tsx(19,19): error TS2322: Type '{ x: true; y: t
!!! error TS2322: Type '{ x: true; y: true; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode; }'.
!!! error TS2322: Type '{ x: true; y: true; }' is not assignable to type 'PoisonedProp'.
!!! error TS2322: Types of property 'x' are incompatible.
-!!! error TS2322: Type 'true' is not assignable to type 'string'.
\ No newline at end of file
+!!! error TS2322: Type 'true' is not assignable to type 'string'.
+ let w = ;
+ ~~~~~~~~~~~~~~~~~~~
+!!! error TS2322: Type '{ x: number; y: "2"; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode; }'.
+!!! error TS2322: Type '{ x: number; y: "2"; }' is not assignable to type 'PoisonedProp'.
+!!! error TS2322: Types of property 'x' are incompatible.
+!!! error TS2322: Type 'number' is not assignable to type 'string'.
+ let w1 = ;
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+!!! error TS2322: Type '{ X: "hi"; x: number; y: "2"; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode; }'.
+!!! error TS2322: Type '{ X: "hi"; x: number; y: "2"; }' is not assignable to type 'PoisonedProp'.
+!!! error TS2322: Types of property 'x' are incompatible.
+!!! error TS2322: Type 'number' is not assignable to type 'string'.
+ ~~~~~~
+!!! error TS2339: Property 'X' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & PoisonedProp & { children?: ReactNode; }'.
\ No newline at end of file
diff --git a/tests/baselines/reference/tsxSpreadAttributesResolution2.js b/tests/baselines/reference/tsxSpreadAttributesResolution2.js
index 75da8fc229..ad2af27548 100644
--- a/tests/baselines/reference/tsxSpreadAttributesResolution2.js
+++ b/tests/baselines/reference/tsxSpreadAttributesResolution2.js
@@ -17,7 +17,9 @@ const obj = {};
// Error
let p = ;
let y = ;
-let z = ;
+let z = ;
+let w = ;
+let w1 = ;
//// [file.jsx]
"use strict";
@@ -48,3 +50,5 @@ var obj = {};
var p = ;
var y = ;
var z = ;
+var w = ;
+var w1 = ;
diff --git a/tests/baselines/reference/tsxSpreadAttributesResolution5.errors.txt b/tests/baselines/reference/tsxSpreadAttributesResolution5.errors.txt
index 2212d0da02..be7018512f 100644
--- a/tests/baselines/reference/tsxSpreadAttributesResolution5.errors.txt
+++ b/tests/baselines/reference/tsxSpreadAttributesResolution5.errors.txt
@@ -2,11 +2,9 @@ tests/cases/conformance/jsx/file.tsx(20,19): error TS2322: Type '{ x: string; y:
Type '{ x: string; y: number; }' is not assignable to type 'PoisonedProp'.
Types of property 'y' are incompatible.
Type 'number' is not assignable to type '2'.
-tests/cases/conformance/jsx/file.tsx(33,20): error TS2322: Type '{ prop1: boolean; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'.
- Property 'prop1' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'.
-==== tests/cases/conformance/jsx/file.tsx (2 errors) ====
+==== tests/cases/conformance/jsx/file.tsx (1 errors) ====
import React = require('react');
interface PoisonedProp {
@@ -43,8 +41,5 @@ tests/cases/conformance/jsx/file.tsx(33,20): error TS2322: Type '{ prop1: boolea
let o = {
prop1: false
}
- // Error
- let e = ;
- ~~~~~~
-!!! error TS2322: Type '{ prop1: boolean; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'.
-!!! error TS2322: Property 'prop1' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & { children?: ReactNode; }'.
\ No newline at end of file
+ // Ok
+ let e = ;
\ No newline at end of file
diff --git a/tests/baselines/reference/tsxSpreadAttributesResolution5.js b/tests/baselines/reference/tsxSpreadAttributesResolution5.js
index a40139b316..192f4b7877 100644
--- a/tests/baselines/reference/tsxSpreadAttributesResolution5.js
+++ b/tests/baselines/reference/tsxSpreadAttributesResolution5.js
@@ -30,7 +30,7 @@ class EmptyProp extends React.Component<{}, {}> {
let o = {
prop1: false
}
-// Error
+// Ok
let e = ;
//// [file.jsx]
@@ -76,5 +76,5 @@ var EmptyProp = (function (_super) {
var o = {
prop1: false
};
-// Error
+// Ok
var e = ;
diff --git a/tests/baselines/reference/tsxStatelessFunctionComponentOverload4.errors.txt b/tests/baselines/reference/tsxStatelessFunctionComponentOverload4.errors.txt
index b59b1dd44f..c7f1b03f6a 100644
--- a/tests/baselines/reference/tsxStatelessFunctionComponentOverload4.errors.txt
+++ b/tests/baselines/reference/tsxStatelessFunctionComponentOverload4.errors.txt
@@ -7,10 +7,7 @@ tests/cases/conformance/jsx/file.tsx(14,22): error TS2322: Type '{ yy1: true; yy
Type '{ yy1: true; yy: number; }' is not assignable to type '{ yy: number; yy1: string; }'.
Types of property 'yy1' are incompatible.
Type 'true' is not assignable to type 'string'.
-tests/cases/conformance/jsx/file.tsx(15,22): error TS2322: Type '{ extra: string; yy: number; yy1: string; }' is not assignable to type 'IntrinsicAttributes & { yy: number; yy1: string; }'.
- Property 'extra' does not exist on type 'IntrinsicAttributes & { yy: number; yy1: string; }'.
-tests/cases/conformance/jsx/file.tsx(16,22): error TS2322: Type '{ y1: 10000; yy: number; yy1: string; }' is not assignable to type 'IntrinsicAttributes & { yy: number; yy1: string; }'.
- Property 'y1' does not exist on type 'IntrinsicAttributes & { yy: number; yy1: string; }'.
+tests/cases/conformance/jsx/file.tsx(16,31): error TS2339: Property 'y1' does not exist on type 'IntrinsicAttributes & { yy: number; yy1: string; }'.
tests/cases/conformance/jsx/file.tsx(17,22): error TS2322: Type '{ yy: boolean; yy1: string; }' is not assignable to type 'IntrinsicAttributes & { yy: number; yy1: string; }'.
Type '{ yy: boolean; yy1: string; }' is not assignable to type '{ yy: number; yy1: string; }'.
Types of property 'yy' are incompatible.
@@ -36,7 +33,7 @@ tests/cases/conformance/jsx/file.tsx(36,29): error TS2322: Type '{ y1: "hello";
Property 'children' does not exist on type 'IntrinsicAttributes & { y1: boolean; y2?: number; y3: boolean; }'.
-==== tests/cases/conformance/jsx/file.tsx (12 errors) ====
+==== tests/cases/conformance/jsx/file.tsx (11 errors) ====
import React = require('react')
declare function OneThing(): JSX.Element;
declare function OneThing(l: {yy: number, yy1: string}): JSX.Element;
@@ -63,14 +60,10 @@ tests/cases/conformance/jsx/file.tsx(36,29): error TS2322: Type '{ y1: "hello";
!!! error TS2322: Type '{ yy1: true; yy: number; }' is not assignable to type '{ yy: number; yy1: string; }'.
!!! error TS2322: Types of property 'yy1' are incompatible.
!!! error TS2322: Type 'true' is not assignable to type 'string'.
- const c3 = ; // Extra attribute;
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-!!! error TS2322: Type '{ extra: string; yy: number; yy1: string; }' is not assignable to type 'IntrinsicAttributes & { yy: number; yy1: string; }'.
-!!! error TS2322: Property 'extra' does not exist on type 'IntrinsicAttributes & { yy: number; yy1: string; }'.
+ const c3 = ; // This is OK becuase all attribute are spread
const c4 = ; // extra property;
- ~~~~~~~~~~~~~~~~~~~
-!!! error TS2322: Type '{ y1: 10000; yy: number; yy1: string; }' is not assignable to type 'IntrinsicAttributes & { yy: number; yy1: string; }'.
-!!! error TS2322: Property 'y1' does not exist on type 'IntrinsicAttributes & { yy: number; yy1: string; }'.
+ ~~~~~~~~~~
+!!! error TS2339: Property 'y1' does not exist on type 'IntrinsicAttributes & { yy: number; yy1: string; }'.
const c5 = ; // type incompatible;
~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2322: Type '{ yy: boolean; yy1: string; }' is not assignable to type 'IntrinsicAttributes & { yy: number; yy1: string; }'.
diff --git a/tests/baselines/reference/tsxStatelessFunctionComponentOverload4.js b/tests/baselines/reference/tsxStatelessFunctionComponentOverload4.js
index 8da2bee37e..d67466d127 100644
--- a/tests/baselines/reference/tsxStatelessFunctionComponentOverload4.js
+++ b/tests/baselines/reference/tsxStatelessFunctionComponentOverload4.js
@@ -13,7 +13,7 @@ let obj2: any;
const c0 = ; // extra property;
const c1 = ; // missing property;
const c2 = ; // type incompatible;
-const c3 = ; // Extra attribute;
+const c3 = ; // This is OK becuase all attribute are spread
const c4 = ; // extra property;
const c5 = ; // type incompatible;
const c6 = ; // Should error as there is extra attribute that doesn't match any. Current it is not
@@ -50,7 +50,7 @@ define(["require", "exports", "react"], function (require, exports, React) {
var c0 = ; // extra property;
var c1 = ; // missing property;
var c2 = ; // type incompatible;
- var c3 = ; // Extra attribute;
+ var c3 = ; // This is OK becuase all attribute are spread
var c4 = ; // extra property;
var c5 = ; // type incompatible;
var c6 = ; // Should error as there is extra attribute that doesn't match any. Current it is not
diff --git a/tests/baselines/reference/tsxStatelessFunctionComponentOverload5.errors.txt b/tests/baselines/reference/tsxStatelessFunctionComponentOverload5.errors.txt
index a7b787c1c1..d2ff4736e6 100644
--- a/tests/baselines/reference/tsxStatelessFunctionComponentOverload5.errors.txt
+++ b/tests/baselines/reference/tsxStatelessFunctionComponentOverload5.errors.txt
@@ -1,24 +1,31 @@
tests/cases/conformance/jsx/file.tsx(48,24): error TS2322: Type '{ to: "/some/path"; onClick: (e: MouseEvent) => void; children: string; }' is not assignable to type 'IntrinsicAttributes & HyphenProps'.
Property 'to' does not exist on type 'IntrinsicAttributes & HyphenProps'.
+tests/cases/conformance/jsx/file.tsx(49,24): error TS2339: Property 'onClick' does not exist on type 'IntrinsicAttributes & HyphenProps'.
tests/cases/conformance/jsx/file.tsx(49,24): error TS2322: Type '{ to: string; onClick: (e: any) => void; children: string; }' is not assignable to type 'IntrinsicAttributes & HyphenProps'.
- Property 'to' does not exist on type 'IntrinsicAttributes & HyphenProps'.
+ Type '{ to: string; onClick: (e: any) => void; children: string; }' is not assignable to type 'HyphenProps'.
+ Property '"data-format"' is missing in type '{ to: string; onClick: (e: any) => void; children: string; }'.
tests/cases/conformance/jsx/file.tsx(50,24): error TS2322: Type '{ onClick: () => void; to: string; }' is not assignable to type 'IntrinsicAttributes & HyphenProps'.
- Property 'onClick' does not exist on type 'IntrinsicAttributes & HyphenProps'.
+ Type '{ onClick: () => void; to: string; }' is not assignable to type 'HyphenProps'.
+ Property '"data-format"' is missing in type '{ onClick: () => void; to: string; }'.
tests/cases/conformance/jsx/file.tsx(51,24): error TS2322: Type '{ onClick: (k: MouseEvent) => void; to: string; }' is not assignable to type 'IntrinsicAttributes & HyphenProps'.
- Property 'onClick' does not exist on type 'IntrinsicAttributes & HyphenProps'.
+ Type '{ onClick: (k: MouseEvent) => void; to: string; }' is not assignable to type 'HyphenProps'.
+ Property '"data-format"' is missing in type '{ onClick: (k: MouseEvent) => void; to: string; }'.
tests/cases/conformance/jsx/file.tsx(53,24): error TS2322: Type '{ to: string; onClick(e: any): void; }' is not assignable to type 'IntrinsicAttributes & HyphenProps'.
- Property 'to' does not exist on type 'IntrinsicAttributes & HyphenProps'.
+ Type '{ to: string; onClick(e: any): void; }' is not assignable to type 'HyphenProps'.
+ Property '"data-format"' is missing in type '{ to: string; onClick(e: any): void; }'.
tests/cases/conformance/jsx/file.tsx(54,24): error TS2322: Type '{ children: 10; onClick(e: any): void; }' is not assignable to type 'IntrinsicAttributes & HyphenProps'.
- Property 'onClick' does not exist on type 'IntrinsicAttributes & HyphenProps'.
+ Type '{ children: 10; onClick(e: any): void; }' is not assignable to type 'HyphenProps'.
+ Property '"data-format"' is missing in type '{ children: 10; onClick(e: any): void; }'.
tests/cases/conformance/jsx/file.tsx(55,24): error TS2322: Type '{ children: "hello"; className: true; onClick(e: any): void; }' is not assignable to type 'IntrinsicAttributes & HyphenProps'.
- Property 'onClick' does not exist on type 'IntrinsicAttributes & HyphenProps'.
+ Type '{ children: "hello"; className: true; onClick(e: any): void; }' is not assignable to type 'HyphenProps'.
+ Property '"data-format"' is missing in type '{ children: "hello"; className: true; onClick(e: any): void; }'.
tests/cases/conformance/jsx/file.tsx(56,24): error TS2322: Type '{ data-format: true; }' is not assignable to type 'IntrinsicAttributes & HyphenProps'.
Type '{ data-format: true; }' is not assignable to type 'HyphenProps'.
Types of property '"data-format"' are incompatible.
Type 'true' is not assignable to type 'string'.
-==== tests/cases/conformance/jsx/file.tsx (8 errors) ====
+==== tests/cases/conformance/jsx/file.tsx (9 errors) ====
import React = require('react')
export interface ClickableProps {
@@ -71,30 +78,38 @@ tests/cases/conformance/jsx/file.tsx(56,24): error TS2322: Type '{ data-format:
!!! error TS2322: Type '{ to: "/some/path"; onClick: (e: MouseEvent) => void; children: string; }' is not assignable to type 'IntrinsicAttributes & HyphenProps'.
!!! error TS2322: Property 'to' does not exist on type 'IntrinsicAttributes & HyphenProps'.
const b1 = {}} {...obj0}>Hello world; // extra property;
+ ~~~~~~~~~~~~~~~~~~~~~~~
+!!! error TS2339: Property 'onClick' does not exist on type 'IntrinsicAttributes & HyphenProps'.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2322: Type '{ to: string; onClick: (e: any) => void; children: string; }' is not assignable to type 'IntrinsicAttributes & HyphenProps'.
-!!! error TS2322: Property 'to' does not exist on type 'IntrinsicAttributes & HyphenProps'.
+!!! error TS2322: Type '{ to: string; onClick: (e: any) => void; children: string; }' is not assignable to type 'HyphenProps'.
+!!! error TS2322: Property '"data-format"' is missing in type '{ to: string; onClick: (e: any) => void; children: string; }'.
const b2 = ; // extra property
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2322: Type '{ onClick: () => void; to: string; }' is not assignable to type 'IntrinsicAttributes & HyphenProps'.
-!!! error TS2322: Property 'onClick' does not exist on type 'IntrinsicAttributes & HyphenProps'.
+!!! error TS2322: Type '{ onClick: () => void; to: string; }' is not assignable to type 'HyphenProps'.
+!!! error TS2322: Property '"data-format"' is missing in type '{ onClick: () => void; to: string; }'.
const b3 = {}}} />; // extra property
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2322: Type '{ onClick: (k: MouseEvent) => void; to: string; }' is not assignable to type 'IntrinsicAttributes & HyphenProps'.
-!!! error TS2322: Property 'onClick' does not exist on type 'IntrinsicAttributes & HyphenProps'.
+!!! error TS2322: Type '{ onClick: (k: MouseEvent) => void; to: string; }' is not assignable to type 'HyphenProps'.
+!!! error TS2322: Property '"data-format"' is missing in type '{ onClick: (k: MouseEvent) => void; to: string; }'.
const b4 = ; // Should error because Incorrect type; but attributes are any so everything is allowed
const b5 = ; // Spread retain method declaration (see GitHub #13365), so now there is an extra attributes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2322: Type '{ to: string; onClick(e: any): void; }' is not assignable to type 'IntrinsicAttributes & HyphenProps'.
-!!! error TS2322: Property 'to' does not exist on type 'IntrinsicAttributes & HyphenProps'.
+!!! error TS2322: Type '{ to: string; onClick(e: any): void; }' is not assignable to type 'HyphenProps'.
+!!! error TS2322: Property '"data-format"' is missing in type '{ to: string; onClick(e: any): void; }'.
const b6 = ; // incorrect type for optional attribute
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2322: Type '{ children: 10; onClick(e: any): void; }' is not assignable to type 'IntrinsicAttributes & HyphenProps'.
-!!! error TS2322: Property 'onClick' does not exist on type 'IntrinsicAttributes & HyphenProps'.
+!!! error TS2322: Type '{ children: 10; onClick(e: any): void; }' is not assignable to type 'HyphenProps'.
+!!! error TS2322: Property '"data-format"' is missing in type '{ children: 10; onClick(e: any): void; }'.
const b7 = ; // incorrect type for optional attribute
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2322: Type '{ children: "hello"; className: true; onClick(e: any): void; }' is not assignable to type 'IntrinsicAttributes & HyphenProps'.
-!!! error TS2322: Property 'onClick' does not exist on type 'IntrinsicAttributes & HyphenProps'.
+!!! error TS2322: Type '{ children: "hello"; className: true; onClick(e: any): void; }' is not assignable to type 'HyphenProps'.
+!!! error TS2322: Property '"data-format"' is missing in type '{ children: "hello"; className: true; onClick(e: any): void; }'.
const b8 = ; // incorrect type for specified hyphanated name
~~~~~~~~~~~
!!! error TS2322: Type '{ data-format: true; }' is not assignable to type 'IntrinsicAttributes & HyphenProps'.
diff --git a/tests/baselines/reference/tsxStatelessFunctionComponents1.errors.txt b/tests/baselines/reference/tsxStatelessFunctionComponents1.errors.txt
index 51e1de2a57..1f2c00c73d 100644
--- a/tests/baselines/reference/tsxStatelessFunctionComponents1.errors.txt
+++ b/tests/baselines/reference/tsxStatelessFunctionComponents1.errors.txt
@@ -14,11 +14,9 @@ tests/cases/conformance/jsx/file.tsx(37,23): error TS2322: Type '{ prop1: true;
tests/cases/conformance/jsx/file.tsx(38,24): error TS2322: Type '{ ref: (x: any) => any; }' is not assignable to type 'IntrinsicAttributes'.
Property 'ref' does not exist on type 'IntrinsicAttributes'.
tests/cases/conformance/jsx/file.tsx(41,16): error TS1005: ',' expected.
-tests/cases/conformance/jsx/file.tsx(45,24): error TS2322: Type '{ prop1: boolean; }' is not assignable to type 'IntrinsicAttributes'.
- Property 'prop1' does not exist on type 'IntrinsicAttributes'.
-==== tests/cases/conformance/jsx/file.tsx (8 errors) ====
+==== tests/cases/conformance/jsx/file.tsx (7 errors) ====
function EmptyPropSFC() {
return Default Greeting
;
}
@@ -85,11 +83,8 @@ tests/cases/conformance/jsx/file.tsx(45,24): error TS2322: Type '{ prop1: boolea
!!! error TS1005: ',' expected.
}
- // Error
+ // OK as access properties are allow when spread
let i2 =
- ~~~~~~
-!!! error TS2322: Type '{ prop1: boolean; }' is not assignable to type 'IntrinsicAttributes'.
-!!! error TS2322: Property 'prop1' does not exist on type 'IntrinsicAttributes'.
let o1: any;
// OK
diff --git a/tests/baselines/reference/tsxStatelessFunctionComponents1.js b/tests/baselines/reference/tsxStatelessFunctionComponents1.js
index d19f1ce107..6ede59b442 100644
--- a/tests/baselines/reference/tsxStatelessFunctionComponents1.js
+++ b/tests/baselines/reference/tsxStatelessFunctionComponents1.js
@@ -42,7 +42,7 @@ let o = {
prop1: true;
}
-// Error
+// OK as access properties are allow when spread
let i2 =
let o1: any;
@@ -93,7 +93,7 @@ var i1 = ;
var o = {
prop1: true
};
-// Error
+// OK as access properties are allow when spread
var i2 = ;
var o1;
// OK
diff --git a/tests/cases/conformance/jsx/tsxAttributeResolution3.tsx b/tests/cases/conformance/jsx/tsxAttributeResolution3.tsx
index 0f968dd0a5..d63cf8e4ac 100644
--- a/tests/cases/conformance/jsx/tsxAttributeResolution3.tsx
+++ b/tests/cases/conformance/jsx/tsxAttributeResolution3.tsx
@@ -32,7 +32,7 @@ var obj4 = { x: 32, y: 32 };
var obj5 = { x: 32, y: 32 };
-// Error
+// Ok
var obj6 = { x: 'ok', y: 32, extra: 100 };
diff --git a/tests/cases/conformance/jsx/tsxSpreadAttributesResolution12.tsx b/tests/cases/conformance/jsx/tsxSpreadAttributesResolution12.tsx
index b5150bd27f..457a3f2981 100644
--- a/tests/cases/conformance/jsx/tsxSpreadAttributesResolution12.tsx
+++ b/tests/cases/conformance/jsx/tsxSpreadAttributesResolution12.tsx
@@ -32,3 +32,5 @@ let anyobj: any;
let x =
let x1 =
let x2 =
+let x3 =
+
diff --git a/tests/cases/conformance/jsx/tsxSpreadAttributesResolution2.tsx b/tests/cases/conformance/jsx/tsxSpreadAttributesResolution2.tsx
index 1d647226ad..7ec1d87118 100644
--- a/tests/cases/conformance/jsx/tsxSpreadAttributesResolution2.tsx
+++ b/tests/cases/conformance/jsx/tsxSpreadAttributesResolution2.tsx
@@ -21,4 +21,6 @@ const obj = {};
// Error
let p = ;
let y = ;
-let z = ;
\ No newline at end of file
+let z = ;
+let w = ;
+let w1 = ;
\ No newline at end of file
diff --git a/tests/cases/conformance/jsx/tsxSpreadAttributesResolution5.tsx b/tests/cases/conformance/jsx/tsxSpreadAttributesResolution5.tsx
index e050932b1d..22045c8145 100644
--- a/tests/cases/conformance/jsx/tsxSpreadAttributesResolution5.tsx
+++ b/tests/cases/conformance/jsx/tsxSpreadAttributesResolution5.tsx
@@ -34,5 +34,5 @@ class EmptyProp extends React.Component<{}, {}> {
let o = {
prop1: false
}
-// Error
+// Ok
let e = ;
\ No newline at end of file
diff --git a/tests/cases/conformance/jsx/tsxStatelessFunctionComponentOverload4.tsx b/tests/cases/conformance/jsx/tsxStatelessFunctionComponentOverload4.tsx
index 7700fed690..b96073b4cc 100644
--- a/tests/cases/conformance/jsx/tsxStatelessFunctionComponentOverload4.tsx
+++ b/tests/cases/conformance/jsx/tsxStatelessFunctionComponentOverload4.tsx
@@ -18,7 +18,7 @@ let obj2: any;
const c0 = ; // extra property;
const c1 = ; // missing property;
const c2 = ; // type incompatible;
-const c3 = ; // Extra attribute;
+const c3 = ; // This is OK becuase all attribute are spread
const c4 = ; // extra property;
const c5 = ; // type incompatible;
const c6 = ; // Should error as there is extra attribute that doesn't match any. Current it is not
diff --git a/tests/cases/conformance/jsx/tsxStatelessFunctionComponents1.tsx b/tests/cases/conformance/jsx/tsxStatelessFunctionComponents1.tsx
index 8990cb3c8b..b486a72ce1 100644
--- a/tests/cases/conformance/jsx/tsxStatelessFunctionComponents1.tsx
+++ b/tests/cases/conformance/jsx/tsxStatelessFunctionComponents1.tsx
@@ -46,7 +46,7 @@ let o = {
prop1: true;
}
-// Error
+// OK as access properties are allow when spread
let i2 =
let o1: any;