@tsonic/emitter 0.0.39 → 0.0.41

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 (92) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/core/boolean-context.d.ts.map +1 -1
  3. package/dist/core/boolean-context.js +235 -25
  4. package/dist/core/boolean-context.js.map +1 -1
  5. package/dist/core/local-names.d.ts +26 -0
  6. package/dist/core/local-names.d.ts.map +1 -0
  7. package/dist/core/local-names.js +47 -0
  8. package/dist/core/local-names.js.map +1 -0
  9. package/dist/emitter-types/context.d.ts.map +1 -1
  10. package/dist/emitter-types/context.js +1 -0
  11. package/dist/emitter-types/context.js.map +1 -1
  12. package/dist/emitter-types/core.d.ts +14 -0
  13. package/dist/emitter-types/core.d.ts.map +1 -1
  14. package/dist/expressions/functions.d.ts.map +1 -1
  15. package/dist/expressions/functions.js +24 -6
  16. package/dist/expressions/functions.js.map +1 -1
  17. package/dist/expressions/operators.js +3 -3
  18. package/dist/expressions/operators.js.map +1 -1
  19. package/dist/golden-shard-0.test.d.ts +2 -0
  20. package/dist/golden-shard-0.test.d.ts.map +1 -0
  21. package/dist/golden-shard-0.test.js +3 -0
  22. package/dist/golden-shard-0.test.js.map +1 -0
  23. package/dist/golden-shard-1.test.d.ts +2 -0
  24. package/dist/golden-shard-1.test.d.ts.map +1 -0
  25. package/dist/golden-shard-1.test.js +3 -0
  26. package/dist/golden-shard-1.test.js.map +1 -0
  27. package/dist/golden-shard-2.test.d.ts +2 -0
  28. package/dist/golden-shard-2.test.d.ts.map +1 -0
  29. package/dist/golden-shard-2.test.js +3 -0
  30. package/dist/golden-shard-2.test.js.map +1 -0
  31. package/dist/golden-shard-3.test.d.ts +2 -0
  32. package/dist/golden-shard-3.test.d.ts.map +1 -0
  33. package/dist/golden-shard-3.test.js +3 -0
  34. package/dist/golden-shard-3.test.js.map +1 -0
  35. package/dist/golden-shard-4.test.d.ts +2 -0
  36. package/dist/golden-shard-4.test.d.ts.map +1 -0
  37. package/dist/golden-shard-4.test.js +3 -0
  38. package/dist/golden-shard-4.test.js.map +1 -0
  39. package/dist/golden-shard-5.test.d.ts +2 -0
  40. package/dist/golden-shard-5.test.d.ts.map +1 -0
  41. package/dist/golden-shard-5.test.js +3 -0
  42. package/dist/golden-shard-5.test.js.map +1 -0
  43. package/dist/golden-shard-6.test.d.ts +2 -0
  44. package/dist/golden-shard-6.test.d.ts.map +1 -0
  45. package/dist/golden-shard-6.test.js +3 -0
  46. package/dist/golden-shard-6.test.js.map +1 -0
  47. package/dist/golden-shard-7.test.d.ts +2 -0
  48. package/dist/golden-shard-7.test.d.ts.map +1 -0
  49. package/dist/golden-shard-7.test.js +3 -0
  50. package/dist/golden-shard-7.test.js.map +1 -0
  51. package/dist/golden-shards.d.ts +7 -0
  52. package/dist/golden-shards.d.ts.map +1 -0
  53. package/dist/golden-shards.js +35 -0
  54. package/dist/golden-shards.js.map +1 -0
  55. package/dist/patterns.d.ts.map +1 -1
  56. package/dist/patterns.js +33 -13
  57. package/dist/patterns.js.map +1 -1
  58. package/dist/statements/blocks.d.ts.map +1 -1
  59. package/dist/statements/blocks.js +21 -11
  60. package/dist/statements/blocks.js.map +1 -1
  61. package/dist/statements/classes/members/constructors.d.ts.map +1 -1
  62. package/dist/statements/classes/members/constructors.js +16 -6
  63. package/dist/statements/classes/members/constructors.js.map +1 -1
  64. package/dist/statements/classes/members/methods.d.ts.map +1 -1
  65. package/dist/statements/classes/members/methods.js +15 -7
  66. package/dist/statements/classes/members/methods.js.map +1 -1
  67. package/dist/statements/classes/members/properties.d.ts.map +1 -1
  68. package/dist/statements/classes/members/properties.js +30 -17
  69. package/dist/statements/classes/members/properties.js.map +1 -1
  70. package/dist/statements/control/conditionals.d.ts.map +1 -1
  71. package/dist/statements/control/conditionals.js +72 -35
  72. package/dist/statements/control/conditionals.js.map +1 -1
  73. package/dist/statements/control/exceptions.d.ts.map +1 -1
  74. package/dist/statements/control/exceptions.js +11 -4
  75. package/dist/statements/control/exceptions.js.map +1 -1
  76. package/dist/statements/control/loops.d.ts.map +1 -1
  77. package/dist/statements/control/loops.js +47 -16
  78. package/dist/statements/control/loops.js.map +1 -1
  79. package/dist/statements/declarations/classes.d.ts.map +1 -1
  80. package/dist/statements/declarations/classes.js +19 -6
  81. package/dist/statements/declarations/classes.js.map +1 -1
  82. package/dist/statements/declarations/functions.d.ts.map +1 -1
  83. package/dist/statements/declarations/functions.js +52 -17
  84. package/dist/statements/declarations/functions.js.map +1 -1
  85. package/dist/statements/declarations/variables.d.ts.map +1 -1
  86. package/dist/statements/declarations/variables.js +13 -24
  87. package/dist/statements/declarations/variables.js.map +1 -1
  88. package/package.json +3 -3
  89. package/dist/golden.test.d.ts +0 -11
  90. package/dist/golden.test.d.ts.map +0 -1
  91. package/dist/golden.test.js +0 -41
  92. package/dist/golden.test.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/statements/blocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/statements/blocks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"constructors.d.ts","sourceRoot":"","sources":["../../../../src/statements/classes/members/constructors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAiC,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,cAAc,EAA6B,MAAM,mBAAmB,CAAC;AAuB9E;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAChC,QAAQ,aAAa,GAAG;IAAE,IAAI,EAAE,wBAAwB,CAAA;CAAE,EAC1D,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CAuGzB,CAAC"}
1
+ {"version":3,"file":"constructors.d.ts","sourceRoot":"","sources":["../../../../src/statements/classes/members/constructors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAiC,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,cAAc,EAA6B,MAAM,mBAAmB,CAAC;AA0B9E;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAChC,QAAQ,aAAa,GAAG;IAAE,IAAI,EAAE,wBAAwB,CAAA;CAAE,EAC1D,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CA8GzB,CAAC"}
@@ -9,12 +9,15 @@ import { emitAttributes } from "../../../core/attributes.js";
9
9
  import { emitParametersWithDestructuring, generateParameterDestructuring, } from "../parameters.js";
10
10
  const seedLocalNameMapFromParameters = (params, context) => {
11
11
  const map = new Map(context.localNameMap ?? []);
12
+ const used = new Set();
12
13
  for (const p of params) {
13
14
  if (p.pattern.kind === "identifierPattern") {
14
- map.set(p.pattern.name, escapeCSharpIdentifier(p.pattern.name));
15
+ const emitted = escapeCSharpIdentifier(p.pattern.name);
16
+ map.set(p.pattern.name, emitted);
17
+ used.add(emitted);
15
18
  }
16
19
  }
17
- return { ...context, localNameMap: map };
20
+ return { ...context, localNameMap: map, usedLocalNames: used };
18
21
  };
19
22
  /**
20
23
  * Emit a constructor declaration
@@ -26,6 +29,7 @@ export const emitConstructorMember = (member, context) => {
26
29
  typeParameterNameMap: context.typeParameterNameMap,
27
30
  returnType: context.returnType,
28
31
  localNameMap: context.localNameMap,
32
+ usedLocalNames: context.usedLocalNames,
29
33
  };
30
34
  const ind = getIndent(context);
31
35
  let currentContext = context;
@@ -65,17 +69,23 @@ export const emitConstructorMember = (member, context) => {
65
69
  throw new Error("Unsupported constructor semantics: super() must be the first statement to preserve JavaScript initialization order.");
66
70
  }
67
71
  // Emit body without the super() call
68
- const bodyContext = indent(currentContext);
72
+ let bodyContext = indent(currentContext);
69
73
  const modifiedBody = {
70
74
  ...member.body,
71
75
  statements: bodyStatements,
72
76
  };
77
+ // Generate parameter destructuring statements BEFORE emitting the body so
78
+ // any renamed locals are visible to the body emitter via localNameMap.
79
+ const bodyInd = getIndent(bodyContext);
80
+ const [parameterDestructuringStmts, destructuringContext] = paramsResult.destructuringParams.length > 0
81
+ ? generateParameterDestructuring(paramsResult.destructuringParams, bodyInd, bodyContext)
82
+ : [[], bodyContext];
83
+ bodyContext = destructuringContext;
73
84
  const [bodyCode, finalContext] = emitBlockStatement(modifiedBody, bodyContext);
74
85
  // Inject parameter destructuring statements at the start of the body
75
86
  let finalBodyCode = bodyCode;
76
- if (paramsResult.destructuringParams.length > 0) {
77
- const bodyInd = getIndent(bodyContext);
78
- const [destructuringStmts] = generateParameterDestructuring(paramsResult.destructuringParams, bodyInd, finalContext);
87
+ if (parameterDestructuringStmts.length > 0) {
88
+ const destructuringStmts = parameterDestructuringStmts;
79
89
  // Inject lines after opening brace
80
90
  const lines = bodyCode.split("\n");
81
91
  if (lines.length > 1) {
@@ -1 +1 @@
1
- {"version":3,"file":"constructors.js","sourceRoot":"","sources":["../../../../src/statements/classes/members/constructors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constructors.js","sourceRoot":"","sources":["../../../../src/statements/classes/members/constructors.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"methods.d.ts","sourceRoot":"","sources":["../../../../src/statements/classes/members/methods.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAA4B,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EACL,cAAc,EAMf,MAAM,mBAAmB,CAAC;AAyC3B;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,aAAa,GAAG;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,EACrD,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CAyMzB,CAAC"}
1
+ {"version":3,"file":"methods.d.ts","sourceRoot":"","sources":["../../../../src/statements/classes/members/methods.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAA4B,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EACL,cAAc,EAMf,MAAM,mBAAmB,CAAC;AA4C3B;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,aAAa,GAAG;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,EACrD,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CAgNzB,CAAC"}
@@ -22,12 +22,15 @@ const getAsyncBodyReturnType = (isAsync, returnType) => {
22
22
  };
23
23
  const seedLocalNameMapFromParameters = (params, context) => {
24
24
  const map = new Map(context.localNameMap ?? []);
25
+ const used = new Set();
25
26
  for (const p of params) {
26
27
  if (p.pattern.kind === "identifierPattern") {
27
- map.set(p.pattern.name, escapeCSharpIdentifier(p.pattern.name));
28
+ const emitted = escapeCSharpIdentifier(p.pattern.name);
29
+ map.set(p.pattern.name, emitted);
30
+ used.add(emitted);
28
31
  }
29
32
  }
30
- return { ...context, localNameMap: map };
33
+ return { ...context, localNameMap: map, usedLocalNames: used };
31
34
  };
32
35
  /**
33
36
  * Emit a method declaration
@@ -39,6 +42,7 @@ export const emitMethodMember = (member, context) => {
39
42
  typeParameterNameMap: context.typeParameterNameMap,
40
43
  returnType: context.returnType,
41
44
  localNameMap: context.localNameMap,
45
+ usedLocalNames: context.usedLocalNames,
42
46
  };
43
47
  const ind = getIndent(context);
44
48
  let currentContext = context;
@@ -111,6 +115,12 @@ export const emitMethodMember = (member, context) => {
111
115
  // Method body
112
116
  // Use withScoped to set typeParameters and returnType for nested expressions
113
117
  const baseBodyContext = seedLocalNameMapFromParameters(member.parameters, withAsync(indent(currentContext), member.isAsync));
118
+ // Generate parameter destructuring statements BEFORE emitting the body so
119
+ // any renamed locals are visible to the body emitter via localNameMap.
120
+ const bodyInd = getIndent(baseBodyContext);
121
+ const [parameterDestructuringStmts, destructuringContext] = paramsResult.destructuringParams.length > 0
122
+ ? generateParameterDestructuring(paramsResult.destructuringParams, bodyInd, baseBodyContext)
123
+ : [[], baseBodyContext];
114
124
  if (!member.body) {
115
125
  // Abstract method without body
116
126
  // Emit attributes before the method declaration
@@ -125,7 +135,7 @@ export const emitMethodMember = (member, context) => {
125
135
  // Reuse methodTypeParams defined at the top of this function
126
136
  // Note: member.body is guaranteed to exist here (early return above handles undefined case)
127
137
  const body = member.body;
128
- const [bodyCode, finalContext] = withScoped(baseBodyContext, {
138
+ const [bodyCode, finalContext] = withScoped(destructuringContext, {
129
139
  typeParameters: methodTypeParams,
130
140
  returnType: getAsyncBodyReturnType(member.isAsync, member.returnType),
131
141
  }, (scopedCtx) => emitBlockStatement(body, scopedCtx));
@@ -148,12 +158,10 @@ export const emitMethodMember = (member, context) => {
148
158
  }
149
159
  // Inject destructuring and out parameter initializations
150
160
  let finalBodyCode = bodyCode;
151
- const bodyInd = getIndent(baseBodyContext);
152
161
  const injectLines = [];
153
162
  // Generate parameter destructuring statements
154
- if (paramsResult.destructuringParams.length > 0) {
155
- const [destructuringStmts] = generateParameterDestructuring(paramsResult.destructuringParams, bodyInd, finalContext);
156
- injectLines.push(...destructuringStmts);
163
+ if (parameterDestructuringStmts.length > 0) {
164
+ injectLines.push(...parameterDestructuringStmts);
157
165
  }
158
166
  // Add out parameter initializations
159
167
  for (const outParam of outParams) {
@@ -1 +1 @@
1
- {"version":3,"file":"methods.js","sourceRoot":"","sources":["../../../../src/statements/classes/members/methods.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"methods.js","sourceRoot":"","sources":["../../../../src/statements/classes/members/methods.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../../../src/statements/classes/members/properties.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,cAAc,EAKf,MAAM,mBAAmB,CAAC;AAQ3B;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,aAAa,GAAG;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,EACvD,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CA6IzB,CAAC"}
1
+ {"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../../../src/statements/classes/members/properties.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,cAAc,EAKf,MAAM,mBAAmB,CAAC;AAQ3B;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,aAAa,GAAG;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,EACvD,SAAS,cAAc,KACtB,CAAC,MAAM,EAAE,cAAc,CA2JzB,CAAC"}
@@ -4,10 +4,10 @@
4
4
  import { dedent, getIndent, indent, withScoped, } from "../../../types.js";
5
5
  import { emitExpression } from "../../../expression-emitter.js";
6
6
  import { emitType } from "../../../type-emitter.js";
7
- import { escapeCSharpIdentifier } from "../../../emitter-types/index.js";
8
7
  import { emitAttributes } from "../../../core/attributes.js";
9
8
  import { emitBlockStatement } from "../../blocks.js";
10
9
  import { emitCSharpName } from "../../../naming-policy.js";
10
+ import { allocateLocalName } from "../../../core/local-names.js";
11
11
  /**
12
12
  * Emit a property declaration
13
13
  */
@@ -85,37 +85,50 @@ export const emitPropertyMember = (member, context) => {
85
85
  if (member.getterBody) {
86
86
  lines.push(`${bodyInd}get`);
87
87
  const getterBodyContext = indent(bodyContext);
88
- const [getterBlock, getterCtx] = withScoped(getterBodyContext, { returnType: member.type }, (scopedCtx) => emitBlockStatement(member.getterBody, scopedCtx));
88
+ const savedUsed = getterBodyContext.usedLocalNames;
89
+ const getterEmitContext = {
90
+ ...getterBodyContext,
91
+ usedLocalNames: new Set(),
92
+ };
93
+ const [getterBlock, getterCtx] = withScoped(getterEmitContext, { returnType: member.type }, (scopedCtx) => emitBlockStatement(member.getterBody, scopedCtx));
89
94
  lines.push(getterBlock);
90
- bodyContext = dedent(getterCtx);
95
+ bodyContext = { ...dedent(getterCtx), usedLocalNames: savedUsed };
91
96
  }
92
97
  if (member.setterBody) {
93
98
  lines.push(`${bodyInd}set`);
94
99
  const setterBodyContext = indent(bodyContext);
100
+ const savedUsed = setterBodyContext.usedLocalNames;
101
+ // C# property setters have an implicit `value` parameter. Seed it to avoid CS0136 when
102
+ // user code declares `value` as a local (valid in TS when setter param name differs).
103
+ let setterEmitContext = {
104
+ ...setterBodyContext,
105
+ usedLocalNames: new Set(["value"]),
106
+ };
95
107
  const setterParamName = member.setterParamName;
96
- const [rawSetterBlock, setterCtx] = withScoped(setterBodyContext, {
97
- localNameMap: setterParamName && setterParamName !== "value"
98
- ? new Map([
99
- ...(setterBodyContext.localNameMap ?? []),
100
- [setterParamName, escapeCSharpIdentifier(setterParamName)],
101
- ])
102
- : setterBodyContext.localNameMap,
103
- }, (scopedCtx) => emitBlockStatement(member.setterBody, scopedCtx));
108
+ let aliasLine;
109
+ let scopedLocalNameMap = setterBodyContext.localNameMap;
110
+ if (setterParamName && setterParamName !== "value") {
111
+ const alloc = allocateLocalName(setterParamName, setterEmitContext);
112
+ setterEmitContext = alloc.context;
113
+ const nextMap = new Map(setterBodyContext.localNameMap ?? []);
114
+ nextMap.set(setterParamName, alloc.emittedName);
115
+ scopedLocalNameMap = nextMap;
116
+ const stmtInd = getIndent(setterBodyContext);
117
+ aliasLine = `${stmtInd}var ${alloc.emittedName} = value;`;
118
+ }
119
+ const [rawSetterBlock, setterCtx] = withScoped(setterEmitContext, { localNameMap: scopedLocalNameMap }, (scopedCtx) => emitBlockStatement(member.setterBody, scopedCtx));
104
120
  const setterBlock = (() => {
105
- if (!setterParamName || setterParamName === "value")
121
+ if (!aliasLine)
106
122
  return rawSetterBlock;
107
- const escapedParam = escapeCSharpIdentifier(setterParamName);
108
- const stmtInd = getIndent(setterBodyContext);
109
- const injectLine = `${stmtInd}var ${escapedParam} = value;`;
110
123
  const blockLines = rawSetterBlock.split("\n");
111
124
  if (blockLines.length > 1) {
112
- blockLines.splice(1, 0, injectLine, "");
125
+ blockLines.splice(1, 0, aliasLine, "");
113
126
  return blockLines.join("\n");
114
127
  }
115
128
  return rawSetterBlock;
116
129
  })();
117
130
  lines.push(setterBlock);
118
- bodyContext = dedent(setterCtx);
131
+ bodyContext = { ...dedent(setterCtx), usedLocalNames: savedUsed };
119
132
  }
120
133
  lines.push(`${bodyInd}}`);
121
134
  return [lines.join("\n"), dedent(bodyContext)];
@@ -1 +1 @@
1
- {"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../../src/statements/classes/members/properties.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"properties.js","sourceRoot":"","sources":["../../../../src/statements/classes/members/properties.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;AA+fxB;;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,CA6fzB,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,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"}
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import { getIndent, indent, dedent, } from "../../types.js";
5
5
  import { emitExpression } from "../../expression-emitter.js";
6
+ import { emitIdentifier } from "../../expressions/identifiers.js";
6
7
  import { emitStatement } from "../../statement-emitter.js";
7
8
  import { resolveTypeAlias, stripNullish, findUnionMemberIndex, getAllPropertySignatures, isDefinitelyValueType, } from "../../core/type-resolution.js";
8
9
  import { escapeCSharpIdentifier } from "../../emitter-types/index.js";
@@ -114,7 +115,8 @@ const tryResolveInGuard = (condition, context) => {
114
115
  const nextId = (context.tempVarId ?? 0) + 1;
115
116
  const ctxWithId = { ...context, tempVarId: nextId };
116
117
  const narrowedName = `${originalName}__${memberN}_${nextId}`;
117
- const escapedOrig = escapeCSharpIdentifier(originalName);
118
+ const [rhsFrag] = emitIdentifier(condition.right, context);
119
+ const escapedOrig = rhsFrag.text;
118
120
  const escapedNarrow = escapeCSharpIdentifier(narrowedName);
119
121
  const narrowedMap = new Map(ctxWithId.narrowedBindings ?? []);
120
122
  const memberType = resolved.types[memberN - 1];
@@ -184,7 +186,8 @@ const tryResolvePredicateGuard = (call, context) => {
184
186
  const nextId = (context.tempVarId ?? 0) + 1;
185
187
  const ctxWithId = { ...context, tempVarId: nextId };
186
188
  const narrowedName = `${originalName}__${memberN}_${nextId}`;
187
- const escapedOrig = escapeCSharpIdentifier(originalName);
189
+ const [argFrag] = emitIdentifier(arg, context);
190
+ const escapedOrig = argFrag.text;
188
191
  const escapedNarrow = escapeCSharpIdentifier(narrowedName);
189
192
  const narrowedMap = new Map(ctxWithId.narrowedBindings ?? []);
190
193
  narrowedMap.set(originalName, {
@@ -220,9 +223,10 @@ const tryResolveInstanceofGuard = (condition, context) => {
220
223
  if (condition.left.kind !== "identifier")
221
224
  return undefined;
222
225
  const originalName = condition.left.name;
223
- const escapedOrig = escapeCSharpIdentifier(originalName);
224
- const nextId = (context.tempVarId ?? 0) + 1;
225
- const ctxWithId = { ...context, tempVarId: nextId };
226
+ const [lhsFrag, ctxAfterLhs] = emitIdentifier(condition.left, context);
227
+ const escapedOrig = lhsFrag.text;
228
+ const nextId = (ctxAfterLhs.tempVarId ?? 0) + 1;
229
+ const ctxWithId = { ...ctxAfterLhs, tempVarId: nextId };
226
230
  // Emit RHS as a type name (e.g., global::System.String)
227
231
  const [rhsFrag, ctxAfterRhs] = emitExpression(condition.right, ctxWithId);
228
232
  const rhsTypeText = rhsFrag.text;
@@ -625,50 +629,83 @@ export const emitIfStatement = (stmt, context) => {
625
629
  }
626
630
  // Case D: Nullable value type narrowing
627
631
  // if (id !== null) { ... } → id becomes id.Value in then-branch
628
- const nullableGuard = tryResolveNullableGuard(stmt.condition, context);
632
+ const simpleNullableGuard = tryResolveSimpleNullableGuard(stmt.condition);
633
+ const nullableGuard = simpleNullableGuard ?? tryResolveNullableGuard(stmt.condition, context);
629
634
  if (nullableGuard && nullableGuard.isValueType) {
630
- const { identifierName, narrowsInThen, strippedType } = nullableGuard;
631
- const escapedName = escapeCSharpIdentifier(identifierName);
635
+ const { identifierName, identifierExpr, narrowsInThen, strippedType } = nullableGuard;
636
+ // IMPORTANT: Avoid stacking `.Value` when:
637
+ // - we are emitting an else-if chain, and
638
+ // - an outer nullable guard already narrowed the identifier in the else-branch.
639
+ //
640
+ // Example (TS):
641
+ // if (x === undefined) { ... } else if (x !== undefined) { use(x) }
642
+ //
643
+ // In C#, we might narrow `x` in the outer ELSE (x.Value). If we build a new
644
+ // narrowed binding by reading `x` via emitIdentifier (which consults narrowedBindings),
645
+ // we'd accidentally create `x.Value.Value`.
646
+ //
647
+ // So: build the `.Value` access from the *raw* identifier (respecting CS0136 remaps),
648
+ // but ignoring existing narrowedBindings.
649
+ const [idFrag] = emitIdentifier(identifierExpr, {
650
+ ...context,
651
+ narrowedBindings: undefined,
652
+ });
632
653
  // Create narrowed binding: id → id.Value
633
654
  const narrowedMap = new Map(context.narrowedBindings ?? []);
634
655
  narrowedMap.set(identifierName, {
635
656
  kind: "expr",
636
- exprText: `${escapedName}.Value`,
657
+ exprText: `${idFrag.text}.Value`,
637
658
  type: strippedType,
638
659
  });
639
- // Emit condition (boolean context)
640
- const [condText, condCtxAfterCond] = emitBooleanCondition(stmt.condition, (e, ctx) => emitExpression(e, ctx), context);
641
- // Apply narrowing to appropriate branch
642
- const thenCtx = {
643
- ...indent(condCtxAfterCond),
644
- narrowedBindings: narrowsInThen
645
- ? narrowedMap
646
- : condCtxAfterCond.narrowedBindings,
647
- };
648
- const [thenCode, thenCtxAfter] = emitStatement(stmt.thenStatement, thenCtx);
649
- let code = `${ind}if (${condText})\n${thenCode}`;
650
- let finalContext = dedent(thenCtxAfter);
651
- // Clear narrowing after branch
652
- finalContext = {
653
- ...finalContext,
654
- narrowedBindings: context.narrowedBindings,
655
- };
656
- if (stmt.elseStatement) {
657
- const elseCtx = {
658
- ...indent(finalContext),
659
- narrowedBindings: !narrowsInThen
660
+ // Soundness: In compound conditions (A && B), we must NOT apply "else" narrowing.
661
+ // `!(A && (id == null))` does not imply `id != null` unless A is provably true.
662
+ //
663
+ // Therefore:
664
+ // - For simple guards: allow both THEN (id != null) and ELSE (id == null) narrowing.
665
+ // - For &&-nested guards: only allow THEN narrowing when the guard is `!= null`.
666
+ const isAndCondition = stmt.condition.kind === "logical" && stmt.condition.operator === "&&";
667
+ if (isAndCondition && !simpleNullableGuard && !narrowsInThen) {
668
+ // `id == null` inside `&&` - narrowing would only be valid in the THEN branch
669
+ // (and even then it's "id is null", not `.Value`-usable). Skip nullable rewrite.
670
+ // Fall through to standard if emission.
671
+ }
672
+ else {
673
+ // Emit condition (boolean context)
674
+ const [condText, condCtxAfterCond] = emitBooleanCondition(stmt.condition, (e, ctx) => emitExpression(e, ctx), context);
675
+ // Apply narrowing to appropriate branch
676
+ const thenCtx = {
677
+ ...indent(condCtxAfterCond),
678
+ narrowedBindings: narrowsInThen
660
679
  ? narrowedMap
661
- : context.narrowedBindings,
680
+ : condCtxAfterCond.narrowedBindings,
662
681
  };
663
- const [elseCode, elseCtxAfter] = emitStatement(stmt.elseStatement, elseCtx);
664
- code += `\n${ind}else\n${elseCode}`;
665
- finalContext = dedent(elseCtxAfter);
682
+ const [thenCode, thenCtxAfter] = emitStatement(stmt.thenStatement, thenCtx);
683
+ let code = `${ind}if (${condText})\n${thenCode}`;
684
+ let finalContext = dedent(thenCtxAfter);
685
+ // Clear narrowing after branch
666
686
  finalContext = {
667
687
  ...finalContext,
668
688
  narrowedBindings: context.narrowedBindings,
669
689
  };
690
+ if (stmt.elseStatement) {
691
+ const elseCtx = {
692
+ ...indent(finalContext),
693
+ narrowedBindings: !narrowsInThen
694
+ ? simpleNullableGuard
695
+ ? narrowedMap
696
+ : context.narrowedBindings
697
+ : context.narrowedBindings,
698
+ };
699
+ const [elseCode, elseCtxAfter] = emitStatement(stmt.elseStatement, elseCtx);
700
+ code += `\n${ind}else\n${elseCode}`;
701
+ finalContext = dedent(elseCtxAfter);
702
+ finalContext = {
703
+ ...finalContext,
704
+ narrowedBindings: context.narrowedBindings,
705
+ };
706
+ }
707
+ return [code, finalContext];
670
708
  }
671
- return [code, finalContext];
672
709
  }
673
710
  // Standard if-statement emission (no narrowing)
674
711
  const [condText, condCtxAfterCond] = emitBooleanCondition(stmt.condition, (e, ctx) => emitExpression(e, ctx), context);