@tsonic/emitter 0.0.3 → 0.0.5

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 (118) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/adapter-generator.d.ts.map +1 -1
  3. package/dist/adapter-generator.js +3 -2
  4. package/dist/adapter-generator.js.map +1 -1
  5. package/dist/array.test.js +1 -1
  6. package/dist/array.test.js.map +1 -1
  7. package/dist/core/imports.d.ts.map +1 -1
  8. package/dist/core/imports.js +13 -9
  9. package/dist/core/imports.js.map +1 -1
  10. package/dist/core/local-types.d.ts +19 -0
  11. package/dist/core/local-types.d.ts.map +1 -0
  12. package/dist/core/local-types.js +77 -0
  13. package/dist/core/local-types.js.map +1 -0
  14. package/dist/core/module-emitter/orchestrator.d.ts.map +1 -1
  15. package/dist/core/module-emitter/orchestrator.js +11 -4
  16. package/dist/core/module-emitter/orchestrator.js.map +1 -1
  17. package/dist/core/module-emitter/static-container.d.ts +2 -1
  18. package/dist/core/module-emitter/static-container.d.ts.map +1 -1
  19. package/dist/core/module-emitter/static-container.js +9 -2
  20. package/dist/core/module-emitter/static-container.js.map +1 -1
  21. package/dist/core/module-map.d.ts.map +1 -1
  22. package/dist/core/module-map.js +6 -0
  23. package/dist/core/module-map.js.map +1 -1
  24. package/dist/core/type-resolution.d.ts +47 -0
  25. package/dist/core/type-resolution.d.ts.map +1 -0
  26. package/dist/core/type-resolution.js +283 -0
  27. package/dist/core/type-resolution.js.map +1 -0
  28. package/dist/core/type-resolution.test.d.ts +5 -0
  29. package/dist/core/type-resolution.test.d.ts.map +1 -0
  30. package/dist/core/type-resolution.test.js +271 -0
  31. package/dist/core/type-resolution.test.js.map +1 -0
  32. package/dist/emitter-types/context.d.ts +29 -0
  33. package/dist/emitter-types/context.d.ts.map +1 -1
  34. package/dist/emitter-types/context.js +39 -0
  35. package/dist/emitter-types/context.js.map +1 -1
  36. package/dist/emitter-types/core.d.ts +31 -0
  37. package/dist/emitter-types/core.d.ts.map +1 -1
  38. package/dist/emitter-types/identifiers.d.ts +23 -0
  39. package/dist/emitter-types/identifiers.d.ts.map +1 -0
  40. package/dist/emitter-types/identifiers.js +164 -0
  41. package/dist/emitter-types/identifiers.js.map +1 -0
  42. package/dist/emitter-types/index.d.ts +3 -2
  43. package/dist/emitter-types/index.d.ts.map +1 -1
  44. package/dist/emitter-types/index.js +2 -1
  45. package/dist/emitter-types/index.js.map +1 -1
  46. package/dist/expression-emitter.d.ts.map +1 -1
  47. package/dist/expression-emitter.js +5 -5
  48. package/dist/expression-emitter.js.map +1 -1
  49. package/dist/expressions/access.d.ts.map +1 -1
  50. package/dist/expressions/access.js +14 -7
  51. package/dist/expressions/access.js.map +1 -1
  52. package/dist/expressions/collections.d.ts +5 -1
  53. package/dist/expressions/collections.d.ts.map +1 -1
  54. package/dist/expressions/collections.js +19 -8
  55. package/dist/expressions/collections.js.map +1 -1
  56. package/dist/expressions/identifiers.d.ts.map +1 -1
  57. package/dist/expressions/identifiers.js +3 -2
  58. package/dist/expressions/identifiers.js.map +1 -1
  59. package/dist/expressions/literals.d.ts +2 -1
  60. package/dist/expressions/literals.d.ts.map +1 -1
  61. package/dist/expressions/literals.js +10 -1
  62. package/dist/expressions/literals.js.map +1 -1
  63. package/dist/expressions/literals.test.d.ts +5 -0
  64. package/dist/expressions/literals.test.d.ts.map +1 -0
  65. package/dist/expressions/literals.test.js +155 -0
  66. package/dist/expressions/literals.test.js.map +1 -0
  67. package/dist/expressions/operators.d.ts +5 -1
  68. package/dist/expressions/operators.d.ts.map +1 -1
  69. package/dist/expressions/operators.js +8 -3
  70. package/dist/expressions/operators.js.map +1 -1
  71. package/dist/statements/blocks.d.ts +1 -0
  72. package/dist/statements/blocks.d.ts.map +1 -1
  73. package/dist/statements/blocks.js +3 -1
  74. package/dist/statements/blocks.js.map +1 -1
  75. package/dist/statements/classes/inline-types.d.ts.map +1 -1
  76. package/dist/statements/classes/inline-types.js +3 -1
  77. package/dist/statements/classes/inline-types.js.map +1 -1
  78. package/dist/statements/classes/members/methods.d.ts.map +1 -1
  79. package/dist/statements/classes/members/methods.js +22 -8
  80. package/dist/statements/classes/members/methods.js.map +1 -1
  81. package/dist/statements/classes/members/properties.d.ts.map +1 -1
  82. package/dist/statements/classes/members/properties.js +3 -2
  83. package/dist/statements/classes/members/properties.js.map +1 -1
  84. package/dist/statements/classes/parameters.d.ts.map +1 -1
  85. package/dist/statements/classes/parameters.js +4 -3
  86. package/dist/statements/classes/parameters.js.map +1 -1
  87. package/dist/statements/classes/properties.d.ts.map +1 -1
  88. package/dist/statements/classes/properties.js +5 -4
  89. package/dist/statements/classes/properties.js.map +1 -1
  90. package/dist/statements/control/loops.d.ts.map +1 -1
  91. package/dist/statements/control/loops.js +5 -2
  92. package/dist/statements/control/loops.js.map +1 -1
  93. package/dist/statements/declarations/classes.d.ts.map +1 -1
  94. package/dist/statements/declarations/classes.js +14 -7
  95. package/dist/statements/declarations/classes.js.map +1 -1
  96. package/dist/statements/declarations/enums.d.ts.map +1 -1
  97. package/dist/statements/declarations/enums.js +8 -4
  98. package/dist/statements/declarations/enums.js.map +1 -1
  99. package/dist/statements/declarations/functions.d.ts.map +1 -1
  100. package/dist/statements/declarations/functions.js +20 -6
  101. package/dist/statements/declarations/functions.js.map +1 -1
  102. package/dist/statements/declarations/interfaces.d.ts.map +1 -1
  103. package/dist/statements/declarations/interfaces.js +2 -1
  104. package/dist/statements/declarations/interfaces.js.map +1 -1
  105. package/dist/statements/declarations/type-aliases.d.ts.map +1 -1
  106. package/dist/statements/declarations/type-aliases.js +3 -2
  107. package/dist/statements/declarations/type-aliases.js.map +1 -1
  108. package/dist/statements/declarations/variables.d.ts.map +1 -1
  109. package/dist/statements/declarations/variables.js +7 -5
  110. package/dist/statements/declarations/variables.js.map +1 -1
  111. package/dist/types/emitter.d.ts.map +1 -1
  112. package/dist/types/emitter.js +3 -0
  113. package/dist/types/emitter.js.map +1 -1
  114. package/dist/types.d.ts +2 -2
  115. package/dist/types.d.ts.map +1 -1
  116. package/dist/types.js +1 -1
  117. package/dist/types.js.map +1 -1
  118. package/package.json +2 -2
@@ -52,7 +52,7 @@ export const processImports = (imports, context, module) => {
52
52
  const actualExportName = reexportSource?.sourceName ?? exportName;
53
53
  const targetModule = moduleMap.get(actualSourcePath);
54
54
  if (targetModule) {
55
- const binding = createImportBinding(spec, targetModule.namespace, targetModule.className, actualExportName);
55
+ const binding = createImportBinding(spec, targetModule.namespace, targetModule.className, actualExportName, targetModule.hasTypeCollision);
56
56
  if (binding) {
57
57
  importBindings.set(binding.localName, binding.importBinding);
58
58
  }
@@ -127,9 +127,13 @@ const createClrImportBinding = (spec, namespace) => {
127
127
  * - Value imports: clrName is the container global:: FQN, member is the export name
128
128
  * - Namespace imports: clrName is the container global:: FQN
129
129
  */
130
- const createImportBinding = (spec, namespace, containerClassName, resolvedExportName) => {
130
+ const createImportBinding = (spec, namespace, containerClassName, resolvedExportName, hasTypeCollision = false) => {
131
131
  const localName = spec.localName;
132
- const containerFqn = `global::${namespace}.${containerClassName}`;
132
+ // Value exports live in ClassName__Module when there's a type collision, otherwise in ClassName
133
+ const valueContainerName = hasTypeCollision
134
+ ? `${containerClassName}__Module`
135
+ : containerClassName;
136
+ const valueContainerFqn = `global::${namespace}.${valueContainerName}`;
133
137
  if (spec.kind === "named") {
134
138
  // Use isType from frontend (determined by TS checker)
135
139
  const isType = spec.isType === true;
@@ -145,35 +149,35 @@ const createImportBinding = (spec, namespace, containerClassName, resolvedExport
145
149
  };
146
150
  }
147
151
  else {
148
- // Value import: clrName is container, member is the export name
152
+ // Value import: clrName is the value container, member is the export name
149
153
  return {
150
154
  localName,
151
155
  importBinding: {
152
156
  kind: "value",
153
- clrName: containerFqn,
157
+ clrName: valueContainerFqn,
154
158
  member: resolvedExportName,
155
159
  },
156
160
  };
157
161
  }
158
162
  }
159
163
  if (spec.kind === "default") {
160
- // Default export binds to the container class itself
164
+ // Default export binds to the value container class
161
165
  // TODO: Consider adding diagnostic for unsupported default exports
162
166
  return {
163
167
  localName,
164
168
  importBinding: {
165
169
  kind: "value",
166
- clrName: containerFqn,
170
+ clrName: valueContainerFqn,
167
171
  },
168
172
  };
169
173
  }
170
174
  if (spec.kind === "namespace") {
171
- // Namespace imports (import * as M) - bind to the container class
175
+ // Namespace imports (import * as M) - bind to the value container class
172
176
  return {
173
177
  localName,
174
178
  importBinding: {
175
179
  kind: "namespace",
176
- clrName: containerFqn,
180
+ clrName: valueContainerFqn,
177
181
  },
178
182
  };
179
183
  }
@@ -1 +1 @@
1
- {"version":3,"file":"imports.js","sourceRoot":"","sources":["../../src/core/imports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imports.js","sourceRoot":"","sources":["../../src/core/imports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Local type indexing for property type lookup
3
+ *
4
+ * Builds a map of locally-defined types (classes, interfaces, type aliases)
5
+ * for use in property type resolution during emission.
6
+ */
7
+ import type { IrModule } from "@tsonic/frontend";
8
+ import type { LocalTypeInfo } from "../types.js";
9
+ /**
10
+ * Build the localTypes map from a module's body statements.
11
+ *
12
+ * Scans all statements for class, interface, and typeAlias declarations
13
+ * and indexes them by name for property type lookup.
14
+ *
15
+ * @param module The IR module to scan
16
+ * @returns Map from type name to LocalTypeInfo
17
+ */
18
+ export declare const buildLocalTypes: (module: IrModule) => ReadonlyMap<string, LocalTypeInfo>;
19
+ //# sourceMappingURL=local-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-types.d.ts","sourceRoot":"","sources":["../../src/core/local-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,QAAQ,EAKT,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAC1B,QAAQ,QAAQ,KACf,WAAW,CAAC,MAAM,EAAE,aAAa,CAWnC,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Local type indexing for property type lookup
3
+ *
4
+ * Builds a map of locally-defined types (classes, interfaces, type aliases)
5
+ * for use in property type resolution during emission.
6
+ */
7
+ /**
8
+ * Build the localTypes map from a module's body statements.
9
+ *
10
+ * Scans all statements for class, interface, and typeAlias declarations
11
+ * and indexes them by name for property type lookup.
12
+ *
13
+ * @param module The IR module to scan
14
+ * @returns Map from type name to LocalTypeInfo
15
+ */
16
+ export const buildLocalTypes = (module) => {
17
+ const localTypes = new Map();
18
+ for (const stmt of module.body) {
19
+ const info = extractLocalTypeInfo(stmt);
20
+ if (info) {
21
+ localTypes.set(info.name, info.info);
22
+ }
23
+ }
24
+ return localTypes;
25
+ };
26
+ /**
27
+ * Extract LocalTypeInfo from a statement if it's a type declaration.
28
+ * Returns undefined for non-type statements.
29
+ */
30
+ const extractLocalTypeInfo = (stmt) => {
31
+ switch (stmt.kind) {
32
+ case "classDeclaration":
33
+ return {
34
+ name: stmt.name,
35
+ info: buildClassInfo(stmt),
36
+ };
37
+ case "interfaceDeclaration":
38
+ return {
39
+ name: stmt.name,
40
+ info: buildInterfaceInfo(stmt),
41
+ };
42
+ case "typeAliasDeclaration":
43
+ return {
44
+ name: stmt.name,
45
+ info: buildTypeAliasInfo(stmt),
46
+ };
47
+ default:
48
+ return undefined;
49
+ }
50
+ };
51
+ /**
52
+ * Build LocalTypeInfo for a class declaration
53
+ */
54
+ const buildClassInfo = (stmt) => ({
55
+ kind: "class",
56
+ typeParameters: stmt.typeParameters?.map((tp) => tp.name) ?? [],
57
+ members: stmt.members,
58
+ implements: stmt.implements,
59
+ });
60
+ /**
61
+ * Build LocalTypeInfo for an interface declaration
62
+ */
63
+ const buildInterfaceInfo = (stmt) => ({
64
+ kind: "interface",
65
+ typeParameters: stmt.typeParameters?.map((tp) => tp.name) ?? [],
66
+ members: stmt.members,
67
+ extends: stmt.extends,
68
+ });
69
+ /**
70
+ * Build LocalTypeInfo for a type alias declaration
71
+ */
72
+ const buildTypeAliasInfo = (stmt) => ({
73
+ kind: "typeAlias",
74
+ typeParameters: stmt.typeParameters?.map((tp) => tp.name) ?? [],
75
+ type: stmt.type,
76
+ });
77
+ //# sourceMappingURL=local-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-types.js","sourceRoot":"","sources":["../../src/core/local-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,MAAgB,EACoB,EAAE;IACtC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEpD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,IAAI,EAAE,CAAC;YACT,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,oBAAoB,GAAG,CAC3B,IAAiB,EACkC,EAAE;IACrD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,kBAAkB;YACrB,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC;aAC3B,CAAC;QAEJ,KAAK,sBAAsB;YACzB,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC;aAC/B,CAAC;QAEJ,KAAK,sBAAsB;YACzB,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC;aAC/B,CAAC;QAEJ;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,cAAc,GAAG,CAAC,IAAwB,EAAiB,EAAE,CAAC,CAAC;IACnE,IAAI,EAAE,OAAO;IACb,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;IAC/D,OAAO,EAAE,IAAI,CAAC,OAAO;IACrB,UAAU,EAAE,IAAI,CAAC,UAAU;CAC5B,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,kBAAkB,GAAG,CAAC,IAA4B,EAAiB,EAAE,CAAC,CAAC;IAC3E,IAAI,EAAE,WAAW;IACjB,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;IAC/D,OAAO,EAAE,IAAI,CAAC,OAAO;IACrB,OAAO,EAAE,IAAI,CAAC,OAAO;CACtB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,kBAAkB,GAAG,CAAC,IAA4B,EAAiB,EAAE,CAAC,CAAC;IAC3E,IAAI,EAAE,WAAW;IACjB,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;IAC/D,IAAI,EAAE,IAAI,CAAC,IAAI;CAChB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/core/module-emitter/orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAiB,MAAM,gBAAgB,CAAC;AAmB/D;;GAEG;AACH,eAAO,MAAM,UAAU,GACrB,QAAQ,QAAQ,EAChB,UAAS,OAAO,CAAC,cAAc,CAAM,KACpC,MAmEF,CAAC"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/core/module-emitter/orchestrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAiB,MAAM,gBAAgB,CAAC;AAoB/D;;GAEG;AACH,eAAO,MAAM,UAAU,GACrB,QAAQ,QAAQ,EAChB,UAAS,OAAO,CAAC,cAAc,CAAM,KACpC,MA6EF,CAAC"}
@@ -8,6 +8,7 @@ import { generateGeneratorExchanges } from "../../generator-exchange.js";
8
8
  import { defaultOptions } from "../options.js";
9
9
  import { collectTypeParameters } from "../type-params.js";
10
10
  import { processImports } from "../imports.js";
11
+ import { buildLocalTypes } from "../local-types.js";
11
12
  import { generateHeader } from "./header.js";
12
13
  import { separateStatements } from "./separation.js";
13
14
  import { emitNamespaceDeclarations } from "./namespace.js";
@@ -18,7 +19,10 @@ import { assembleOutput } from "./assembly.js";
18
19
  */
19
20
  export const emitModule = (module, options = {}) => {
20
21
  const finalOptions = { ...defaultOptions, ...options };
21
- const context = createContext(finalOptions);
22
+ const baseContext = createContext(finalOptions);
23
+ // Build local type index for property type lookup
24
+ const localTypes = buildLocalTypes(module);
25
+ const context = { ...baseContext, localTypes };
22
26
  // Generate file header
23
27
  const header = generateHeader(module, finalOptions);
24
28
  // Process imports to collect using statements
@@ -35,12 +39,15 @@ export const emitModule = (module, options = {}) => {
35
39
  const { namespaceLevelDecls, staticContainerMembers, hasInheritance } = separateStatements(module);
36
40
  // Emit namespace-level declarations (classes, interfaces)
37
41
  const namespaceResult = emitNamespaceDeclarations(namespaceLevelDecls, exchangesContext, hasInheritance);
38
- // Emit static container class unless there's a namespace-level class with same name
42
+ // Emit static container class if there are any static members
43
+ // Use __Module suffix when there's a name collision with namespace-level declarations
39
44
  let staticContainerCode = "";
40
45
  let finalContext = namespaceResult.context;
41
- if (!hasMatchingClassName(namespaceLevelDecls, module.className)) {
46
+ if (staticContainerMembers.length > 0) {
47
+ const hasCollision = hasMatchingClassName(namespaceLevelDecls, module.className);
42
48
  const containerResult = emitStaticContainer(module, staticContainerMembers, namespaceResult.context, // Use context from namespace declarations to preserve usings
43
- hasInheritance);
49
+ hasInheritance, hasCollision // Add __Module suffix only when there's a name collision
50
+ );
44
51
  staticContainerCode = containerResult.code;
45
52
  finalContext = containerResult.context;
46
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/core/module-emitter/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/core/module-emitter/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export type StaticContainerResult = {
13
13
  export declare const hasMatchingClassName: (declarations: readonly IrStatement[], className: string) => boolean;
14
14
  /**
15
15
  * Emit static container class for module-level members
16
+ * @param useModuleSuffix - If true, adds __Module suffix to avoid collision with namespace-level types
16
17
  */
17
- export declare const emitStaticContainer: (module: IrModule, members: readonly IrStatement[], baseContext: EmitterContext, hasInheritance: boolean) => StaticContainerResult;
18
+ export declare const emitStaticContainer: (module: IrModule, members: readonly IrStatement[], baseContext: EmitterContext, hasInheritance: boolean, useModuleSuffix?: boolean) => StaticContainerResult;
18
19
  //# sourceMappingURL=static-container.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"static-container.d.ts","sourceRoot":"","sources":["../../../src/core/module-emitter/static-container.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAiC,MAAM,gBAAgB,CAAC;AAI/E,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,cAAc,SAAS,WAAW,EAAE,EACpC,WAAW,MAAM,KAChB,OAOF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,QAAQ,EAChB,SAAS,SAAS,WAAW,EAAE,EAC/B,aAAa,cAAc,EAC3B,gBAAgB,OAAO,KACtB,qBAqCF,CAAC"}
1
+ {"version":3,"file":"static-container.d.ts","sourceRoot":"","sources":["../../../src/core/module-emitter/static-container.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAiC,MAAM,gBAAgB,CAAC;AAK/E,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,cAAc,SAAS,WAAW,EAAE,EACpC,WAAW,MAAM,KAChB,OAOF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,QAAQ,EAChB,SAAS,SAAS,WAAW,EAAE,EAC/B,aAAa,cAAc,EAC3B,gBAAgB,OAAO,EACvB,kBAAiB,OAAe,KAC/B,qBA0CF,CAAC"}
@@ -4,6 +4,7 @@
4
4
  import { indent, getIndent, withStatic } from "../../types.js";
5
5
  import { emitStatement } from "../../statement-emitter.js";
6
6
  import { emitExport } from "../exports.js";
7
+ import { escapeCSharpIdentifier } from "../../emitter-types/index.js";
7
8
  /**
8
9
  * Check if there's a namespace-level class with the same name as the module
9
10
  */
@@ -14,13 +15,19 @@ export const hasMatchingClassName = (declarations, className) => {
14
15
  };
15
16
  /**
16
17
  * Emit static container class for module-level members
18
+ * @param useModuleSuffix - If true, adds __Module suffix to avoid collision with namespace-level types
17
19
  */
18
- export const emitStaticContainer = (module, members, baseContext, hasInheritance) => {
20
+ export const emitStaticContainer = (module, members, baseContext, hasInheritance, useModuleSuffix = false) => {
19
21
  const classContext = withStatic(indent(baseContext), true);
20
22
  const bodyContext = indent(classContext);
21
23
  const ind = getIndent(classContext);
22
24
  const containerParts = [];
23
- containerParts.push(`${ind}public static class ${module.className}`);
25
+ const escapedClassName = escapeCSharpIdentifier(module.className);
26
+ // Use __Module suffix when there's a collision with namespace-level type declarations
27
+ const containerName = useModuleSuffix
28
+ ? `${escapedClassName}__Module`
29
+ : escapedClassName;
30
+ containerParts.push(`${ind}public static class ${containerName}`);
24
31
  containerParts.push(`${ind}{`);
25
32
  const bodyParts = [];
26
33
  let bodyCurrentContext = bodyContext;
@@ -1 +1 @@
1
- {"version":3,"file":"static-container.js","sourceRoot":"","sources":["../../../src/core/module-emitter/static-container.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAkB,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAO3C;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,YAAoC,EACpC,SAAiB,EACR,EAAE;IACX,OAAO,YAAY,CAAC,IAAI,CACtB,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,IAAI,CAAC,IAAI,KAAK,kBAAkB;QAC/B,IAAI,CAAC,IAAI,KAAK,sBAAsB,CAAC;QACvC,IAAI,CAAC,IAAI,KAAK,SAAS,CAC1B,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,MAAgB,EAChB,OAA+B,EAC/B,WAA2B,EAC3B,cAAuB,EACA,EAAE;IACzB,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;IAEpC,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,uBAAuB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IACrE,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAE/B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,kBAAkB,GAAG,WAAW,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,aAAa,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QACnE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,kBAAkB,GAAG,UAAU,CAAC;IAClC,CAAC;IAED,0BAA0B;IAC1B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;QACvD,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,kBAAkB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAE/B,OAAO;QACL,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,OAAO,EAAE,EAAE,GAAG,kBAAkB,EAAE,cAAc,EAAE;KACnD,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"static-container.js","sourceRoot":"","sources":["../../../src/core/module-emitter/static-container.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAkB,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAOtE;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,YAAoC,EACpC,SAAiB,EACR,EAAE;IACX,OAAO,YAAY,CAAC,IAAI,CACtB,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,IAAI,CAAC,IAAI,KAAK,kBAAkB;QAC/B,IAAI,CAAC,IAAI,KAAK,sBAAsB,CAAC;QACvC,IAAI,CAAC,IAAI,KAAK,SAAS,CAC1B,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,MAAgB,EAChB,OAA+B,EAC/B,WAA2B,EAC3B,cAAuB,EACvB,kBAA2B,KAAK,EACT,EAAE;IACzB,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;IAEpC,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClE,sFAAsF;IACtF,MAAM,aAAa,GAAG,eAAe;QACnC,CAAC,CAAC,GAAG,gBAAgB,UAAU;QAC/B,CAAC,CAAC,gBAAgB,CAAC;IACrB,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,uBAAuB,aAAa,EAAE,CAAC,CAAC;IAClE,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAE/B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,kBAAkB,GAAG,WAAW,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,aAAa,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QACnE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,kBAAkB,GAAG,UAAU,CAAC;IAClC,CAAC;IAED,0BAA0B;IAC1B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;QACvD,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,kBAAkB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAE/B,OAAO;QACL,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,OAAO,EAAE,EAAE,GAAG,kBAAkB,EAAE,cAAc,EAAE;KACnD,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"module-map.d.ts","sourceRoot":"","sources":["../../src/core/module-map.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,YAAY,EACZ,SAAS,EACV,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;AAEnE;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAI,UAAU,MAAM,KAAG,MAsBvD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B,GACD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACzB,SAAS,SAAS,QAAQ,EAAE,KAC3B,eAoDF,CAAC;AAqDF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,iBAAiB,MAAM,EACvB,cAAc,MAAM,KACnB,MA2CF,CAAC"}
1
+ {"version":3,"file":"module-map.d.ts","sourceRoot":"","sources":["../../src/core/module-map.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,YAAY,EACZ,SAAS,EACV,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;AAEnE;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAI,UAAU,MAAM,KAAG,MAsBvD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B,GACD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACzB,SAAS,SAAS,QAAQ,EAAE,KAC3B,eA+DF,CAAC;AAqDF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,iBAAiB,MAAM,EACvB,cAAc,MAAM,KACnB,MA2CF,CAAC"}
@@ -70,10 +70,16 @@ export const buildModuleMap = (modules) => {
70
70
  // Build the map
71
71
  for (const module of modules) {
72
72
  const canonicalPath = canonicalizeFilePath(module.filePath);
73
+ // Check if module has a type declaration (class/interface) with same name as className
74
+ // This determines whether value imports need to use __Module suffix
75
+ const hasTypeCollision = module.body.some((stmt) => (stmt.kind === "classDeclaration" ||
76
+ stmt.kind === "interfaceDeclaration") &&
77
+ stmt.name === module.className);
73
78
  map.set(canonicalPath, {
74
79
  namespace: module.namespace,
75
80
  className: module.className,
76
81
  filePath: canonicalPath,
82
+ hasTypeCollision,
77
83
  });
78
84
  }
79
85
  // Build the export map
@@ -1 +1 @@
1
- {"version":3,"file":"module-map.js","sourceRoot":"","sources":["../../src/core/module-map.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module-map.js","sourceRoot":"","sources":["../../src/core/module-map.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Type resolution helpers for generic null/default handling
3
+ *
4
+ * Provides:
5
+ * - containsTypeParameter: Check if type contains any type parameter
6
+ * - substituteTypeArgs: Substitute type arguments into a type
7
+ * - getPropertyType: Look up property type from contextual type
8
+ */
9
+ import type { IrType } from "@tsonic/frontend";
10
+ import type { EmitterContext } from "../types.js";
11
+ /**
12
+ * Check if a type contains any type parameter.
13
+ *
14
+ * Uses both:
15
+ * 1. New IR kind "typeParameterType" (preferred)
16
+ * 2. Legacy detection via typeParams set (compatibility during migration)
17
+ *
18
+ * @param type - The IR type to check
19
+ * @param typeParams - Set of type parameter names in current scope
20
+ * @returns true if the type contains a type parameter
21
+ */
22
+ export declare const containsTypeParameter: (type: IrType, typeParams: ReadonlySet<string>) => boolean;
23
+ /**
24
+ * Substitute type arguments into a type.
25
+ *
26
+ * @param type - The type to substitute into
27
+ * @param typeParamNames - List of type parameter names (in order)
28
+ * @param typeArgs - List of type arguments (in order, parallel to typeParamNames)
29
+ * @returns The type with type parameters substituted
30
+ */
31
+ export declare const substituteTypeArgs: (type: IrType, typeParamNames: readonly string[], typeArgs: readonly IrType[]) => IrType;
32
+ /**
33
+ * Look up property type from a contextual type.
34
+ *
35
+ * This handles:
36
+ * - Local types (class/interface/typeAlias) via localTypes map
37
+ * - Type alias chasing (follows alias.type until reaching a concrete type)
38
+ * - Interface extends resolution (searches base interfaces)
39
+ * - Generic type argument substitution
40
+ *
41
+ * @param contextualType - The contextual type (e.g., Result<T>)
42
+ * @param propertyName - The property name to look up
43
+ * @param context - Emitter context with localTypes
44
+ * @returns The property type after substitution, or undefined if not found
45
+ */
46
+ export declare const getPropertyType: (contextualType: IrType | undefined, propertyName: string, context: EmitterContext) => IrType | undefined;
47
+ //# sourceMappingURL=type-resolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-resolution.d.ts","sourceRoot":"","sources":["../../src/core/type-resolution.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,MAAM,EAGP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,aAAa,CAAC;AAEjE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,MAAM,EACZ,YAAY,WAAW,CAAC,MAAM,CAAC,KAC9B,OAuEF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC7B,MAAM,MAAM,EACZ,gBAAgB,SAAS,MAAM,EAAE,EACjC,UAAU,SAAS,MAAM,EAAE,KAC1B,MAYF,CAAC;AAyGF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe,GAC1B,gBAAgB,MAAM,GAAG,SAAS,EAClC,cAAc,MAAM,EACpB,SAAS,cAAc,KACtB,MAAM,GAAG,SAWX,CAAC"}