@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
|
@@ -87,5 +87,99 @@ describe("expression architecture invariants", () => {
|
|
|
87
87
|
}
|
|
88
88
|
expect(hits).to.deep.equal([]);
|
|
89
89
|
});
|
|
90
|
+
it("keeps JS surface member behavior metadata-backed", () => {
|
|
91
|
+
const hits = [];
|
|
92
|
+
for (const file of walkTsFiles(emitterRoot)) {
|
|
93
|
+
if (file.endsWith(".test.ts"))
|
|
94
|
+
continue;
|
|
95
|
+
const relativeFile = relative(emitterRoot, file);
|
|
96
|
+
const text = readFileSync(file, "utf8");
|
|
97
|
+
if (text.includes("js-array-surface-members") ||
|
|
98
|
+
text.includes("JS_ARRAY_MUTATING_METHODS") ||
|
|
99
|
+
text.includes("JS_ARRAY_RETURNING_METHODS") ||
|
|
100
|
+
text.includes("isLengthPropertyName")) {
|
|
101
|
+
hits.push(relativeFile);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
expect(hits).to.deep.equal([]);
|
|
105
|
+
});
|
|
106
|
+
it("does not synthesize string length access from receiver type names", () => {
|
|
107
|
+
const hits = [];
|
|
108
|
+
for (const file of walkTsFiles(emitterRoot)) {
|
|
109
|
+
if (file.endsWith(".test.ts"))
|
|
110
|
+
continue;
|
|
111
|
+
const relativeFile = relative(emitterRoot, file);
|
|
112
|
+
const text = readFileSync(file, "utf8");
|
|
113
|
+
if (text.includes("isStringReceiverType")) {
|
|
114
|
+
hits.push(`${relativeFile}:isStringReceiverType`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
expect(hits).to.deep.equal([]);
|
|
118
|
+
});
|
|
119
|
+
it("centralizes typeof comparison extraction", () => {
|
|
120
|
+
const allowedFiles = new Set([
|
|
121
|
+
"core/semantic/typeof-comparison.ts",
|
|
122
|
+
"expressions/operators/unary-emitter.ts",
|
|
123
|
+
]);
|
|
124
|
+
const hits = [];
|
|
125
|
+
for (const file of walkTsFiles(emitterRoot)) {
|
|
126
|
+
if (file.endsWith(".test.ts"))
|
|
127
|
+
continue;
|
|
128
|
+
const relativeFile = relative(emitterRoot, file).replace(/\\/g, "/");
|
|
129
|
+
if (allowedFiles.has(relativeFile))
|
|
130
|
+
continue;
|
|
131
|
+
const text = readFileSync(file, "utf8");
|
|
132
|
+
if (text.includes('operator !== "typeof"') ||
|
|
133
|
+
text.includes('operator === "typeof"')) {
|
|
134
|
+
hits.push(relativeFile);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
expect(hits).to.deep.equal([]);
|
|
138
|
+
});
|
|
139
|
+
it("keeps runtime-storage normalization behind semantic storage helpers", () => {
|
|
140
|
+
const allowedFiles = new Set([
|
|
141
|
+
"core/format/local-names.ts",
|
|
142
|
+
"core/semantic/broad-array-storage.ts",
|
|
143
|
+
"core/semantic/direct-storage-ir-types.ts",
|
|
144
|
+
"core/semantic/storage-types.ts",
|
|
145
|
+
"core/semantic/symbol-types.ts",
|
|
146
|
+
"core/semantic/variable-type-resolution.ts",
|
|
147
|
+
]);
|
|
148
|
+
const hits = [];
|
|
149
|
+
for (const file of walkTsFiles(emitterRoot)) {
|
|
150
|
+
if (file.endsWith(".test.ts"))
|
|
151
|
+
continue;
|
|
152
|
+
const relativeFile = relative(emitterRoot, file).replace(/\\/g, "/");
|
|
153
|
+
if (allowedFiles.has(relativeFile))
|
|
154
|
+
continue;
|
|
155
|
+
const text = readFileSync(file, "utf8");
|
|
156
|
+
if (text.includes("normalizeRuntimeStorageType(")) {
|
|
157
|
+
hits.push(relativeFile);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
expect(hits).to.deep.equal([]);
|
|
161
|
+
});
|
|
162
|
+
it("keeps identifier storage orchestration as a facade over named strategies", () => {
|
|
163
|
+
const facade = readFileSync(join(expressionsRoot, "identifier-storage.ts"), "utf8");
|
|
164
|
+
const strategyRoot = join(expressionsRoot, "identifier-storage");
|
|
165
|
+
const strategyFiles = walkTsFiles(strategyRoot)
|
|
166
|
+
.map((file) => relative(strategyRoot, file).replace(/\\/g, "/"))
|
|
167
|
+
.filter((file) => file !== "storage-surface.ts")
|
|
168
|
+
.sort();
|
|
169
|
+
expect(strategyFiles).to.include.members([
|
|
170
|
+
"broad-storage-target.ts",
|
|
171
|
+
"implicit-storage.ts",
|
|
172
|
+
"materialized-narrowed.ts",
|
|
173
|
+
"narrowed-storage-compatible.ts",
|
|
174
|
+
"reified-storage.ts",
|
|
175
|
+
"runtime-subset.ts",
|
|
176
|
+
"storage-compatible.ts",
|
|
177
|
+
"storage-surface-match.ts",
|
|
178
|
+
]);
|
|
179
|
+
expect(facade).to.include('from "./identifier-storage/storage-surface.js"');
|
|
180
|
+
expect(facade).to.not.include("normalizeRuntimeStorageType(");
|
|
181
|
+
const oversizedStrategies = strategyFiles.filter((file) => readFileSync(join(strategyRoot, file), "utf8").split("\n").length > 360);
|
|
182
|
+
expect(oversizedStrategies).to.deep.equal([]);
|
|
183
|
+
});
|
|
90
184
|
});
|
|
91
185
|
//# sourceMappingURL=architecture-invariants.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"architecture-invariants.test.js","sourceRoot":"","sources":["../../src/expressions/architecture-invariants.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"architecture-invariants.test.js","sourceRoot":"","sources":["../../src/expressions/architecture-invariants.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type IrType } from "@tsonic/frontend";
|
|
2
|
+
import type { EmitterContext } from "../types.js";
|
|
3
|
+
import type { CSharpExpressionAst, CSharpTypeAst } from "../core/format/backend-ast/types.js";
|
|
4
|
+
type AwaitedValueAdapter = (ast: CSharpExpressionAst, actualType: IrType | undefined, context: EmitterContext, expectedType: IrType | undefined, visited?: ReadonlySet<string>) => [CSharpExpressionAst, EmitterContext] | undefined;
|
|
5
|
+
export declare const tryAdaptAwaitableValueAst: (opts: {
|
|
6
|
+
readonly ast: CSharpExpressionAst;
|
|
7
|
+
readonly actualType: IrType;
|
|
8
|
+
readonly expectedType: IrType;
|
|
9
|
+
readonly context: EmitterContext;
|
|
10
|
+
readonly expectedTypeAst?: CSharpTypeAst;
|
|
11
|
+
readonly visited?: ReadonlySet<string>;
|
|
12
|
+
readonly adaptAwaitedValueAst?: AwaitedValueAdapter;
|
|
13
|
+
}) => [CSharpExpressionAst, EmitterContext] | undefined;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=awaitable-adaptation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"awaitable-adaptation.d.ts","sourceRoot":"","sources":["../../src/expressions/awaitable-adaptation.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,MAAM,EACZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EACV,mBAAmB,EAEnB,aAAa,EACd,MAAM,qCAAqC,CAAC;AAsB7C,KAAK,mBAAmB,GAAG,CACzB,GAAG,EAAE,mBAAmB,EACxB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,KAC1B,CAAC,mBAAmB,EAAE,cAAc,CAAC,GAAG,SAAS,CAAC;AAsDvD,eAAO,MAAM,yBAAyB,GAAI,MAAM;IAC9C,QAAQ,CAAC,GAAG,EAAE,mBAAmB,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,mBAAmB,CAAC;CACrD,KAAG,CAAC,mBAAmB,EAAE,cAAc,CAAC,GAAG,SA2L3C,CAAC"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { getAwaitedIrType, isAwaitableIrType, } from "@tsonic/frontend";
|
|
2
|
+
import { emitTypeAst } from "../type-emitter.js";
|
|
3
|
+
import { identifierExpression, nullLiteral, } from "../core/format/backend-ast/builders.js";
|
|
4
|
+
import { sameTypeAstSurface, stripNullableTypeAst, } from "../core/format/backend-ast/utils.js";
|
|
5
|
+
import { allocateLocalName } from "../core/format/local-names.js";
|
|
6
|
+
import { resolveTypeAlias, splitRuntimeNullishUnionMembers, stripNullish, } from "../core/semantic/type-resolution.js";
|
|
7
|
+
import { matchesExpectedEmissionType } from "../core/semantic/expected-type-matching.js";
|
|
8
|
+
import { buildTaskRunInvocation, buildTaskTypeAst, isTaskTypeAst, } from "./calls/call-promise-task-types.js";
|
|
9
|
+
const isVoidType = (type) => stripNullish(type).kind === "voidType";
|
|
10
|
+
const getSingleAwaitableRuntimeType = (type, context) => {
|
|
11
|
+
const resolvedType = resolveTypeAlias(type, context);
|
|
12
|
+
const nullish = splitRuntimeNullishUnionMembers(resolvedType);
|
|
13
|
+
const nonNullishMembers = nullish
|
|
14
|
+
? nullish.nonNullishMembers
|
|
15
|
+
: [stripNullish(resolvedType)];
|
|
16
|
+
if (nonNullishMembers.length !== 1) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
const [candidate] = nonNullishMembers;
|
|
20
|
+
if (!candidate) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
const awaitableType = resolveTypeAlias(stripNullish(candidate), context);
|
|
24
|
+
if (!isAwaitableIrType(awaitableType)) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
awaitableType,
|
|
29
|
+
hasRuntimeNullish: nullish?.hasRuntimeNullish ?? false,
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
const buildNullSourceReturnStatement = (expectedAwaitedTypeAst) => expectedAwaitedTypeAst
|
|
33
|
+
? {
|
|
34
|
+
kind: "returnStatement",
|
|
35
|
+
expression: {
|
|
36
|
+
kind: "defaultExpression",
|
|
37
|
+
type: expectedAwaitedTypeAst,
|
|
38
|
+
},
|
|
39
|
+
}
|
|
40
|
+
: {
|
|
41
|
+
kind: "returnStatement",
|
|
42
|
+
};
|
|
43
|
+
export const tryAdaptAwaitableValueAst = (opts) => {
|
|
44
|
+
const { ast, actualType, expectedType, expectedTypeAst, context, visited, adaptAwaitedValueAst, } = opts;
|
|
45
|
+
let currentContext = context;
|
|
46
|
+
let emittedExpectedType = expectedTypeAst;
|
|
47
|
+
if (!emittedExpectedType) {
|
|
48
|
+
[emittedExpectedType, currentContext] = emitTypeAst(expectedType, currentContext);
|
|
49
|
+
}
|
|
50
|
+
if (!isTaskTypeAst(stripNullableTypeAst(emittedExpectedType))) {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
const expectedAwaitableSource = getSingleAwaitableRuntimeType(expectedType, currentContext);
|
|
54
|
+
const actualAwaitableSource = getSingleAwaitableRuntimeType(actualType, currentContext);
|
|
55
|
+
if (!expectedAwaitableSource || !actualAwaitableSource) {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
const emittedActualType = (() => {
|
|
59
|
+
try {
|
|
60
|
+
return emitTypeAst(actualType, currentContext)[0];
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
})();
|
|
66
|
+
if (emittedActualType &&
|
|
67
|
+
sameTypeAstSurface(stripNullableTypeAst(emittedActualType), stripNullableTypeAst(emittedExpectedType))) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
const actualAwaitedType = getAwaitedIrType(actualAwaitableSource.awaitableType) ?? { kind: "voidType" };
|
|
71
|
+
const expectedAwaitedType = getAwaitedIrType(expectedAwaitableSource.awaitableType) ?? { kind: "voidType" };
|
|
72
|
+
const actualAwaitedIsVoid = isVoidType(actualAwaitedType);
|
|
73
|
+
const expectedAwaitedIsVoid = isVoidType(expectedAwaitedType);
|
|
74
|
+
let expectedAwaitedTypeAst;
|
|
75
|
+
if (!expectedAwaitedIsVoid) {
|
|
76
|
+
[expectedAwaitedTypeAst, currentContext] = emitTypeAst(expectedAwaitedType, currentContext);
|
|
77
|
+
}
|
|
78
|
+
const statements = [];
|
|
79
|
+
let awaitedSourceAst = ast;
|
|
80
|
+
if (actualAwaitableSource.hasRuntimeNullish) {
|
|
81
|
+
const sourceTemp = allocateLocalName("__tsonic_await_task", currentContext);
|
|
82
|
+
currentContext = sourceTemp.context;
|
|
83
|
+
awaitedSourceAst = identifierExpression(sourceTemp.emittedName);
|
|
84
|
+
statements.push({
|
|
85
|
+
kind: "localDeclarationStatement",
|
|
86
|
+
modifiers: [],
|
|
87
|
+
type: { kind: "varType" },
|
|
88
|
+
declarators: [
|
|
89
|
+
{
|
|
90
|
+
name: sourceTemp.emittedName,
|
|
91
|
+
initializer: ast,
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
}, {
|
|
95
|
+
kind: "ifStatement",
|
|
96
|
+
condition: {
|
|
97
|
+
kind: "binaryExpression",
|
|
98
|
+
operatorToken: "==",
|
|
99
|
+
left: awaitedSourceAst,
|
|
100
|
+
right: nullLiteral(),
|
|
101
|
+
},
|
|
102
|
+
thenStatement: {
|
|
103
|
+
kind: "blockStatement",
|
|
104
|
+
statements: [buildNullSourceReturnStatement(expectedAwaitedTypeAst)],
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
if (expectedAwaitedIsVoid) {
|
|
109
|
+
statements.push({
|
|
110
|
+
kind: "expressionStatement",
|
|
111
|
+
expression: {
|
|
112
|
+
kind: "awaitExpression",
|
|
113
|
+
expression: awaitedSourceAst,
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
else if (actualAwaitedIsVoid) {
|
|
118
|
+
if (!expectedAwaitedTypeAst) {
|
|
119
|
+
return undefined;
|
|
120
|
+
}
|
|
121
|
+
statements.push({
|
|
122
|
+
kind: "expressionStatement",
|
|
123
|
+
expression: {
|
|
124
|
+
kind: "awaitExpression",
|
|
125
|
+
expression: awaitedSourceAst,
|
|
126
|
+
},
|
|
127
|
+
}, {
|
|
128
|
+
kind: "returnStatement",
|
|
129
|
+
expression: {
|
|
130
|
+
kind: "defaultExpression",
|
|
131
|
+
type: expectedAwaitedTypeAst,
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
const valueTemp = allocateLocalName("__tsonic_await_value", currentContext);
|
|
137
|
+
currentContext = valueTemp.context;
|
|
138
|
+
const valueAst = identifierExpression(valueTemp.emittedName);
|
|
139
|
+
statements.push({
|
|
140
|
+
kind: "localDeclarationStatement",
|
|
141
|
+
modifiers: [],
|
|
142
|
+
type: { kind: "varType" },
|
|
143
|
+
declarators: [
|
|
144
|
+
{
|
|
145
|
+
name: valueTemp.emittedName,
|
|
146
|
+
initializer: {
|
|
147
|
+
kind: "awaitExpression",
|
|
148
|
+
expression: awaitedSourceAst,
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
],
|
|
152
|
+
});
|
|
153
|
+
const adaptedAwaitedValue = adaptAwaitedValueAst?.(valueAst, actualAwaitedType, currentContext, expectedAwaitedType, visited) ??
|
|
154
|
+
(matchesExpectedEmissionType(actualAwaitedType, expectedAwaitedType, currentContext)
|
|
155
|
+
? [valueAst, currentContext]
|
|
156
|
+
: undefined);
|
|
157
|
+
if (!adaptedAwaitedValue) {
|
|
158
|
+
return undefined;
|
|
159
|
+
}
|
|
160
|
+
currentContext = adaptedAwaitedValue[1];
|
|
161
|
+
statements.push({
|
|
162
|
+
kind: "returnStatement",
|
|
163
|
+
expression: adaptedAwaitedValue[0],
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
return [
|
|
167
|
+
buildTaskRunInvocation(buildTaskTypeAst(expectedAwaitedTypeAst), {
|
|
168
|
+
kind: "blockStatement",
|
|
169
|
+
statements,
|
|
170
|
+
}, true),
|
|
171
|
+
currentContext,
|
|
172
|
+
];
|
|
173
|
+
};
|
|
174
|
+
//# sourceMappingURL=awaitable-adaptation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"awaitable-adaptation.js","sourceRoot":"","sources":["../../src/expressions/awaitable-adaptation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,GAElB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOjD,OAAO,EACL,oBAAoB,EACpB,WAAW,GACZ,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EACL,gBAAgB,EAChB,+BAA+B,EAC/B,YAAY,GACb,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,GACd,MAAM,oCAAoC,CAAC;AAU5C,MAAM,UAAU,GAAG,CAAC,IAAY,EAAW,EAAE,CAC3C,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;AAEzC,MAAM,6BAA6B,GAAG,CACpC,IAAY,EACZ,OAAuB,EAMX,EAAE;IACd,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,+BAA+B,CAAC,YAAY,CAAC,CAAC;IAC9D,MAAM,iBAAiB,GAAG,OAAO;QAC/B,CAAC,CAAC,OAAO,CAAC,iBAAiB;QAC3B,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;IACjC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,GAAG,iBAAiB,CAAC;IACtC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,aAAa,GAAG,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;IACzE,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,aAAa;QACb,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,IAAI,KAAK;KACvD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,8BAA8B,GAAG,CACrC,sBAAiD,EAC7B,EAAE,CACtB,sBAAsB;IACpB,CAAC,CAAC;QACE,IAAI,EAAE,iBAAiB;QACvB,UAAU,EAAE;YACV,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,sBAAsB;SAC7B;KACF;IACH,CAAC,CAAC;QACE,IAAI,EAAE,iBAAiB;KACxB,CAAC;AAER,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,IAQzC,EAAqD,EAAE;IACtD,MAAM,EACJ,GAAG,EACH,UAAU,EACV,YAAY,EACZ,eAAe,EACf,OAAO,EACP,OAAO,EACP,oBAAoB,GACrB,GAAG,IAAI,CAAC;IACT,IAAI,cAAc,GAAG,OAAO,CAAC;IAC7B,IAAI,mBAAmB,GAAG,eAAe,CAAC;IAC1C,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,CAAC,mBAAmB,EAAE,cAAc,CAAC,GAAG,WAAW,CACjD,YAAY,EACZ,cAAc,CACf,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC;QAC9D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,uBAAuB,GAAG,6BAA6B,CAC3D,YAAY,EACZ,cAAc,CACf,CAAC;IACF,MAAM,qBAAqB,GAAG,6BAA6B,CACzD,UAAU,EACV,cAAc,CACf,CAAC;IACF,IAAI,CAAC,uBAAuB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACvD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE;QAC9B,IAAI,CAAC;YACH,OAAO,WAAW,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,IACE,iBAAiB;QACjB,kBAAkB,CAChB,oBAAoB,CAAC,iBAAiB,CAAC,EACvC,oBAAoB,CAAC,mBAAmB,CAAC,CAC1C,EACD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,iBAAiB,GAAG,gBAAgB,CACxC,qBAAqB,CAAC,aAAa,CACpC,IAAI,EAAE,IAAI,EAAE,UAAmB,EAAE,CAAC;IACnC,MAAM,mBAAmB,GAAG,gBAAgB,CAC1C,uBAAuB,CAAC,aAAa,CACtC,IAAI,EAAE,IAAI,EAAE,UAAmB,EAAE,CAAC;IACnC,MAAM,mBAAmB,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC1D,MAAM,qBAAqB,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAE9D,IAAI,sBAAiD,CAAC;IACtD,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,CAAC,sBAAsB,EAAE,cAAc,CAAC,GAAG,WAAW,CACpD,mBAAmB,EACnB,cAAc,CACf,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAyB,EAAE,CAAC;IAC5C,IAAI,gBAAgB,GAAG,GAAG,CAAC;IAC3B,IAAI,qBAAqB,CAAC,iBAAiB,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,iBAAiB,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC;QAC5E,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC;QACpC,gBAAgB,GAAG,oBAAoB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAChE,UAAU,CAAC,IAAI,CACb;YACE,IAAI,EAAE,2BAA2B;YACjC,SAAS,EAAE,EAAE;YACb,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACzB,WAAW,EAAE;gBACX;oBACE,IAAI,EAAE,UAAU,CAAC,WAAW;oBAC5B,WAAW,EAAE,GAAG;iBACjB;aACF;SACF,EACD;YACE,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE;gBACT,IAAI,EAAE,kBAAkB;gBACxB,aAAa,EAAE,IAAI;gBACnB,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,WAAW,EAAE;aACrB;YACD,aAAa,EAAE;gBACb,IAAI,EAAE,gBAAgB;gBACtB,UAAU,EAAE,CAAC,8BAA8B,CAAC,sBAAsB,CAAC,CAAC;aACrE;SACF,CACF,CAAC;IACJ,CAAC;IAED,IAAI,qBAAqB,EAAE,CAAC;QAC1B,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,qBAAqB;YAC3B,UAAU,EAAE;gBACV,IAAI,EAAE,iBAAiB;gBACvB,UAAU,EAAE,gBAAgB;aAC7B;SACF,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,mBAAmB,EAAE,CAAC;QAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,UAAU,CAAC,IAAI,CACb;YACE,IAAI,EAAE,qBAAqB;YAC3B,UAAU,EAAE;gBACV,IAAI,EAAE,iBAAiB;gBACvB,UAAU,EAAE,gBAAgB;aAC7B;SACF,EACD;YACE,IAAI,EAAE,iBAAiB;YACvB,UAAU,EAAE;gBACV,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,sBAAsB;aAC7B;SACF,CACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,SAAS,GAAG,iBAAiB,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC;QAC5E,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC;QACnC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC7D,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,2BAA2B;YACjC,SAAS,EAAE,EAAE;YACb,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACzB,WAAW,EAAE;gBACX;oBACE,IAAI,EAAE,SAAS,CAAC,WAAW;oBAC3B,WAAW,EAAE;wBACX,IAAI,EAAE,iBAAiB;wBACvB,UAAU,EAAE,gBAAgB;qBAC7B;iBACF;aACF;SACF,CAAC,CAAC;QAEH,MAAM,mBAAmB,GACvB,oBAAoB,EAAE,CACpB,QAAQ,EACR,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,OAAO,CACR;YACD,CAAC,2BAA2B,CAC1B,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,CACf;gBACC,CAAC,CAAE,CAAC,QAAQ,EAAE,cAAc,CAGxB;gBACJ,CAAC,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,cAAc,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACxC,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,iBAAiB;YACvB,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC;SACnC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,sBAAsB,CACpB,gBAAgB,CAAC,sBAAsB,CAAC,EACxC;YACE,IAAI,EAAE,gBAAgB;YACtB,UAAU;SACX,EACD,IAAI,CACL;QACD,cAAc;KACf,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-arguments-emit.d.ts","sourceRoot":"","sources":["../../../src/expressions/calls/call-arguments-emit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,EAAe,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKhD,OAAO,KAAK,EACV,mBAAmB,EAGpB,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"call-arguments-emit.d.ts","sourceRoot":"","sources":["../../../src/expressions/calls/call-arguments-emit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,EAAe,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKhD,OAAO,KAAK,EACV,mBAAmB,EAGpB,MAAM,wCAAwC,CAAC;AAi3FhD;;;GAGG;AACH,QAAA,MAAM,iBAAiB,GACrB,MAAM,SAAS,YAAY,EAAE,EAC7B,MAAM,OAAO,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAC7C,SAAS,cAAc,EACvB,yBAAyB,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,KACvD,CAAC,SAAS,mBAAmB,EAAE,EAAE,cAAc,CA8jBjD,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -28,6 +28,8 @@ import { tryBuildRuntimeMaterializationAst } from "../../core/semantic/runtime-r
|
|
|
28
28
|
import { runtimeUnionAliasReferencesMatch } from "../../core/semantic/runtime-union-alias-identity.js";
|
|
29
29
|
import { getPassingModifierFromCast, isLValue } from "./call-analysis.js";
|
|
30
30
|
import { adaptValueToExpectedTypeAst, resolveDirectStorageCompatibleExpressionType, resolveDirectStorageCompatibleIrType, resolveCarrierPreservingRawExpectedType, resolveCarrierPreservingSourceType, resolveRuntimeCarrierCompatibleExpressionAst, resolveRuntimeCarrierCompatibleIrType, tryEmitCarrierPreservingExpressionAst, hasMismatchedCollectionElementCarrier, } from "../expected-type-adaptation.js";
|
|
31
|
+
import { tryAdaptAwaitableValueAst } from "../awaitable-adaptation.js";
|
|
32
|
+
import { maybeAdaptRuntimeUnionExpressionAst } from "../runtime-union-adaptation.js";
|
|
31
33
|
import { isExactArrayCreationToType, isExactExpressionToType, tryEmitExactComparisonTargetAst, } from "../exact-comparison.js";
|
|
32
34
|
import { getDirectIterableElementType } from "../structural-type-shapes.js";
|
|
33
35
|
import { normalizeCallArgumentExpectedType, expandTupleLikeSpreadArguments, getTransparentRestSpreadPassthroughExpression, wrapArgModifier, emitFlattenedRestArguments, } from "./call-arguments-helpers.js";
|
|
@@ -1279,7 +1281,8 @@ const emitFunctionValueCallArguments = (args, signature, expr, context) => {
|
|
|
1279
1281
|
context: currentContext,
|
|
1280
1282
|
}));
|
|
1281
1283
|
const contextualRawEmitExpectedTypeCandidate = arg.kind === "arrowFunction" || arg.kind === "functionExpression"
|
|
1282
|
-
? (
|
|
1284
|
+
? (surfaceParameterType ??
|
|
1285
|
+
selectedParameterType ??
|
|
1283
1286
|
rawEmitExpectedTypeCandidate ??
|
|
1284
1287
|
contextualExpectedType ??
|
|
1285
1288
|
adaptationExpectedType ??
|
|
@@ -1816,7 +1819,8 @@ const emitCallArguments = (args, expr, context, parameterTypeOverrides) => {
|
|
|
1816
1819
|
context: currentContext,
|
|
1817
1820
|
}));
|
|
1818
1821
|
const contextualRawEmitExpectedTypeCandidate = arg.kind === "arrowFunction" || arg.kind === "functionExpression"
|
|
1819
|
-
? (
|
|
1822
|
+
? (surfaceParameterType ??
|
|
1823
|
+
selectedParameterTypes[i] ??
|
|
1820
1824
|
rawEmitExpectedTypeCandidate ??
|
|
1821
1825
|
contextualExpectedType ??
|
|
1822
1826
|
adaptationExpectedType ??
|
|
@@ -1951,7 +1955,21 @@ const emitCallArguments = (args, expr, context, parameterTypeOverrides) => {
|
|
|
1951
1955
|
!forcedRuntimeUnionArgument) {
|
|
1952
1956
|
throw new Error("Internal Compiler Error: source-backed structural call argument could not be materialized to its runtime surface.");
|
|
1953
1957
|
}
|
|
1958
|
+
const awaitableArgumentSourceType = preEmitStorageAwareArgumentType ??
|
|
1959
|
+
preEmitEffectiveArgumentType ??
|
|
1960
|
+
effectiveArgumentType ??
|
|
1961
|
+
arg.inferredType;
|
|
1962
|
+
const awaitableArgument = adaptationExpectedType && awaitableArgumentSourceType
|
|
1963
|
+
? tryAdaptAwaitableValueAst({
|
|
1964
|
+
ast: rawArgAst,
|
|
1965
|
+
actualType: awaitableArgumentSourceType,
|
|
1966
|
+
expectedType: adaptationExpectedType,
|
|
1967
|
+
context: emittedContext,
|
|
1968
|
+
adaptAwaitedValueAst: maybeAdaptRuntimeUnionExpressionAst,
|
|
1969
|
+
})
|
|
1970
|
+
: undefined;
|
|
1954
1971
|
const [materializedArgAst, materializedContext] = forcedRuntimeUnionArgument ??
|
|
1972
|
+
awaitableArgument ??
|
|
1955
1973
|
(skipRuntimeUnionArgumentMaterialization
|
|
1956
1974
|
? [rawArgAst, emittedContext]
|
|
1957
1975
|
: (adaptValueToExpectedTypeAst({
|