From d61ffe1db677f08a408a50fde3e495aa33e6a6bd Mon Sep 17 00:00:00 2001 From: eps1lon Date: Sat, 15 Apr 2023 10:22:05 +0200 Subject: [PATCH 1/4] [test] Intrinsics with colon no longer type-checked --- .../reference/jsxElementType.errors.txt | 12 +++++++- tests/baselines/reference/jsxElementType.js | 13 ++++++++- .../reference/jsxElementType.symbols | 28 +++++++++++++++++-- .../baselines/reference/jsxElementType.types | 21 ++++++++++++++ tests/cases/compiler/jsxElementType.tsx | 11 ++++++++ 5 files changed, 80 insertions(+), 5 deletions(-) diff --git a/tests/baselines/reference/jsxElementType.errors.txt b/tests/baselines/reference/jsxElementType.errors.txt index ddd2efe19cce7..46e95b1265e70 100644 --- a/tests/baselines/reference/jsxElementType.errors.txt +++ b/tests/baselines/reference/jsxElementType.errors.txt @@ -197,4 +197,14 @@ tests/cases/compiler/jsxElementType.tsx(99,2): error TS2304: Cannot find name 'U ; ~~~~~~~~~~ !!! error TS2304: Cannot find name 'Unresolved'. - \ No newline at end of file + + // regression test for intrinsic containing `:` + declare global { + namespace JSX { + interface IntrinsicElements { + ['fbt:enum']: { knownProp: string }; + } + } + } + + ; \ No newline at end of file diff --git a/tests/baselines/reference/jsxElementType.js b/tests/baselines/reference/jsxElementType.js index 13986b0c62e90..076930f5cbcd9 100644 --- a/tests/baselines/reference/jsxElementType.js +++ b/tests/baselines/reference/jsxElementType.js @@ -98,7 +98,17 @@ function f1 React.ReactElement>(Component: T) { ; ; - + +// regression test for intrinsic containing `:` +declare global { + namespace JSX { + interface IntrinsicElements { + ['fbt:enum']: { knownProp: string }; + } + } +} + +; //// [jsxElementType.js] "use strict"; @@ -231,3 +241,4 @@ function f1(Component) { } React.createElement(Unresolved, null); React.createElement(Unresolved, { foo: "abc" }); +React.createElement("fbt:enum", { knownProp: "accepted", unknownProp: "rejected" }); diff --git a/tests/baselines/reference/jsxElementType.symbols b/tests/baselines/reference/jsxElementType.symbols index c932009d84a1f..8aa9e262898ed 100644 --- a/tests/baselines/reference/jsxElementType.symbols +++ b/tests/baselines/reference/jsxElementType.symbols @@ -49,17 +49,17 @@ type NewReactJSXElementConstructor

= >P : Symbol(P, Decl(jsxElementType.tsx, 16, 35)) declare global { ->global : Symbol(global, Decl(jsxElementType.tsx, 18, 48)) +>global : Symbol(global, Decl(jsxElementType.tsx, 18, 48), Decl(jsxElementType.tsx, 98, 25)) namespace JSX { ->JSX : Symbol(JSX, Decl(react16.d.ts, 2493, 12), Decl(jsxElementType.tsx, 20, 16)) +>JSX : Symbol(JSX, Decl(react16.d.ts, 2493, 12), Decl(jsxElementType.tsx, 20, 16), Decl(jsxElementType.tsx, 101, 16)) type ElementType = string | NewReactJSXElementConstructor; >ElementType : Symbol(ElementType, Decl(jsxElementType.tsx, 21, 17)) >NewReactJSXElementConstructor : Symbol(NewReactJSXElementConstructor, Decl(jsxElementType.tsx, 13, 30)) interface IntrinsicElements { ->IntrinsicElements : Symbol(IntrinsicElements, Decl(react16.d.ts, 2514, 86), Decl(jsxElementType.tsx, 22, 67)) +>IntrinsicElements : Symbol(IntrinsicElements, Decl(react16.d.ts, 2514, 86), Decl(jsxElementType.tsx, 22, 67), Decl(jsxElementType.tsx, 102, 17)) ['my-custom-element']: React.DOMAttributes; >['my-custom-element'] : Symbol(IntrinsicElements['my-custom-element'], Decl(jsxElementType.tsx, 23, 33)) @@ -272,3 +272,25 @@ function f1 React.ReactElement>(Component: T) { ; >foo : Symbol(foo, Decl(jsxElementType.tsx, 98, 11)) +// regression test for intrinsic containing `:` +declare global { +>global : Symbol(global, Decl(jsxElementType.tsx, 18, 48), Decl(jsxElementType.tsx, 98, 25)) + + namespace JSX { +>JSX : Symbol(JSX, Decl(react16.d.ts, 2493, 12), Decl(jsxElementType.tsx, 20, 16), Decl(jsxElementType.tsx, 101, 16)) + + interface IntrinsicElements { +>IntrinsicElements : Symbol(IntrinsicElements, Decl(react16.d.ts, 2514, 86), Decl(jsxElementType.tsx, 22, 67), Decl(jsxElementType.tsx, 102, 17)) + + ['fbt:enum']: { knownProp: string }; +>['fbt:enum'] : Symbol(IntrinsicElements['fbt:enum'], Decl(jsxElementType.tsx, 103, 33)) +>'fbt:enum' : Symbol(IntrinsicElements['fbt:enum'], Decl(jsxElementType.tsx, 103, 33)) +>knownProp : Symbol(knownProp, Decl(jsxElementType.tsx, 104, 21)) + } + } +} + +; +>knownProp : Symbol(knownProp, Decl(jsxElementType.tsx, 109, 9)) +>unknownProp : Symbol(unknownProp, Decl(jsxElementType.tsx, 109, 30)) + diff --git a/tests/baselines/reference/jsxElementType.types b/tests/baselines/reference/jsxElementType.types index 4e9a5a9a8ccb6..e9bf40a419934 100644 --- a/tests/baselines/reference/jsxElementType.types +++ b/tests/baselines/reference/jsxElementType.types @@ -290,3 +290,24 @@ function f1 React.ReactElement>(Component: T) { >Unresolved : any >foo : string +// regression test for intrinsic containing `:` +declare global { +>global : any + + namespace JSX { + interface IntrinsicElements { + ['fbt:enum']: { knownProp: string }; +>['fbt:enum'] : { knownProp: string; } +>'fbt:enum' : "fbt:enum" +>knownProp : string + } + } +} + +; +> : JSX.Element +>fbt : any +>enum : any +>knownProp : string +>unknownProp : string + diff --git a/tests/cases/compiler/jsxElementType.tsx b/tests/cases/compiler/jsxElementType.tsx index 75585a2d99a43..c6e0278e079ea 100644 --- a/tests/cases/compiler/jsxElementType.tsx +++ b/tests/cases/compiler/jsxElementType.tsx @@ -99,3 +99,14 @@ function f1 React.ReactElement>(Component: T) { ; ; + +// regression test for intrinsic containing `:` +declare global { + namespace JSX { + interface IntrinsicElements { + ['fbt:enum']: { knownProp: string }; + } + } +} + +; \ No newline at end of file From 3f8107735cc5d7bc69c092a8f2d962e522f9241b Mon Sep 17 00:00:00 2001 From: eps1lon Date: Sat, 15 Apr 2023 10:30:04 +0200 Subject: [PATCH 2/4] f --- tests/cases/compiler/jsxElementType.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/cases/compiler/jsxElementType.tsx b/tests/cases/compiler/jsxElementType.tsx index c6e0278e079ea..da81a65eb3698 100644 --- a/tests/cases/compiler/jsxElementType.tsx +++ b/tests/cases/compiler/jsxElementType.tsx @@ -109,4 +109,4 @@ declare global { } } -; \ No newline at end of file +; From a4e76fd95653164251e0f0afdb79c0e21ac9d833 Mon Sep 17 00:00:00 2001 From: eps1lon Date: Sat, 15 Apr 2023 10:33:19 +0200 Subject: [PATCH 3/4] f --- tests/baselines/reference/jsxElementType.errors.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/baselines/reference/jsxElementType.errors.txt b/tests/baselines/reference/jsxElementType.errors.txt index 46e95b1265e70..7d18352e01ff5 100644 --- a/tests/baselines/reference/jsxElementType.errors.txt +++ b/tests/baselines/reference/jsxElementType.errors.txt @@ -207,4 +207,5 @@ tests/cases/compiler/jsxElementType.tsx(99,2): error TS2304: Cannot find name 'U } } - ; \ No newline at end of file + ; + \ No newline at end of file From 9e4bfaf3a7e6435b1aadaa0fdb0632ccb574dfa6 Mon Sep 17 00:00:00 2001 From: eps1lon Date: Sat, 15 Apr 2023 10:33:27 +0200 Subject: [PATCH 4/4] f --- tests/baselines/reference/jsxElementType.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/baselines/reference/jsxElementType.js b/tests/baselines/reference/jsxElementType.js index 076930f5cbcd9..2ec2559762e3f 100644 --- a/tests/baselines/reference/jsxElementType.js +++ b/tests/baselines/reference/jsxElementType.js @@ -108,7 +108,8 @@ declare global { } } -; +; + //// [jsxElementType.js] "use strict";