From 9475bf7d9e811f0dd05e91f28f321b90a4b3d3a2 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Wed, 3 Apr 2019 11:19:23 -0700 Subject: [PATCH 1/2] Fall back from globalReadonlyArrayType to globalArrayType when transpiling --- src/compiler/checker.ts | 2 +- src/testRunner/unittests/services/transpile.ts | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index b9e5bcaeddf..3eff7a33747 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -30307,7 +30307,7 @@ namespace ts { autoArrayType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); } - globalReadonlyArrayType = getGlobalTypeOrUndefined("ReadonlyArray" as __String, /*arity*/ 1); + globalReadonlyArrayType = getGlobalTypeOrUndefined("ReadonlyArray" as __String, /*arity*/ 1) || globalArrayType; anyReadonlyArrayType = globalReadonlyArrayType ? createTypeFromGenericGlobalType(globalReadonlyArrayType, [anyType]) : anyArrayType; globalThisType = getGlobalTypeOrUndefined("ThisType" as __String, /*arity*/ 1); diff --git a/src/testRunner/unittests/services/transpile.ts b/src/testRunner/unittests/services/transpile.ts index d197d6db621..8429179ffa3 100644 --- a/src/testRunner/unittests/services/transpile.ts +++ b/src/testRunner/unittests/services/transpile.ts @@ -445,5 +445,13 @@ var x = 0;`, { } } }); + + transpilesCorrectly("Supports readonly keyword for arrays", "let x: readonly string[];", { + options: { compilerOptions: { module: ModuleKind.CommonJS } } + }); + + transpilesCorrectly("Supports 'as const' arrays", `([] as const).forEach(k => console.log(k));`, { + options: { compilerOptions: { module: ModuleKind.CommonJS } } + }); }); } From 6c4b5ef8f2f3f8f3d49f9879a8ad4e9b95eed29d Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Wed, 3 Apr 2019 11:19:40 -0700 Subject: [PATCH 2/2] Add new baselines --- tests/baselines/reference/transpile/Supports as const arrays.js | 2 ++ .../transpile/Supports as const arrays.oldTranspile.js | 2 ++ .../reference/transpile/Supports readonly keyword for arrays.js | 2 ++ .../Supports readonly keyword for arrays.oldTranspile.js | 2 ++ 4 files changed, 8 insertions(+) create mode 100644 tests/baselines/reference/transpile/Supports as const arrays.js create mode 100644 tests/baselines/reference/transpile/Supports as const arrays.oldTranspile.js create mode 100644 tests/baselines/reference/transpile/Supports readonly keyword for arrays.js create mode 100644 tests/baselines/reference/transpile/Supports readonly keyword for arrays.oldTranspile.js diff --git a/tests/baselines/reference/transpile/Supports as const arrays.js b/tests/baselines/reference/transpile/Supports as const arrays.js new file mode 100644 index 00000000000..aec83eb5ae5 --- /dev/null +++ b/tests/baselines/reference/transpile/Supports as const arrays.js @@ -0,0 +1,2 @@ +[].forEach(function (k) { return console.log(k); }); +//# sourceMappingURL=file.js.map \ No newline at end of file diff --git a/tests/baselines/reference/transpile/Supports as const arrays.oldTranspile.js b/tests/baselines/reference/transpile/Supports as const arrays.oldTranspile.js new file mode 100644 index 00000000000..aec83eb5ae5 --- /dev/null +++ b/tests/baselines/reference/transpile/Supports as const arrays.oldTranspile.js @@ -0,0 +1,2 @@ +[].forEach(function (k) { return console.log(k); }); +//# sourceMappingURL=file.js.map \ No newline at end of file diff --git a/tests/baselines/reference/transpile/Supports readonly keyword for arrays.js b/tests/baselines/reference/transpile/Supports readonly keyword for arrays.js new file mode 100644 index 00000000000..50fa840c62e --- /dev/null +++ b/tests/baselines/reference/transpile/Supports readonly keyword for arrays.js @@ -0,0 +1,2 @@ +var x; +//# sourceMappingURL=file.js.map \ No newline at end of file diff --git a/tests/baselines/reference/transpile/Supports readonly keyword for arrays.oldTranspile.js b/tests/baselines/reference/transpile/Supports readonly keyword for arrays.oldTranspile.js new file mode 100644 index 00000000000..50fa840c62e --- /dev/null +++ b/tests/baselines/reference/transpile/Supports readonly keyword for arrays.oldTranspile.js @@ -0,0 +1,2 @@ +var x; +//# sourceMappingURL=file.js.map \ No newline at end of file