@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,76 +0,0 @@
1
- /**
2
- * Tests for Import Handling
3
- * Tests emission of .NET and local imports
4
- */
5
- import { describe, it } from "mocha";
6
- import { expect } from "chai";
7
- import { emitModule } from "../../emitter.js";
8
- describe("Import Handling", () => {
9
- it("should handle .NET imports", () => {
10
- const module = {
11
- kind: "module",
12
- filePath: "/src/test.ts",
13
- namespace: "MyApp",
14
- className: "test",
15
- isStaticContainer: true,
16
- imports: [
17
- {
18
- kind: "import",
19
- source: "System.IO",
20
- isLocal: false,
21
- isDotNet: true,
22
- specifiers: [],
23
- resolvedNamespace: "System.IO",
24
- },
25
- {
26
- kind: "import",
27
- source: "System.Text.Json",
28
- isLocal: false,
29
- isDotNet: true,
30
- specifiers: [],
31
- resolvedNamespace: "System.Text.Json",
32
- },
33
- ],
34
- body: [],
35
- exports: [],
36
- };
37
- const result = emitModule(module);
38
- expect(result).to.include("using System.IO");
39
- expect(result).to.include("using System.Text.Json");
40
- });
41
- it("should NOT emit using directives for local imports", () => {
42
- // Local module imports are always emitted as fully-qualified references,
43
- // so we don't need using directives for them
44
- const module = {
45
- kind: "module",
46
- filePath: "/src/services/api.ts",
47
- namespace: "MyApp.services",
48
- className: "api",
49
- isStaticContainer: true,
50
- imports: [
51
- {
52
- kind: "import",
53
- source: "./auth.ts",
54
- isLocal: true,
55
- isDotNet: false,
56
- specifiers: [],
57
- },
58
- {
59
- kind: "import",
60
- source: "../models/User.ts",
61
- isLocal: true,
62
- isDotNet: false,
63
- specifiers: [],
64
- },
65
- ],
66
- body: [],
67
- exports: [],
68
- };
69
- const result = emitModule(module, { rootNamespace: "MyApp" });
70
- // Should NOT include using directives for local modules
71
- // (identifiers from local imports are emitted fully-qualified)
72
- expect(result).to.not.include("using MyApp.services;");
73
- expect(result).to.not.include("using MyApp.models;");
74
- });
75
- });
76
- //# sourceMappingURL=import-handling.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"import-handling.test.js","sourceRoot":"","sources":["../../../src/tests/emitter/import-handling.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,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,MAAM,GAAa;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,cAAc;YACxB,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,MAAM;YACjB,iBAAiB,EAAE,IAAI;YACvB,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,EAAE;oBACd,iBAAiB,EAAE,WAAW;iBAC/B;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,kBAAkB;oBAC1B,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,EAAE;oBACd,iBAAiB,EAAE,kBAAkB;iBACtC;aACF;YACD,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,EAAE;SACZ,CAAC;QAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAElC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,yEAAyE;QACzE,6CAA6C;QAC7C,MAAM,MAAM,GAAa;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,sBAAsB;YAChC,SAAS,EAAE,gBAAgB;YAC3B,SAAS,EAAE,KAAK;YAChB,iBAAiB,EAAE,IAAI;YACvB,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE,KAAK;oBACf,UAAU,EAAE,EAAE;iBACf;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,mBAAmB;oBAC3B,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE,KAAK;oBACf,UAAU,EAAE,EAAE;iBACf;aACF;YACD,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,EAAE;SACZ,CAAC;QAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;QAE9D,wDAAwD;QACxD,+DAA+D;QAC/D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Tests for Module Generation
3
- * Tests emission of static containers and regular classes
4
- */
5
- export {};
6
- //# sourceMappingURL=module-generation.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"module-generation.test.d.ts","sourceRoot":"","sources":["../../../src/tests/emitter/module-generation.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,147 +0,0 @@
1
- /**
2
- * Tests for Module Generation
3
- * Tests emission of static containers and regular classes
4
- */
5
- import { describe, it } from "mocha";
6
- import { expect } from "chai";
7
- import { emitModule } from "../../emitter.js";
8
- describe("Module Generation", () => {
9
- it("should emit a static container class", () => {
10
- const module = {
11
- kind: "module",
12
- filePath: "/src/math.ts",
13
- namespace: "MyApp",
14
- className: "math",
15
- isStaticContainer: true,
16
- imports: [],
17
- body: [
18
- {
19
- kind: "variableDeclaration",
20
- declarationKind: "const",
21
- declarations: [
22
- {
23
- kind: "variableDeclarator",
24
- name: { kind: "identifierPattern", name: "PI" },
25
- initializer: { kind: "literal", value: 3.14159 },
26
- },
27
- ],
28
- isExported: true,
29
- },
30
- {
31
- kind: "functionDeclaration",
32
- name: "add",
33
- parameters: [
34
- {
35
- kind: "parameter",
36
- pattern: { kind: "identifierPattern", name: "a" },
37
- type: { kind: "primitiveType", name: "number" },
38
- isOptional: false,
39
- isRest: false,
40
- passing: "value",
41
- },
42
- {
43
- kind: "parameter",
44
- pattern: { kind: "identifierPattern", name: "b" },
45
- type: { kind: "primitiveType", name: "number" },
46
- isOptional: false,
47
- isRest: false,
48
- passing: "value",
49
- },
50
- ],
51
- returnType: { kind: "primitiveType", name: "number" },
52
- body: {
53
- kind: "blockStatement",
54
- statements: [
55
- {
56
- kind: "returnStatement",
57
- expression: {
58
- kind: "binary",
59
- operator: "+",
60
- left: { kind: "identifier", name: "a" },
61
- right: { kind: "identifier", name: "b" },
62
- },
63
- },
64
- ],
65
- },
66
- isExported: true,
67
- isAsync: false,
68
- isGenerator: false,
69
- },
70
- ],
71
- exports: [],
72
- };
73
- const result = emitModule(module);
74
- expect(result).to.include("public static class math");
75
- expect(result).to.include("var PI = 3.14159");
76
- expect(result).to.include("public static double add(double a, double b)");
77
- expect(result).to.include("return a + b");
78
- expect(result).to.include("namespace MyApp");
79
- });
80
- it("should emit a regular class", () => {
81
- const module = {
82
- kind: "module",
83
- filePath: "/src/User.ts",
84
- namespace: "MyApp",
85
- className: "User",
86
- isStaticContainer: false,
87
- imports: [],
88
- body: [
89
- {
90
- kind: "classDeclaration",
91
- name: "User",
92
- members: [
93
- {
94
- kind: "propertyDeclaration",
95
- name: "name",
96
- type: { kind: "primitiveType", name: "string" },
97
- accessibility: "public",
98
- isStatic: false,
99
- isReadonly: false,
100
- },
101
- {
102
- kind: "methodDeclaration",
103
- name: "greet",
104
- parameters: [],
105
- returnType: { kind: "primitiveType", name: "string" },
106
- body: {
107
- kind: "blockStatement",
108
- statements: [
109
- {
110
- kind: "returnStatement",
111
- expression: {
112
- kind: "templateLiteral",
113
- quasis: ["Hello, I'm ", ""],
114
- expressions: [
115
- {
116
- kind: "memberAccess",
117
- object: { kind: "this" },
118
- property: "name",
119
- isComputed: false,
120
- isOptional: false,
121
- },
122
- ],
123
- },
124
- },
125
- ],
126
- },
127
- accessibility: "public",
128
- isStatic: false,
129
- isAsync: false,
130
- isGenerator: false,
131
- },
132
- ],
133
- isStruct: false,
134
- isExported: true,
135
- implements: [],
136
- },
137
- ],
138
- exports: [],
139
- };
140
- const result = emitModule(module);
141
- expect(result).to.include("public class User");
142
- expect(result).to.include("public string name;");
143
- expect(result).to.include("public string greet()");
144
- expect(result).to.include('$"Hello, I\'m {this.name}"');
145
- });
146
- });
147
- //# sourceMappingURL=module-generation.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"module-generation.test.js","sourceRoot":"","sources":["../../../src/tests/emitter/module-generation.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,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,MAAM,GAAa;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,cAAc;YACxB,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,MAAM;YACjB,iBAAiB,EAAE,IAAI;YACvB,OAAO,EAAE,EAAE;YACX,IAAI,EAAE;gBACJ;oBACE,IAAI,EAAE,qBAAqB;oBAC3B,eAAe,EAAE,OAAO;oBACxB,YAAY,EAAE;wBACZ;4BACE,IAAI,EAAE,oBAAoB;4BAC1B,IAAI,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE;4BAC/C,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE;yBACjD;qBACF;oBACD,UAAU,EAAE,IAAI;iBACjB;gBACD;oBACE,IAAI,EAAE,qBAAqB;oBAC3B,IAAI,EAAE,KAAK;oBACX,UAAU,EAAE;wBACV;4BACE,IAAI,EAAE,WAAW;4BACjB,OAAO,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,GAAG,EAAE;4BACjD,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAC/C,UAAU,EAAE,KAAK;4BACjB,MAAM,EAAE,KAAK;4BACb,OAAO,EAAE,OAAO;yBACjB;wBACD;4BACE,IAAI,EAAE,WAAW;4BACjB,OAAO,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,GAAG,EAAE;4BACjD,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAC/C,UAAU,EAAE,KAAK;4BACjB,MAAM,EAAE,KAAK;4BACb,OAAO,EAAE,OAAO;yBACjB;qBACF;oBACD,UAAU,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACrD,IAAI,EAAE;wBACJ,IAAI,EAAE,gBAAgB;wBACtB,UAAU,EAAE;4BACV;gCACE,IAAI,EAAE,iBAAiB;gCACvB,UAAU,EAAE;oCACV,IAAI,EAAE,QAAQ;oCACd,QAAQ,EAAE,GAAG;oCACb,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE;oCACvC,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE;iCACzC;6BACF;yBACF;qBACF;oBACD,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,KAAK;iBACnB;aACF;YACD,OAAO,EAAE,EAAE;SACZ,CAAC;QAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAElC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;QAC1E,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,MAAM,GAAa;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,cAAc;YACxB,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,MAAM;YACjB,iBAAiB,EAAE,KAAK;YACxB,OAAO,EAAE,EAAE;YACX,IAAI,EAAE;gBACJ;oBACE,IAAI,EAAE,kBAAkB;oBACxB,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,qBAAqB;4BAC3B,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAC/C,aAAa,EAAE,QAAQ;4BACvB,QAAQ,EAAE,KAAK;4BACf,UAAU,EAAE,KAAK;yBAClB;wBACD;4BACE,IAAI,EAAE,mBAAmB;4BACzB,IAAI,EAAE,OAAO;4BACb,UAAU,EAAE,EAAE;4BACd,UAAU,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACrD,IAAI,EAAE;gCACJ,IAAI,EAAE,gBAAgB;gCACtB,UAAU,EAAE;oCACV;wCACE,IAAI,EAAE,iBAAiB;wCACvB,UAAU,EAAE;4CACV,IAAI,EAAE,iBAAiB;4CACvB,MAAM,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC;4CAC3B,WAAW,EAAE;gDACX;oDACE,IAAI,EAAE,cAAc;oDACpB,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;oDACxB,QAAQ,EAAE,MAAM;oDAChB,UAAU,EAAE,KAAK;oDACjB,UAAU,EAAE,KAAK;iDAClB;6CACF;yCACF;qCACF;iCACF;6BACF;4BACD,aAAa,EAAE,QAAQ;4BACvB,QAAQ,EAAE,KAAK;4BACf,OAAO,EAAE,KAAK;4BACd,WAAW,EAAE,KAAK;yBACnB;qBACF;oBACD,QAAQ,EAAE,KAAK;oBACf,UAAU,EAAE,IAAI;oBAChB,UAAU,EAAE,EAAE;iBACf;aACF;YACD,OAAO,EAAE,EAAE;SACZ,CAAC;QAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAElC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Tests for Statement Emission
3
- * Tests emission of control flow statements (if, for-of)
4
- */
5
- export {};
6
- //# sourceMappingURL=statement-emission.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"statement-emission.test.d.ts","sourceRoot":"","sources":["../../../src/tests/emitter/statement-emission.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,138 +0,0 @@
1
- /**
2
- * Tests for Statement Emission
3
- * Tests emission of control flow statements (if, for-of)
4
- */
5
- import { describe, it } from "mocha";
6
- import { expect } from "chai";
7
- import { emitModule } from "../../emitter.js";
8
- describe("Statement Emission", () => {
9
- it("should emit if statements", () => {
10
- const module = {
11
- kind: "module",
12
- filePath: "/src/test.ts",
13
- namespace: "MyApp",
14
- className: "test",
15
- isStaticContainer: true,
16
- imports: [],
17
- body: [
18
- {
19
- kind: "functionDeclaration",
20
- name: "check",
21
- parameters: [
22
- {
23
- kind: "parameter",
24
- pattern: { kind: "identifierPattern", name: "x" },
25
- type: { kind: "primitiveType", name: "number" },
26
- isOptional: false,
27
- isRest: false,
28
- passing: "value",
29
- },
30
- ],
31
- returnType: { kind: "primitiveType", name: "string" },
32
- body: {
33
- kind: "blockStatement",
34
- statements: [
35
- {
36
- kind: "ifStatement",
37
- condition: {
38
- kind: "binary",
39
- operator: ">",
40
- left: { kind: "identifier", name: "x" },
41
- right: { kind: "literal", value: 0 },
42
- },
43
- thenStatement: {
44
- kind: "blockStatement",
45
- statements: [
46
- {
47
- kind: "returnStatement",
48
- expression: { kind: "literal", value: "positive" },
49
- },
50
- ],
51
- },
52
- elseStatement: {
53
- kind: "blockStatement",
54
- statements: [
55
- {
56
- kind: "returnStatement",
57
- expression: {
58
- kind: "literal",
59
- value: "negative or zero",
60
- },
61
- },
62
- ],
63
- },
64
- },
65
- ],
66
- },
67
- isExported: true,
68
- isAsync: false,
69
- isGenerator: false,
70
- },
71
- ],
72
- exports: [],
73
- };
74
- const result = emitModule(module);
75
- // Binary comparison emits with truthiness check
76
- expect(result).to.include("if (x > 0");
77
- expect(result).to.include('return "positive"');
78
- expect(result).to.include("else");
79
- expect(result).to.include('return "negative or zero"');
80
- });
81
- it("should emit for loops", () => {
82
- const module = {
83
- kind: "module",
84
- filePath: "/src/test.ts",
85
- namespace: "MyApp",
86
- className: "test",
87
- isStaticContainer: true,
88
- imports: [],
89
- body: [
90
- {
91
- kind: "functionDeclaration",
92
- name: "loop",
93
- parameters: [],
94
- returnType: { kind: "voidType" },
95
- body: {
96
- kind: "blockStatement",
97
- statements: [
98
- {
99
- kind: "forOfStatement",
100
- variable: { kind: "identifierPattern", name: "item" },
101
- expression: { kind: "identifier", name: "items" },
102
- body: {
103
- kind: "blockStatement",
104
- statements: [
105
- {
106
- kind: "expressionStatement",
107
- expression: {
108
- kind: "call",
109
- callee: {
110
- kind: "memberAccess",
111
- object: { kind: "identifier", name: "console" },
112
- property: "log",
113
- isComputed: false,
114
- isOptional: false,
115
- },
116
- arguments: [{ kind: "identifier", name: "item" }],
117
- isOptional: false,
118
- },
119
- },
120
- ],
121
- },
122
- },
123
- ],
124
- },
125
- isExported: true,
126
- isAsync: false,
127
- isGenerator: false,
128
- },
129
- ],
130
- exports: [],
131
- };
132
- const result = emitModule(module);
133
- expect(result).to.include("foreach (var item in items)");
134
- expect(result).to.include("Tsonic.JSRuntime.console.log(item)");
135
- expect(result).to.include("using Tsonic.JSRuntime");
136
- });
137
- });
138
- //# sourceMappingURL=statement-emission.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"statement-emission.test.js","sourceRoot":"","sources":["../../../src/tests/emitter/statement-emission.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,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,MAAM,GAAa;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,cAAc;YACxB,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,MAAM;YACjB,iBAAiB,EAAE,IAAI;YACvB,OAAO,EAAE,EAAE;YACX,IAAI,EAAE;gBACJ;oBACE,IAAI,EAAE,qBAAqB;oBAC3B,IAAI,EAAE,OAAO;oBACb,UAAU,EAAE;wBACV;4BACE,IAAI,EAAE,WAAW;4BACjB,OAAO,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,GAAG,EAAE;4BACjD,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAC/C,UAAU,EAAE,KAAK;4BACjB,MAAM,EAAE,KAAK;4BACb,OAAO,EAAE,OAAO;yBACjB;qBACF;oBACD,UAAU,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACrD,IAAI,EAAE;wBACJ,IAAI,EAAE,gBAAgB;wBACtB,UAAU,EAAE;4BACV;gCACE,IAAI,EAAE,aAAa;gCACnB,SAAS,EAAE;oCACT,IAAI,EAAE,QAAQ;oCACd,QAAQ,EAAE,GAAG;oCACb,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE;oCACvC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE;iCACrC;gCACD,aAAa,EAAE;oCACb,IAAI,EAAE,gBAAgB;oCACtB,UAAU,EAAE;wCACV;4CACE,IAAI,EAAE,iBAAiB;4CACvB,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE;yCACnD;qCACF;iCACF;gCACD,aAAa,EAAE;oCACb,IAAI,EAAE,gBAAgB;oCACtB,UAAU,EAAE;wCACV;4CACE,IAAI,EAAE,iBAAiB;4CACvB,UAAU,EAAE;gDACV,IAAI,EAAE,SAAS;gDACf,KAAK,EAAE,kBAAkB;6CAC1B;yCACF;qCACF;iCACF;6BACF;yBACF;qBACF;oBACD,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,KAAK;iBACnB;aACF;YACD,OAAO,EAAE,EAAE;SACZ,CAAC;QAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAElC,gDAAgD;QAChD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,MAAM,GAAa;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,cAAc;YACxB,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,MAAM;YACjB,iBAAiB,EAAE,IAAI;YACvB,OAAO,EAAE,EAAE;YACX,IAAI,EAAE;gBACJ;oBACE,IAAI,EAAE,qBAAqB;oBAC3B,IAAI,EAAE,MAAM;oBACZ,UAAU,EAAE,EAAE;oBACd,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;oBAChC,IAAI,EAAE;wBACJ,IAAI,EAAE,gBAAgB;wBACtB,UAAU,EAAE;4BACV;gCACE,IAAI,EAAE,gBAAgB;gCACtB,QAAQ,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE;gCACrD,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE;gCACjD,IAAI,EAAE;oCACJ,IAAI,EAAE,gBAAgB;oCACtB,UAAU,EAAE;wCACV;4CACE,IAAI,EAAE,qBAAqB;4CAC3B,UAAU,EAAE;gDACV,IAAI,EAAE,MAAM;gDACZ,MAAM,EAAE;oDACN,IAAI,EAAE,cAAc;oDACpB,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;oDAC/C,QAAQ,EAAE,KAAK;oDACf,UAAU,EAAE,KAAK;oDACjB,UAAU,EAAE,KAAK;iDAClB;gDACD,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gDACjD,UAAU,EAAE,KAAK;6CAClB;yCACF;qCACF;iCACF;6BACF;yBACF;qBACF;oBACD,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,KAAK;iBACnB;aACF;YACD,OAAO,EAAE,EAAE;SACZ,CAAC;QAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAElC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Tests for Type Emission
3
- * Tests emission of primitive types and async/Task types
4
- */
5
- export {};
6
- //# sourceMappingURL=type-emission.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"type-emission.test.d.ts","sourceRoot":"","sources":["../../../src/tests/emitter/type-emission.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,109 +0,0 @@
1
- /**
2
- * Tests for Type Emission
3
- * Tests emission of primitive types and async/Task types
4
- */
5
- import { describe, it } from "mocha";
6
- import { expect } from "chai";
7
- import { emitModule } from "../../emitter.js";
8
- describe("Type Emission", () => {
9
- it("should emit primitive types correctly", () => {
10
- const module = {
11
- kind: "module",
12
- filePath: "/src/test.ts",
13
- namespace: "MyApp",
14
- className: "test",
15
- isStaticContainer: true,
16
- imports: [],
17
- body: [
18
- {
19
- kind: "functionDeclaration",
20
- name: "test",
21
- parameters: [
22
- {
23
- kind: "parameter",
24
- pattern: { kind: "identifierPattern", name: "a" },
25
- type: { kind: "primitiveType", name: "string" },
26
- isOptional: false,
27
- isRest: false,
28
- passing: "value",
29
- },
30
- {
31
- kind: "parameter",
32
- pattern: { kind: "identifierPattern", name: "b" },
33
- type: { kind: "primitiveType", name: "number" },
34
- isOptional: false,
35
- isRest: false,
36
- passing: "value",
37
- },
38
- {
39
- kind: "parameter",
40
- pattern: { kind: "identifierPattern", name: "c" },
41
- type: { kind: "primitiveType", name: "boolean" },
42
- isOptional: false,
43
- isRest: false,
44
- passing: "value",
45
- },
46
- ],
47
- returnType: { kind: "voidType" },
48
- body: { kind: "blockStatement", statements: [] },
49
- isExported: true,
50
- isAsync: false,
51
- isGenerator: false,
52
- },
53
- ],
54
- exports: [],
55
- };
56
- const result = emitModule(module);
57
- expect(result).to.include("string a");
58
- expect(result).to.include("double b");
59
- expect(result).to.include("bool c");
60
- });
61
- it("should emit async functions with Task types", () => {
62
- const module = {
63
- kind: "module",
64
- filePath: "/src/test.ts",
65
- namespace: "MyApp",
66
- className: "test",
67
- isStaticContainer: true,
68
- imports: [],
69
- body: [
70
- {
71
- kind: "functionDeclaration",
72
- name: "fetchData",
73
- parameters: [],
74
- returnType: {
75
- kind: "referenceType",
76
- name: "Promise",
77
- typeArguments: [{ kind: "primitiveType", name: "string" }],
78
- },
79
- body: {
80
- kind: "blockStatement",
81
- statements: [
82
- {
83
- kind: "returnStatement",
84
- expression: {
85
- kind: "await",
86
- expression: {
87
- kind: "call",
88
- callee: { kind: "identifier", name: "getData" },
89
- arguments: [],
90
- isOptional: false,
91
- },
92
- },
93
- },
94
- ],
95
- },
96
- isExported: true,
97
- isAsync: true,
98
- isGenerator: false,
99
- },
100
- ],
101
- exports: [],
102
- };
103
- const result = emitModule(module);
104
- expect(result).to.include("public static async Task<string> fetchData()");
105
- expect(result).to.include("await getData()");
106
- expect(result).to.include("using System.Threading.Tasks");
107
- });
108
- });
109
- //# sourceMappingURL=type-emission.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"type-emission.test.js","sourceRoot":"","sources":["../../../src/tests/emitter/type-emission.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Tests for Call-Site Rewriting
3
- * Covers spec/15-generics.md §5 - Call-Site Rewriting and Monomorphisation
4
- */
5
- export {};
6
- //# sourceMappingURL=call-site-rewriting.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"call-site-rewriting.test.d.ts","sourceRoot":"","sources":["../../../src/tests/generics/call-site-rewriting.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,92 +0,0 @@
1
- /**
2
- * Tests for Call-Site Rewriting
3
- * Covers spec/15-generics.md §5 - Call-Site Rewriting and Monomorphisation
4
- */
5
- import { describe, it } from "mocha";
6
- import { expect } from "chai";
7
- import { emitModule } from "../../emitter.js";
8
- describe("Call-Site Rewriting (spec/15 §5)", () => {
9
- it("should emit call with explicit type arguments", () => {
10
- const module = {
11
- kind: "module",
12
- filePath: "/src/main.ts",
13
- namespace: "MyApp",
14
- className: "main",
15
- isStaticContainer: true,
16
- imports: [],
17
- body: [
18
- {
19
- kind: "functionDeclaration",
20
- name: "test",
21
- parameters: [],
22
- returnType: { kind: "voidType" },
23
- body: {
24
- kind: "blockStatement",
25
- statements: [
26
- {
27
- kind: "expressionStatement",
28
- expression: {
29
- kind: "call",
30
- callee: { kind: "identifier", name: "identity" },
31
- arguments: [{ kind: "literal", value: "hello" }],
32
- isOptional: false,
33
- typeArguments: [{ kind: "primitiveType", name: "string" }],
34
- requiresSpecialization: false,
35
- },
36
- },
37
- ],
38
- },
39
- isExported: false,
40
- isAsync: false,
41
- isGenerator: false,
42
- },
43
- ],
44
- exports: [],
45
- };
46
- const result = emitModule(module);
47
- expect(result).to.include("identity<string>(");
48
- });
49
- it("should emit specialized call when requiresSpecialization is true", () => {
50
- const module = {
51
- kind: "module",
52
- filePath: "/src/main.ts",
53
- namespace: "MyApp",
54
- className: "main",
55
- isStaticContainer: true,
56
- imports: [],
57
- body: [
58
- {
59
- kind: "functionDeclaration",
60
- name: "test",
61
- parameters: [],
62
- returnType: { kind: "voidType" },
63
- body: {
64
- kind: "blockStatement",
65
- statements: [
66
- {
67
- kind: "expressionStatement",
68
- expression: {
69
- kind: "call",
70
- callee: { kind: "identifier", name: "process" },
71
- arguments: [{ kind: "literal", value: "data" }],
72
- isOptional: false,
73
- typeArguments: [{ kind: "primitiveType", name: "string" }],
74
- requiresSpecialization: true,
75
- },
76
- },
77
- ],
78
- },
79
- isExported: false,
80
- isAsync: false,
81
- isGenerator: false,
82
- },
83
- ],
84
- exports: [],
85
- };
86
- const result = emitModule(module);
87
- // Should generate specialized name
88
- expect(result).to.include("process__string(");
89
- expect(result).not.to.include("process<string>(");
90
- });
91
- });
92
- //# sourceMappingURL=call-site-rewriting.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"call-site-rewriting.test.js","sourceRoot":"","sources":["../../../src/tests/generics/call-site-rewriting.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Tests for Generic Classes
3
- * Covers spec/15-generics.md §3-5 - Generic Classes
4
- */
5
- export {};
6
- //# sourceMappingURL=generic-classes.test.d.ts.map