@alloy-js/csharp 0.20.0-dev.3 → 0.20.0-dev.4

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 (249) hide show
  1. package/dist/src/components/Declaration.d.ts +2 -2
  2. package/dist/src/components/Declaration.d.ts.map +1 -1
  3. package/dist/src/components/Declaration.js +3 -13
  4. package/dist/src/components/Reference.d.ts.map +1 -1
  5. package/dist/src/components/Reference.js +5 -1
  6. package/dist/src/components/SourceFile.d.ts +8 -9
  7. package/dist/src/components/SourceFile.d.ts.map +1 -1
  8. package/dist/src/components/SourceFile.js +69 -45
  9. package/dist/src/components/UsingDirective.d.ts +5 -1
  10. package/dist/src/components/UsingDirective.d.ts.map +1 -1
  11. package/dist/src/components/UsingDirective.js +3 -1
  12. package/dist/src/components/class/declaration.d.ts +2 -2
  13. package/dist/src/components/class/declaration.d.ts.map +1 -1
  14. package/dist/src/components/class/declaration.js +18 -32
  15. package/dist/src/components/class/declaration.test.js +171 -193
  16. package/dist/src/components/constructor/constructor.d.ts.map +1 -1
  17. package/dist/src/components/constructor/constructor.js +11 -16
  18. package/dist/src/components/constructor/constructor.test.js +10 -19
  19. package/dist/src/components/{EnumDeclaration.d.ts → enum/declaration.d.ts} +6 -11
  20. package/dist/src/components/enum/declaration.d.ts.map +1 -0
  21. package/dist/src/components/enum/declaration.js +54 -0
  22. package/dist/src/components/enum/declaration.ref.test.d.ts +2 -0
  23. package/dist/src/components/enum/declaration.ref.test.d.ts.map +1 -0
  24. package/dist/src/components/enum/declaration.ref.test.js +120 -0
  25. package/dist/src/components/enum/declaration.test.d.ts +2 -0
  26. package/dist/src/components/enum/declaration.test.d.ts.map +1 -0
  27. package/dist/src/components/enum/declaration.test.js +39 -0
  28. package/dist/src/components/enum/member.d.ts +7 -0
  29. package/dist/src/components/enum/member.d.ts.map +1 -0
  30. package/dist/src/components/enum/member.js +29 -0
  31. package/dist/src/components/enum/member.test.d.ts +2 -0
  32. package/dist/src/components/enum/member.test.d.ts.map +1 -0
  33. package/dist/src/components/enum/member.test.js +28 -0
  34. package/dist/src/components/field/field.d.ts.map +1 -1
  35. package/dist/src/components/field/field.js +9 -14
  36. package/dist/src/components/field/field.test.js +7 -7
  37. package/dist/src/components/index.d.ts +5 -2
  38. package/dist/src/components/index.d.ts.map +1 -1
  39. package/dist/src/components/index.js +5 -2
  40. package/dist/src/components/interface/declaration.d.ts.map +1 -1
  41. package/dist/src/components/interface/declaration.js +19 -21
  42. package/dist/src/components/interface/declaration.test.js +26 -35
  43. package/dist/src/components/interface/method.d.ts.map +1 -1
  44. package/dist/src/components/interface/method.js +7 -15
  45. package/dist/src/components/interface/method.test.js +38 -47
  46. package/dist/src/components/interface/property.d.ts.map +1 -1
  47. package/dist/src/components/interface/property.js +21 -36
  48. package/dist/src/components/interface/property.test.js +11 -11
  49. package/dist/src/components/lexical-scope.d.ts +8 -0
  50. package/dist/src/components/lexical-scope.d.ts.map +1 -0
  51. package/dist/src/components/lexical-scope.js +24 -0
  52. package/dist/src/components/method/method.d.ts +5 -2
  53. package/dist/src/components/method/method.d.ts.map +1 -1
  54. package/dist/src/components/method/method.js +7 -13
  55. package/dist/src/components/method/method.test.js +11 -11
  56. package/dist/src/components/method-scope.d.ts +8 -0
  57. package/dist/src/components/method-scope.d.ts.map +1 -0
  58. package/dist/src/components/method-scope.js +24 -0
  59. package/dist/src/components/namespace-scopes.d.ts +13 -0
  60. package/dist/src/components/namespace-scopes.d.ts.map +1 -0
  61. package/dist/src/components/namespace-scopes.js +44 -0
  62. package/dist/src/components/namespace.d.ts +7 -0
  63. package/dist/src/components/namespace.d.ts.map +1 -0
  64. package/dist/src/components/namespace.js +46 -0
  65. package/dist/src/components/namespace.ref.test.d.ts +2 -0
  66. package/dist/src/components/namespace.ref.test.d.ts.map +1 -0
  67. package/dist/src/components/namespace.ref.test.js +181 -0
  68. package/dist/src/components/namespace.test.d.ts.map +1 -0
  69. package/dist/src/components/namespace.test.js +78 -0
  70. package/dist/src/components/parameters/parameters.d.ts +2 -2
  71. package/dist/src/components/parameters/parameters.d.ts.map +1 -1
  72. package/dist/src/components/parameters/parameters.js +12 -11
  73. package/dist/src/components/parameters/parameters.test.d.ts +2 -0
  74. package/dist/src/components/parameters/parameters.test.d.ts.map +1 -0
  75. package/dist/src/components/parameters/parameters.test.js +87 -0
  76. package/dist/src/components/property/property.d.ts.map +1 -1
  77. package/dist/src/components/property/property.js +21 -36
  78. package/dist/src/components/property/property.test.js +14 -14
  79. package/dist/src/components/record/declaration.d.ts.map +1 -1
  80. package/dist/src/components/record/declaration.js +8 -12
  81. package/dist/src/components/record/declaration.test.js +6 -13
  82. package/dist/src/components/struct/declaration.d.ts.map +1 -1
  83. package/dist/src/components/struct/declaration.js +4 -6
  84. package/dist/src/components/struct/declaration.test.js +30 -39
  85. package/dist/src/components/type-parameters/type-parameter.d.ts.map +1 -1
  86. package/dist/src/components/type-parameters/type-parameter.js +7 -10
  87. package/dist/src/components/type-parameters/type-parameters.test.js +3 -3
  88. package/dist/src/components/var/declaration.d.ts.map +1 -1
  89. package/dist/src/components/var/declaration.js +6 -8
  90. package/dist/src/components/var/declaration.test.js +11 -20
  91. package/dist/src/contexts/global-namespace.d.ts +5 -0
  92. package/dist/src/contexts/global-namespace.d.ts.map +1 -0
  93. package/dist/src/contexts/global-namespace.js +24 -0
  94. package/dist/src/contexts/namespace.d.ts +8 -0
  95. package/dist/src/contexts/namespace.d.ts.map +1 -0
  96. package/dist/src/contexts/namespace.js +5 -0
  97. package/dist/src/index.d.ts +1 -0
  98. package/dist/src/index.d.ts.map +1 -1
  99. package/dist/src/index.js +1 -0
  100. package/dist/src/modifiers.d.ts +11 -0
  101. package/dist/src/modifiers.d.ts.map +1 -1
  102. package/dist/src/scopes/class.d.ts +10 -0
  103. package/dist/src/scopes/class.d.ts.map +1 -0
  104. package/dist/src/scopes/class.js +10 -0
  105. package/dist/src/scopes/contexts.d.ts +9 -0
  106. package/dist/src/scopes/contexts.d.ts.map +1 -0
  107. package/dist/src/scopes/contexts.js +33 -0
  108. package/dist/src/scopes/csharp.d.ts +8 -0
  109. package/dist/src/scopes/csharp.d.ts.map +1 -0
  110. package/dist/src/scopes/csharp.js +11 -0
  111. package/dist/src/scopes/factories.d.ts +9 -0
  112. package/dist/src/scopes/factories.d.ts.map +1 -0
  113. package/dist/src/scopes/factories.js +23 -0
  114. package/dist/src/scopes/index.d.ts +10 -0
  115. package/dist/src/scopes/index.d.ts.map +1 -0
  116. package/dist/src/scopes/index.js +9 -0
  117. package/dist/src/scopes/lexical.d.ts +7 -0
  118. package/dist/src/scopes/lexical.d.ts.map +1 -0
  119. package/dist/src/scopes/lexical.js +7 -0
  120. package/dist/src/scopes/method.d.ts +9 -0
  121. package/dist/src/scopes/method.d.ts.map +1 -0
  122. package/dist/src/scopes/method.js +13 -0
  123. package/dist/src/scopes/named-type.d.ts +22 -0
  124. package/dist/src/scopes/named-type.d.ts.map +1 -0
  125. package/dist/src/scopes/named-type.js +32 -0
  126. package/dist/src/scopes/namespace.d.ts +11 -0
  127. package/dist/src/scopes/namespace.d.ts.map +1 -0
  128. package/dist/src/scopes/namespace.js +38 -0
  129. package/dist/src/scopes/source-file.d.ts +16 -0
  130. package/dist/src/scopes/source-file.d.ts.map +1 -0
  131. package/dist/src/scopes/source-file.js +43 -0
  132. package/dist/src/symbols/csharp.d.ts +76 -0
  133. package/dist/src/symbols/csharp.d.ts.map +1 -0
  134. package/dist/src/symbols/csharp.js +222 -0
  135. package/dist/src/symbols/factories.d.ts +25 -0
  136. package/dist/src/symbols/factories.d.ts.map +1 -0
  137. package/dist/src/symbols/factories.js +86 -0
  138. package/dist/src/symbols/index.d.ts +5 -2
  139. package/dist/src/symbols/index.d.ts.map +1 -1
  140. package/dist/src/symbols/index.js +6 -3
  141. package/dist/src/symbols/method.d.ts +13 -0
  142. package/dist/src/symbols/method.d.ts.map +1 -0
  143. package/dist/src/symbols/method.js +15 -0
  144. package/dist/src/symbols/named-type.d.ts +19 -0
  145. package/dist/src/symbols/named-type.d.ts.map +1 -0
  146. package/dist/src/symbols/named-type.js +30 -0
  147. package/dist/src/symbols/namespace.d.ts +22 -0
  148. package/dist/src/symbols/namespace.d.ts.map +1 -0
  149. package/dist/src/symbols/namespace.js +44 -0
  150. package/dist/src/symbols/reference.d.ts +2 -2
  151. package/dist/src/symbols/reference.d.ts.map +1 -1
  152. package/dist/src/symbols/reference.js +36 -43
  153. package/dist/test/project-directory.test.js +12 -16
  154. package/dist/test/sourcefile.test.js +7 -19
  155. package/dist/test/using.test.js +18 -16
  156. package/dist/test/utils.js +2 -2
  157. package/dist/tsconfig.tsbuildinfo +1 -1
  158. package/package.json +6 -2
  159. package/src/components/Declaration.tsx +3 -6
  160. package/src/components/Reference.tsx +3 -1
  161. package/src/components/SourceFile.tsx +68 -55
  162. package/src/components/UsingDirective.tsx +12 -2
  163. package/src/components/class/declaration.test.tsx +120 -143
  164. package/src/components/class/declaration.tsx +19 -32
  165. package/src/components/constructor/constructor.test.tsx +10 -16
  166. package/src/components/constructor/constructor.tsx +13 -27
  167. package/src/components/enum/declaration.ref.test.tsx +93 -0
  168. package/src/components/enum/declaration.test.tsx +34 -0
  169. package/src/components/enum/declaration.tsx +65 -0
  170. package/src/components/enum/member.test.tsx +24 -0
  171. package/src/components/enum/member.tsx +36 -0
  172. package/src/components/field/field.test.tsx +7 -7
  173. package/src/components/field/field.tsx +12 -14
  174. package/src/components/index.ts +5 -2
  175. package/src/components/interface/declaration.test.tsx +26 -32
  176. package/src/components/interface/declaration.tsx +16 -18
  177. package/src/components/interface/method.test.tsx +38 -44
  178. package/src/components/interface/method.tsx +7 -19
  179. package/src/components/interface/property.test.tsx +11 -11
  180. package/src/components/interface/property.tsx +15 -33
  181. package/src/components/lexical-scope.tsx +29 -0
  182. package/src/components/method/method.test.tsx +11 -11
  183. package/src/components/method/method.tsx +12 -18
  184. package/src/components/method-scope.tsx +27 -0
  185. package/src/components/namespace-scopes.tsx +44 -0
  186. package/src/components/namespace.ref.test.tsx +139 -0
  187. package/src/components/namespace.test.tsx +52 -0
  188. package/src/components/namespace.tsx +45 -0
  189. package/src/components/parameters/parameters.test.tsx +71 -0
  190. package/src/components/parameters/parameters.tsx +9 -16
  191. package/src/components/property/property.test.tsx +14 -14
  192. package/src/components/property/property.tsx +17 -38
  193. package/src/components/record/declaration.test.tsx +5 -12
  194. package/src/components/record/declaration.tsx +10 -11
  195. package/src/components/struct/declaration.test.tsx +16 -22
  196. package/src/components/struct/declaration.tsx +4 -6
  197. package/src/components/type-parameters/type-parameter.tsx +14 -11
  198. package/src/components/type-parameters/type-parameters.test.tsx +4 -4
  199. package/src/components/var/declaration.test.tsx +8 -14
  200. package/src/components/var/declaration.tsx +12 -6
  201. package/src/contexts/global-namespace.ts +29 -0
  202. package/src/contexts/namespace.ts +13 -0
  203. package/src/index.ts +1 -0
  204. package/src/modifiers.ts +14 -0
  205. package/src/scopes/class.ts +12 -0
  206. package/src/scopes/contexts.ts +45 -0
  207. package/src/scopes/csharp.ts +18 -0
  208. package/src/scopes/factories.ts +45 -0
  209. package/src/scopes/index.ts +9 -0
  210. package/src/scopes/lexical.ts +10 -0
  211. package/src/scopes/method.ts +22 -0
  212. package/src/scopes/named-type.ts +44 -0
  213. package/src/scopes/namespace.ts +59 -0
  214. package/src/scopes/source-file.ts +67 -0
  215. package/src/symbols/csharp.ts +307 -0
  216. package/src/symbols/factories.ts +199 -0
  217. package/src/symbols/index.ts +5 -2
  218. package/src/symbols/method.ts +26 -0
  219. package/src/symbols/named-type.ts +54 -0
  220. package/src/symbols/namespace.ts +62 -0
  221. package/src/symbols/reference.ts +47 -50
  222. package/temp/api.json +6251 -2454
  223. package/test/project-directory.test.tsx +12 -16
  224. package/test/sourcefile.test.tsx +7 -21
  225. package/test/using.test.tsx +18 -16
  226. package/test/utils.tsx +1 -1
  227. package/dist/src/components/EnumDeclaration.d.ts.map +0 -1
  228. package/dist/src/components/EnumDeclaration.js +0 -82
  229. package/dist/src/components/Namespace.d.ts +0 -11
  230. package/dist/src/components/Namespace.d.ts.map +0 -1
  231. package/dist/src/components/Namespace.js +0 -33
  232. package/dist/src/symbols/csharp-output-symbol.d.ts +0 -8
  233. package/dist/src/symbols/csharp-output-symbol.d.ts.map +0 -1
  234. package/dist/src/symbols/csharp-output-symbol.js +0 -19
  235. package/dist/src/symbols/scopes.d.ts +0 -20
  236. package/dist/src/symbols/scopes.d.ts.map +0 -1
  237. package/dist/src/symbols/scopes.js +0 -42
  238. package/dist/test/enum.test.d.ts +0 -2
  239. package/dist/test/enum.test.d.ts.map +0 -1
  240. package/dist/test/enum.test.js +0 -178
  241. package/dist/test/namespace.test.d.ts.map +0 -1
  242. package/dist/test/namespace.test.js +0 -81
  243. package/src/components/EnumDeclaration.tsx +0 -98
  244. package/src/components/Namespace.tsx +0 -35
  245. package/src/symbols/csharp-output-symbol.ts +0 -22
  246. package/src/symbols/scopes.ts +0 -61
  247. package/test/enum.test.tsx +0 -149
  248. package/test/namespace.test.tsx +0 -55
  249. /package/dist/{test → src/components}/namespace.test.d.ts +0 -0
@@ -1,4 +1,7 @@
1
1
  import { createComponent as _$createComponent, mergeProps as _$mergeProps, createIntrinsic as _$createIntrinsic } from "@alloy-js/core/jsx-runtime";
2
+ import { Constructor } from "#components/constructor/constructor.js";
3
+ import { EnumDeclaration } from "#components/enum/declaration.js";
4
+ import { EnumMember } from "#components/enum/member.js";
2
5
  import { code, createNamePolicy, List, NamePolicyContext, Output, refkey, render } from "@alloy-js/core";
3
6
  import * as coretest from "@alloy-js/core/testing";
4
7
  import { describe, expect, it } from "vitest";
@@ -7,21 +10,14 @@ import { createCSharpNamePolicy } from "../../name-policy.js";
7
10
  import { Attribute } from "../attributes/attributes.js";
8
11
  import { Field } from "../field/field.js";
9
12
  import { Method } from "../method/method.js";
10
- import { Namespace } from "../Namespace.js";
11
13
  import { Property } from "../property/property.js";
12
14
  import { SourceFile } from "../SourceFile.js";
13
- import { Constructor, EnumDeclaration, EnumMember } from "../stc/index.js";
14
15
  import { ClassDeclaration } from "./declaration.js";
15
16
  function Wrapper({
16
17
  children
17
18
  }) {
18
19
  return _$createComponent(TestNamespace, {
19
- get children() {
20
- return _$createComponent(SourceFile, {
21
- path: "Test.cs",
22
- children: children
23
- });
24
- }
20
+ children: children
25
21
  });
26
22
  }
27
23
  it("declares class with no members", () => {
@@ -138,63 +134,65 @@ describe("base", () => {
138
134
  });
139
135
  });
140
136
  it("declares class with some members", () => {
141
- const res = toSourceText(_$createComponent(ClassDeclaration, {
142
- "public": true,
143
- name: "TestClass",
137
+ const tree = _$createComponent(TestNamespace, {
144
138
  get children() {
145
- return _$createComponent(List, {
139
+ return _$createComponent(ClassDeclaration, {
140
+ "public": true,
141
+ name: "TestClass",
146
142
  get children() {
147
- return [_$createComponent(Field, {
148
- "public": true,
149
- name: "MemberOne",
150
- type: "string"
151
- }), _$createComponent(Field, {
152
- "public": true,
153
- name: "MemberTwo",
154
- type: "int"
155
- })];
143
+ return _$createComponent(List, {
144
+ get children() {
145
+ return [_$createComponent(Field, {
146
+ "public": true,
147
+ name: "MemberOne",
148
+ type: "string"
149
+ }), _$createComponent(Field, {
150
+ "public": true,
151
+ name: "MemberTwo",
152
+ type: "int"
153
+ })];
154
+ }
155
+ });
156
156
  }
157
157
  });
158
158
  }
159
- }));
160
- expect(res).toBe(coretest.d`
161
- namespace TestCode
159
+ });
160
+ expect(tree).toRenderTo(coretest.d`
161
+ public class TestClass
162
162
  {
163
- public class TestClass
164
- {
165
- public string MemberOne;
166
- public int MemberTwo;
167
- }
163
+ public string MemberOne;
164
+ public int MemberTwo;
168
165
  }
169
166
  `);
170
167
  });
171
168
  it("declares class with some methods", () => {
172
- const res = toSourceText(_$createComponent(ClassDeclaration, {
173
- "public": true,
174
- name: "TestClass",
169
+ const tree = _$createComponent(TestNamespace, {
175
170
  get children() {
176
- return _$createComponent(List, {
171
+ return _$createComponent(ClassDeclaration, {
172
+ "public": true,
173
+ name: "TestClass",
177
174
  get children() {
178
- return [_$createComponent(Method, {
179
- "public": true,
180
- name: "MethodOne"
181
- }), _$createComponent(Method, {
182
- "private": true,
183
- virtual: true,
184
- name: "MethodTwo"
185
- })];
175
+ return _$createComponent(List, {
176
+ get children() {
177
+ return [_$createComponent(Method, {
178
+ "public": true,
179
+ name: "MethodOne"
180
+ }), _$createComponent(Method, {
181
+ "private": true,
182
+ virtual: true,
183
+ name: "MethodTwo"
184
+ })];
185
+ }
186
+ });
186
187
  }
187
188
  });
188
189
  }
189
- }));
190
- expect(res).toBe(coretest.d`
191
- namespace TestCode
190
+ });
191
+ expect(tree).toRenderTo(coretest.d`
192
+ public class TestClass
192
193
  {
193
- public class TestClass
194
- {
195
- public void MethodOne() {}
196
- private virtual void MethodTwo() {}
197
- }
194
+ public void MethodOne() {}
195
+ private virtual void MethodTwo() {}
198
196
  }
199
197
  `);
200
198
  });
@@ -214,79 +212,71 @@ it("uses refkeys for members, params, and return type", () => {
214
212
  return createCSharpNamePolicy();
215
213
  },
216
214
  get children() {
217
- return _$createComponent(Namespace, {
218
- name: "TestCode",
215
+ return _$createComponent(SourceFile, {
216
+ path: "Test.cs",
219
217
  get children() {
220
- return _$createComponent(SourceFile, {
221
- path: "Test.cs",
218
+ return [_$createComponent(EnumDeclaration, {
219
+ "public": true,
220
+ name: "TestEnum",
221
+ refkey: enumTypeRefkey,
222
222
  get children() {
223
- return [_$createComponent(EnumDeclaration, {
224
- "public": true,
225
- name: "TestEnum",
226
- refkey: enumTypeRefkey,
223
+ return _$createComponent(List, {
224
+ comma: true,
225
+ hardline: true,
227
226
  get children() {
228
- return _$createComponent(List, {
229
- comma: true,
230
- hardline: true,
231
- get children() {
232
- return [_$createComponent(EnumMember, {
233
- name: "One"
234
- }), _$createComponent(EnumMember, {
235
- name: "Two"
236
- })];
237
- }
238
- });
227
+ return [_$createComponent(EnumMember, {
228
+ name: "One"
229
+ }), _$createComponent(EnumMember, {
230
+ name: "Two"
231
+ })];
239
232
  }
240
- }), _$createIntrinsic("hbr", {}), _$createComponent(ClassDeclaration, {
241
- "public": true,
242
- name: "TestInput",
243
- refkey: inputTypeRefkey
244
- }), _$createIntrinsic("hbr", {}), _$createComponent(ClassDeclaration, {
245
- "public": true,
246
- name: "TestResult",
247
- refkey: testResultTypeRefkey
248
- }), _$createIntrinsic("hbr", {}), _$createComponent(ClassDeclaration, {
233
+ });
234
+ }
235
+ }), _$createIntrinsic("hbr", {}), _$createComponent(ClassDeclaration, {
236
+ "public": true,
237
+ name: "TestInput",
238
+ refkey: inputTypeRefkey
239
+ }), _$createIntrinsic("hbr", {}), _$createComponent(ClassDeclaration, {
240
+ "public": true,
241
+ name: "TestResult",
242
+ refkey: testResultTypeRefkey
243
+ }), _$createIntrinsic("hbr", {}), _$createComponent(ClassDeclaration, {
244
+ "public": true,
245
+ name: "TestClass",
246
+ get children() {
247
+ return [_$createComponent(Field, {
248
+ "private": true,
249
+ name: "MemberOne",
250
+ type: enumTypeRefkey
251
+ }), _$createIntrinsic("hbr", {}), _$createComponent(Method, {
249
252
  "public": true,
250
- name: "TestClass",
253
+ name: "MethodOne",
254
+ parameters: params,
255
+ returns: testResultTypeRefkey,
251
256
  get children() {
252
- return [_$createComponent(Field, {
253
- "private": true,
254
- name: "MemberOne",
255
- type: enumTypeRefkey
256
- }), _$createIntrinsic("hbr", {}), _$createComponent(Method, {
257
- "public": true,
258
- name: "MethodOne",
259
- parameters: params,
260
- returns: testResultTypeRefkey,
261
- get children() {
262
- return ["return new ", testResultTypeRefkey, "();"];
263
- }
264
- })];
257
+ return ["return new ", testResultTypeRefkey, "();"];
265
258
  }
266
259
  })];
267
260
  }
268
- });
261
+ })];
269
262
  }
270
263
  });
271
264
  }
272
265
  }));
273
266
  expect(findFile(res, "Test.cs").contents).toBe(coretest.d`
274
- namespace TestCode
267
+ public enum TestEnum
275
268
  {
276
- public enum TestEnum
277
- {
278
- One,
279
- Two
280
- }
281
- public class TestInput;
282
- public class TestResult;
283
- public class TestClass
269
+ One,
270
+ Two
271
+ }
272
+ public class TestInput;
273
+ public class TestResult;
274
+ public class TestClass
275
+ {
276
+ private TestEnum _memberOne;
277
+ public TestResult MethodOne(int intParam, TestInput bodyParam)
284
278
  {
285
- private TestEnum _memberOne;
286
- public TestResult MethodOne(int intParam, TestInput bodyParam)
287
- {
288
- return new TestResult();
289
- }
279
+ return new TestResult();
290
280
  }
291
281
  }
292
282
  `);
@@ -302,46 +292,38 @@ describe("with type parameters", () => {
302
292
  }];
303
293
  expect(_$createComponent(TestNamespace, {
304
294
  get children() {
305
- return _$createComponent(SourceFile, {
306
- path: "Test.cs",
295
+ return _$createComponent(ClassDeclaration, {
296
+ "public": true,
297
+ name: "TestClass",
298
+ typeParameters: typeParameters,
307
299
  get children() {
308
- return _$createComponent(ClassDeclaration, {
309
- "public": true,
310
- name: "TestClass",
311
- typeParameters: typeParameters,
300
+ return _$createComponent(List, {
312
301
  get children() {
313
- return _$createComponent(List, {
314
- get children() {
315
- return [_$createComponent(Property, {
316
- name: "PropA",
317
- get type() {
318
- return typeParameters[0].refkey;
319
- },
320
- get: true,
321
- set: true
322
- }), _$createComponent(Property, {
323
- name: "PropB",
324
- get type() {
325
- return typeParameters[1].refkey;
326
- },
327
- get: true,
328
- set: true
329
- })];
330
- }
331
- });
302
+ return [_$createComponent(Property, {
303
+ name: "PropA",
304
+ get type() {
305
+ return typeParameters[0].refkey;
306
+ },
307
+ get: true,
308
+ set: true
309
+ }), _$createComponent(Property, {
310
+ name: "PropB",
311
+ get type() {
312
+ return typeParameters[1].refkey;
313
+ },
314
+ get: true,
315
+ set: true
316
+ })];
332
317
  }
333
318
  });
334
319
  }
335
320
  });
336
321
  }
337
322
  })).toRenderTo(`
338
- namespace TestCode
323
+ public class TestClass<T, U>
339
324
  {
340
- public class TestClass<T, U>
341
- {
342
- T PropA { get; set; }
343
- U PropB { get; set; }
344
- }
325
+ T PropA { get; set; }
326
+ U PropB { get; set; }
345
327
  }
346
328
  `);
347
329
  });
@@ -364,10 +346,10 @@ describe("with type parameters", () => {
364
346
  }
365
347
  })).toRenderTo(`
366
348
  public class TestClass<T, U>
367
- where T : IFoo
368
- where U : IBar
349
+ where T : IFoo
350
+ where U : IBar
369
351
  {
370
- // Body
352
+ // Body
371
353
  }
372
354
  `);
373
355
  });
@@ -384,26 +366,27 @@ it("declares class with invalid members", () => {
384
366
  })];
385
367
  }
386
368
  });
387
- expect(() => toSourceText(decl)).toThrow("Can't define a EnumMember outside of a enum-decl scope");
369
+ expect(() => toSourceText(decl)).toThrow("EnumMember must be used within an EnumDeclaration.");
388
370
  });
389
371
  describe("constructor", () => {
390
372
  it("declares with constructor", () => {
391
- const res = toSourceText(_$createComponent(ClassDeclaration, {
392
- "public": true,
393
- name: "TestClass",
373
+ const tree = _$createComponent(TestNamespace, {
394
374
  get children() {
395
- return _$createComponent(Constructor, {
396
- "public": true
375
+ return _$createComponent(ClassDeclaration, {
376
+ "public": true,
377
+ name: "TestClass",
378
+ get children() {
379
+ return _$createComponent(Constructor, {
380
+ "public": true
381
+ });
382
+ }
397
383
  });
398
384
  }
399
- }));
400
- expect(res).toBe(coretest.d`
401
- namespace TestCode
385
+ });
386
+ expect(tree).toRenderTo(coretest.d`
387
+ public class TestClass
402
388
  {
403
- public class TestClass
404
- {
405
- public TestClass() {}
406
- }
389
+ public TestClass() {}
407
390
  }
408
391
  `);
409
392
  });
@@ -421,44 +404,45 @@ describe("constructor", () => {
421
404
  type: "int",
422
405
  refkey: paramSizeRefkey
423
406
  }];
424
- const res = toSourceText(_$createComponent(ClassDeclaration, {
425
- "public": true,
426
- name: "TestClass",
407
+ const tree = _$createComponent(TestNamespace, {
427
408
  get children() {
428
- return [_$createComponent(Field, {
429
- "private": true,
430
- name: "name",
431
- type: "string",
432
- refkey: thisNameRefkey
433
- }), _$createIntrinsic("hbr", {}), _$createComponent(Field, {
434
- "private": true,
435
- name: "size",
436
- type: "int",
437
- refkey: thisSizeRefkey
438
- }), _$createIntrinsic("hbr", {}), _$createComponent(Constructor, {
409
+ return _$createComponent(ClassDeclaration, {
439
410
  "public": true,
440
- parameters: ctorParams,
411
+ name: "TestClass",
441
412
  get children() {
442
- return [thisNameRefkey, " = ", paramNameRefkey, ";", _$createIntrinsic("hbr", {}), thisSizeRefkey, " = ", paramSizeRefkey, ";"];
413
+ return [_$createComponent(Field, {
414
+ "private": true,
415
+ name: "name",
416
+ type: "string",
417
+ refkey: thisNameRefkey
418
+ }), _$createIntrinsic("hbr", {}), _$createComponent(Field, {
419
+ "private": true,
420
+ name: "size",
421
+ type: "int",
422
+ refkey: thisSizeRefkey
423
+ }), _$createIntrinsic("hbr", {}), _$createComponent(Constructor, {
424
+ "public": true,
425
+ parameters: ctorParams,
426
+ get children() {
427
+ return [thisNameRefkey, " = ", paramNameRefkey, ";", _$createIntrinsic("hbr", {}), thisSizeRefkey, " = ", paramSizeRefkey, ";"];
428
+ }
429
+ })];
443
430
  }
444
- })];
431
+ });
445
432
  }
446
- }));
433
+ });
447
434
 
448
435
  // TODO: assignments to members should have this. prefix
449
436
  // e.g. this.name = name;
450
- expect(res).toBe(coretest.d`
451
- namespace TestCode
437
+ expect(tree).toRenderTo(coretest.d`
438
+ public class TestClass
452
439
  {
453
- public class TestClass
440
+ private string _name;
441
+ private int _size;
442
+ public TestClass(string name, int size)
454
443
  {
455
- private string _name;
456
- private int _size;
457
- public TestClass(string name, int size)
458
- {
459
- _name = name;
460
- _size = size;
461
- }
444
+ _name = name;
445
+ _size = size;
462
446
  }
463
447
  }
464
448
  `);
@@ -492,12 +476,9 @@ describe("constructor", () => {
492
476
  });
493
477
  }
494
478
  })).toRenderTo(`
495
- namespace TestCode
479
+ public class TestClass(string name, int size)
496
480
  {
497
- public class TestClass(string name, int size)
498
- {
499
- string PrettyName { get; } = $"{name} {size}";
500
- }
481
+ string PrettyName { get; } = $"{name} {size}";
501
482
  }
502
483
  `);
503
484
  });
@@ -528,12 +509,9 @@ describe("constructor", () => {
528
509
  });
529
510
  }
530
511
  })).toRenderTo(`
531
- namespace TestCode
512
+ public class TestClass(string name)
532
513
  {
533
- public class TestClass(string name)
534
- {
535
- string name_2;
536
- }
514
+ string name_2;
537
515
  }
538
516
  `);
539
517
  });
@@ -571,8 +549,8 @@ it("supports class member doc comments", () => {
571
549
  /// This is a test
572
550
  class Test
573
551
  {
574
- /// This is a member
575
- public int Member;
552
+ /// This is a member
553
+ public int Member;
576
554
  }
577
555
  `);
578
556
  });
@@ -1 +1 @@
1
- {"version":3,"file":"constructor.d.ts","sourceRoot":"","sources":["../../../../src/components/constructor/constructor.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,MAAM,EAGP,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EACL,eAAe,EAGhB,MAAM,oBAAoB,CAAC;AAO5B,OAAO,EAAE,cAAc,EAAc,MAAM,8BAA8B,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,6BAA6B;IAC7B,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAE9B,aAAa;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,YAyBlD"}
1
+ {"version":3,"file":"constructor.d.ts","sourceRoot":"","sources":["../../../../src/components/constructor/constructor.tsx"],"names":[],"mappings":"AACA,OAAO,EAAwC,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EACL,eAAe,EAGhB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,cAAc,EAAc,MAAM,8BAA8B,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,6BAA6B;IAC7B,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAE9B,aAAa;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,YAqBlD"}
@@ -1,9 +1,9 @@
1
1
  import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
- import { Block, Declaration, Name, refkey, Scope } from "@alloy-js/core";
2
+ import { MethodScope } from "#components/method-scope.js";
3
+ import { Block, MemberDeclaration, MemberName } from "@alloy-js/core";
3
4
  import { computeModifiersPrefix, getAccessModifier } from "../../modifiers.js";
4
- import { useCSharpNamePolicy } from "../../name-policy.js";
5
- import { CSharpOutputSymbol } from "../../symbols/csharp-output-symbol.js";
6
- import { CSharpMemberScope, useCSharpMemberScope } from "../../symbols/scopes.js";
5
+ import { useNamedTypeScope } from "../../scopes/contexts.js";
6
+ import { MethodSymbol } from "../../symbols/method.js";
7
7
  import { Parameters } from "../parameters/parameters.js";
8
8
 
9
9
  /**
@@ -11,23 +11,18 @@ import { Parameters } from "../parameters/parameters.js";
11
11
  */
12
12
 
13
13
  export function Constructor(props) {
14
- const scope = useCSharpMemberScope(["class-decl", "struct-decl"]);
15
- const name = useCSharpNamePolicy().getName(scope.owner.name, "class-method");
16
- const ctorSymbol = new CSharpOutputSymbol(name, {
17
- scope,
18
- refkeys: props.refkey ?? refkey(name)
19
- });
20
- const ctorDeclScope = new CSharpMemberScope("constructor-decl", {
21
- owner: ctorSymbol
14
+ const scope = useNamedTypeScope();
15
+ const name = scope.ownerSymbol.name;
16
+ const ctorSymbol = new MethodSymbol(name, scope.members, "constructor", {
17
+ refkeys: props.refkey
22
18
  });
23
19
  const modifiers = computeModifiersPrefix([getAccessModifier(props)]);
24
- return _$createComponent(Declaration, {
20
+ return _$createComponent(MemberDeclaration, {
25
21
  symbol: ctorSymbol,
26
22
  get children() {
27
- return _$createComponent(Scope, {
28
- value: ctorDeclScope,
23
+ return _$createComponent(MethodScope, {
29
24
  get children() {
30
- return [modifiers, _$createComponent(Name, {}), _$createComponent(Parameters, {
25
+ return [modifiers, _$createComponent(MemberName, {}), _$createComponent(Parameters, {
31
26
  get parameters() {
32
27
  return props.parameters;
33
28
  }
@@ -3,7 +3,6 @@ import { refkey } from "@alloy-js/core";
3
3
  import { expect, it } from "vitest";
4
4
  import { TestNamespace } from "../../../test/utils.js";
5
5
  import { ClassDeclaration } from "../class/declaration.js";
6
- import { SourceFile } from "../SourceFile.js";
7
6
  import { Constructor } from "./constructor.js";
8
7
  it("reference constructor parameters in body", () => {
9
8
  const paramNameRefkey = refkey();
@@ -19,35 +18,27 @@ it("reference constructor parameters in body", () => {
19
18
  }];
20
19
  expect(_$createComponent(TestNamespace, {
21
20
  get children() {
22
- return _$createComponent(SourceFile, {
23
- path: "Test.cs",
21
+ return _$createComponent(ClassDeclaration, {
22
+ "public": true,
23
+ name: "TestClass",
24
24
  get children() {
25
- return _$createComponent(ClassDeclaration, {
25
+ return _$createComponent(Constructor, {
26
26
  "public": true,
27
- name: "TestClass",
27
+ parameters: ctorParams,
28
28
  get children() {
29
- return _$createComponent(Constructor, {
30
- "public": true,
31
- parameters: ctorParams,
32
- get children() {
33
- return [paramNameRefkey, ";", _$createIntrinsic("hbr", {}), paramSizeRefkey, ";"];
34
- }
35
- });
29
+ return [paramNameRefkey, ";", _$createIntrinsic("hbr", {}), paramSizeRefkey, ";"];
36
30
  }
37
31
  });
38
32
  }
39
33
  });
40
34
  }
41
35
  })).toRenderTo(`
42
- namespace TestCode
36
+ public class TestClass
43
37
  {
44
- public class TestClass
38
+ public TestClass(string name, int size)
45
39
  {
46
- public TestClass(string name, int size)
47
- {
48
- name;
49
- size;
50
- }
40
+ name;
41
+ size;
51
42
  }
52
43
  }
53
44
  `);
@@ -1,9 +1,9 @@
1
- import * as core from "@alloy-js/core";
2
- import { AccessModifiers } from "../modifiers.js";
1
+ import { Children, Refkey } from "@alloy-js/core";
2
+ import { AccessModifiers } from "../../modifiers.js";
3
3
  export interface EnumDeclarationProps extends AccessModifiers {
4
4
  name: string;
5
- refkey?: core.Refkey;
6
- children?: core.Children;
5
+ refkey?: Refkey | Refkey[];
6
+ children?: Children;
7
7
  }
8
8
  /**
9
9
  * A C# enum declaration
@@ -25,10 +25,5 @@ export interface EnumDeclarationProps extends AccessModifiers {
25
25
  * }
26
26
  * ```
27
27
  */
28
- export declare function EnumDeclaration(props: EnumDeclarationProps): core.Children;
29
- export interface EnumMemberProps {
30
- name: string;
31
- refkey?: core.Refkey;
32
- }
33
- export declare function EnumMember(props: EnumMemberProps): core.Children;
34
- //# sourceMappingURL=EnumDeclaration.d.ts.map
28
+ export declare function EnumDeclaration(props: EnumDeclarationProps): Children;
29
+ //# sourceMappingURL=declaration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declaration.d.ts","sourceRoot":"","sources":["../../../../src/components/enum/declaration.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAGR,MAAM,EACP,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,eAAe,EAGhB,MAAM,oBAAoB,CAAC;AAO5B,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,YAoB1D"}