@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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/expressions/operators.d.ts.map +1 -1
- package/dist/expressions/operators.js +158 -1
- package/dist/expressions/operators.js.map +1 -1
- package/dist/statements/control/conditionals.d.ts.map +1 -1
- package/dist/statements/control/conditionals.js +307 -1
- package/dist/statements/control/conditionals.js.map +1 -1
- package/package.json +2 -2
|
@@ -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,
|
|
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);
|