From a88c2ae1e4ef79a3f076c0f7c3fcb3aabc1f1cb3 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Wed, 9 Nov 2016 13:15:13 -0800 Subject: [PATCH] Add test cases for when jsxFactory cannot be resolved --- .../jsxFactoryIdentifierAsParameter.js | 24 +++++ .../jsxFactoryIdentifierAsParameter.js.map | 2 + ...FactoryIdentifierAsParameter.sourcemap.txt | 87 +++++++++++++++++++ .../jsxFactoryIdentifierAsParameter.symbols | 25 ++++++ .../jsxFactoryIdentifierAsParameter.types | 26 ++++++ ...ryIdentifierWithAbsentParameter.errors.txt | 19 ++++ ...jsxFactoryIdentifierWithAbsentParameter.js | 24 +++++ ...actoryIdentifierWithAbsentParameter.js.map | 2 + ...dentifierWithAbsentParameter.sourcemap.txt | 81 +++++++++++++++++ ...oryQualifiedNameResolutionError.errors.txt | 18 ++++ .../jsxFactoryQualifiedNameResolutionError.js | 23 +++++ ...FactoryQualifiedNameResolutionError.js.map | 2 + ...QualifiedNameResolutionError.sourcemap.txt | 87 +++++++++++++++++++ .../jsxFactoryIdentifierAsParameter.ts | 18 ++++ ...jsxFactoryIdentifierWithAbsentParameter.ts | 18 ++++ .../jsxFactoryQualifiedNameResolutionError.ts | 18 ++++ 16 files changed, 474 insertions(+) create mode 100644 tests/baselines/reference/jsxFactoryIdentifierAsParameter.js create mode 100644 tests/baselines/reference/jsxFactoryIdentifierAsParameter.js.map create mode 100644 tests/baselines/reference/jsxFactoryIdentifierAsParameter.sourcemap.txt create mode 100644 tests/baselines/reference/jsxFactoryIdentifierAsParameter.symbols create mode 100644 tests/baselines/reference/jsxFactoryIdentifierAsParameter.types create mode 100644 tests/baselines/reference/jsxFactoryIdentifierWithAbsentParameter.errors.txt create mode 100644 tests/baselines/reference/jsxFactoryIdentifierWithAbsentParameter.js create mode 100644 tests/baselines/reference/jsxFactoryIdentifierWithAbsentParameter.js.map create mode 100644 tests/baselines/reference/jsxFactoryIdentifierWithAbsentParameter.sourcemap.txt create mode 100644 tests/baselines/reference/jsxFactoryQualifiedNameResolutionError.errors.txt create mode 100644 tests/baselines/reference/jsxFactoryQualifiedNameResolutionError.js create mode 100644 tests/baselines/reference/jsxFactoryQualifiedNameResolutionError.js.map create mode 100644 tests/baselines/reference/jsxFactoryQualifiedNameResolutionError.sourcemap.txt create mode 100644 tests/cases/compiler/jsxFactoryIdentifierAsParameter.ts create mode 100644 tests/cases/compiler/jsxFactoryIdentifierWithAbsentParameter.ts create mode 100644 tests/cases/compiler/jsxFactoryQualifiedNameResolutionError.ts diff --git a/tests/baselines/reference/jsxFactoryIdentifierAsParameter.js b/tests/baselines/reference/jsxFactoryIdentifierAsParameter.js new file mode 100644 index 00000000000..ffec40ff7b6 --- /dev/null +++ b/tests/baselines/reference/jsxFactoryIdentifierAsParameter.js @@ -0,0 +1,24 @@ +//// [test.tsx] + +declare module JSX { + interface IntrinsicElements { + [s: string]: any; + } +} + +export class AppComponent { + render(createElement) { + return
; + } +} + + +//// [test.js] +"use strict"; +class AppComponent { + render(createElement) { + return createElement("div", null); + } +} +exports.AppComponent = AppComponent; +//# sourceMappingURL=test.js.map \ No newline at end of file diff --git a/tests/baselines/reference/jsxFactoryIdentifierAsParameter.js.map b/tests/baselines/reference/jsxFactoryIdentifierAsParameter.js.map new file mode 100644 index 00000000000..c108b93a913 --- /dev/null +++ b/tests/baselines/reference/jsxFactoryIdentifierAsParameter.js.map @@ -0,0 +1,2 @@ +//// [test.js.map] +{"version":3,"file":"test.js","sourceRoot":"","sources":["test.tsx"],"names":[],"mappings":";AAOA;IACI,MAAM,CAAC,aAAa;QAChB,MAAM,CAAC,0BAAO,CAAC;IACnB,CAAC;CACJ;AAJD,oCAIC"} \ No newline at end of file diff --git a/tests/baselines/reference/jsxFactoryIdentifierAsParameter.sourcemap.txt b/tests/baselines/reference/jsxFactoryIdentifierAsParameter.sourcemap.txt new file mode 100644 index 00000000000..c7867fc54e0 --- /dev/null +++ b/tests/baselines/reference/jsxFactoryIdentifierAsParameter.sourcemap.txt @@ -0,0 +1,87 @@ +=================================================================== +JsFile: test.js +mapUrl: test.js.map +sourceRoot: +sources: test.tsx +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/test.js +sourceFile:test.tsx +------------------------------------------------------------------- +>>>"use strict"; +>>>class AppComponent { +1 > +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >declare module JSX { + > interface IntrinsicElements { + > [s: string]: any; + > } + >} + > + > +1 >Emitted(2, 1) Source(8, 1) + SourceIndex(0) +--- +>>> render(createElement) { +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^^^ +5 > ^^^^^^^^^^^^^^^^^^^-> +1->export class AppComponent { + > +2 > render +3 > ( +4 > createElement +1->Emitted(3, 5) Source(9, 5) + SourceIndex(0) +2 >Emitted(3, 11) Source(9, 11) + SourceIndex(0) +3 >Emitted(3, 12) Source(9, 12) + SourceIndex(0) +4 >Emitted(3, 25) Source(9, 25) + SourceIndex(0) +--- +>>> return createElement("div", null); +1->^^^^^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^ +1->) { + > +2 > return +3 > +4 >
+5 > ; +1->Emitted(4, 9) Source(10, 9) + SourceIndex(0) +2 >Emitted(4, 15) Source(10, 15) + SourceIndex(0) +3 >Emitted(4, 16) Source(10, 16) + SourceIndex(0) +4 >Emitted(4, 42) Source(10, 23) + SourceIndex(0) +5 >Emitted(4, 43) Source(10, 24) + SourceIndex(0) +--- +>>> } +1 >^^^^ +2 > ^ +1 > + > +2 > } +1 >Emitted(5, 5) Source(11, 5) + SourceIndex(0) +2 >Emitted(5, 6) Source(11, 6) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(6, 2) Source(12, 2) + SourceIndex(0) +--- +>>>exports.AppComponent = AppComponent; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 >export class AppComponent { + > render(createElement) { + > return
; + > } + >} +1->Emitted(7, 1) Source(8, 1) + SourceIndex(0) +2 >Emitted(7, 37) Source(12, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=test.js.map \ No newline at end of file diff --git a/tests/baselines/reference/jsxFactoryIdentifierAsParameter.symbols b/tests/baselines/reference/jsxFactoryIdentifierAsParameter.symbols new file mode 100644 index 00000000000..865292092a5 --- /dev/null +++ b/tests/baselines/reference/jsxFactoryIdentifierAsParameter.symbols @@ -0,0 +1,25 @@ +=== tests/cases/compiler/test.tsx === + +declare module JSX { +>JSX : Symbol(JSX, Decl(test.tsx, 0, 0)) + + interface IntrinsicElements { +>IntrinsicElements : Symbol(IntrinsicElements, Decl(test.tsx, 1, 20)) + + [s: string]: any; +>s : Symbol(s, Decl(test.tsx, 3, 9)) + } +} + +export class AppComponent { +>AppComponent : Symbol(AppComponent, Decl(test.tsx, 5, 1)) + + render(createElement) { +>render : Symbol(AppComponent.render, Decl(test.tsx, 7, 27)) +>createElement : Symbol(createElement, Decl(test.tsx, 8, 11)) + + return
; +>div : Symbol(unknown) + } +} + diff --git a/tests/baselines/reference/jsxFactoryIdentifierAsParameter.types b/tests/baselines/reference/jsxFactoryIdentifierAsParameter.types new file mode 100644 index 00000000000..d55737d98ae --- /dev/null +++ b/tests/baselines/reference/jsxFactoryIdentifierAsParameter.types @@ -0,0 +1,26 @@ +=== tests/cases/compiler/test.tsx === + +declare module JSX { +>JSX : any + + interface IntrinsicElements { +>IntrinsicElements : IntrinsicElements + + [s: string]: any; +>s : string + } +} + +export class AppComponent { +>AppComponent : AppComponent + + render(createElement) { +>render : (createElement: any) => any +>createElement : any + + return
; +>
: any +>div : any + } +} + diff --git a/tests/baselines/reference/jsxFactoryIdentifierWithAbsentParameter.errors.txt b/tests/baselines/reference/jsxFactoryIdentifierWithAbsentParameter.errors.txt new file mode 100644 index 00000000000..99e039a045f --- /dev/null +++ b/tests/baselines/reference/jsxFactoryIdentifierWithAbsentParameter.errors.txt @@ -0,0 +1,19 @@ +tests/cases/compiler/test.tsx(10,17): error TS2304: Cannot find name 'createElement'. + + +==== tests/cases/compiler/test.tsx (1 errors) ==== + + declare module JSX { + interface IntrinsicElements { + [s: string]: any; + } + } + + export class AppComponent { + render() { + return
; + ~~~ +!!! error TS2304: Cannot find name 'createElement'. + } + } + \ No newline at end of file diff --git a/tests/baselines/reference/jsxFactoryIdentifierWithAbsentParameter.js b/tests/baselines/reference/jsxFactoryIdentifierWithAbsentParameter.js new file mode 100644 index 00000000000..23f6f44e0c7 --- /dev/null +++ b/tests/baselines/reference/jsxFactoryIdentifierWithAbsentParameter.js @@ -0,0 +1,24 @@ +//// [test.tsx] + +declare module JSX { + interface IntrinsicElements { + [s: string]: any; + } +} + +export class AppComponent { + render() { + return
; + } +} + + +//// [test.js] +"use strict"; +class AppComponent { + render() { + return createElement("div", null); + } +} +exports.AppComponent = AppComponent; +//# sourceMappingURL=test.js.map \ No newline at end of file diff --git a/tests/baselines/reference/jsxFactoryIdentifierWithAbsentParameter.js.map b/tests/baselines/reference/jsxFactoryIdentifierWithAbsentParameter.js.map new file mode 100644 index 00000000000..715014ff53f --- /dev/null +++ b/tests/baselines/reference/jsxFactoryIdentifierWithAbsentParameter.js.map @@ -0,0 +1,2 @@ +//// [test.js.map] +{"version":3,"file":"test.js","sourceRoot":"","sources":["test.tsx"],"names":[],"mappings":";AAOA;IACI,MAAM;QACF,MAAM,CAAC,0BAAO,CAAC;IACnB,CAAC;CACJ;AAJD,oCAIC"} \ No newline at end of file diff --git a/tests/baselines/reference/jsxFactoryIdentifierWithAbsentParameter.sourcemap.txt b/tests/baselines/reference/jsxFactoryIdentifierWithAbsentParameter.sourcemap.txt new file mode 100644 index 00000000000..f1ebaf49870 --- /dev/null +++ b/tests/baselines/reference/jsxFactoryIdentifierWithAbsentParameter.sourcemap.txt @@ -0,0 +1,81 @@ +=================================================================== +JsFile: test.js +mapUrl: test.js.map +sourceRoot: +sources: test.tsx +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/test.js +sourceFile:test.tsx +------------------------------------------------------------------- +>>>"use strict"; +>>>class AppComponent { +1 > +2 >^^^^^^^^^^^^^^^-> +1 > + >declare module JSX { + > interface IntrinsicElements { + > [s: string]: any; + > } + >} + > + > +1 >Emitted(2, 1) Source(8, 1) + SourceIndex(0) +--- +>>> render() { +1->^^^^ +2 > ^^^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1->export class AppComponent { + > +2 > render +1->Emitted(3, 5) Source(9, 5) + SourceIndex(0) +2 >Emitted(3, 11) Source(9, 11) + SourceIndex(0) +--- +>>> return createElement("div", null); +1->^^^^^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^ +1->() { + > +2 > return +3 > +4 >
+5 > ; +1->Emitted(4, 9) Source(10, 9) + SourceIndex(0) +2 >Emitted(4, 15) Source(10, 15) + SourceIndex(0) +3 >Emitted(4, 16) Source(10, 16) + SourceIndex(0) +4 >Emitted(4, 42) Source(10, 23) + SourceIndex(0) +5 >Emitted(4, 43) Source(10, 24) + SourceIndex(0) +--- +>>> } +1 >^^^^ +2 > ^ +1 > + > +2 > } +1 >Emitted(5, 5) Source(11, 5) + SourceIndex(0) +2 >Emitted(5, 6) Source(11, 6) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(6, 2) Source(12, 2) + SourceIndex(0) +--- +>>>exports.AppComponent = AppComponent; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 >export class AppComponent { + > render() { + > return
; + > } + >} +1->Emitted(7, 1) Source(8, 1) + SourceIndex(0) +2 >Emitted(7, 37) Source(12, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=test.js.map \ No newline at end of file diff --git a/tests/baselines/reference/jsxFactoryQualifiedNameResolutionError.errors.txt b/tests/baselines/reference/jsxFactoryQualifiedNameResolutionError.errors.txt new file mode 100644 index 00000000000..97a05d840f0 --- /dev/null +++ b/tests/baselines/reference/jsxFactoryQualifiedNameResolutionError.errors.txt @@ -0,0 +1,18 @@ +tests/cases/compiler/test.tsx(10,17): error TS2304: Cannot find name 'MyElement'. + + +==== tests/cases/compiler/test.tsx (1 errors) ==== + + declare module JSX { + interface IntrinsicElements { + [s: string]: any; + } + } + + export class AppComponent { + render(createElement) { + return
; + ~~~ +!!! error TS2304: Cannot find name 'MyElement'. + } + } \ No newline at end of file diff --git a/tests/baselines/reference/jsxFactoryQualifiedNameResolutionError.js b/tests/baselines/reference/jsxFactoryQualifiedNameResolutionError.js new file mode 100644 index 00000000000..6714b68a093 --- /dev/null +++ b/tests/baselines/reference/jsxFactoryQualifiedNameResolutionError.js @@ -0,0 +1,23 @@ +//// [test.tsx] + +declare module JSX { + interface IntrinsicElements { + [s: string]: any; + } +} + +export class AppComponent { + render(createElement) { + return
; + } +} + +//// [test.js] +"use strict"; +class AppComponent { + render(createElement) { + return MyElement.createElement("div", null); + } +} +exports.AppComponent = AppComponent; +//# sourceMappingURL=test.js.map \ No newline at end of file diff --git a/tests/baselines/reference/jsxFactoryQualifiedNameResolutionError.js.map b/tests/baselines/reference/jsxFactoryQualifiedNameResolutionError.js.map new file mode 100644 index 00000000000..ac54c9638cd --- /dev/null +++ b/tests/baselines/reference/jsxFactoryQualifiedNameResolutionError.js.map @@ -0,0 +1,2 @@ +//// [test.js.map] +{"version":3,"file":"test.js","sourceRoot":"","sources":["test.tsx"],"names":[],"mappings":";AAOA;IACI,MAAM,CAAC,aAAa;QAChB,MAAM,CAAC,oCAAO,CAAC;IACnB,CAAC;CACJ;AAJD,oCAIC"} \ No newline at end of file diff --git a/tests/baselines/reference/jsxFactoryQualifiedNameResolutionError.sourcemap.txt b/tests/baselines/reference/jsxFactoryQualifiedNameResolutionError.sourcemap.txt new file mode 100644 index 00000000000..2616efcf63b --- /dev/null +++ b/tests/baselines/reference/jsxFactoryQualifiedNameResolutionError.sourcemap.txt @@ -0,0 +1,87 @@ +=================================================================== +JsFile: test.js +mapUrl: test.js.map +sourceRoot: +sources: test.tsx +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/test.js +sourceFile:test.tsx +------------------------------------------------------------------- +>>>"use strict"; +>>>class AppComponent { +1 > +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >declare module JSX { + > interface IntrinsicElements { + > [s: string]: any; + > } + >} + > + > +1 >Emitted(2, 1) Source(8, 1) + SourceIndex(0) +--- +>>> render(createElement) { +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^^^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1->export class AppComponent { + > +2 > render +3 > ( +4 > createElement +1->Emitted(3, 5) Source(9, 5) + SourceIndex(0) +2 >Emitted(3, 11) Source(9, 11) + SourceIndex(0) +3 >Emitted(3, 12) Source(9, 12) + SourceIndex(0) +4 >Emitted(3, 25) Source(9, 25) + SourceIndex(0) +--- +>>> return MyElement.createElement("div", null); +1->^^^^^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^ +1->) { + > +2 > return +3 > +4 >
+5 > ; +1->Emitted(4, 9) Source(10, 9) + SourceIndex(0) +2 >Emitted(4, 15) Source(10, 15) + SourceIndex(0) +3 >Emitted(4, 16) Source(10, 16) + SourceIndex(0) +4 >Emitted(4, 52) Source(10, 23) + SourceIndex(0) +5 >Emitted(4, 53) Source(10, 24) + SourceIndex(0) +--- +>>> } +1 >^^^^ +2 > ^ +1 > + > +2 > } +1 >Emitted(5, 5) Source(11, 5) + SourceIndex(0) +2 >Emitted(5, 6) Source(11, 6) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(6, 2) Source(12, 2) + SourceIndex(0) +--- +>>>exports.AppComponent = AppComponent; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 >export class AppComponent { + > render(createElement) { + > return
; + > } + >} +1->Emitted(7, 1) Source(8, 1) + SourceIndex(0) +2 >Emitted(7, 37) Source(12, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=test.js.map \ No newline at end of file diff --git a/tests/cases/compiler/jsxFactoryIdentifierAsParameter.ts b/tests/cases/compiler/jsxFactoryIdentifierAsParameter.ts new file mode 100644 index 00000000000..bd92a473428 --- /dev/null +++ b/tests/cases/compiler/jsxFactoryIdentifierAsParameter.ts @@ -0,0 +1,18 @@ +//@jsx: react +//@target: es6 +//@module: commonjs +//@jsxFactory: createElement +//@sourcemap: true + +// @filename: test.tsx +declare module JSX { + interface IntrinsicElements { + [s: string]: any; + } +} + +export class AppComponent { + render(createElement) { + return
; + } +} diff --git a/tests/cases/compiler/jsxFactoryIdentifierWithAbsentParameter.ts b/tests/cases/compiler/jsxFactoryIdentifierWithAbsentParameter.ts new file mode 100644 index 00000000000..49e485a1085 --- /dev/null +++ b/tests/cases/compiler/jsxFactoryIdentifierWithAbsentParameter.ts @@ -0,0 +1,18 @@ +//@jsx: react +//@target: es6 +//@module: commonjs +//@jsxFactory: createElement +//@sourcemap: true + +// @filename: test.tsx +declare module JSX { + interface IntrinsicElements { + [s: string]: any; + } +} + +export class AppComponent { + render() { + return
; + } +} diff --git a/tests/cases/compiler/jsxFactoryQualifiedNameResolutionError.ts b/tests/cases/compiler/jsxFactoryQualifiedNameResolutionError.ts new file mode 100644 index 00000000000..a8996245138 --- /dev/null +++ b/tests/cases/compiler/jsxFactoryQualifiedNameResolutionError.ts @@ -0,0 +1,18 @@ +//@jsx: react +//@target: es6 +//@module: commonjs +//@jsxFactory: MyElement.createElement +//@sourcemap: true + +// @filename: test.tsx +declare module JSX { + interface IntrinsicElements { + [s: string]: any; + } +} + +export class AppComponent { + render(createElement) { + return
; + } +} \ No newline at end of file