@tsonic/emitter 0.0.2 → 0.0.3

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 (107) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/core/imports.d.ts +2 -2
  3. package/dist/core/imports.d.ts.map +1 -1
  4. package/dist/core/imports.js +60 -4
  5. package/dist/core/imports.js.map +1 -1
  6. package/dist/core/imports.test.js +4 -4
  7. package/dist/core/imports.test.js.map +1 -1
  8. package/dist/emitter-types/core.d.ts +13 -0
  9. package/dist/emitter-types/core.d.ts.map +1 -1
  10. package/dist/emitter-types/index.d.ts +1 -1
  11. package/dist/emitter-types/index.d.ts.map +1 -1
  12. package/dist/emitter-types/index.js.map +1 -1
  13. package/dist/emitter.d.ts.map +1 -1
  14. package/dist/emitter.js +47 -0
  15. package/dist/emitter.js.map +1 -1
  16. package/dist/expression-emitter.d.ts.map +1 -1
  17. package/dist/expression-emitter.js +6 -4
  18. package/dist/expression-emitter.js.map +1 -1
  19. package/dist/expressions/access.d.ts.map +1 -1
  20. package/dist/expressions/access.js +43 -4
  21. package/dist/expressions/access.js.map +1 -1
  22. package/dist/expressions/calls.d.ts.map +1 -1
  23. package/dist/expressions/calls.js +117 -0
  24. package/dist/expressions/calls.js.map +1 -1
  25. package/dist/expressions/functions.js +1 -1
  26. package/dist/expressions/functions.js.map +1 -1
  27. package/dist/expressions/operators.d.ts +23 -3
  28. package/dist/expressions/operators.d.ts.map +1 -1
  29. package/dist/expressions/operators.js +90 -9
  30. package/dist/expressions/operators.js.map +1 -1
  31. package/dist/expressions/other.d.ts +4 -0
  32. package/dist/expressions/other.d.ts.map +1 -1
  33. package/dist/expressions/other.js +6 -1
  34. package/dist/expressions/other.js.map +1 -1
  35. package/dist/golden-tests/runner.d.ts.map +1 -1
  36. package/dist/golden-tests/runner.js +1 -0
  37. package/dist/golden-tests/runner.js.map +1 -1
  38. package/dist/hierarchical-bindings.test.js +15 -5
  39. package/dist/hierarchical-bindings.test.js.map +1 -1
  40. package/dist/integration.test.js +3 -2
  41. package/dist/integration.test.js.map +1 -1
  42. package/dist/types/parameters.test.js +4 -4
  43. package/dist/types/parameters.test.js.map +1 -1
  44. package/dist/types.d.ts +1 -1
  45. package/dist/types.d.ts.map +1 -1
  46. package/dist/types.js.map +1 -1
  47. package/package.json +1 -1
  48. package/dist/async-investigation.test.d.ts +0 -5
  49. package/dist/async-investigation.test.d.ts.map +0 -1
  50. package/dist/async-investigation.test.js +0 -239
  51. package/dist/async-investigation.test.js.map +0 -1
  52. package/dist/tests/emitter/expression-emission.test.d.ts +0 -6
  53. package/dist/tests/emitter/expression-emission.test.d.ts.map +0 -1
  54. package/dist/tests/emitter/expression-emission.test.js +0 -322
  55. package/dist/tests/emitter/expression-emission.test.js.map +0 -1
  56. package/dist/tests/emitter/import-handling.test.d.ts +0 -6
  57. package/dist/tests/emitter/import-handling.test.d.ts.map +0 -1
  58. package/dist/tests/emitter/import-handling.test.js +0 -76
  59. package/dist/tests/emitter/import-handling.test.js.map +0 -1
  60. package/dist/tests/emitter/module-generation.test.d.ts +0 -6
  61. package/dist/tests/emitter/module-generation.test.d.ts.map +0 -1
  62. package/dist/tests/emitter/module-generation.test.js +0 -147
  63. package/dist/tests/emitter/module-generation.test.js.map +0 -1
  64. package/dist/tests/emitter/statement-emission.test.d.ts +0 -6
  65. package/dist/tests/emitter/statement-emission.test.d.ts.map +0 -1
  66. package/dist/tests/emitter/statement-emission.test.js +0 -138
  67. package/dist/tests/emitter/statement-emission.test.js.map +0 -1
  68. package/dist/tests/emitter/type-emission.test.d.ts +0 -6
  69. package/dist/tests/emitter/type-emission.test.d.ts.map +0 -1
  70. package/dist/tests/emitter/type-emission.test.js +0 -109
  71. package/dist/tests/emitter/type-emission.test.js.map +0 -1
  72. package/dist/tests/generics/call-site-rewriting.test.d.ts +0 -6
  73. package/dist/tests/generics/call-site-rewriting.test.d.ts.map +0 -1
  74. package/dist/tests/generics/call-site-rewriting.test.js +0 -92
  75. package/dist/tests/generics/call-site-rewriting.test.js.map +0 -1
  76. package/dist/tests/generics/generic-classes.test.d.ts +0 -6
  77. package/dist/tests/generics/generic-classes.test.d.ts.map +0 -1
  78. package/dist/tests/generics/generic-classes.test.js +0 -55
  79. package/dist/tests/generics/generic-classes.test.js.map +0 -1
  80. package/dist/tests/generics/generic-functions.test.d.ts +0 -6
  81. package/dist/tests/generics/generic-functions.test.d.ts.map +0 -1
  82. package/dist/tests/generics/generic-functions.test.js +0 -275
  83. package/dist/tests/generics/generic-functions.test.js.map +0 -1
  84. package/dist/tests/generics/interfaces.test.d.ts +0 -6
  85. package/dist/tests/generics/interfaces.test.d.ts.map +0 -1
  86. package/dist/tests/generics/interfaces.test.js +0 -139
  87. package/dist/tests/generics/interfaces.test.js.map +0 -1
  88. package/dist/tests/generics/type-aliases.test.d.ts +0 -6
  89. package/dist/tests/generics/type-aliases.test.d.ts.map +0 -1
  90. package/dist/tests/generics/type-aliases.test.js +0 -124
  91. package/dist/tests/generics/type-aliases.test.js.map +0 -1
  92. package/dist/tests/hierarchical-bindings-full-pipeline.test.d.ts +0 -6
  93. package/dist/tests/hierarchical-bindings-full-pipeline.test.d.ts.map +0 -1
  94. package/dist/tests/hierarchical-bindings-full-pipeline.test.js +0 -202
  95. package/dist/tests/hierarchical-bindings-full-pipeline.test.js.map +0 -1
  96. package/dist/tests/ref-out-parameters.test.d.ts +0 -5
  97. package/dist/tests/ref-out-parameters.test.d.ts.map +0 -1
  98. package/dist/tests/ref-out-parameters.test.js +0 -136
  99. package/dist/tests/ref-out-parameters.test.js.map +0 -1
  100. package/dist/tests/structs/struct-emission.test.d.ts +0 -5
  101. package/dist/tests/structs/struct-emission.test.d.ts.map +0 -1
  102. package/dist/tests/structs/struct-emission.test.js +0 -165
  103. package/dist/tests/structs/struct-emission.test.js.map +0 -1
  104. package/dist/union.test.d.ts +0 -6
  105. package/dist/union.test.d.ts.map +0 -1
  106. package/dist/union.test.js +0 -367
  107. package/dist/union.test.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"type-aliases.test.js","sourceRoot":"","sources":["../../../src/tests/generics/type-aliases.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Full pipeline test: TypeScript -> IR -> C#
3
- * Tests hierarchical bindings end-to-end
4
- */
5
- export {};
6
- //# sourceMappingURL=hierarchical-bindings-full-pipeline.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hierarchical-bindings-full-pipeline.test.d.ts","sourceRoot":"","sources":["../../src/tests/hierarchical-bindings-full-pipeline.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,202 +0,0 @@
1
- /**
2
- * Full pipeline test: TypeScript -> IR -> C#
3
- * Tests hierarchical bindings end-to-end
4
- */
5
- import { describe, it } from "mocha";
6
- import { expect } from "chai";
7
- import * as ts from "typescript";
8
- import { buildIrModule, DotnetMetadataRegistry, BindingRegistry, } from "@tsonic/frontend";
9
- import { emitModule } from "../emitter.js";
10
- describe("Hierarchical Bindings - Full Pipeline", () => {
11
- it("should compile TypeScript with hierarchical bindings to correct C#", () => {
12
- const source = `
13
- export function processData() {
14
- const arr = [1, 2, 3];
15
- const result = systemLinq.enumerable.selectMany(arr, x => [x, x * 2]);
16
- return result;
17
- }
18
- `;
19
- // Create hierarchical binding manifest
20
- const bindings = new BindingRegistry();
21
- bindings.addBindings("/test/system-linq.json", {
22
- assembly: "System.Linq",
23
- namespaces: [
24
- {
25
- name: "System.Linq",
26
- alias: "systemLinq",
27
- types: [
28
- {
29
- name: "Enumerable",
30
- alias: "enumerable",
31
- kind: "class",
32
- members: [
33
- {
34
- kind: "method",
35
- name: "SelectMany",
36
- alias: "selectMany",
37
- binding: {
38
- assembly: "System.Linq",
39
- type: "System.Linq.Enumerable",
40
- member: "SelectMany",
41
- },
42
- },
43
- ],
44
- },
45
- ],
46
- },
47
- ],
48
- });
49
- // Create TypeScript program
50
- const fileName = "/test/sample.ts";
51
- const sourceFile = ts.createSourceFile(fileName, source, ts.ScriptTarget.ES2022, true, ts.ScriptKind.TS);
52
- const program = ts.createProgram([fileName], {
53
- target: ts.ScriptTarget.ES2022,
54
- module: ts.ModuleKind.ES2022,
55
- }, {
56
- getSourceFile: (name) => (name === fileName ? sourceFile : undefined),
57
- writeFile: () => { },
58
- getCurrentDirectory: () => "/test",
59
- getDirectories: () => [],
60
- fileExists: () => true,
61
- readFile: () => source,
62
- getCanonicalFileName: (f) => f,
63
- useCaseSensitiveFileNames: () => true,
64
- getNewLine: () => "\n",
65
- getDefaultLibFileName: (_options) => "lib.d.ts",
66
- });
67
- const testProgram = {
68
- program,
69
- checker: program.getTypeChecker(),
70
- options: { sourceRoot: "/test", rootNamespace: "TestApp", strict: true },
71
- sourceFiles: [sourceFile],
72
- metadata: new DotnetMetadataRegistry(),
73
- bindings,
74
- };
75
- // Step 1: Build IR
76
- const irResult = buildIrModule(sourceFile, testProgram, {
77
- sourceRoot: "/test",
78
- rootNamespace: "TestApp",
79
- });
80
- if (!irResult.ok) {
81
- console.error("IR build failed:", irResult.error);
82
- throw new Error("IR build must succeed for full pipeline test");
83
- }
84
- const irModule = irResult.value;
85
- // Step 2: Emit C# code
86
- const csharpCode = emitModule(irModule);
87
- // Step 3: Verify C# output
88
- console.log("\n=== Generated C# Code ===");
89
- console.log(csharpCode);
90
- console.log("=== End ===\n");
91
- // Verify correct CLR member call
92
- expect(csharpCode).to.include("System.Linq.Enumerable.SelectMany", "C# should use full CLR type.member from binding");
93
- // Verify using statement was added
94
- expect(csharpCode).to.include("using System.Linq", "C# should include using for assembly");
95
- // Verify intermediate TypeScript names are NOT in output
96
- expect(csharpCode).to.not.include("systemLinq", "C# should not contain TS namespace identifier");
97
- expect(csharpCode).to.not.include("enumerable", "C# should not contain TS type identifier");
98
- // Verify function structure (may be void if return type not inferred)
99
- expect(csharpCode).to.match(/public static (void|object) processData\(/, "C# should have processData function");
100
- console.log("✅ Full pipeline test passed: TypeScript -> IR -> C# with hierarchical bindings");
101
- });
102
- it("should handle multiple hierarchical bindings in same code", () => {
103
- const source = `
104
- export function multipleBindings() {
105
- const a = myLib.typeA.methodA(1);
106
- const b = myLib.typeB.methodB("test");
107
- return a + b;
108
- }
109
- `;
110
- const bindings = new BindingRegistry();
111
- bindings.addBindings("/test/mylib.json", {
112
- assembly: "MyLib",
113
- namespaces: [
114
- {
115
- name: "MyLib",
116
- alias: "myLib",
117
- types: [
118
- {
119
- name: "TypeA",
120
- alias: "typeA",
121
- kind: "class",
122
- members: [
123
- {
124
- kind: "method",
125
- name: "MethodA",
126
- alias: "methodA",
127
- binding: {
128
- assembly: "MyLib",
129
- type: "MyLib.TypeA",
130
- member: "MethodA",
131
- },
132
- },
133
- ],
134
- },
135
- {
136
- name: "TypeB",
137
- alias: "typeB",
138
- kind: "class",
139
- members: [
140
- {
141
- kind: "method",
142
- name: "MethodB",
143
- alias: "methodB",
144
- binding: {
145
- assembly: "MyLib",
146
- type: "MyLib.TypeB",
147
- member: "MethodB",
148
- },
149
- },
150
- ],
151
- },
152
- ],
153
- },
154
- ],
155
- });
156
- const fileName = "/test/multi.ts";
157
- const sourceFile = ts.createSourceFile(fileName, source, ts.ScriptTarget.ES2022, true);
158
- const program = ts.createProgram([fileName], {
159
- target: ts.ScriptTarget.ES2022,
160
- module: ts.ModuleKind.ES2022,
161
- }, {
162
- getSourceFile: (name) => (name === fileName ? sourceFile : undefined),
163
- writeFile: () => { },
164
- getCurrentDirectory: () => "/test",
165
- getDirectories: () => [],
166
- fileExists: () => true,
167
- readFile: () => source,
168
- getCanonicalFileName: (f) => f,
169
- useCaseSensitiveFileNames: () => true,
170
- getNewLine: () => "\n",
171
- getDefaultLibFileName: (_options) => "lib.d.ts",
172
- });
173
- const testProgram = {
174
- program,
175
- checker: program.getTypeChecker(),
176
- options: { sourceRoot: "/test", rootNamespace: "TestApp", strict: true },
177
- sourceFiles: [sourceFile],
178
- metadata: new DotnetMetadataRegistry(),
179
- bindings,
180
- };
181
- const irResult = buildIrModule(sourceFile, testProgram, {
182
- sourceRoot: "/test",
183
- rootNamespace: "TestApp",
184
- });
185
- if (!irResult.ok) {
186
- throw new Error("IR build failed for multiple bindings test");
187
- }
188
- const csharpCode = emitModule(irResult.value);
189
- console.log("\n=== Multiple Bindings C# ===");
190
- console.log(csharpCode);
191
- console.log("=== End ===\n");
192
- // Both CLR calls should be present
193
- expect(csharpCode).to.include("MyLib.TypeA.MethodA");
194
- expect(csharpCode).to.include("MyLib.TypeB.MethodB");
195
- // TypeScript identifiers should not appear
196
- expect(csharpCode).to.not.include("myLib");
197
- expect(csharpCode).to.not.include("typeA");
198
- expect(csharpCode).to.not.include("typeB");
199
- console.log("✅ Multiple bindings test passed");
200
- });
201
- });
202
- //# sourceMappingURL=hierarchical-bindings-full-pipeline.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hierarchical-bindings-full-pipeline.test.js","sourceRoot":"","sources":["../../src/tests/hierarchical-bindings-full-pipeline.test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACrD,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,MAAM,GAAG;;;;;;KAMd,CAAC;QAEF,uCAAuC;QACvC,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;QACvC,QAAQ,CAAC,WAAW,CAAC,wBAAwB,EAAE;YAC7C,QAAQ,EAAE,aAAa;YACvB,UAAU,EAAE;gBACV;oBACE,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE,YAAY;oBACnB,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,YAAY;4BAClB,KAAK,EAAE,YAAY;4BACnB,IAAI,EAAE,OAAO;4BACb,OAAO,EAAE;gCACP;oCACE,IAAI,EAAE,QAAQ;oCACd,IAAI,EAAE,YAAY;oCAClB,KAAK,EAAE,YAAY;oCACnB,OAAO,EAAE;wCACP,QAAQ,EAAE,aAAa;wCACvB,IAAI,EAAE,wBAAwB;wCAC9B,MAAM,EAAE,YAAY;qCACrB;iCACF;6BACF;yBACF;qBACF;iBACF;aACF;SACF,CAAC,CAAC;QAEH,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,iBAAiB,CAAC;QACnC,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CACpC,QAAQ,EACR,MAAM,EACN,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EACJ,EAAE,CAAC,UAAU,CAAC,EAAE,CACjB,CAAC;QAEF,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAC9B,CAAC,QAAQ,CAAC,EACV;YACE,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM;YAC9B,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM;SAC7B,EACD;YACE,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YACrE,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC;YACnB,mBAAmB,EAAE,GAAG,EAAE,CAAC,OAAO;YAClC,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE;YACxB,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;YACtB,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM;YACtB,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9B,yBAAyB,EAAE,GAAG,EAAE,CAAC,IAAI;YACrC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;YACtB,qBAAqB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU;SAChD,CACF,CAAC;QAEF,MAAM,WAAW,GAAG;YAClB,OAAO;YACP,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE;YACjC,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;YACxE,WAAW,EAAE,CAAC,UAAU,CAAC;YACzB,QAAQ,EAAE,IAAI,sBAAsB,EAAE;YACtC,QAAQ;SACT,CAAC;QAEF,mBAAmB;QACnB,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,EAAE,WAAW,EAAE;YACtD,UAAU,EAAE,OAAO;YACnB,aAAa,EAAE,SAAS;SACzB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;QAEhC,uBAAuB;QACvB,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAExC,2BAA2B;QAC3B,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAE7B,iCAAiC;QACjC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,OAAO,CAC3B,mCAAmC,EACnC,iDAAiD,CAClD,CAAC;QAEF,mCAAmC;QACnC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,OAAO,CAC3B,mBAAmB,EACnB,sCAAsC,CACvC,CAAC;QAEF,yDAAyD;QACzD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAC/B,YAAY,EACZ,+CAA+C,CAChD,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAC/B,YAAY,EACZ,0CAA0C,CAC3C,CAAC;QAEF,sEAAsE;QACtE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CACzB,2CAA2C,EAC3C,qCAAqC,CACtC,CAAC;QAEF,OAAO,CAAC,GAAG,CACT,gFAAgF,CACjF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,MAAM,GAAG;;;;;;KAMd,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;QACvC,QAAQ,CAAC,WAAW,CAAC,kBAAkB,EAAE;YACvC,QAAQ,EAAE,OAAO;YACjB,UAAU,EAAE;gBACV;oBACE,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,OAAO;oBACd,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,OAAO;4BACd,IAAI,EAAE,OAAO;4BACb,OAAO,EAAE;gCACP;oCACE,IAAI,EAAE,QAAQ;oCACd,IAAI,EAAE,SAAS;oCACf,KAAK,EAAE,SAAS;oCAChB,OAAO,EAAE;wCACP,QAAQ,EAAE,OAAO;wCACjB,IAAI,EAAE,aAAa;wCACnB,MAAM,EAAE,SAAS;qCAClB;iCACF;6BACF;yBACF;wBACD;4BACE,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,OAAO;4BACd,IAAI,EAAE,OAAO;4BACb,OAAO,EAAE;gCACP;oCACE,IAAI,EAAE,QAAQ;oCACd,IAAI,EAAE,SAAS;oCACf,KAAK,EAAE,SAAS;oCAChB,OAAO,EAAE;wCACP,QAAQ,EAAE,OAAO;wCACjB,IAAI,EAAE,aAAa;wCACnB,MAAM,EAAE,SAAS;qCAClB;iCACF;6BACF;yBACF;qBACF;iBACF;aACF;SACF,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,gBAAgB,CAAC;QAClC,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CACpC,QAAQ,EACR,MAAM,EACN,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,CACL,CAAC;QAEF,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAC9B,CAAC,QAAQ,CAAC,EACV;YACE,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM;YAC9B,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM;SAC7B,EACD;YACE,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YACrE,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC;YACnB,mBAAmB,EAAE,GAAG,EAAE,CAAC,OAAO;YAClC,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE;YACxB,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;YACtB,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM;YACtB,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9B,yBAAyB,EAAE,GAAG,EAAE,CAAC,IAAI;YACrC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;YACtB,qBAAqB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU;SAChD,CACF,CAAC;QAEF,MAAM,WAAW,GAAG;YAClB,OAAO;YACP,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE;YACjC,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;YACxE,WAAW,EAAE,CAAC,UAAU,CAAC;YACzB,QAAQ,EAAE,IAAI,sBAAsB,EAAE;YACtC,QAAQ;SACT,CAAC;QAEF,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,EAAE,WAAW,EAAE;YACtD,UAAU,EAAE,OAAO;YACnB,aAAa,EAAE,SAAS;SACzB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE9C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAE7B,mCAAmC;QACnC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACrD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAErD,2CAA2C;QAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE3C,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Test ref/out/in parameter emission
3
- */
4
- export {};
5
- //# sourceMappingURL=ref-out-parameters.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ref-out-parameters.test.d.ts","sourceRoot":"","sources":["../../src/tests/ref-out-parameters.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,136 +0,0 @@
1
- /**
2
- * Test ref/out/in parameter emission
3
- */
4
- import { describe, it } from "mocha";
5
- import { expect } from "chai";
6
- import { emitParameters } from "../statements/classes/parameters.js";
7
- describe("Parameter modifiers (ref/out/in)", () => {
8
- const baseContext = {
9
- indentLevel: 0,
10
- isStatic: false,
11
- isAsync: false,
12
- usings: new Set(),
13
- options: { runtime: "dotnet", rootNamespace: "Test" },
14
- };
15
- it("should emit out parameter with out modifier", () => {
16
- const params = [
17
- {
18
- kind: "parameter",
19
- pattern: { kind: "identifierPattern", name: "result" },
20
- type: {
21
- kind: "referenceType",
22
- name: "out",
23
- typeArguments: [
24
- {
25
- kind: "referenceType",
26
- name: "int",
27
- },
28
- ],
29
- },
30
- isOptional: false,
31
- isRest: false,
32
- passing: "out",
33
- },
34
- ];
35
- const [emitted, _context] = emitParameters(params, baseContext);
36
- expect(emitted).to.equal("out int result");
37
- });
38
- it("should emit ref parameter with ref modifier", () => {
39
- const params = [
40
- {
41
- kind: "parameter",
42
- pattern: { kind: "identifierPattern", name: "value" },
43
- type: {
44
- kind: "referenceType",
45
- name: "ref",
46
- typeArguments: [
47
- {
48
- kind: "referenceType",
49
- name: "int",
50
- },
51
- ],
52
- },
53
- isOptional: false,
54
- isRest: false,
55
- passing: "ref",
56
- },
57
- ];
58
- const [emitted, _context] = emitParameters(params, baseContext);
59
- expect(emitted).to.equal("ref int value");
60
- });
61
- it("should emit in parameter with in modifier", () => {
62
- const params = [
63
- {
64
- kind: "parameter",
65
- pattern: { kind: "identifierPattern", name: "value" },
66
- type: {
67
- kind: "referenceType",
68
- name: "In",
69
- typeArguments: [
70
- {
71
- kind: "referenceType",
72
- name: "int",
73
- },
74
- ],
75
- },
76
- isOptional: false,
77
- isRest: false,
78
- passing: "in",
79
- },
80
- ];
81
- const [emitted, _context] = emitParameters(params, baseContext);
82
- expect(emitted).to.equal("in int value");
83
- });
84
- it("should emit multiple parameters with mixed modifiers", () => {
85
- const params = [
86
- {
87
- kind: "parameter",
88
- pattern: { kind: "identifierPattern", name: "input" },
89
- type: {
90
- kind: "referenceType",
91
- name: "int",
92
- },
93
- isOptional: false,
94
- isRest: false,
95
- passing: "value",
96
- },
97
- {
98
- kind: "parameter",
99
- pattern: { kind: "identifierPattern", name: "output" },
100
- type: {
101
- kind: "referenceType",
102
- name: "out",
103
- typeArguments: [
104
- {
105
- kind: "referenceType",
106
- name: "int",
107
- },
108
- ],
109
- },
110
- isOptional: false,
111
- isRest: false,
112
- passing: "out",
113
- },
114
- {
115
- kind: "parameter",
116
- pattern: { kind: "identifierPattern", name: "counter" },
117
- type: {
118
- kind: "referenceType",
119
- name: "ref",
120
- typeArguments: [
121
- {
122
- kind: "referenceType",
123
- name: "int",
124
- },
125
- ],
126
- },
127
- isOptional: false,
128
- isRest: false,
129
- passing: "ref",
130
- },
131
- ];
132
- const [emitted, _context] = emitParameters(params, baseContext);
133
- expect(emitted).to.equal("int input, out int output, ref int counter");
134
- });
135
- });
136
- //# sourceMappingURL=ref-out-parameters.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ref-out-parameters.test.js","sourceRoot":"","sources":["../../src/tests/ref-out-parameters.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Tests for struct emission
3
- */
4
- export {};
5
- //# sourceMappingURL=struct-emission.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"struct-emission.test.d.ts","sourceRoot":"","sources":["../../../src/tests/structs/struct-emission.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,165 +0,0 @@
1
- /**
2
- * Tests for struct emission
3
- */
4
- import { describe, it } from "mocha";
5
- import { expect } from "chai";
6
- import { emitCSharpFile } from "../../index.js";
7
- describe("Struct Emission", () => {
8
- it("should emit struct for class with isStruct flag", () => {
9
- const classDecl = {
10
- kind: "classDeclaration",
11
- name: "Point",
12
- members: [
13
- {
14
- kind: "propertyDeclaration",
15
- name: "x",
16
- type: { kind: "primitiveType", name: "number" },
17
- accessibility: "public",
18
- isStatic: false,
19
- isReadonly: false,
20
- },
21
- {
22
- kind: "propertyDeclaration",
23
- name: "y",
24
- type: { kind: "primitiveType", name: "number" },
25
- accessibility: "public",
26
- isStatic: false,
27
- isReadonly: false,
28
- },
29
- ],
30
- implements: [],
31
- isExported: true,
32
- isStruct: true,
33
- };
34
- const module = {
35
- kind: "module",
36
- filePath: "/src/Point.ts",
37
- namespace: "Geometry",
38
- className: "Point",
39
- isStaticContainer: false,
40
- imports: [],
41
- body: [classDecl],
42
- exports: [],
43
- };
44
- const result = emitCSharpFile(module);
45
- expect(result).to.include("public struct Point");
46
- expect(result).to.include("public double x");
47
- expect(result).to.include("public double y");
48
- expect(result).not.to.include("class Point");
49
- });
50
- it("should emit class for class without isStruct flag", () => {
51
- const classDecl = {
52
- kind: "classDeclaration",
53
- name: "RegularClass",
54
- members: [
55
- {
56
- kind: "propertyDeclaration",
57
- name: "value",
58
- type: { kind: "primitiveType", name: "number" },
59
- accessibility: "public",
60
- isStatic: false,
61
- isReadonly: false,
62
- },
63
- ],
64
- implements: [],
65
- isExported: true,
66
- isStruct: false,
67
- };
68
- const module = {
69
- kind: "module",
70
- filePath: "/src/RegularClass.ts",
71
- namespace: "App",
72
- className: "RegularClass",
73
- isStaticContainer: false,
74
- imports: [],
75
- body: [classDecl],
76
- exports: [],
77
- };
78
- const result = emitCSharpFile(module);
79
- expect(result).to.include("public class RegularClass");
80
- expect(result).not.to.include("struct RegularClass");
81
- });
82
- it("should emit struct for interface with isStruct flag", () => {
83
- const interfaceDecl = {
84
- kind: "interfaceDeclaration",
85
- name: "Vector3D",
86
- members: [
87
- {
88
- kind: "propertySignature",
89
- name: "x",
90
- type: { kind: "primitiveType", name: "number" },
91
- isOptional: false,
92
- isReadonly: false,
93
- },
94
- {
95
- kind: "propertySignature",
96
- name: "y",
97
- type: { kind: "primitiveType", name: "number" },
98
- isOptional: false,
99
- isReadonly: false,
100
- },
101
- {
102
- kind: "propertySignature",
103
- name: "z",
104
- type: { kind: "primitiveType", name: "number" },
105
- isOptional: false,
106
- isReadonly: false,
107
- },
108
- ],
109
- extends: [],
110
- isExported: true,
111
- isStruct: true,
112
- };
113
- const module = {
114
- kind: "module",
115
- filePath: "/src/Vector3D.ts",
116
- namespace: "Geometry",
117
- className: "Vector3D",
118
- isStaticContainer: false,
119
- imports: [],
120
- body: [interfaceDecl],
121
- exports: [],
122
- };
123
- const result = emitCSharpFile(module);
124
- expect(result).to.include("public struct Vector3D");
125
- expect(result).to.include("public double x");
126
- expect(result).to.include("public double y");
127
- expect(result).to.include("public double z");
128
- expect(result).not.to.include("class Vector3D");
129
- });
130
- it("should not emit __brand property for struct", () => {
131
- const classDecl = {
132
- kind: "classDeclaration",
133
- name: "Coord",
134
- members: [
135
- {
136
- kind: "propertyDeclaration",
137
- name: "x",
138
- type: { kind: "primitiveType", name: "number" },
139
- accessibility: "public",
140
- isStatic: false,
141
- isReadonly: false,
142
- },
143
- // __brand should already be filtered by the IR builder,
144
- // but test that emitter handles it gracefully
145
- ],
146
- implements: [],
147
- isExported: true,
148
- isStruct: true,
149
- };
150
- const module = {
151
- kind: "module",
152
- filePath: "/src/Coord.ts",
153
- namespace: "Geometry",
154
- className: "Coord",
155
- isStaticContainer: false,
156
- imports: [],
157
- body: [classDecl],
158
- exports: [],
159
- };
160
- const result = emitCSharpFile(module);
161
- expect(result).to.include("public struct Coord");
162
- expect(result).not.to.include("__brand");
163
- });
164
- });
165
- //# sourceMappingURL=struct-emission.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"struct-emission.test.js","sourceRoot":"","sources":["../../../src/tests/structs/struct-emission.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Tests for union type emission
3
- * Verifies TypeScript unions map to C# Union<T1, T2>
4
- */
5
- export {};
6
- //# sourceMappingURL=union.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"union.test.d.ts","sourceRoot":"","sources":["../src/union.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}