diff --git a/tests/baselines/reference/tsxAttributeResolution9.symbols b/tests/baselines/reference/tsxAttributeResolution9.symbols
deleted file mode 100644
index 081482d5d47..00000000000
--- a/tests/baselines/reference/tsxAttributeResolution9.symbols
+++ /dev/null
@@ -1,47 +0,0 @@
-=== tests/cases/conformance/jsx/react.d.ts ===
-
-declare module JSX {
->JSX : Symbol(JSX, Decl(react.d.ts, 0, 0))
-
- interface Element { }
->Element : Symbol(Element, Decl(react.d.ts, 1, 20))
-
- interface IntrinsicElements {
->IntrinsicElements : Symbol(IntrinsicElements, Decl(react.d.ts, 2, 22))
- }
- interface ElementAttributesProperty {
->ElementAttributesProperty : Symbol(ElementAttributesProperty, Decl(react.d.ts, 4, 2))
-
- props;
->props : Symbol(props, Decl(react.d.ts, 5, 38))
- }
-}
-
-interface Props {
->Props : Symbol(Props, Decl(react.d.ts, 8, 1))
-
- foo: string;
->foo : Symbol(foo, Decl(react.d.ts, 10, 17))
-}
-
-=== tests/cases/conformance/jsx/file.tsx ===
-export class MyComponent {
->MyComponent : Symbol(MyComponent, Decl(file.tsx, 0, 0))
-
- render() {
->render : Symbol(render, Decl(file.tsx, 0, 26))
- }
-
- props: { foo: string; }
->props : Symbol(props, Decl(file.tsx, 2, 3))
->foo : Symbol(foo, Decl(file.tsx, 4, 10))
-}
-
-; // ok
->MyComponent : Symbol(MyComponent, Decl(file.tsx, 0, 0))
->foo : Symbol(unknown)
-
-; // should be an error
->MyComponent : Symbol(MyComponent, Decl(file.tsx, 0, 0))
->foo : Symbol(unknown)
-
diff --git a/tests/baselines/reference/tsxAttributeResolution9.types b/tests/baselines/reference/tsxAttributeResolution9.types
deleted file mode 100644
index 1b2c6d42389..00000000000
--- a/tests/baselines/reference/tsxAttributeResolution9.types
+++ /dev/null
@@ -1,49 +0,0 @@
-=== tests/cases/conformance/jsx/react.d.ts ===
-
-declare module JSX {
->JSX : any
-
- interface Element { }
->Element : Element
-
- interface IntrinsicElements {
->IntrinsicElements : IntrinsicElements
- }
- interface ElementAttributesProperty {
->ElementAttributesProperty : ElementAttributesProperty
-
- props;
->props : any
- }
-}
-
-interface Props {
->Props : Props
-
- foo: string;
->foo : string
-}
-
-=== tests/cases/conformance/jsx/file.tsx ===
-export class MyComponent {
->MyComponent : MyComponent
-
- render() {
->render : () => void
- }
-
- props: { foo: string; }
->props : { foo: string; }
->foo : string
-}
-
-; // ok
-> : JSX.Element
->MyComponent : typeof MyComponent
->foo : any
-
-; // should be an error
-> : JSX.Element
->MyComponent : typeof MyComponent
->foo : any
-
diff --git a/tests/baselines/reference/tsxElementResolution8.errors.txt b/tests/baselines/reference/tsxElementResolution8.errors.txt
index 5710c4e177d..92ff05d1aed 100644
--- a/tests/baselines/reference/tsxElementResolution8.errors.txt
+++ b/tests/baselines/reference/tsxElementResolution8.errors.txt
@@ -1,10 +1,8 @@
tests/cases/conformance/jsx/tsxElementResolution8.tsx(8,2): error TS2604: JSX element type 'Div' does not have any construct or call signatures.
-tests/cases/conformance/jsx/tsxElementResolution8.tsx(16,2): error TS2601: The return type of a JSX element constructor must return an object type.
-tests/cases/conformance/jsx/tsxElementResolution8.tsx(29,2): error TS2601: The return type of a JSX element constructor must return an object type.
tests/cases/conformance/jsx/tsxElementResolution8.tsx(34,2): error TS2604: JSX element type 'Obj3' does not have any construct or call signatures.
-==== tests/cases/conformance/jsx/tsxElementResolution8.tsx (4 errors) ====
+==== tests/cases/conformance/jsx/tsxElementResolution8.tsx (2 errors) ====
declare module JSX {
interface Element { }
interface IntrinsicElements { }
@@ -23,8 +21,6 @@ tests/cases/conformance/jsx/tsxElementResolution8.tsx(34,2): error TS2604: JSX e
// Error
function Fnum(): number{ return 42; }
- ~~~~
-!!! error TS2601: The return type of a JSX element constructor must return an object type.
interface Obj1 {
new(): {};
@@ -38,8 +34,6 @@ tests/cases/conformance/jsx/tsxElementResolution8.tsx(34,2): error TS2604: JSX e
}
var Obj2: Obj2;
; // Error
- ~~~~
-!!! error TS2601: The return type of a JSX element constructor must return an object type.
interface Obj3 {
}
diff --git a/tests/baselines/reference/tsxElementResolution9.errors.txt b/tests/baselines/reference/tsxElementResolution9.errors.txt
deleted file mode 100644
index f4412719b33..00000000000
--- a/tests/baselines/reference/tsxElementResolution9.errors.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-tests/cases/conformance/jsx/tsxElementResolution9.tsx(11,2): error TS2601: The return type of a JSX element constructor must return an object type.
-tests/cases/conformance/jsx/tsxElementResolution9.tsx(18,2): error TS2601: The return type of a JSX element constructor must return an object type.
-
-
-==== tests/cases/conformance/jsx/tsxElementResolution9.tsx (2 errors) ====
- declare module JSX {
- interface Element { }
- interface IntrinsicElements { }
- }
-
- interface Obj1 {
- new(n: string): { x: number };
- new(n: number): { y: string };
- }
- var Obj1: Obj1;
- ; // Error, return type is not an object type
- ~~~~
-!!! error TS2601: The return type of a JSX element constructor must return an object type.
-
- interface Obj2 {
- (n: string): { x: number };
- (n: number): { y: string };
- }
- var Obj2: Obj2;
- ; // Error, return type is not an object type
- ~~~~
-!!! error TS2601: The return type of a JSX element constructor must return an object type.
-
- interface Obj3 {
- (n: string): { x: number };
- (n: number): { x: number; y: string };
- }
- var Obj3: Obj3;
- ; // OK
-
\ No newline at end of file
diff --git a/tests/baselines/reference/tsxElementResolution9.symbols b/tests/baselines/reference/tsxElementResolution9.symbols
new file mode 100644
index 00000000000..bfa04219ef9
--- /dev/null
+++ b/tests/baselines/reference/tsxElementResolution9.symbols
@@ -0,0 +1,67 @@
+=== tests/cases/conformance/jsx/tsxElementResolution9.tsx ===
+declare module JSX {
+>JSX : Symbol(JSX, Decl(tsxElementResolution9.tsx, 0, 0))
+
+ interface Element { }
+>Element : Symbol(Element, Decl(tsxElementResolution9.tsx, 0, 20))
+
+ interface IntrinsicElements { }
+>IntrinsicElements : Symbol(IntrinsicElements, Decl(tsxElementResolution9.tsx, 1, 22))
+}
+
+interface Obj1 {
+>Obj1 : Symbol(Obj1, Decl(tsxElementResolution9.tsx, 3, 1), Decl(tsxElementResolution9.tsx, 9, 3))
+
+ new(n: string): { x: number };
+>n : Symbol(n, Decl(tsxElementResolution9.tsx, 6, 5))
+>x : Symbol(x, Decl(tsxElementResolution9.tsx, 6, 18))
+
+ new(n: number): { y: string };
+>n : Symbol(n, Decl(tsxElementResolution9.tsx, 7, 5))
+>y : Symbol(y, Decl(tsxElementResolution9.tsx, 7, 18))
+}
+var Obj1: Obj1;
+>Obj1 : Symbol(Obj1, Decl(tsxElementResolution9.tsx, 3, 1), Decl(tsxElementResolution9.tsx, 9, 3))
+>Obj1 : Symbol(Obj1, Decl(tsxElementResolution9.tsx, 3, 1), Decl(tsxElementResolution9.tsx, 9, 3))
+
+; // Error, return type is not an object type
+>Obj1 : Symbol(Obj1, Decl(tsxElementResolution9.tsx, 3, 1), Decl(tsxElementResolution9.tsx, 9, 3))
+
+interface Obj2 {
+>Obj2 : Symbol(Obj2, Decl(tsxElementResolution9.tsx, 10, 9), Decl(tsxElementResolution9.tsx, 16, 3))
+
+ (n: string): { x: number };
+>n : Symbol(n, Decl(tsxElementResolution9.tsx, 13, 2))
+>x : Symbol(x, Decl(tsxElementResolution9.tsx, 13, 15))
+
+ (n: number): { y: string };
+>n : Symbol(n, Decl(tsxElementResolution9.tsx, 14, 2))
+>y : Symbol(y, Decl(tsxElementResolution9.tsx, 14, 15))
+}
+var Obj2: Obj2;
+>Obj2 : Symbol(Obj2, Decl(tsxElementResolution9.tsx, 10, 9), Decl(tsxElementResolution9.tsx, 16, 3))
+>Obj2 : Symbol(Obj2, Decl(tsxElementResolution9.tsx, 10, 9), Decl(tsxElementResolution9.tsx, 16, 3))
+
+; // Error, return type is not an object type
+>Obj2 : Symbol(Obj2, Decl(tsxElementResolution9.tsx, 10, 9), Decl(tsxElementResolution9.tsx, 16, 3))
+
+interface Obj3 {
+>Obj3 : Symbol(Obj3, Decl(tsxElementResolution9.tsx, 17, 9), Decl(tsxElementResolution9.tsx, 23, 3))
+
+ (n: string): { x: number };
+>n : Symbol(n, Decl(tsxElementResolution9.tsx, 20, 2))
+>x : Symbol(x, Decl(tsxElementResolution9.tsx, 20, 15))
+
+ (n: number): { x: number; y: string };
+>n : Symbol(n, Decl(tsxElementResolution9.tsx, 21, 2))
+>x : Symbol(x, Decl(tsxElementResolution9.tsx, 21, 15))
+>y : Symbol(y, Decl(tsxElementResolution9.tsx, 21, 26))
+}
+var Obj3: Obj3;
+>Obj3 : Symbol(Obj3, Decl(tsxElementResolution9.tsx, 17, 9), Decl(tsxElementResolution9.tsx, 23, 3))
+>Obj3 : Symbol(Obj3, Decl(tsxElementResolution9.tsx, 17, 9), Decl(tsxElementResolution9.tsx, 23, 3))
+
+; // OK
+>Obj3 : Symbol(Obj3, Decl(tsxElementResolution9.tsx, 17, 9), Decl(tsxElementResolution9.tsx, 23, 3))
+>x : Symbol(unknown)
+
diff --git a/tests/baselines/reference/tsxElementResolution9.types b/tests/baselines/reference/tsxElementResolution9.types
new file mode 100644
index 00000000000..525e4600b2e
--- /dev/null
+++ b/tests/baselines/reference/tsxElementResolution9.types
@@ -0,0 +1,70 @@
+=== tests/cases/conformance/jsx/tsxElementResolution9.tsx ===
+declare module JSX {
+>JSX : any
+
+ interface Element { }
+>Element : Element
+
+ interface IntrinsicElements { }
+>IntrinsicElements : IntrinsicElements
+}
+
+interface Obj1 {
+>Obj1 : Obj1
+
+ new(n: string): { x: number };
+>n : string
+>x : number
+
+ new(n: number): { y: string };
+>n : number
+>y : string
+}
+var Obj1: Obj1;
+>Obj1 : Obj1
+>Obj1 : Obj1
+
+; // Error, return type is not an object type
+> : JSX.Element
+>Obj1 : Obj1
+
+interface Obj2 {
+>Obj2 : Obj2
+
+ (n: string): { x: number };
+>n : string
+>x : number
+
+ (n: number): { y: string };
+>n : number
+>y : string
+}
+var Obj2: Obj2;
+>Obj2 : Obj2
+>Obj2 : Obj2
+
+; // Error, return type is not an object type
+> : JSX.Element
+>Obj2 : Obj2
+
+interface Obj3 {
+>Obj3 : Obj3
+
+ (n: string): { x: number };
+>n : string
+>x : number
+
+ (n: number): { x: number; y: string };
+>n : number
+>x : number
+>y : string
+}
+var Obj3: Obj3;
+>Obj3 : Obj3
+>Obj3 : Obj3
+
+; // OK
+> : JSX.Element
+>Obj3 : Obj3
+>x : any
+