@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.
Files changed (186) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/array.test.js +5 -1
  3. package/dist/array.test.js.map +1 -1
  4. package/dist/core/module-emitter-cases/static-containers.test.js +2 -1
  5. package/dist/core/module-emitter-cases/static-containers.test.js.map +1 -1
  6. package/dist/core/semantic/array-expected-types.js +1 -1
  7. package/dist/core/semantic/array-expected-types.js.map +1 -1
  8. package/dist/core/semantic/assignment-flow.d.ts.map +1 -1
  9. package/dist/core/semantic/assignment-flow.js +2 -1
  10. package/dist/core/semantic/assignment-flow.js.map +1 -1
  11. package/dist/core/semantic/direct-value-surfaces.js +2 -1
  12. package/dist/core/semantic/direct-value-surfaces.js.map +1 -1
  13. package/dist/core/semantic/instanceof-predicate-refinements.js +1 -1
  14. package/dist/core/semantic/instanceof-predicate-refinements.js.map +1 -1
  15. package/dist/core/semantic/mutable-storage-helpers.d.ts.map +1 -1
  16. package/dist/core/semantic/mutable-storage-helpers.js +3 -2
  17. package/dist/core/semantic/mutable-storage-helpers.js.map +1 -1
  18. package/dist/core/semantic/narrowed-expression-types.js +1 -1
  19. package/dist/core/semantic/narrowed-expression-types.js.map +1 -1
  20. package/dist/core/semantic/narrowed-union-resolution.js +1 -1
  21. package/dist/core/semantic/narrowed-union-resolution.js.map +1 -1
  22. package/dist/core/semantic/nullable-typeof-refinements.d.ts.map +1 -1
  23. package/dist/core/semantic/nullable-typeof-refinements.js +8 -31
  24. package/dist/core/semantic/nullable-typeof-refinements.js.map +1 -1
  25. package/dist/core/semantic/runtime-union-frame.d.ts +6 -0
  26. package/dist/core/semantic/runtime-union-frame.d.ts.map +1 -0
  27. package/dist/core/semantic/runtime-union-frame.js +130 -0
  28. package/dist/core/semantic/runtime-union-frame.js.map +1 -0
  29. package/dist/core/semantic/runtime-unions.d.ts +3 -4
  30. package/dist/core/semantic/runtime-unions.d.ts.map +1 -1
  31. package/dist/core/semantic/runtime-unions.js +4 -129
  32. package/dist/core/semantic/runtime-unions.js.map +1 -1
  33. package/dist/core/semantic/semantic-union-members.js +1 -1
  34. package/dist/core/semantic/semantic-union-members.js.map +1 -1
  35. package/dist/core/semantic/storage-types.d.ts +3 -0
  36. package/dist/core/semantic/storage-types.d.ts.map +1 -1
  37. package/dist/core/semantic/storage-types.js +13 -2
  38. package/dist/core/semantic/storage-types.js.map +1 -1
  39. package/dist/core/semantic/surface-member-semantics.d.ts +14 -0
  40. package/dist/core/semantic/surface-member-semantics.d.ts.map +1 -0
  41. package/dist/core/semantic/surface-member-semantics.js +41 -0
  42. package/dist/core/semantic/surface-member-semantics.js.map +1 -0
  43. package/dist/core/semantic/ternary-guards.d.ts +1 -1
  44. package/dist/core/semantic/ternary-guards.d.ts.map +1 -1
  45. package/dist/core/semantic/ternary-guards.js +2 -1
  46. package/dist/core/semantic/ternary-guards.js.map +1 -1
  47. package/dist/core/semantic/typeof-comparison.d.ts +14 -0
  48. package/dist/core/semantic/typeof-comparison.d.ts.map +1 -0
  49. package/dist/core/semantic/typeof-comparison.js +47 -0
  50. package/dist/core/semantic/typeof-comparison.js.map +1 -0
  51. package/dist/core/semantic/union-semantics.js +1 -1
  52. package/dist/core/semantic/union-semantics.js.map +1 -1
  53. package/dist/emitter-types/context.d.ts.map +1 -1
  54. package/dist/emitter-types/context.js +1 -0
  55. package/dist/emitter-types/context.js.map +1 -1
  56. package/dist/expressions/access-binding.d.ts.map +1 -1
  57. package/dist/expressions/access-binding.js +18 -32
  58. package/dist/expressions/access-binding.js.map +1 -1
  59. package/dist/expressions/access-computed.d.ts.map +1 -1
  60. package/dist/expressions/access-computed.js +3 -7
  61. package/dist/expressions/access-computed.js.map +1 -1
  62. package/dist/expressions/access-function-length.d.ts +13 -0
  63. package/dist/expressions/access-function-length.d.ts.map +1 -0
  64. package/dist/expressions/access-function-length.js +115 -0
  65. package/dist/expressions/access-function-length.js.map +1 -0
  66. package/dist/expressions/access-length.d.ts +2 -4
  67. package/dist/expressions/access-length.d.ts.map +1 -1
  68. package/dist/expressions/access-length.js +7 -23
  69. package/dist/expressions/access-length.js.map +1 -1
  70. package/dist/expressions/access-length.test.js +17 -0
  71. package/dist/expressions/access-length.test.js.map +1 -1
  72. package/dist/expressions/access-resolution-receivers.d.ts.map +1 -1
  73. package/dist/expressions/access-resolution-receivers.js +10 -12
  74. package/dist/expressions/access-resolution-receivers.js.map +1 -1
  75. package/dist/expressions/access.d.ts.map +1 -1
  76. package/dist/expressions/access.js +7 -19
  77. package/dist/expressions/access.js.map +1 -1
  78. package/dist/expressions/architecture-invariants.test.js +94 -0
  79. package/dist/expressions/architecture-invariants.test.js.map +1 -1
  80. package/dist/expressions/awaitable-adaptation.d.ts +15 -0
  81. package/dist/expressions/awaitable-adaptation.d.ts.map +1 -0
  82. package/dist/expressions/awaitable-adaptation.js +174 -0
  83. package/dist/expressions/awaitable-adaptation.js.map +1 -0
  84. package/dist/expressions/calls/call-arguments-emit.d.ts.map +1 -1
  85. package/dist/expressions/calls/call-arguments-emit.js +20 -2
  86. package/dist/expressions/calls/call-arguments-emit.js.map +1 -1
  87. package/dist/expressions/calls/call-arguments-helpers.js +2 -2
  88. package/dist/expressions/calls/call-arguments-helpers.js.map +1 -1
  89. package/dist/expressions/calls/call-array-interop.d.ts +1 -1
  90. package/dist/expressions/calls/call-array-interop.d.ts.map +1 -1
  91. package/dist/expressions/calls/call-array-interop.js +1 -1
  92. package/dist/expressions/calls/call-array-interop.js.map +1 -1
  93. package/dist/expressions/calls/call-array-mutation.d.ts +0 -1
  94. package/dist/expressions/calls/call-array-mutation.d.ts.map +1 -1
  95. package/dist/expressions/calls/call-array-mutation.js +5 -7
  96. package/dist/expressions/calls/call-array-mutation.js.map +1 -1
  97. package/dist/expressions/calls/call-array-wrapper.d.ts.map +1 -1
  98. package/dist/expressions/calls/call-array-wrapper.js +3 -8
  99. package/dist/expressions/calls/call-array-wrapper.js.map +1 -1
  100. package/dist/expressions/expected-type-adaptation.d.ts.map +1 -1
  101. package/dist/expressions/expected-type-adaptation.js +15 -1
  102. package/dist/expressions/expected-type-adaptation.js.map +1 -1
  103. package/dist/expressions/identifier-storage/broad-storage-target.d.ts +4 -0
  104. package/dist/expressions/identifier-storage/broad-storage-target.d.ts.map +1 -0
  105. package/dist/expressions/identifier-storage/broad-storage-target.js +26 -0
  106. package/dist/expressions/identifier-storage/broad-storage-target.js.map +1 -0
  107. package/dist/expressions/identifier-storage/implicit-storage.d.ts +14 -0
  108. package/dist/expressions/identifier-storage/implicit-storage.d.ts.map +1 -0
  109. package/dist/expressions/identifier-storage/implicit-storage.js +44 -0
  110. package/dist/expressions/identifier-storage/implicit-storage.js.map +1 -0
  111. package/dist/expressions/identifier-storage/materialized-narrowed.d.ts +7 -0
  112. package/dist/expressions/identifier-storage/materialized-narrowed.d.ts.map +1 -0
  113. package/dist/expressions/identifier-storage/materialized-narrowed.js +92 -0
  114. package/dist/expressions/identifier-storage/materialized-narrowed.js.map +1 -0
  115. package/dist/expressions/identifier-storage/narrowed-storage-compatible.d.ts +14 -0
  116. package/dist/expressions/identifier-storage/narrowed-storage-compatible.d.ts.map +1 -0
  117. package/dist/expressions/identifier-storage/narrowed-storage-compatible.js +168 -0
  118. package/dist/expressions/identifier-storage/narrowed-storage-compatible.js.map +1 -0
  119. package/dist/expressions/identifier-storage/reified-storage.d.ts +7 -0
  120. package/dist/expressions/identifier-storage/reified-storage.d.ts.map +1 -0
  121. package/dist/expressions/identifier-storage/reified-storage.js +25 -0
  122. package/dist/expressions/identifier-storage/reified-storage.js.map +1 -0
  123. package/dist/expressions/identifier-storage/runtime-subset.d.ts +14 -0
  124. package/dist/expressions/identifier-storage/runtime-subset.d.ts.map +1 -0
  125. package/dist/expressions/identifier-storage/runtime-subset.js +100 -0
  126. package/dist/expressions/identifier-storage/runtime-subset.js.map +1 -0
  127. package/dist/expressions/identifier-storage/storage-compatible.d.ts +10 -0
  128. package/dist/expressions/identifier-storage/storage-compatible.d.ts.map +1 -0
  129. package/dist/expressions/identifier-storage/storage-compatible.js +76 -0
  130. package/dist/expressions/identifier-storage/storage-compatible.js.map +1 -0
  131. package/dist/expressions/identifier-storage/storage-surface-match.d.ts +4 -0
  132. package/dist/expressions/identifier-storage/storage-surface-match.d.ts.map +1 -0
  133. package/dist/expressions/identifier-storage/storage-surface-match.js +95 -0
  134. package/dist/expressions/identifier-storage/storage-surface-match.js.map +1 -0
  135. package/dist/expressions/identifier-storage/storage-surface-shared.d.ts +12 -0
  136. package/dist/expressions/identifier-storage/storage-surface-shared.d.ts.map +1 -0
  137. package/dist/expressions/identifier-storage/storage-surface-shared.js +77 -0
  138. package/dist/expressions/identifier-storage/storage-surface-shared.js.map +1 -0
  139. package/dist/expressions/identifier-storage/storage-surface.d.ts +9 -0
  140. package/dist/expressions/identifier-storage/storage-surface.d.ts.map +1 -0
  141. package/dist/expressions/identifier-storage/storage-surface.js +9 -0
  142. package/dist/expressions/identifier-storage/storage-surface.js.map +1 -0
  143. package/dist/expressions/identifier-storage.d.ts +1 -47
  144. package/dist/expressions/identifier-storage.d.ts.map +1 -1
  145. package/dist/expressions/identifier-storage.js +1 -652
  146. package/dist/expressions/identifier-storage.js.map +1 -1
  147. package/dist/expressions/index-cases/array-wrapper-recursion-b.test.js +7 -1
  148. package/dist/expressions/index-cases/array-wrapper-recursion-b.test.js.map +1 -1
  149. package/dist/expressions/index-cases/array-wrapper-recursion-c.test.js +4 -1
  150. package/dist/expressions/index-cases/array-wrapper-recursion-c.test.js.map +1 -1
  151. package/dist/expressions/index-cases/helpers.d.ts +1 -0
  152. package/dist/expressions/index-cases/helpers.d.ts.map +1 -1
  153. package/dist/expressions/index-cases/helpers.js +28 -0
  154. package/dist/expressions/index-cases/helpers.js.map +1 -1
  155. package/dist/expressions/index-cases/string-and-array-fallbacks-a.test.js +18 -9
  156. package/dist/expressions/index-cases/string-and-array-fallbacks-a.test.js.map +1 -1
  157. package/dist/expressions/index-cases/string-and-array-fallbacks-b.test.js +5 -5
  158. package/dist/expressions/index-cases/string-and-array-fallbacks-b.test.js.map +1 -1
  159. package/dist/expressions/lambda-body.js +3 -3
  160. package/dist/expressions/lambda-body.js.map +1 -1
  161. package/dist/expressions/operators/binary-special-ops.d.ts.map +1 -1
  162. package/dist/expressions/operators/binary-special-ops.js +4 -30
  163. package/dist/expressions/operators/binary-special-ops.js.map +1 -1
  164. package/dist/expressions/runtime-union-adaptation-upcast.d.ts +1 -1
  165. package/dist/expressions/runtime-union-adaptation-upcast.d.ts.map +1 -1
  166. package/dist/expressions/runtime-union-adaptation-upcast.js +13 -0
  167. package/dist/expressions/runtime-union-adaptation-upcast.js.map +1 -1
  168. package/dist/integration-cases/may14-downstream-contracts.test.js +372 -0
  169. package/dist/integration-cases/may14-downstream-contracts.test.js.map +1 -1
  170. package/dist/statements/classes/members/properties.d.ts.map +1 -1
  171. package/dist/statements/classes/members/properties.js +2 -3
  172. package/dist/statements/classes/members/properties.js.map +1 -1
  173. package/dist/statements/control/conditionals/branch-context.js +3 -3
  174. package/dist/statements/control/conditionals/branch-context.js.map +1 -1
  175. package/dist/statements/control/conditionals/guard-extraction.d.ts.map +1 -1
  176. package/dist/statements/control/conditionals/guard-extraction.js +7 -32
  177. package/dist/statements/control/conditionals/guard-extraction.js.map +1 -1
  178. package/dist/statements/control/loops.js +2 -2
  179. package/dist/statements/control/loops.js.map +1 -1
  180. package/dist/types/unions.js +2 -1
  181. package/dist/types/unions.js.map +1 -1
  182. package/package.json +2 -2
  183. package/dist/core/semantic/js-array-surface-members.d.ts +0 -4
  184. package/dist/core/semantic/js-array-surface-members.d.ts.map +0 -1
  185. package/dist/core/semantic/js-array-surface-members.js +0 -32
  186. 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":"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"}
@@ -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;AA82FhD;;;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,CA6iBjD,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,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
- ? (selectedParameterType ??
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
- ? (selectedParameterTypes[i] ??
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({