@tsonic/emitter 0.0.77 → 0.0.78
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/dist/.tsbuildinfo +1 -1
- package/dist/array.test.js +5 -1
- package/dist/array.test.js.map +1 -1
- package/dist/core/module-emitter-cases/static-containers.test.js +2 -1
- package/dist/core/module-emitter-cases/static-containers.test.js.map +1 -1
- package/dist/core/semantic/array-expected-types.js +1 -1
- package/dist/core/semantic/array-expected-types.js.map +1 -1
- package/dist/core/semantic/assignment-flow.d.ts.map +1 -1
- package/dist/core/semantic/assignment-flow.js +2 -1
- package/dist/core/semantic/assignment-flow.js.map +1 -1
- package/dist/core/semantic/direct-value-surfaces.js +2 -1
- package/dist/core/semantic/direct-value-surfaces.js.map +1 -1
- package/dist/core/semantic/instanceof-predicate-refinements.js +1 -1
- package/dist/core/semantic/instanceof-predicate-refinements.js.map +1 -1
- package/dist/core/semantic/mutable-storage-helpers.d.ts.map +1 -1
- package/dist/core/semantic/mutable-storage-helpers.js +3 -2
- package/dist/core/semantic/mutable-storage-helpers.js.map +1 -1
- package/dist/core/semantic/narrowed-expression-types.js +1 -1
- package/dist/core/semantic/narrowed-expression-types.js.map +1 -1
- package/dist/core/semantic/narrowed-union-resolution.js +1 -1
- package/dist/core/semantic/narrowed-union-resolution.js.map +1 -1
- package/dist/core/semantic/nullable-typeof-refinements.d.ts.map +1 -1
- package/dist/core/semantic/nullable-typeof-refinements.js +8 -31
- package/dist/core/semantic/nullable-typeof-refinements.js.map +1 -1
- package/dist/core/semantic/runtime-union-frame.d.ts +6 -0
- package/dist/core/semantic/runtime-union-frame.d.ts.map +1 -0
- package/dist/core/semantic/runtime-union-frame.js +130 -0
- package/dist/core/semantic/runtime-union-frame.js.map +1 -0
- package/dist/core/semantic/runtime-unions.d.ts +3 -4
- package/dist/core/semantic/runtime-unions.d.ts.map +1 -1
- package/dist/core/semantic/runtime-unions.js +4 -129
- package/dist/core/semantic/runtime-unions.js.map +1 -1
- package/dist/core/semantic/semantic-union-members.js +1 -1
- package/dist/core/semantic/semantic-union-members.js.map +1 -1
- package/dist/core/semantic/storage-types.d.ts +3 -0
- package/dist/core/semantic/storage-types.d.ts.map +1 -1
- package/dist/core/semantic/storage-types.js +13 -2
- package/dist/core/semantic/storage-types.js.map +1 -1
- package/dist/core/semantic/surface-member-semantics.d.ts +14 -0
- package/dist/core/semantic/surface-member-semantics.d.ts.map +1 -0
- package/dist/core/semantic/surface-member-semantics.js +41 -0
- package/dist/core/semantic/surface-member-semantics.js.map +1 -0
- package/dist/core/semantic/ternary-guards.d.ts +1 -1
- package/dist/core/semantic/ternary-guards.d.ts.map +1 -1
- package/dist/core/semantic/ternary-guards.js +2 -1
- package/dist/core/semantic/ternary-guards.js.map +1 -1
- package/dist/core/semantic/typeof-comparison.d.ts +14 -0
- package/dist/core/semantic/typeof-comparison.d.ts.map +1 -0
- package/dist/core/semantic/typeof-comparison.js +47 -0
- package/dist/core/semantic/typeof-comparison.js.map +1 -0
- package/dist/core/semantic/union-semantics.js +1 -1
- package/dist/core/semantic/union-semantics.js.map +1 -1
- package/dist/emitter-types/context.d.ts.map +1 -1
- package/dist/emitter-types/context.js +1 -0
- package/dist/emitter-types/context.js.map +1 -1
- package/dist/expressions/access-binding.d.ts.map +1 -1
- package/dist/expressions/access-binding.js +18 -32
- package/dist/expressions/access-binding.js.map +1 -1
- package/dist/expressions/access-computed.d.ts.map +1 -1
- package/dist/expressions/access-computed.js +3 -7
- package/dist/expressions/access-computed.js.map +1 -1
- package/dist/expressions/access-function-length.d.ts +13 -0
- package/dist/expressions/access-function-length.d.ts.map +1 -0
- package/dist/expressions/access-function-length.js +115 -0
- package/dist/expressions/access-function-length.js.map +1 -0
- package/dist/expressions/access-length.d.ts +2 -4
- package/dist/expressions/access-length.d.ts.map +1 -1
- package/dist/expressions/access-length.js +7 -23
- package/dist/expressions/access-length.js.map +1 -1
- package/dist/expressions/access-length.test.js +17 -0
- package/dist/expressions/access-length.test.js.map +1 -1
- package/dist/expressions/access-resolution-receivers.d.ts.map +1 -1
- package/dist/expressions/access-resolution-receivers.js +10 -12
- package/dist/expressions/access-resolution-receivers.js.map +1 -1
- package/dist/expressions/access.d.ts.map +1 -1
- package/dist/expressions/access.js +7 -19
- package/dist/expressions/access.js.map +1 -1
- package/dist/expressions/architecture-invariants.test.js +94 -0
- package/dist/expressions/architecture-invariants.test.js.map +1 -1
- package/dist/expressions/awaitable-adaptation.d.ts +15 -0
- package/dist/expressions/awaitable-adaptation.d.ts.map +1 -0
- package/dist/expressions/awaitable-adaptation.js +174 -0
- package/dist/expressions/awaitable-adaptation.js.map +1 -0
- package/dist/expressions/calls/call-arguments-emit.d.ts.map +1 -1
- package/dist/expressions/calls/call-arguments-emit.js +20 -2
- package/dist/expressions/calls/call-arguments-emit.js.map +1 -1
- package/dist/expressions/calls/call-arguments-helpers.js +2 -2
- package/dist/expressions/calls/call-arguments-helpers.js.map +1 -1
- package/dist/expressions/calls/call-array-interop.d.ts +1 -1
- package/dist/expressions/calls/call-array-interop.d.ts.map +1 -1
- package/dist/expressions/calls/call-array-interop.js +1 -1
- package/dist/expressions/calls/call-array-interop.js.map +1 -1
- package/dist/expressions/calls/call-array-mutation.d.ts +0 -1
- package/dist/expressions/calls/call-array-mutation.d.ts.map +1 -1
- package/dist/expressions/calls/call-array-mutation.js +5 -7
- package/dist/expressions/calls/call-array-mutation.js.map +1 -1
- package/dist/expressions/calls/call-array-wrapper.d.ts.map +1 -1
- package/dist/expressions/calls/call-array-wrapper.js +3 -8
- package/dist/expressions/calls/call-array-wrapper.js.map +1 -1
- package/dist/expressions/expected-type-adaptation.d.ts.map +1 -1
- package/dist/expressions/expected-type-adaptation.js +15 -1
- package/dist/expressions/expected-type-adaptation.js.map +1 -1
- package/dist/expressions/identifier-storage/broad-storage-target.d.ts +4 -0
- package/dist/expressions/identifier-storage/broad-storage-target.d.ts.map +1 -0
- package/dist/expressions/identifier-storage/broad-storage-target.js +26 -0
- package/dist/expressions/identifier-storage/broad-storage-target.js.map +1 -0
- package/dist/expressions/identifier-storage/implicit-storage.d.ts +14 -0
- package/dist/expressions/identifier-storage/implicit-storage.d.ts.map +1 -0
- package/dist/expressions/identifier-storage/implicit-storage.js +44 -0
- package/dist/expressions/identifier-storage/implicit-storage.js.map +1 -0
- package/dist/expressions/identifier-storage/materialized-narrowed.d.ts +7 -0
- package/dist/expressions/identifier-storage/materialized-narrowed.d.ts.map +1 -0
- package/dist/expressions/identifier-storage/materialized-narrowed.js +92 -0
- package/dist/expressions/identifier-storage/materialized-narrowed.js.map +1 -0
- package/dist/expressions/identifier-storage/narrowed-storage-compatible.d.ts +14 -0
- package/dist/expressions/identifier-storage/narrowed-storage-compatible.d.ts.map +1 -0
- package/dist/expressions/identifier-storage/narrowed-storage-compatible.js +168 -0
- package/dist/expressions/identifier-storage/narrowed-storage-compatible.js.map +1 -0
- package/dist/expressions/identifier-storage/reified-storage.d.ts +7 -0
- package/dist/expressions/identifier-storage/reified-storage.d.ts.map +1 -0
- package/dist/expressions/identifier-storage/reified-storage.js +25 -0
- package/dist/expressions/identifier-storage/reified-storage.js.map +1 -0
- package/dist/expressions/identifier-storage/runtime-subset.d.ts +14 -0
- package/dist/expressions/identifier-storage/runtime-subset.d.ts.map +1 -0
- package/dist/expressions/identifier-storage/runtime-subset.js +100 -0
- package/dist/expressions/identifier-storage/runtime-subset.js.map +1 -0
- package/dist/expressions/identifier-storage/storage-compatible.d.ts +10 -0
- package/dist/expressions/identifier-storage/storage-compatible.d.ts.map +1 -0
- package/dist/expressions/identifier-storage/storage-compatible.js +76 -0
- package/dist/expressions/identifier-storage/storage-compatible.js.map +1 -0
- package/dist/expressions/identifier-storage/storage-surface-match.d.ts +4 -0
- package/dist/expressions/identifier-storage/storage-surface-match.d.ts.map +1 -0
- package/dist/expressions/identifier-storage/storage-surface-match.js +95 -0
- package/dist/expressions/identifier-storage/storage-surface-match.js.map +1 -0
- package/dist/expressions/identifier-storage/storage-surface-shared.d.ts +12 -0
- package/dist/expressions/identifier-storage/storage-surface-shared.d.ts.map +1 -0
- package/dist/expressions/identifier-storage/storage-surface-shared.js +77 -0
- package/dist/expressions/identifier-storage/storage-surface-shared.js.map +1 -0
- package/dist/expressions/identifier-storage/storage-surface.d.ts +9 -0
- package/dist/expressions/identifier-storage/storage-surface.d.ts.map +1 -0
- package/dist/expressions/identifier-storage/storage-surface.js +9 -0
- package/dist/expressions/identifier-storage/storage-surface.js.map +1 -0
- package/dist/expressions/identifier-storage.d.ts +1 -47
- package/dist/expressions/identifier-storage.d.ts.map +1 -1
- package/dist/expressions/identifier-storage.js +1 -652
- package/dist/expressions/identifier-storage.js.map +1 -1
- package/dist/expressions/index-cases/array-wrapper-recursion-b.test.js +7 -1
- package/dist/expressions/index-cases/array-wrapper-recursion-b.test.js.map +1 -1
- package/dist/expressions/index-cases/array-wrapper-recursion-c.test.js +4 -1
- package/dist/expressions/index-cases/array-wrapper-recursion-c.test.js.map +1 -1
- package/dist/expressions/index-cases/helpers.d.ts +1 -0
- package/dist/expressions/index-cases/helpers.d.ts.map +1 -1
- package/dist/expressions/index-cases/helpers.js +28 -0
- package/dist/expressions/index-cases/helpers.js.map +1 -1
- package/dist/expressions/index-cases/string-and-array-fallbacks-a.test.js +18 -9
- package/dist/expressions/index-cases/string-and-array-fallbacks-a.test.js.map +1 -1
- package/dist/expressions/index-cases/string-and-array-fallbacks-b.test.js +5 -5
- package/dist/expressions/index-cases/string-and-array-fallbacks-b.test.js.map +1 -1
- package/dist/expressions/lambda-body.js +3 -3
- package/dist/expressions/lambda-body.js.map +1 -1
- package/dist/expressions/operators/binary-special-ops.d.ts.map +1 -1
- package/dist/expressions/operators/binary-special-ops.js +4 -30
- package/dist/expressions/operators/binary-special-ops.js.map +1 -1
- package/dist/expressions/runtime-union-adaptation-upcast.d.ts +1 -1
- package/dist/expressions/runtime-union-adaptation-upcast.d.ts.map +1 -1
- package/dist/expressions/runtime-union-adaptation-upcast.js +13 -0
- package/dist/expressions/runtime-union-adaptation-upcast.js.map +1 -1
- package/dist/integration-cases/may14-downstream-contracts.test.js +372 -0
- package/dist/integration-cases/may14-downstream-contracts.test.js.map +1 -1
- package/dist/statements/classes/members/properties.d.ts.map +1 -1
- package/dist/statements/classes/members/properties.js +2 -3
- package/dist/statements/classes/members/properties.js.map +1 -1
- package/dist/statements/control/conditionals/branch-context.js +3 -3
- package/dist/statements/control/conditionals/branch-context.js.map +1 -1
- package/dist/statements/control/conditionals/guard-extraction.d.ts.map +1 -1
- package/dist/statements/control/conditionals/guard-extraction.js +7 -32
- package/dist/statements/control/conditionals/guard-extraction.js.map +1 -1
- package/dist/statements/control/loops.js +2 -2
- package/dist/statements/control/loops.js.map +1 -1
- package/dist/types/unions.js +2 -1
- package/dist/types/unions.js.map +1 -1
- package/package.json +2 -2
- package/dist/core/semantic/js-array-surface-members.d.ts +0 -4
- package/dist/core/semantic/js-array-surface-members.d.ts.map +0 -1
- package/dist/core/semantic/js-array-surface-members.js +0 -32
- package/dist/core/semantic/js-array-surface-members.js.map +0 -1
|
@@ -6,6 +6,7 @@ import { resolveTypeAlias, stripNullish, } from "../../../core/semantic/type-res
|
|
|
6
6
|
import { isAssignable } from "../../../core/semantic/index.js";
|
|
7
7
|
import { unwrapTransparentNarrowingTarget } from "../../../core/semantic/transparent-expressions.js";
|
|
8
8
|
import { getMemberAccessNarrowKey } from "../../../core/semantic/narrowing-keys.js";
|
|
9
|
+
import { tryExtractTypeofComparison } from "../../../core/semantic/typeof-comparison.js";
|
|
9
10
|
export const isArrayLikeNarrowingCandidate = (type, context) => {
|
|
10
11
|
const resolved = resolveTypeAlias(stripNullish(type), context);
|
|
11
12
|
if (resolved.kind === "arrayType" || resolved.kind === "tupleType") {
|
|
@@ -110,40 +111,14 @@ export const tryExtractArrayIsArrayGuard = (condition) => {
|
|
|
110
111
|
return undefined;
|
|
111
112
|
};
|
|
112
113
|
export const tryExtractDirectTypeofGuard = (expr) => {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
if (expr.operator !== "===" &&
|
|
116
|
-
expr.operator !== "==" &&
|
|
117
|
-
expr.operator !== "!==" &&
|
|
118
|
-
expr.operator !== "!=") {
|
|
119
|
-
return undefined;
|
|
120
|
-
}
|
|
121
|
-
const extract = (left, right) => {
|
|
122
|
-
if (left.kind !== "unary" || left.operator !== "typeof")
|
|
123
|
-
return undefined;
|
|
124
|
-
const target = unwrapTransparentNarrowingTarget(left.expression);
|
|
125
|
-
if (!target)
|
|
126
|
-
return undefined;
|
|
127
|
-
if (right.kind !== "literal" || typeof right.value !== "string") {
|
|
128
|
-
return undefined;
|
|
129
|
-
}
|
|
130
|
-
const bindingKey = target.kind === "identifier"
|
|
131
|
-
? target.name
|
|
132
|
-
: getMemberAccessNarrowKey(target);
|
|
133
|
-
if (!bindingKey)
|
|
134
|
-
return undefined;
|
|
135
|
-
return {
|
|
136
|
-
bindingKey,
|
|
137
|
-
targetExpr: target,
|
|
138
|
-
tag: right.value,
|
|
139
|
-
};
|
|
140
|
-
};
|
|
141
|
-
const directGuard = extract(expr.left, expr.right) ?? extract(expr.right, expr.left);
|
|
142
|
-
if (!directGuard)
|
|
114
|
+
const comparison = tryExtractTypeofComparison(expr);
|
|
115
|
+
if (!comparison?.narrowable)
|
|
143
116
|
return undefined;
|
|
144
117
|
return {
|
|
145
|
-
|
|
146
|
-
|
|
118
|
+
bindingKey: comparison.narrowable.bindingKey,
|
|
119
|
+
targetExpr: comparison.narrowable.targetExpr,
|
|
120
|
+
tag: comparison.tag,
|
|
121
|
+
matchesInTruthyBranch: !comparison.negate,
|
|
147
122
|
};
|
|
148
123
|
};
|
|
149
124
|
//# sourceMappingURL=guard-extraction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard-extraction.js","sourceRoot":"","sources":["../../../../src/statements/control/conditionals/guard-extraction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAIL,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,gBAAgB,EAChB,YAAY,GACb,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,gCAAgC,EAAE,MAAM,mDAAmD,CAAC;AACrG,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"guard-extraction.js","sourceRoot":"","sources":["../../../../src/statements/control/conditionals/guard-extraction.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ import { allocateLocalName, registerLocalName, } from "../../core/format/local-n
|
|
|
13
13
|
import { registerForInKeySymbolTypes, registerForOfElementSymbolTypes, } from "../../core/semantic/symbol-types.js";
|
|
14
14
|
import { decimalIntegerLiteral } from "../../core/format/backend-ast/builders.js";
|
|
15
15
|
import { getIterableSourceShape } from "../../expressions/structural-type-shapes.js";
|
|
16
|
-
import {
|
|
16
|
+
import { resolveRuntimeStorageType } from "../../core/semantic/storage-types.js";
|
|
17
17
|
import { detectCanonicalIntLoop, wrapInBlock, emitExprAstCb, } from "./loop-helpers.js";
|
|
18
18
|
const buildForOfSourceAst = (exprAst, iterableType, context) => {
|
|
19
19
|
const iterableShape = getIterableSourceShape(iterableType, context);
|
|
@@ -173,7 +173,7 @@ export const emitForStatementAst = (stmt, context) => {
|
|
|
173
173
|
export const emitForOfStatementAst = (stmt, context) => {
|
|
174
174
|
const iterableExpressionType = resolveEffectiveExpressionType(stmt.expression, context) ??
|
|
175
175
|
stmt.expression.inferredType;
|
|
176
|
-
const iterableStorageType =
|
|
176
|
+
const iterableStorageType = resolveRuntimeStorageType(iterableExpressionType, context) ??
|
|
177
177
|
iterableExpressionType;
|
|
178
178
|
const [exprAst, exprContext] = emitExpressionAst(stmt.expression, context, iterableStorageType);
|
|
179
179
|
const outerNameMap = exprContext.localNameMap;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loops.js","sourceRoot":"","sources":["../../../src/statements/control/loops.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,8BAA8B,EAAE,MAAM,kDAAkD,CAAC;AAClG,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,2BAA2B,EAC3B,+BAA+B,GAChC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAMlF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"loops.js","sourceRoot":"","sources":["../../../src/statements/control/loops.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,8BAA8B,EAAE,MAAM,kDAAkD,CAAC;AAClG,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,2BAA2B,EAC3B,+BAA+B,GAChC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAMlF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EACL,sBAAsB,EACtB,WAAW,EACX,aAAa,GACd,MAAM,mBAAmB,CAAC;AAE3B,MAAM,mBAAmB,GAAG,CAC1B,OAA4B,EAC5B,YAA2E,EAC3E,OAAuB,EACF,EAAE;IACvB,MAAM,aAAa,GAAG,sBAAsB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACpE,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5D,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,UAAU,GAAG,cAAc,CAC/B,mBAAmB,EACnB,aAAa,CAAC,UAAU,KAAK,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,EACxE,OAAO,CACR,CAAC;IACF,MAAM,eAAe,GAAwB;QAC3C,IAAI,EAAE,wBAAwB;QAC9B,UAAU,EAAE,OAAO;QACnB,UAAU;KACX,CAAC;IAEF,OAAO,aAAa,CAAC,UAAU,KAAK,gBAAgB;QAClD,CAAC,CAAC;YACE,IAAI,EAAE,sBAAsB;YAC5B,UAAU,EAAE,eAAe;YAC3B,SAAS,EAAE,EAAE;SACd;QACH,CAAC,CAAC,eAAe,CAAC;AACtB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,IAAsD,EACtD,OAAuB,EAC0B,EAAE;IACnD,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,uBAAuB,CACpD,IAAI,CAAC,SAAS,EACd,aAAa,EACb,OAAO,CACR,CAAC;IAEF,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAE1E,MAAM,SAAS,GAAuB;QACpC,IAAI,EAAE,gBAAgB;QACtB,SAAS,EAAE,OAAO;QAClB,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC;KAC7B,CAAC;IAEF,OAAO,CAAC,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;AACpC,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,IAAoD,EACpD,OAAuB,EAC0B,EAAE;IACnD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC1C,MAAM,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACvD,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IACtD,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAChD,IAAI,cAAc,GAAmB;QACnC,GAAG,OAAO;QACV,YAAY,EAAE,IAAI,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;QACzC,gBAAgB,EAAE,IAAI,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC;KACvD,CAAC;IAEF,2CAA2C;IAC3C,MAAM,aAAa,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAEnD,cAAc;IACd,IAAI,WAA2D,CAAC;IAChE,IAAI,YAA+C,CAAC;IAEpD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,IAAI,aAAa,EAAE,CAAC;YAClB,8DAA8D;YAC9D,MAAM,KAAK,GAAG,iBAAiB,CAAC,aAAa,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YACvE,cAAc,GAAG,iBAAiB,CAChC,aAAa,CAAC,OAAO,EACrB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,OAAO,CACd,CAAC;YACF,WAAW,GAAG;gBACZ,IAAI,EAAE,2BAA2B;gBACjC,SAAS,EAAE,EAAE;gBACb,IAAI,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE;gBAChD,WAAW,EAAE;oBACX;wBACE,IAAI,EAAE,KAAK,CAAC,WAAW;wBACvB,WAAW,EAAE,qBAAqB,CAAC,aAAa,CAAC,YAAY,CAAC;qBAC/D;iBACF;aACF,CAAC;QACJ,CAAC;aAAM,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAC3D,gEAAgE;YAChE,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,gBAAgB,CAC9C,IAAI,CAAC,WAAW,EAChB,cAAc,CACf,CAAC;YACF,cAAc,GAAG,UAAU,CAAC;YAC5B,wEAAwE;YACxE,8EAA8E;YAC9E,IACE,SAAS,CAAC,MAAM,KAAK,CAAC;gBACtB,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,2BAA2B,EAClD,CAAC;gBACD,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CACb,+CAA+C,SAAS,CAAC,MAAM,cAAc;oBAC3E,iFAAiF;oBACjF,gCAAgC,CACnC,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,yBAAyB;YACzB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,iBAAiB,CAC7C,IAAI,CAAC,WAAW,EAChB,cAAc,CACf,CAAC;YACF,cAAc,GAAG,UAAU,CAAC;YAC5B,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,YAAY;IACZ,IAAI,SAA0C,CAAC;IAC/C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,uBAAuB,CACnD,IAAI,CAAC,SAAS,EACd,aAAa,EACb,cAAc,CACf,CAAC;QACF,cAAc,GAAG,UAAU,CAAC;QAC5B,SAAS,GAAG,OAAO,CAAC;IACtB,CAAC;IAED,SAAS;IACT,MAAM,YAAY,GAA0B,EAAE,CAAC;IAC/C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,iBAAiB,CAC/C,IAAI,CAAC,MAAM,EACX,cAAc,CACf,CAAC;QACF,cAAc,GAAG,UAAU,CAAC;QAC5B,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,8EAA8E;IAC9E,MAAM,eAAe,GAAmB,aAAa;QACnD,CAAC,CAAC,CAAC,GAAG,EAAE;YACJ,MAAM,eAAe,GAAG,cAAc,CAAC,WAAW,IAAI,IAAI,GAAG,EAAU,CAAC;YACxE,MAAM,WAAW,GACf,cAAc,CAAC,YAAY,EAAE,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC;gBACvD,aAAa,CAAC,OAAO,CAAC;YACxB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC;YAC9D,OAAO,EAAE,GAAG,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;QACxD,CAAC,CAAC,EAAE;QACN,CAAC,CAAC,cAAc,CAAC;IAEnB,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAE9E,wEAAwE;IACxE,MAAM,gBAAgB,GAAmB,aAAa;QACpD,CAAC,CAAC;YACE,GAAG,WAAW;YACd,WAAW,EAAE,cAAc,CAAC,WAAW,IAAI,IAAI,GAAG,EAAU;SAC7D;QACH,CAAC,CAAC,WAAW,CAAC;IAEhB,MAAM,OAAO,GAAuB;QAClC,IAAI,EAAE,cAAc;QACpB,WAAW;QACX,YAAY;QACZ,SAAS;QACT,YAAY;QACZ,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC;KAC7B,CAAC;IAEF,OAAO;QACL,CAAC,OAAO,CAAC;QACT;YACE,GAAG,gBAAgB;YACnB,YAAY,EAAE,YAAY;YAC1B,gBAAgB,EAAE,qBAAqB;YACvC,kBAAkB,EAAE,kBAAkB;YACtC,eAAe,EAAE,eAAe;SACjC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,IAAsD,EACtD,OAAuB,EAC0B,EAAE;IACnD,MAAM,sBAAsB,GAC1B,8BAA8B,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;QACxD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;IAC/B,MAAM,mBAAmB,GACvB,yBAAyB,CAAC,sBAAsB,EAAE,OAAO,CAAC;QAC1D,sBAAsB,CAAC;IACzB,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,iBAAiB,CAC9C,IAAI,CAAC,UAAU,EACf,OAAO,EACP,mBAAmB,CACpB,CAAC;IACF,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;IAC9C,MAAM,qBAAqB,GAAG,WAAW,CAAC,gBAAgB,CAAC;IAC3D,MAAM,kBAAkB,GAAG,WAAW,CAAC,kBAAkB,CAAC;IAC1D,MAAM,eAAe,GAAG,WAAW,CAAC,eAAe,CAAC;IACpD,IAAI,WAAW,GAAmB;QAChC,GAAG,WAAW;QACd,YAAY,EAAE,IAAI,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;QACzC,gBAAgB,EAAE,IAAI,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC;KACvD,CAAC;IAEF,MAAM,mBAAmB,GAAG,sBAAsB,CAChD,sBAAsB,EACtB,WAAW,CACZ,CAAC;IACF,MAAM,gBAAgB,GAAG,mBAAmB,CAC1C,OAAO,EACP,mBAAmB,EACnB,WAAW,CACZ,CAAC;IAEF,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QAC/C,wEAAwE;QACxE,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACxC,MAAM,KAAK,GAAG,iBAAiB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAC3D,WAAW,GAAG,iBAAiB,CAC7B,YAAY,EACZ,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,OAAO,CACd,CAAC;QACF,WAAW,GAAG,+BAA+B,CAC3C,YAAY,EACZ,sBAAsB,EACtB,WAAW,CACZ,CAAC;QACF,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC;QAClC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAE1E,MAAM,WAAW,GAAuB;YACtC,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACzB,UAAU,EAAE,OAAO;YACnB,UAAU,EAAE,gBAAgB;YAC5B,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC;SAC7B,CAAC;QAEF,OAAO;YACL,CAAC,WAAW,CAAC;YACb;gBACE,GAAG,WAAW;gBACd,YAAY,EAAE,YAAY;gBAC1B,gBAAgB,EAAE,qBAAqB;gBACvC,kBAAkB,EAAE,kBAAkB;gBACtC,eAAe,EAAE,eAAe;aACjC;SACF,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,+FAA+F;IAC/F,MAAM,SAAS,GAAG,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC;IACtC,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC;IAEhC,uDAAuD;IACvD,MAAM,WAAW,GAAG,mBAAmB,CAAC;IAExC,sDAAsD;IACtD,MAAM,WAAW,GAAG,eAAe,CACjC,IAAI,CAAC,QAAQ,EACb,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,OAAO,EAAE,EACrD,WAAW,EACX,WAAW,CACZ,CAAC;IAEF,8BAA8B;IAC9B,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,gBAAgB,CAC/C,IAAI,CAAC,IAAI,EACT,WAAW,CAAC,OAAO,CACpB,CAAC;IAEF,uDAAuD;IACvD,MAAM,kBAAkB,GAAyB;QAC/C,GAAG,WAAW,CAAC,UAAU;QACzB,GAAG,SAAS;KACb,CAAC;IAEF,kFAAkF;IAClF,MAAM,OAAO,GACX,kBAAkB,CAAC,MAAM,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC;IAEjE,MAAM,WAAW,GAAuB;QACtC,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACzB,UAAU,EAAE,OAAO;QACnB,UAAU,EAAE,gBAAgB;QAC5B,IAAI,EAAE,OAAO;KACd,CAAC;IAEF,OAAO;QACL,CAAC,WAAW,CAAC;QACb;YACE,GAAG,WAAW;YACd,YAAY,EAAE,YAAY;YAC1B,gBAAgB,EAAE,qBAAqB;YACvC,kBAAkB,EAAE,kBAAkB;YACtC,eAAe,EAAE,eAAe;SACjC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAC1B,OAA4B,EACP,EAAE,CAAC,CAAC;IACzB,IAAI,EAAE,wBAAwB;IAC9B,UAAU,EAAE,OAAO;IACnB,UAAU,EAAE,MAAM;CACnB,CAAC,CAAC;AAEH,2EAA2E;AAC3E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,IAAsD,EACtD,OAAuB,EAC0B,EAAE;IACnD,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,iBAAiB,CAC9C,IAAI,CAAC,UAAU,EACf,OAAO,EACP,IAAI,CAAC,UAAU,CAAC,YAAY,CAC7B,CAAC;IACF,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;IAC9C,MAAM,qBAAqB,GAAG,WAAW,CAAC,gBAAgB,CAAC;IAC3D,MAAM,kBAAkB,GAAG,WAAW,CAAC,kBAAkB,CAAC;IAC1D,MAAM,eAAe,GAAG,WAAW,CAAC,eAAe,CAAC;IACpD,IAAI,WAAW,GAAmB;QAChC,GAAG,WAAW;QACd,YAAY,EAAE,IAAI,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;QACzC,gBAAgB,EAAE,IAAI,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC;KACvD,CAAC;IAEF,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACxC,MAAM,KAAK,GAAG,iBAAiB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAC3D,WAAW,GAAG,iBAAiB,CAC7B,YAAY,EACZ,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,OAAO,CACd,CAAC;QACF,WAAW,GAAG,2BAA2B,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACrE,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC1E,OAAO;YACL;gBACE;oBACE,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBACzB,UAAU,EAAE,KAAK,CAAC,WAAW;oBAC7B,UAAU,EAAE,mBAAmB,CAAC,OAAO,CAAC;oBACxC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC;iBAC7B;aACF;YACD;gBACE,GAAG,WAAW;gBACd,YAAY,EAAE,YAAY;gBAC1B,gBAAgB,EAAE,qBAAqB;gBACvC,kBAAkB,EAAE,kBAAkB;gBACtC,eAAe,EAAE,eAAe;aACjC;SACF,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC;IACtC,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC;IAChC,MAAM,UAAU,GAAW,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACrE,MAAM,WAAW,GAAG,eAAe,CACjC,IAAI,CAAC,QAAQ,EACb,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,OAAO,EAAE,EACrD,UAAU,EACV,WAAW,CACZ,CAAC;IACF,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,gBAAgB,CAC/C,IAAI,CAAC,IAAI,EACT,WAAW,CAAC,OAAO,CACpB,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,UAAU,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;IAEvE,OAAO;QACL;YACE;gBACE,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBACzB,UAAU,EAAE,OAAO;gBACnB,UAAU,EAAE,mBAAmB,CAAC,OAAO,CAAC;gBACxC,IAAI,EAAE,OAAO;aACd;SACF;QACD;YACE,GAAG,WAAW;YACd,YAAY,EAAE,YAAY;YAC1B,gBAAgB,EAAE,qBAAqB;YACvC,kBAAkB,EAAE,kBAAkB;YACtC,eAAe,EAAE,eAAe;SACjC;KACF,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/types/unions.js
CHANGED
|
@@ -6,7 +6,8 @@ import { emitTypeAst } from "./emitter.js";
|
|
|
6
6
|
import { nullableType } from "../core/format/backend-ast/builders.js";
|
|
7
7
|
import { stableTypeKeyFromAst } from "../core/format/backend-ast/utils.js";
|
|
8
8
|
import { splitRuntimeNullishUnionMembers } from "../core/semantic/type-resolution.js";
|
|
9
|
-
import { buildRuntimeUnionLayout, buildRuntimeUnionTypeAst,
|
|
9
|
+
import { buildRuntimeUnionLayout, buildRuntimeUnionTypeAst, } from "../core/semantic/runtime-unions.js";
|
|
10
|
+
import { getCanonicalRuntimeUnionMembers } from "../core/semantic/runtime-union-frame.js";
|
|
10
11
|
import { shouldUseBroadObjectForUnionStorage } from "../core/semantic/storage-types.js";
|
|
11
12
|
import { resolveStructuralReferenceType } from "../core/semantic/structural-shape-matching.js";
|
|
12
13
|
import { rebuildUnionTypePreservingCarrierFamily } from "../core/semantic/runtime-union-family-preservation.js";
|
package/dist/types/unions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unions.js","sourceRoot":"","sources":["../../src/types/unions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAU,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,qCAAqC,CAAC;AACtF,OAAO,EACL,uBAAuB,EACvB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"unions.js","sourceRoot":"","sources":["../../src/types/unions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tsonic/emitter",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.78",
|
|
4
4
|
"description": "C# code generator for Tsonic compiler",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"update-golden:js": "npx tsx scripts/update-golden-tests.ts js"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@tsonic/frontend": "0.0.
|
|
28
|
+
"@tsonic/frontend": "0.0.78"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/chai": "5.2.2",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"js-array-surface-members.d.ts","sourceRoot":"","sources":["../../../src/core/semantic/js-array-surface-members.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,aAUpC,CAAC;AAEH,eAAO,MAAM,0BAA0B,aAerC,CAAC;AAEH,eAAO,MAAM,gCAAgC,GAAI,YAAY,MAAM,KAAG,OAIzC,CAAC"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
export const JS_ARRAY_MUTATING_METHODS = new Set([
|
|
2
|
-
"push",
|
|
3
|
-
"pop",
|
|
4
|
-
"shift",
|
|
5
|
-
"unshift",
|
|
6
|
-
"splice",
|
|
7
|
-
"sort",
|
|
8
|
-
"reverse",
|
|
9
|
-
"fill",
|
|
10
|
-
"copyWithin",
|
|
11
|
-
]);
|
|
12
|
-
export const JS_ARRAY_RETURNING_METHODS = new Set([
|
|
13
|
-
"concat",
|
|
14
|
-
"copyWithin",
|
|
15
|
-
"filter",
|
|
16
|
-
"flat",
|
|
17
|
-
"flatMap",
|
|
18
|
-
"map",
|
|
19
|
-
"reverse",
|
|
20
|
-
"slice",
|
|
21
|
-
"sort",
|
|
22
|
-
"splice",
|
|
23
|
-
"toReversed",
|
|
24
|
-
"toSorted",
|
|
25
|
-
"toSpliced",
|
|
26
|
-
"with",
|
|
27
|
-
]);
|
|
28
|
-
export const jsArrayMethodReturnsMutatedArray = (memberName) => memberName === "sort" ||
|
|
29
|
-
memberName === "reverse" ||
|
|
30
|
-
memberName === "fill" ||
|
|
31
|
-
memberName === "copyWithin";
|
|
32
|
-
//# sourceMappingURL=js-array-surface-members.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"js-array-surface-members.js","sourceRoot":"","sources":["../../../src/core/semantic/js-array-surface-members.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IAC/C,MAAM;IACN,KAAK;IACL,OAAO;IACP,SAAS;IACT,QAAQ;IACR,MAAM;IACN,SAAS;IACT,MAAM;IACN,YAAY;CACb,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC;IAChD,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,MAAM;IACN,SAAS;IACT,KAAK;IACL,SAAS;IACT,OAAO;IACP,MAAM;IACN,QAAQ;IACR,YAAY;IACZ,UAAU;IACV,WAAW;IACX,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,UAAkB,EAAW,EAAE,CAC9E,UAAU,KAAK,MAAM;IACrB,UAAU,KAAK,SAAS;IACxB,UAAU,KAAK,MAAM;IACrB,UAAU,KAAK,YAAY,CAAC"}
|