@scriptc/compiler 0.0.22 → 0.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/scriptc-node-fallback.d.ts +39 -3
- package/dist/backend/emission/emit-async.js +3 -1
- package/dist/backend/emission/emit-async.js.map +1 -1
- package/dist/backend/emission/emit-exprs.d.ts +10 -0
- package/dist/backend/emission/emit-exprs.js +127 -10
- package/dist/backend/emission/emit-exprs.js.map +1 -1
- package/dist/backend/emission/emit-stmts.js +13 -5
- package/dist/backend/emission/emit-stmts.js.map +1 -1
- package/dist/backend/emission/emit-types.js +4 -1
- package/dist/backend/emission/emit-types.js.map +1 -1
- package/dist/backend/emission/emitter.d.ts +11 -1
- package/dist/backend/emission/emitter.js +61 -1
- package/dist/backend/emission/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.js +304 -21
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/shapes.js +3 -2
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/compat/fetch-profile.d.ts +10 -0
- package/dist/compat/fetch-profile.js +55 -6
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/coverage/surface-manifest.js +16 -1
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +10 -0
- package/dist/diagnostics/diagnostic.js +27 -1
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/frontend/lowering/lower-builtins.d.ts +3 -7
- package/dist/frontend/lowering/lower-builtins.js +80 -55
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +1 -0
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.js +28 -8
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +1 -1
- package/dist/frontend/lowering/lower-exprs.js +25 -4
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +7 -1
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-island.d.ts +21 -0
- package/dist/frontend/lowering/lower-island.js +284 -10
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +8 -4
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +1 -0
- package/dist/frontend/lowering/lowerer.js +6 -2
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/surfaces.js +43 -12
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/program.d.ts +4 -4
- package/dist/frontend/program.js +264 -46
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.d.ts +10 -0
- package/dist/frontend/resolve.js +37 -0
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/ts7/enums.d.ts +9 -0
- package/dist/frontend/ts7/enums.js +8 -6
- package/dist/frontend/ts7/enums.js.map +1 -1
- package/dist/frontend/ts7/program.js +4 -1
- package/dist/frontend/ts7/program.js.map +1 -1
- package/dist/frontend/types.d.ts +4 -4
- package/dist/frontend/types.js +25 -8
- package/dist/frontend/types.js.map +1 -1
- package/dist/ir/nodes.d.ts +24 -11
- package/dist/ir/nodes.js +6 -1
- package/dist/ir/nodes.js.map +1 -1
- package/dist/ir/validate.js +45 -8
- package/dist/ir/validate.js.map +1 -1
- package/package.json +2 -2
- package/surface-manifest.json +137 -28
|
@@ -11,6 +11,15 @@ interface ModuleResolutionKindEnum {
|
|
|
11
11
|
}
|
|
12
12
|
export declare const ModuleResolutionKind: ModuleResolutionKindEnum;
|
|
13
13
|
export type ModuleResolutionKind = number;
|
|
14
|
+
interface ModuleDetectionKindEnum {
|
|
15
|
+
readonly None: number;
|
|
16
|
+
readonly Auto: number;
|
|
17
|
+
readonly Legacy: number;
|
|
18
|
+
readonly Force: number;
|
|
19
|
+
readonly [key: string | number]: string | number;
|
|
20
|
+
}
|
|
21
|
+
export declare const ModuleDetectionKind: ModuleDetectionKindEnum;
|
|
22
|
+
export type ModuleDetectionKind = number;
|
|
14
23
|
/** Reverse-maps a numeric enum value to its TS7 key name ("ESNext",
|
|
15
24
|
* "Bundler") — the spelling tsgo's tsconfig JSON parser accepts (lowercased
|
|
16
25
|
* by the caller where needed). Symbolic by construction: the name comes from
|
|
@@ -8,12 +8,13 @@
|
|
|
8
8
|
* this module.
|
|
9
9
|
*
|
|
10
10
|
* Placement in 7.0.2 (probed): the AST-world enums ship from unstable/ast,
|
|
11
|
-
* the checker-world enums from unstable/sync. ModuleResolutionKind
|
|
12
|
-
* census
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
11
|
+
* the checker-world enums from unstable/sync. ModuleResolutionKind and
|
|
12
|
+
* ModuleDetectionKind are the census/options enums the package does not
|
|
13
|
+
* re-export from any public entry point — they live in dist/enums (the
|
|
14
|
+
* #enums/* internal imports), which the exports map hides from bare-
|
|
15
|
+
* specifier imports but NOT from a direct file require; loadHiddenEnum
|
|
16
|
+
* resolves the package root and requires the enum module by path, so the
|
|
17
|
+
* values are still TypeScript 7's own, never copied numbers. */
|
|
17
18
|
import { createRequire } from "node:module";
|
|
18
19
|
import { dirname, join } from "node:path";
|
|
19
20
|
export { InternalSymbolName, ModifierFlags, NodeFlags, ScriptKind, ScriptTarget, SyntaxKind, TokenFlags, } from "typescript/unstable/ast";
|
|
@@ -32,6 +33,7 @@ function loadHiddenEnum(basename, key) {
|
|
|
32
33
|
return value;
|
|
33
34
|
}
|
|
34
35
|
export const ModuleResolutionKind = loadHiddenEnum("moduleResolutionKind", "ModuleResolutionKind");
|
|
36
|
+
export const ModuleDetectionKind = loadHiddenEnum("moduleDetectionKind", "ModuleDetectionKind");
|
|
35
37
|
/** Reverse-maps a numeric enum value to its TS7 key name ("ESNext",
|
|
36
38
|
* "Bundler") — the spelling tsgo's tsconfig JSON parser accepts (lowercased
|
|
37
39
|
* by the caller where needed). Symbolic by construction: the name comes from
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/frontend/ts7/enums.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/frontend/ts7/enums.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;gEAgBgE;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,UAAU,EACV,YAAY,EACZ,UAAU,EACV,UAAU,GACX,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,aAAa,EACb,WAAW,EACX,SAAS,EACT,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAElC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C;;;qCAGqC;AACrC,SAAS,cAAc,CAAI,QAAgB,EAAE,GAAW;IACtD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAsB,CAAC;IAC/F,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,kBAAkB,GAAG,EAAE,CAAC,CAAC;IACpG,OAAO,KAAK,CAAC;AACf,CAAC;AAiBD,MAAM,CAAC,MAAM,oBAAoB,GAC/B,cAAc,CAA2B,sBAAsB,EAAE,sBAAsB,CAAC,CAAC;AAW3F,MAAM,CAAC,MAAM,mBAAmB,GAC9B,cAAc,CAA0B,qBAAqB,EAAE,qBAAqB,CAAC,CAAC;AAGxF;;;4CAG4C;AAC5C,MAAM,UAAU,SAAS,CAAC,UAAoD,EAAE,KAAa;IAC3F,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC"}
|
|
@@ -18,7 +18,7 @@ import { existsSync, readFileSync, statSync, writeFileSync } from "node:fs";
|
|
|
18
18
|
import { dirname, join, resolve } from "node:path";
|
|
19
19
|
import { API } from "typescript/unstable/sync";
|
|
20
20
|
import { CheckerFacade } from "./checker.js";
|
|
21
|
-
import { enumKeyOf, ModuleKind, ModuleResolutionKind, ScriptTarget } from "./enums.js";
|
|
21
|
+
import { enumKeyOf, ModuleDetectionKind, ModuleKind, ModuleResolutionKind, ScriptTarget } from "./enums.js";
|
|
22
22
|
import { tsgoPath } from "../shared.js";
|
|
23
23
|
/* tsconfig JSON wants enum NAMES; the options object carries TS7's numeric
|
|
24
24
|
* enum values. The names come from the enum objects' own reverse mappings —
|
|
@@ -47,6 +47,9 @@ function serializeOptions(options) {
|
|
|
47
47
|
case "moduleResolution":
|
|
48
48
|
out[key] = enumKeyOf(ModuleResolutionKind, value)?.toLowerCase() ?? value;
|
|
49
49
|
break;
|
|
50
|
+
case "moduleDetection":
|
|
51
|
+
out[key] = enumKeyOf(ModuleDetectionKind, value)?.toLowerCase() ?? value;
|
|
52
|
+
break;
|
|
50
53
|
case "lib":
|
|
51
54
|
// 5.9.3 spells lib entries "lib.es2025.d.ts"; tsconfig wants "es2025".
|
|
52
55
|
out[key] = value.map((lib) => lib.startsWith("lib.") && lib.endsWith(".d.ts") ? lib.slice(4, -5) : lib);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../../src/frontend/ts7/program.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;iDAeiD;AAEjD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAQ/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../../src/frontend/ts7/program.ts"],"names":[],"mappings":"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"}
|
package/dist/frontend/types.d.ts
CHANGED
|
@@ -4,13 +4,13 @@ import { typeKey } from "../ir/nodes.js";
|
|
|
4
4
|
export { typeKey };
|
|
5
5
|
/** The ambient TYPE names of the fetch slice. Under --dynamic their
|
|
6
6
|
* values live in the embedded engine and map to island handles (jsval).
|
|
7
|
-
* Static fetch gives Response, RequestInit, AbortSignal, response
|
|
7
|
+
* Static fetch gives Response, RequestInit, AbortController/AbortSignal, response
|
|
8
8
|
* Headers, and the readable Web Streams slice native checked-dynamic
|
|
9
9
|
* handle representations. The Headers constructor itself remains
|
|
10
10
|
* dynamic-only even though response.headers is native.
|
|
11
11
|
* Declaration provenance is checked in mapType so user types with the
|
|
12
12
|
* same names keep their ordinary structural representation. */
|
|
13
|
-
export declare const ISLAND_AMBIENT_TYPES: readonly ["Response", "RequestInit", "Event", "EventTarget", "AbortSignal", "Headers", "ReadableStream", "ReadableStreamDefaultReader", "ReadableStreamDefaultController", "ReadableStreamReadResult", "ReadableStreamReadValueResult", "ReadableStreamReadDoneResult"];
|
|
13
|
+
export declare const ISLAND_AMBIENT_TYPES: readonly ["Response", "ResponseInit", "RequestInit", "Event", "EventTarget", "AbortController", "AbortSignal", "Headers", "ReadableStream", "ReadableStreamDefaultReader", "ReadableStreamDefaultController", "ReadableStreamReadResult", "ReadableStreamReadValueResult", "ReadableStreamReadDoneResult"];
|
|
14
14
|
/** The frontend's record-shape interner. Records are monomorphic structural
|
|
15
15
|
* shapes: fields sorted by name form the canonical identity, and two types
|
|
16
16
|
* with the same canonical field list share one shapeId (and later one C
|
|
@@ -279,7 +279,7 @@ export declare function unitOnlyUnion(unions: UnionRegistry): IrType;
|
|
|
279
279
|
* `.return()`, `.throw()`, the for-of desugar, and mapType's
|
|
280
280
|
* IteratorResult alias mapping all intern through here, so reads agree.
|
|
281
281
|
* Null when the combined union would be illegal (a func/set arm beside
|
|
282
|
-
* data arms, a map/regex arm — kinds with no narrowing test): such
|
|
282
|
+
* data arms, a map/regex/Date arm — kinds with no narrowing test): such
|
|
283
283
|
* generators stay unmapped. */
|
|
284
284
|
export declare function genResultRecord(yieldT: IrType, retT: IrType, shapes: ShapeRegistry, unions: UnionRegistry): (IrType & {
|
|
285
285
|
kind: "record";
|
|
@@ -293,7 +293,7 @@ export declare function genResultRecord(yieldT: IrType, retT: IrType, shapes: Sh
|
|
|
293
293
|
export declare function isUnitOnlyTsType(t: ts.Type): boolean;
|
|
294
294
|
/** IR-level `t | undefined`, canonicalized and fenced exactly like the
|
|
295
295
|
* ts-union branch of mapType (typeKey-sorted arms, deduplicated; map/
|
|
296
|
-
* regex/dyn/void arms unrepresentable; a func arm IS representable — the
|
|
296
|
+
* regex/Date/dyn/void arms unrepresentable; a func arm IS representable — the
|
|
297
297
|
* result is exactly the nullable-callback shape mapType's union branch
|
|
298
298
|
* admits, `(() => void) | undefined`) so the interned union is IDENTICAL
|
|
299
299
|
* to what mapping the checker's own `T | undefined` produces. */
|
package/dist/frontend/types.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as ts from "./ts7/adapter.js";
|
|
2
|
-
import { arrayOf, BOOL, bytesOf, canConvertToDyn, CHILD_T, DYN, F64, funcOf, isSupportedIndexValue, isSupportedMapKey, isSupportedMapValue, isSupportedSetElem, isUnitType, JSVAL, mapOf, NULL_T, PROCSTREAM_T, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, setOf, STRING, SYMBOL_T, typeEquals, typeKey, UNDEFINED_T, VOID } from "../ir/nodes.js";
|
|
2
|
+
import { arrayOf, BOOL, bytesOf, canConvertToDyn, CHILD_T, DATE_T, DYN, F64, funcOf, isSupportedIndexValue, isSupportedMapKey, isSupportedMapValue, isSupportedSetElem, isUnitType, JSVAL, mapOf, NULL_T, PROCSTREAM_T, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES, setOf, STRING, SYMBOL_T, typeEquals, typeKey, UNDEFINED_T, VOID } from "../ir/nodes.js";
|
|
3
3
|
import { isJsSourceFile, isNodeTypesPath } from "./program.js";
|
|
4
4
|
import { accessorSlotProp } from "../ir/nodes.js";
|
|
5
5
|
// typeKey moved to ir/nodes.ts (the backend needs it too, for per-type
|
|
@@ -8,7 +8,7 @@ import { accessorSlotProp } from "../ir/nodes.js";
|
|
|
8
8
|
export { typeKey };
|
|
9
9
|
/** The ambient TYPE names of the fetch slice. Under --dynamic their
|
|
10
10
|
* values live in the embedded engine and map to island handles (jsval).
|
|
11
|
-
* Static fetch gives Response, RequestInit, AbortSignal, response
|
|
11
|
+
* Static fetch gives Response, RequestInit, AbortController/AbortSignal, response
|
|
12
12
|
* Headers, and the readable Web Streams slice native checked-dynamic
|
|
13
13
|
* handle representations. The Headers constructor itself remains
|
|
14
14
|
* dynamic-only even though response.headers is native.
|
|
@@ -16,9 +16,11 @@ export { typeKey };
|
|
|
16
16
|
* same names keep their ordinary structural representation. */
|
|
17
17
|
export const ISLAND_AMBIENT_TYPES = [
|
|
18
18
|
"Response",
|
|
19
|
+
"ResponseInit",
|
|
19
20
|
"RequestInit",
|
|
20
21
|
"Event",
|
|
21
22
|
"EventTarget",
|
|
23
|
+
"AbortController",
|
|
22
24
|
"AbortSignal",
|
|
23
25
|
"Headers",
|
|
24
26
|
"ReadableStream",
|
|
@@ -330,6 +332,8 @@ export function formatIrType(t, shapes, unions, seen = new Set()) {
|
|
|
330
332
|
return "any";
|
|
331
333
|
case "regex":
|
|
332
334
|
return "RegExp";
|
|
335
|
+
case "date":
|
|
336
|
+
return "Date";
|
|
333
337
|
case "url":
|
|
334
338
|
return "URL";
|
|
335
339
|
case "searchParams":
|
|
@@ -784,7 +788,9 @@ function mapTypeInner(type, ctx) {
|
|
|
784
788
|
// declarations intern one immortal closure, and inner closures are
|
|
785
789
|
// allocated once at their definition's evaluation and flow by
|
|
786
790
|
// reference, exactly JS's function identity. map/set/regex/url/dyn and
|
|
787
|
-
// the other opaque
|
|
791
|
+
// Date (scalar-backed but identity-bearing in JS) and the other opaque
|
|
792
|
+
// handles stay unsupported as array elements; ordinary Date locals,
|
|
793
|
+
// params, fixed record/tuple fields, and promise payloads are supported.
|
|
788
794
|
if (checker.isArrayType(widened)) {
|
|
789
795
|
const elemTs = checker.getTypeArguments(widened)[0];
|
|
790
796
|
if (!elemTs)
|
|
@@ -814,6 +820,7 @@ function mapTypeInner(type, ctx) {
|
|
|
814
820
|
// JS object identity for RegExp values.
|
|
815
821
|
if (!elem ||
|
|
816
822
|
elem.kind === "void" ||
|
|
823
|
+
elem.kind === "date" ||
|
|
817
824
|
elem.kind === "map" ||
|
|
818
825
|
elem.kind === "set" ||
|
|
819
826
|
elem.kind === "url" ||
|
|
@@ -1285,6 +1292,12 @@ function mapTypeInner(type, ctx) {
|
|
|
1285
1292
|
return null;
|
|
1286
1293
|
return setOf(elem);
|
|
1287
1294
|
}
|
|
1295
|
+
// Date: a TimeClip'd epoch-millisecond scalar in the static runtime.
|
|
1296
|
+
// This supports stored/passed values and the read-only getter slice;
|
|
1297
|
+
// identity and mutation stay fenced because the scalar deliberately
|
|
1298
|
+
// carries no object identity.
|
|
1299
|
+
if (isStdlibInterface("Date"))
|
|
1300
|
+
return DATE_T;
|
|
1288
1301
|
// RegExp: a reference to the lib RegExp interface — provenance, not the
|
|
1289
1302
|
// name (a user's own `interface RegExp` maps as a record). Regex values
|
|
1290
1303
|
// are literals interned as immortal statics; the kind is fenced out of
|
|
@@ -2152,7 +2165,7 @@ function mapTypeInner(type, ctx) {
|
|
|
2152
2165
|
// arms map: `x instanceof RegExp` is their narrowing test
|
|
2153
2166
|
// (the skip-utility `string | RegExp` shape), and the arm
|
|
2154
2167
|
// rides the ref machinery like array regex elements.
|
|
2155
|
-
a.kind === "map" || a.kind === "set" || a.kind === "dyn" ||
|
|
2168
|
+
a.kind === "map" || a.kind === "set" || a.kind === "date" || a.kind === "dyn" ||
|
|
2156
2169
|
// Generator arms follow the map/set rule: no narrowing test.
|
|
2157
2170
|
a.kind === "generator" ||
|
|
2158
2171
|
// Func arms map beside ANY sibling: `typeof x === "function"`
|
|
@@ -2476,7 +2489,7 @@ export function unitOnlyUnion(unions) {
|
|
|
2476
2489
|
* `.return()`, `.throw()`, the for-of desugar, and mapType's
|
|
2477
2490
|
* IteratorResult alias mapping all intern through here, so reads agree.
|
|
2478
2491
|
* Null when the combined union would be illegal (a func/set arm beside
|
|
2479
|
-
* data arms, a map/regex arm — kinds with no narrowing test): such
|
|
2492
|
+
* data arms, a map/regex/Date arm — kinds with no narrowing test): such
|
|
2480
2493
|
* generators stay unmapped. */
|
|
2481
2494
|
export function genResultRecord(yieldT, retT, shapes, unions) {
|
|
2482
2495
|
let valueT;
|
|
@@ -2493,7 +2506,8 @@ export function genResultRecord(yieldT, retT, shapes, unions) {
|
|
|
2493
2506
|
byKey.set(typeKey(a), a);
|
|
2494
2507
|
return true;
|
|
2495
2508
|
}
|
|
2496
|
-
if (t.kind === "map" || t.kind === "regex" || t.kind === "
|
|
2509
|
+
if (t.kind === "map" || t.kind === "regex" || t.kind === "date" ||
|
|
2510
|
+
t.kind === "jsval" || t.kind === "generator") {
|
|
2497
2511
|
return false; // no legal union arm exists for these kinds
|
|
2498
2512
|
}
|
|
2499
2513
|
byKey.set(typeKey(t), t);
|
|
@@ -2539,7 +2553,7 @@ export function isUnitOnlyTsType(t) {
|
|
|
2539
2553
|
}
|
|
2540
2554
|
/** IR-level `t | undefined`, canonicalized and fenced exactly like the
|
|
2541
2555
|
* ts-union branch of mapType (typeKey-sorted arms, deduplicated; map/
|
|
2542
|
-
* regex/dyn/void arms unrepresentable; a func arm IS representable — the
|
|
2556
|
+
* regex/Date/dyn/void arms unrepresentable; a func arm IS representable — the
|
|
2543
2557
|
* result is exactly the nullable-callback shape mapType's union branch
|
|
2544
2558
|
* admits, `(() => void) | undefined`) so the interned union is IDENTICAL
|
|
2545
2559
|
* to what mapping the checker's own `T | undefined` produces. */
|
|
@@ -2548,13 +2562,15 @@ export function withUndefinedArm(t, unions) {
|
|
|
2548
2562
|
const def = unions.get(t.unionId);
|
|
2549
2563
|
if (!def)
|
|
2550
2564
|
return null;
|
|
2565
|
+
if (def.arms.some((a) => a.kind === "date"))
|
|
2566
|
+
return null;
|
|
2551
2567
|
if (def.arms.some((a) => a.kind === "undefinedT"))
|
|
2552
2568
|
return t;
|
|
2553
2569
|
const arms = [...def.arms, UNDEFINED_T];
|
|
2554
2570
|
arms.sort((a, b) => (typeKey(a) < typeKey(b) ? -1 : 1));
|
|
2555
2571
|
return { kind: "union", unionId: unions.intern(arms) };
|
|
2556
2572
|
}
|
|
2557
|
-
if (t.kind === "void" || t.kind === "map" || t.kind === "dyn" ||
|
|
2573
|
+
if (t.kind === "void" || t.kind === "map" || t.kind === "date" || t.kind === "dyn" ||
|
|
2558
2574
|
// A bare unit field type cannot occur (units live only inside unions),
|
|
2559
2575
|
// but guard against constructing a single-arm union from one.
|
|
2560
2576
|
isUnitType(t)) {
|
|
@@ -3075,6 +3091,7 @@ function armHasUnionHome(arm, siblingCount) {
|
|
|
3075
3091
|
case "map":
|
|
3076
3092
|
case "set":
|
|
3077
3093
|
case "regex":
|
|
3094
|
+
case "date":
|
|
3078
3095
|
case "generator":
|
|
3079
3096
|
case "dyn":
|
|
3080
3097
|
return false;
|