@tsonic/emitter 0.0.55 → 0.0.56

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.
@@ -8,7 +8,7 @@
8
8
  */
9
9
  import { emitExpression } from "../expression-emitter.js";
10
10
  import { emitType } from "../type-emitter.js";
11
- import { resolveTypeAlias, stripNullish, findUnionMemberIndex, getAllPropertySignatures, isDefinitelyValueType, } from "../core/type-resolution.js";
11
+ import { resolveTypeAlias, stripNullish, findUnionMemberIndex, getPropertyType, getAllPropertySignatures, isDefinitelyValueType, } from "../core/type-resolution.js";
12
12
  import { emitBooleanCondition } from "../core/boolean-context.js";
13
13
  import { emitRemappedLocalName } from "../core/local-names.js";
14
14
  import { lowerAssignmentPattern } from "../patterns.js";
@@ -618,6 +618,54 @@ export const emitAssignment = (expr, context) => {
618
618
  const text = `${leftText} ${expr.operator} ${rightFrag.text}`;
619
619
  return [{ text, precedence: 2 }, rightContext];
620
620
  };
621
+ const resolveLocalTypesForReference = (type, context) => {
622
+ const lookupName = type.name.includes(".")
623
+ ? type.name.split(".").pop() ?? type.name
624
+ : type.name;
625
+ if (context.localTypes?.has(lookupName)) {
626
+ return context.localTypes;
627
+ }
628
+ const moduleMap = context.options.moduleMap;
629
+ if (!moduleMap)
630
+ return undefined;
631
+ const matches = [];
632
+ for (const m of moduleMap.values()) {
633
+ if (!m.localTypes)
634
+ continue;
635
+ if (m.localTypes.has(lookupName)) {
636
+ matches.push({ namespace: m.namespace, localTypes: m.localTypes });
637
+ }
638
+ }
639
+ if (matches.length === 0)
640
+ return undefined;
641
+ if (matches.length === 1)
642
+ return matches[0].localTypes;
643
+ const fqn = type.resolvedClrType ?? (type.name.includes(".") ? type.name : undefined);
644
+ if (fqn && fqn.includes(".")) {
645
+ const ns = fqn.slice(0, fqn.lastIndexOf("."));
646
+ const filtered = matches.filter((m) => m.namespace === ns);
647
+ if (filtered.length === 1)
648
+ return filtered[0].localTypes;
649
+ }
650
+ return undefined;
651
+ };
652
+ const tryGetLiteralSet = (type, context) => {
653
+ const resolved = resolveTypeAlias(type, context);
654
+ if (resolved.kind === "literalType") {
655
+ return new Set([resolved.value]);
656
+ }
657
+ if (resolved.kind === "unionType") {
658
+ const out = new Set();
659
+ for (const t of resolved.types) {
660
+ const r = resolveTypeAlias(t, context);
661
+ if (r.kind !== "literalType")
662
+ return undefined;
663
+ out.add(r.value);
664
+ }
665
+ return out;
666
+ }
667
+ return undefined;
668
+ };
621
669
  const tryResolveTernaryGuard = (condition, context) => {
622
670
  // Check for direct call: isUser(x)
623
671
  const resolveFromCall = (call) => {
@@ -651,6 +699,115 @@ const tryResolveTernaryGuard = (condition, context) => {
651
699
  if (condition.kind === "call") {
652
700
  return resolveFromCall(condition);
653
701
  }
702
+ // Discriminant literal equality: x.kind === "circle"
703
+ const resolveFromDiscriminantEquality = (expr) => {
704
+ // Normalize `!(x.prop === lit)` to `x.prop !== lit` (and vice versa) by flipping polarity.
705
+ if (expr.kind === "unary" && expr.operator === "!") {
706
+ const inner = resolveFromDiscriminantEquality(expr.expression);
707
+ if (!inner)
708
+ return undefined;
709
+ return {
710
+ ...inner,
711
+ polarity: inner.polarity === "positive" ? "negative" : "positive",
712
+ };
713
+ }
714
+ if (expr.kind !== "binary")
715
+ return undefined;
716
+ if (expr.operator !== "===" &&
717
+ expr.operator !== "!==" &&
718
+ expr.operator !== "==" &&
719
+ expr.operator !== "!=") {
720
+ return undefined;
721
+ }
722
+ const extract = (left, right) => {
723
+ if (left.kind !== "memberAccess")
724
+ return undefined;
725
+ if (left.isOptional)
726
+ return undefined;
727
+ if (left.isComputed)
728
+ return undefined;
729
+ if (left.object.kind !== "identifier")
730
+ return undefined;
731
+ if (typeof left.property !== "string")
732
+ return undefined;
733
+ if (right.kind !== "literal")
734
+ return undefined;
735
+ if (typeof right.value !== "string" &&
736
+ typeof right.value !== "number" &&
737
+ typeof right.value !== "boolean") {
738
+ return undefined;
739
+ }
740
+ return {
741
+ receiver: left.object,
742
+ propertyName: left.property,
743
+ literal: right.value,
744
+ };
745
+ };
746
+ const direct = extract(expr.left, expr.right);
747
+ const swapped = direct ? undefined : extract(expr.right, expr.left);
748
+ const match = direct ?? swapped;
749
+ if (!match)
750
+ return undefined;
751
+ const { receiver, propertyName, literal } = match;
752
+ const originalName = receiver.name;
753
+ if (context.narrowedBindings?.has(originalName))
754
+ return undefined;
755
+ const unionSourceType = receiver.inferredType;
756
+ if (!unionSourceType)
757
+ return undefined;
758
+ const resolved = resolveTypeAlias(stripNullish(unionSourceType), context);
759
+ if (resolved.kind !== "unionType")
760
+ return undefined;
761
+ const unionArity = resolved.types.length;
762
+ if (unionArity < 2 || unionArity > 8)
763
+ return undefined;
764
+ const matchingMembers = [];
765
+ for (let i = 0; i < resolved.types.length; i++) {
766
+ const member = resolved.types[i];
767
+ if (!member)
768
+ continue;
769
+ let propType;
770
+ if (member.kind === "objectType") {
771
+ const prop = member.members.find((m) => m.kind === "propertySignature" && m.name === propertyName);
772
+ propType = prop?.type;
773
+ }
774
+ else if (member.kind === "referenceType") {
775
+ const localTypes = resolveLocalTypesForReference(member, context);
776
+ if (!localTypes)
777
+ continue;
778
+ const lookupName = member.name.includes(".")
779
+ ? member.name.split(".").pop() ?? member.name
780
+ : member.name;
781
+ propType = getPropertyType({ ...member, name: lookupName }, propertyName, { ...context, localTypes });
782
+ }
783
+ else {
784
+ continue;
785
+ }
786
+ if (!propType)
787
+ continue;
788
+ const literals = tryGetLiteralSet(propType, context);
789
+ if (!literals)
790
+ continue;
791
+ if (literals.has(literal)) {
792
+ matchingMembers.push(i + 1);
793
+ }
794
+ }
795
+ if (matchingMembers.length !== 1)
796
+ return undefined;
797
+ const memberN = matchingMembers[0];
798
+ if (!memberN)
799
+ return undefined;
800
+ const isInequality = expr.operator === "!==" || expr.operator === "!=";
801
+ return {
802
+ originalName,
803
+ memberN,
804
+ escapedOrig: emitRemappedLocalName(originalName, context),
805
+ polarity: isInequality ? "negative" : "positive",
806
+ };
807
+ };
808
+ const discr = resolveFromDiscriminantEquality(condition);
809
+ if (discr)
810
+ return discr;
654
811
  // Negated call: !isUser(x) -> narrow whenFalse
655
812
  if (condition.kind === "unary" &&
656
813
  condition.operator === "!" &&
@@ -1 +1 @@
1
- {"version":3,"file":"operators.js","sourceRoot":"","sources":["../../src/expressions/operators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operators.js","sourceRoot":"","sources":["../../src/expressions/operators.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"conditionals.d.ts","sourceRoot":"","sources":["../../../src/statements/control/conditionals.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAgB,WAAW,EAAU,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,cAAc,EAKf,MAAM,gBAAgB,CAAC;AAmgBxB;;GAEG;AACH,eAAO,MAAM,eAAe,GAC1B,MAAM,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC,EACnD,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CAoiBzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAAC,EACvD,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CA4CzB,CAAC"}
1
+ {"version":3,"file":"conditionals.d.ts","sourceRoot":"","sources":["../../../src/statements/control/conditionals.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAgB,WAAW,EAAU,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,cAAc,EAMf,MAAM,gBAAgB,CAAC;AA4xBxB;;GAEG;AACH,eAAO,MAAM,eAAe,GAC1B,MAAM,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC,EACnD,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CA8qBzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAAC,EACvD,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CA4CzB,CAAC"}
@@ -5,9 +5,10 @@ import { getIndent, indent, dedent, } from "../../types.js";
5
5
  import { emitExpression } from "../../expression-emitter.js";
6
6
  import { emitIdentifier } from "../../expressions/identifiers.js";
7
7
  import { emitStatement } from "../../statement-emitter.js";
8
- import { resolveTypeAlias, stripNullish, findUnionMemberIndex, getAllPropertySignatures, isDefinitelyValueType, } from "../../core/type-resolution.js";
8
+ import { resolveTypeAlias, stripNullish, findUnionMemberIndex, getPropertyType, getAllPropertySignatures, isDefinitelyValueType, } from "../../core/type-resolution.js";
9
9
  import { escapeCSharpIdentifier } from "../../emitter-types/index.js";
10
10
  import { emitBooleanCondition, toBooleanCondition } from "../../core/boolean-context.js";
11
+ import { emitRemappedLocalName } from "../../core/local-names.js";
11
12
  /**
12
13
  * Check if a local nominal type (class/interface) has a property with the given TS name.
13
14
  */
@@ -69,6 +70,210 @@ const hasProperty = (type, propertyName, context) => {
69
70
  return perType?.has(propertyName) ?? false;
70
71
  });
71
72
  };
73
+ /**
74
+ * Resolve a reference type's LocalTypeInfo map (possibly from a different module).
75
+ *
76
+ * This is required for airplane-grade narrowing features that depend on member *types*
77
+ * (not just member names), e.g. discriminant literal equality checks.
78
+ */
79
+ const resolveLocalTypesForReference = (type, context) => {
80
+ const lookupName = type.name.includes(".")
81
+ ? type.name.split(".").pop() ?? type.name
82
+ : type.name;
83
+ if (context.localTypes?.has(lookupName)) {
84
+ return context.localTypes;
85
+ }
86
+ const moduleMap = context.options.moduleMap;
87
+ if (!moduleMap)
88
+ return undefined;
89
+ const matches = [];
90
+ for (const m of moduleMap.values()) {
91
+ if (!m.localTypes)
92
+ continue;
93
+ if (m.localTypes.has(lookupName)) {
94
+ matches.push({
95
+ namespace: m.namespace,
96
+ localTypes: m.localTypes,
97
+ });
98
+ }
99
+ }
100
+ if (matches.length === 0)
101
+ return undefined;
102
+ if (matches.length === 1)
103
+ return matches[0].localTypes;
104
+ // Disambiguate by CLR FQN when available.
105
+ const fqn = type.resolvedClrType ?? (type.name.includes(".") ? type.name : undefined);
106
+ if (fqn && fqn.includes(".")) {
107
+ const lastDot = fqn.lastIndexOf(".");
108
+ const ns = fqn.slice(0, lastDot);
109
+ const filtered = matches.filter((m) => m.namespace === ns);
110
+ if (filtered.length === 1)
111
+ return filtered[0].localTypes;
112
+ }
113
+ // Ambiguous: refuse to guess.
114
+ return undefined;
115
+ };
116
+ /**
117
+ * Extract the set of allowed discriminant literal values from a type.
118
+ *
119
+ * Airplane-grade rule:
120
+ * - The discriminant property must be typed as a literal or a union of literals.
121
+ * - If it includes any non-literal members (including null/undefined), we refuse to treat
122
+ * it as a discriminant for equality-guard narrowing.
123
+ */
124
+ const tryGetLiteralSet = (type, context) => {
125
+ const resolved = resolveTypeAlias(type, context);
126
+ if (resolved.kind === "literalType") {
127
+ return new Set([resolved.value]);
128
+ }
129
+ if (resolved.kind === "unionType") {
130
+ const out = new Set();
131
+ for (const t of resolved.types) {
132
+ const r = resolveTypeAlias(t, context);
133
+ if (r.kind !== "literalType")
134
+ return undefined;
135
+ out.add(r.value);
136
+ }
137
+ return out;
138
+ }
139
+ return undefined;
140
+ };
141
+ /**
142
+ * Try to extract guard info from `x.prop === <literal>` or `x.prop !== <literal>`.
143
+ *
144
+ * This supports airplane-grade discriminated union narrowing without relying on
145
+ * TypeScript flow analysis, by mapping the literal to exactly one union member.
146
+ */
147
+ const tryResolveDiscriminantEqualityGuard = (condition, context) => {
148
+ // Normalize `!(x.prop === lit)` to `x.prop !== lit` (and vice versa).
149
+ if (condition.kind === "unary" && condition.operator === "!") {
150
+ const inner = tryResolveDiscriminantEqualityGuard(condition.expression, context);
151
+ if (!inner)
152
+ return undefined;
153
+ const flipped = inner.operator === "===" ? "!==" :
154
+ inner.operator === "!==" ? "===" :
155
+ inner.operator === "==" ? "!=" :
156
+ inner.operator === "!=" ? "==" :
157
+ inner.operator;
158
+ return { ...inner, operator: flipped };
159
+ }
160
+ if (condition.kind !== "binary")
161
+ return undefined;
162
+ if (condition.operator !== "===" &&
163
+ condition.operator !== "!==" &&
164
+ condition.operator !== "==" &&
165
+ condition.operator !== "!=") {
166
+ return undefined;
167
+ }
168
+ const extract = (left, right) => {
169
+ if (left.kind !== "memberAccess")
170
+ return undefined;
171
+ if (left.isOptional)
172
+ return undefined;
173
+ if (left.isComputed)
174
+ return undefined;
175
+ if (left.object.kind !== "identifier")
176
+ return undefined;
177
+ if (typeof left.property !== "string")
178
+ return undefined;
179
+ if (right.kind !== "literal")
180
+ return undefined;
181
+ if (typeof right.value !== "string" &&
182
+ typeof right.value !== "number" &&
183
+ typeof right.value !== "boolean") {
184
+ return undefined;
185
+ }
186
+ return {
187
+ receiver: left.object,
188
+ propertyName: left.property,
189
+ literal: right.value,
190
+ };
191
+ };
192
+ const direct = extract(condition.left, condition.right);
193
+ const swapped = direct ? undefined : extract(condition.right, condition.left);
194
+ const match = direct ?? swapped;
195
+ if (!match)
196
+ return undefined;
197
+ const { receiver, propertyName, literal } = match;
198
+ const originalName = receiver.name;
199
+ // If this identifier is already narrowed (union guard emitted earlier), do NOT try to
200
+ // apply another union narrowing rule. This avoids mis-emitting `.IsN()` on a narrowed member type.
201
+ if (context.narrowedBindings?.has(originalName))
202
+ return undefined;
203
+ const unionSourceType = receiver.inferredType;
204
+ if (!unionSourceType)
205
+ return undefined;
206
+ const resolved = resolveTypeAlias(stripNullish(unionSourceType), context);
207
+ if (resolved.kind !== "unionType")
208
+ return undefined;
209
+ const unionArity = resolved.types.length;
210
+ if (unionArity < 2 || unionArity > 8)
211
+ return undefined;
212
+ // Find which union members have a discriminant property type that includes the literal.
213
+ const matchingMembers = [];
214
+ for (let i = 0; i < resolved.types.length; i++) {
215
+ const member = resolved.types[i];
216
+ if (!member)
217
+ continue;
218
+ let propType;
219
+ if (member.kind === "objectType") {
220
+ const prop = member.members.find((m) => m.kind === "propertySignature" && m.name === propertyName);
221
+ propType = prop?.type;
222
+ }
223
+ else if (member.kind === "referenceType") {
224
+ const localTypes = resolveLocalTypesForReference(member, context);
225
+ if (!localTypes)
226
+ continue;
227
+ const lookupName = member.name.includes(".")
228
+ ? member.name.split(".").pop() ?? member.name
229
+ : member.name;
230
+ // Use the target module's localTypes for property type resolution.
231
+ propType = getPropertyType({ ...member, name: lookupName }, propertyName, { ...context, localTypes });
232
+ }
233
+ else {
234
+ continue;
235
+ }
236
+ if (!propType)
237
+ continue;
238
+ const literals = tryGetLiteralSet(propType, context);
239
+ if (!literals)
240
+ continue;
241
+ if (literals.has(literal)) {
242
+ matchingMembers.push(i + 1);
243
+ }
244
+ }
245
+ // Only support the common airplane-grade case: exactly one matching member.
246
+ if (matchingMembers.length !== 1)
247
+ return undefined;
248
+ const memberN = matchingMembers[0];
249
+ if (!memberN)
250
+ return undefined;
251
+ const nextId = (context.tempVarId ?? 0) + 1;
252
+ const ctxWithId = { ...context, tempVarId: nextId };
253
+ const narrowedName = `${originalName}__${memberN}_${nextId}`;
254
+ const escapedOrig = emitRemappedLocalName(originalName, context);
255
+ const escapedNarrow = escapeCSharpIdentifier(narrowedName);
256
+ const narrowedMap = new Map(ctxWithId.narrowedBindings ?? []);
257
+ const memberType = resolved.types[memberN - 1];
258
+ narrowedMap.set(originalName, {
259
+ kind: "rename",
260
+ name: narrowedName,
261
+ type: memberType,
262
+ });
263
+ return {
264
+ originalName,
265
+ propertyName,
266
+ literal,
267
+ operator: condition.operator,
268
+ memberN,
269
+ unionArity,
270
+ ctxWithId,
271
+ narrowedName,
272
+ escapedOrig,
273
+ escapedNarrow,
274
+ narrowedMap,
275
+ };
276
+ };
72
277
  /**
73
278
  * Try to extract guard info from an `("prop" in x)` binary expression.
74
279
  */
@@ -451,6 +656,107 @@ export const emitIfStatement = (stmt, context) => {
451
656
  finalContext = { ...finalContext, narrowedBindings: ctxWithId.narrowedBindings };
452
657
  return [code, finalContext];
453
658
  }
659
+ // Case A4: if (shape.kind === "circle") { ... }
660
+ // Discriminant literal equality narrowing → if (shape.IsN()) / if (!shape.IsN())
661
+ const eqGuard = tryResolveDiscriminantEqualityGuard(stmt.condition, context);
662
+ if (eqGuard) {
663
+ const { originalName, operator, memberN, unionArity, ctxWithId, escapedOrig, escapedNarrow, narrowedMap, } = eqGuard;
664
+ const isInequality = operator === "!==" || operator === "!=";
665
+ const condText = isInequality
666
+ ? `!${escapedOrig}.Is${memberN}()`
667
+ : `${escapedOrig}.Is${memberN}()`;
668
+ let code = `${ind}if (${condText})`;
669
+ let finalContext = ctxWithId;
670
+ // Equality: narrow THEN to memberN. Inequality: narrow ELSE to memberN.
671
+ if (!isInequality) {
672
+ const thenCtx = {
673
+ ...indent(ctxWithId),
674
+ narrowedBindings: narrowedMap,
675
+ };
676
+ const thenInd = getIndent(thenCtx);
677
+ const castLine = `${thenInd}var ${escapedNarrow} = ${escapedOrig}.As${memberN}();`;
678
+ const [thenCode, thenBodyCtx] = emitForcedBlockWithPreamble(castLine, stmt.thenStatement, thenCtx, ind);
679
+ code += `\n${thenCode}`;
680
+ finalContext = dedent(thenBodyCtx);
681
+ if (stmt.elseStatement) {
682
+ // Else-branch narrowing only for 2-member unions.
683
+ if (unionArity === 2) {
684
+ const otherMemberN = memberN === 1 ? 2 : 1;
685
+ const inlineExpr = `(${escapedOrig}.As${otherMemberN}())`;
686
+ const elseNarrowedMap = new Map(ctxWithId.narrowedBindings ?? []);
687
+ elseNarrowedMap.set(originalName, { kind: "expr", exprText: inlineExpr });
688
+ const elseCtx = {
689
+ ...indent({ ...finalContext, narrowedBindings: elseNarrowedMap }),
690
+ };
691
+ const [elseCode, elseCtxAfter] = emitStatement(stmt.elseStatement, elseCtx);
692
+ code += `\n${ind}else\n${elseCode}`;
693
+ finalContext = dedent(elseCtxAfter);
694
+ finalContext = { ...finalContext, narrowedBindings: ctxWithId.narrowedBindings };
695
+ return [code, finalContext];
696
+ }
697
+ const [elseCode, elseCtx] = emitStatement(stmt.elseStatement, indent({ ...finalContext, narrowedBindings: ctxWithId.narrowedBindings }));
698
+ code += `\n${ind}else\n${elseCode}`;
699
+ finalContext = dedent(elseCtx);
700
+ finalContext = { ...finalContext, narrowedBindings: ctxWithId.narrowedBindings };
701
+ return [code, finalContext];
702
+ }
703
+ // Post-if narrowing for early-exit patterns (2-member unions only).
704
+ if (unionArity === 2 && isDefinitelyTerminating(stmt.thenStatement)) {
705
+ const otherMemberN = memberN === 1 ? 2 : 1;
706
+ const inlineExpr = `(${escapedOrig}.As${otherMemberN}())`;
707
+ const postMap = new Map(ctxWithId.narrowedBindings ?? []);
708
+ postMap.set(originalName, { kind: "expr", exprText: inlineExpr });
709
+ finalContext = { ...finalContext, narrowedBindings: postMap };
710
+ return [code, finalContext];
711
+ }
712
+ finalContext = { ...finalContext, narrowedBindings: ctxWithId.narrowedBindings };
713
+ return [code, finalContext];
714
+ }
715
+ // Inequality: THEN is "not memberN" (no narrowing unless arity==2), ELSE is memberN.
716
+ {
717
+ // Emit THEN (optionally narrowed to other member when arity==2).
718
+ const [thenCode, thenCtxAfter] = (() => {
719
+ if (unionArity === 2) {
720
+ const otherMemberN = memberN === 1 ? 2 : 1;
721
+ const inlineExpr = `(${escapedOrig}.As${otherMemberN}())`;
722
+ const thenNarrowedMap = new Map(ctxWithId.narrowedBindings ?? []);
723
+ thenNarrowedMap.set(originalName, { kind: "expr", exprText: inlineExpr });
724
+ const thenCtx = {
725
+ ...indent({ ...ctxWithId, narrowedBindings: thenNarrowedMap }),
726
+ };
727
+ return emitStatement(stmt.thenStatement, thenCtx);
728
+ }
729
+ return emitStatement(stmt.thenStatement, indent({ ...ctxWithId, narrowedBindings: ctxWithId.narrowedBindings }));
730
+ })();
731
+ code += `\n${thenCode}`;
732
+ finalContext = dedent(thenCtxAfter);
733
+ if (stmt.elseStatement) {
734
+ const elseCtx = {
735
+ ...indent(ctxWithId),
736
+ narrowedBindings: narrowedMap,
737
+ };
738
+ const elseInd = getIndent(elseCtx);
739
+ const castLine = `${elseInd}var ${escapedNarrow} = ${escapedOrig}.As${memberN}();`;
740
+ const [elseCode, elseBodyCtx] = emitForcedBlockWithPreamble(castLine, stmt.elseStatement, elseCtx, ind);
741
+ code += `\n${ind}else\n${elseCode}`;
742
+ finalContext = dedent(elseBodyCtx);
743
+ finalContext = { ...finalContext, narrowedBindings: ctxWithId.narrowedBindings };
744
+ return [code, finalContext];
745
+ }
746
+ // Post-if narrowing for early-exit patterns (2-member unions only):
747
+ // if (!x.IsN()) return ...;
748
+ // // x is now member N
749
+ if (unionArity === 2 && isDefinitelyTerminating(stmt.thenStatement)) {
750
+ const inlineExpr = `(${escapedOrig}.As${memberN}())`;
751
+ const postMap = new Map(ctxWithId.narrowedBindings ?? []);
752
+ postMap.set(originalName, { kind: "expr", exprText: inlineExpr });
753
+ finalContext = { ...finalContext, narrowedBindings: postMap };
754
+ return [code, finalContext];
755
+ }
756
+ finalContext = { ...finalContext, narrowedBindings: ctxWithId.narrowedBindings };
757
+ return [code, finalContext];
758
+ }
759
+ }
454
760
  // Case A2: if (x instanceof Foo) { ... }
455
761
  // C# pattern var narrowing → if (x is Foo x__is_k) { ... } (then-branch sees narrowed x)
456
762
  const instanceofGuard = tryResolveInstanceofGuard(stmt.condition, context);