@alloy-js/csharp 0.19.0-dev.2 → 0.19.0-dev.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/src/components/ClassDeclaration.d.ts +0 -16
  2. package/dist/src/components/ClassDeclaration.d.ts.map +1 -1
  3. package/dist/src/components/ClassDeclaration.js +1 -74
  4. package/dist/src/components/constructor/constructor.d.ts +17 -0
  5. package/dist/src/components/constructor/constructor.d.ts.map +1 -0
  6. package/dist/src/components/constructor/constructor.js +47 -0
  7. package/dist/src/components/constructor/constructor.test.d.ts +2 -0
  8. package/dist/src/components/constructor/constructor.test.d.ts.map +1 -0
  9. package/dist/src/components/constructor/constructor.test.js +54 -0
  10. package/dist/src/components/field/field.d.ts +12 -0
  11. package/dist/src/components/field/field.d.ts.map +1 -0
  12. package/dist/src/components/field/field.js +34 -0
  13. package/dist/src/components/field/field.test.d.ts +2 -0
  14. package/dist/src/components/field/field.test.d.ts.map +1 -0
  15. package/dist/src/components/field/field.test.js +37 -0
  16. package/dist/src/components/index.d.ts +3 -1
  17. package/dist/src/components/index.d.ts.map +1 -1
  18. package/dist/src/components/index.js +3 -1
  19. package/dist/src/components/{ClassMethod.d.ts → method/method.d.ts} +8 -8
  20. package/dist/src/components/method/method.d.ts.map +1 -0
  21. package/dist/src/components/{ClassMethod.js → method/method.js} +12 -12
  22. package/dist/src/components/method/method.test.d.ts +2 -0
  23. package/dist/src/components/method/method.test.d.ts.map +1 -0
  24. package/dist/{test/class-method.test.js → src/components/method/method.test.js} +11 -11
  25. package/dist/src/components/stc/index.d.ts +3 -3
  26. package/dist/src/components/stc/index.d.ts.map +1 -1
  27. package/dist/src/components/stc/index.js +3 -3
  28. package/dist/src/components/struct/declaration.d.ts +2 -0
  29. package/dist/src/components/struct/declaration.d.ts.map +1 -1
  30. package/dist/src/components/struct/declaration.js +6 -2
  31. package/dist/src/components/struct/declaration.test.js +85 -1
  32. package/dist/test/class-declaration.test.js +14 -12
  33. package/dist/test/using.test.js +1 -1
  34. package/dist/tsconfig.tsbuildinfo +1 -1
  35. package/package.json +1 -1
  36. package/src/components/ClassDeclaration.tsx +2 -84
  37. package/src/components/constructor/constructor.test.tsx +41 -0
  38. package/src/components/constructor/constructor.tsx +67 -0
  39. package/src/components/field/field.test.tsx +24 -0
  40. package/src/components/field/field.tsx +50 -0
  41. package/src/components/index.ts +3 -1
  42. package/{test/class-method.test.tsx → src/components/method/method.test.tsx} +12 -17
  43. package/src/components/{ClassMethod.tsx → method/method.tsx} +21 -18
  44. package/src/components/stc/index.ts +3 -3
  45. package/src/components/struct/declaration.test.tsx +63 -1
  46. package/src/components/struct/declaration.tsx +11 -0
  47. package/temp/api.json +2148 -2153
  48. package/test/class-declaration.test.tsx +16 -33
  49. package/test/using.test.tsx +1 -1
  50. package/dist/src/components/ClassMethod.d.ts.map +0 -1
  51. package/dist/test/class-method.test.d.ts +0 -2
  52. package/dist/test/class-method.test.d.ts.map +0 -1
@@ -1,5 +1,6 @@
1
- import { createComponent as _$createComponent, memo as _$memo } from "@alloy-js/core/jsx-runtime";
1
+ import { memo as _$memo, createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
2
  import * as core from "@alloy-js/core";
3
+ import { join } from "@alloy-js/core";
3
4
  import { computeModifiersPrefix, getAccessModifier, makeModifiers } from "../../modifiers.js";
4
5
  import { useCSharpNamePolicy } from "../../name-policy.js";
5
6
  import { CSharpOutputSymbol } from "../../symbols/csharp-output-symbol.js";
@@ -42,6 +43,9 @@ export function StructDeclaration(props) {
42
43
  owner: thisStructSymbol
43
44
  });
44
45
  const modifiers = computeModifiersPrefix([getAccessModifier(props), getStructModifiers(props)]);
46
+ const base = props.interfaceTypes && props.interfaceTypes.length > 0 ? [" : ", _$memo(() => join(props.interfaceTypes, {
47
+ joiner: ", "
48
+ }))] : null;
45
49
  return _$createComponent(core.Declaration, {
46
50
  symbol: thisStructSymbol,
47
51
  get children() {
@@ -58,7 +62,7 @@ export function StructDeclaration(props) {
58
62
  get parameters() {
59
63
  return props.typeParameters;
60
64
  }
61
- })), _$memo(() => _$memo(() => !!props.typeParameters)() && _$createComponent(TypeParameterConstraints, {
65
+ })), base, _$memo(() => _$memo(() => !!props.typeParameters)() && _$createComponent(TypeParameterConstraints, {
62
66
  get parameters() {
63
67
  return props.typeParameters;
64
68
  }
@@ -1,8 +1,11 @@
1
1
  import { createComponent as _$createComponent, mergeProps as _$mergeProps } from "@alloy-js/core/jsx-runtime";
2
- import { List, refkey } from "@alloy-js/core";
2
+ import { List, refkey, StatementList } from "@alloy-js/core";
3
3
  import { describe, expect, it } from "vitest";
4
4
  import { TestNamespace } from "../../../test/utils.js";
5
5
  import { Attribute } from "../attributes/attributes.js";
6
+ import { Constructor } from "../constructor/constructor.js";
7
+ import { Field } from "../field/field.js";
8
+ import { Method } from "../method/method.js";
6
9
  import { Property } from "../property/property.js";
7
10
  import { SourceFile } from "../SourceFile.js";
8
11
  import { StructDeclaration } from "./declaration.js";
@@ -168,4 +171,85 @@ it("specify attributes", () => {
168
171
  [Test]
169
172
  struct Test;
170
173
  `);
174
+ });
175
+ it("define methods", () => {
176
+ expect(_$createComponent(TestNamespace, {
177
+ get children() {
178
+ return _$createComponent(StructDeclaration, {
179
+ name: "Test",
180
+ get children() {
181
+ return _$createComponent(Method, {
182
+ name: "MethodOne"
183
+ });
184
+ }
185
+ });
186
+ }
187
+ })).toRenderTo(`
188
+ struct Test
189
+ {
190
+ void MethodOne() {}
191
+ }
192
+ `);
193
+ });
194
+ it("define constructor", () => {
195
+ expect(_$createComponent(TestNamespace, {
196
+ get children() {
197
+ return _$createComponent(StructDeclaration, {
198
+ name: "Test",
199
+ get children() {
200
+ return _$createComponent(Constructor, {
201
+ "public": true
202
+ });
203
+ }
204
+ });
205
+ }
206
+ })).toRenderTo(`
207
+ struct Test
208
+ {
209
+ public Test() {}
210
+ }
211
+ `);
212
+ });
213
+ it("defines fields", () => {
214
+ expect(_$createComponent(TestNamespace, {
215
+ get children() {
216
+ return _$createComponent(StructDeclaration, {
217
+ "public": true,
218
+ name: "TestClass",
219
+ get children() {
220
+ return _$createComponent(StatementList, {
221
+ get children() {
222
+ return [_$createComponent(Field, {
223
+ "public": true,
224
+ name: "MemberOne",
225
+ type: "string"
226
+ }), _$createComponent(Field, {
227
+ "private": true,
228
+ name: "MemberTwo",
229
+ type: "int"
230
+ })];
231
+ }
232
+ });
233
+ }
234
+ });
235
+ }
236
+ })).toRenderTo(`
237
+ public struct TestClass
238
+ {
239
+ public string MemberOne;
240
+ private int memberTwo;
241
+ }
242
+ `);
243
+ });
244
+ it("define multiple interface types", () => {
245
+ expect(_$createComponent(TestNamespace, {
246
+ get children() {
247
+ return _$createComponent(StructDeclaration, {
248
+ name: "Test",
249
+ interfaceTypes: ["Foo", "Bar"]
250
+ });
251
+ }
252
+ })).toRenderTo(`
253
+ struct Test : Foo, Bar;
254
+ `);
171
255
  });
@@ -4,8 +4,10 @@ import { List, refkey } from "@alloy-js/core";
4
4
  import * as coretest from "@alloy-js/core/testing";
5
5
  import { describe, expect, it } from "vitest";
6
6
  import { Attribute } from "../src/components/attributes/attributes.js";
7
+ import { Field } from "../src/components/field/field.js";
8
+ import { Constructor } from "../src/components/stc/index.js";
7
9
  import * as csharp from "../src/index.js";
8
- import { ClassDeclaration, ClassMember, Property, SourceFile } from "../src/index.js";
10
+ import { ClassDeclaration, Property, SourceFile } from "../src/index.js";
9
11
  import * as utils from "./utils.js";
10
12
  it("declares class with no members", () => {
11
13
  expect(_$createComponent(utils.TestNamespace, {
@@ -106,11 +108,11 @@ it("declares class with some members", () => {
106
108
  get children() {
107
109
  return _$createComponent(core.StatementList, {
108
110
  get children() {
109
- return [_$createComponent(csharp.ClassMember, {
111
+ return [_$createComponent(Field, {
110
112
  "public": true,
111
113
  name: "MemberOne",
112
114
  type: "string"
113
- }), _$createComponent(csharp.ClassMember, {
115
+ }), _$createComponent(Field, {
114
116
  "private": true,
115
117
  name: "MemberTwo",
116
118
  type: "int"
@@ -137,10 +139,10 @@ it("declares class with some methods", () => {
137
139
  get children() {
138
140
  return _$createComponent(core.List, {
139
141
  get children() {
140
- return [_$createComponent(csharp.ClassMethod, {
142
+ return [_$createComponent(csharp.Method, {
141
143
  "public": true,
142
144
  name: "MethodOne"
143
- }), _$createComponent(csharp.ClassMethod, {
145
+ }), _$createComponent(csharp.Method, {
144
146
  "private": true,
145
147
  virtual: true,
146
148
  name: "MethodTwo"
@@ -211,11 +213,11 @@ it("uses refkeys for members, params, and return type", () => {
211
213
  "public": true,
212
214
  name: "TestClass",
213
215
  get children() {
214
- return [_$createComponent(csharp.ClassMember, {
216
+ return [_$createComponent(Field, {
215
217
  "private": true,
216
218
  name: "MemberOne",
217
219
  type: enumTypeRefkey
218
- }), ";", _$createIntrinsic("hbr", {}), _$createComponent(csharp.ClassMethod, {
220
+ }), ";", _$createIntrinsic("hbr", {}), _$createComponent(csharp.Method, {
219
221
  "public": true,
220
222
  name: "MethodOne",
221
223
  parameters: params,
@@ -353,7 +355,7 @@ it("declares class with constructor", () => {
353
355
  "public": true,
354
356
  name: "TestClass",
355
357
  get children() {
356
- return _$createComponent(csharp.ClassConstructor, {
358
+ return _$createComponent(Constructor, {
357
359
  "public": true
358
360
  });
359
361
  }
@@ -386,17 +388,17 @@ it("declares class with constructor params and assigns values to fields", () =>
386
388
  "public": true,
387
389
  name: "TestClass",
388
390
  get children() {
389
- return [_$createComponent(csharp.ClassMember, {
391
+ return [_$createComponent(Field, {
390
392
  "private": true,
391
393
  name: "name",
392
394
  type: "string",
393
395
  refkey: thisNameRefkey
394
- }), ";", _$createIntrinsic("hbr", {}), _$createComponent(csharp.ClassMember, {
396
+ }), ";", _$createIntrinsic("hbr", {}), _$createComponent(Field, {
395
397
  "private": true,
396
398
  name: "size",
397
399
  type: "int",
398
400
  refkey: thisSizeRefkey
399
- }), ";", _$createIntrinsic("hbr", {}), _$createComponent(csharp.ClassConstructor, {
401
+ }), ";", _$createIntrinsic("hbr", {}), _$createComponent(Constructor, {
400
402
  "public": true,
401
403
  parameters: ctorParams,
402
404
  get children() {
@@ -444,7 +446,7 @@ it("supports class member doc comments", () => {
444
446
  name: "Test",
445
447
  doc: "This is a test",
446
448
  get children() {
447
- return _$createComponent(ClassMember, {
449
+ return _$createComponent(Field, {
448
450
  name: "Member",
449
451
  "public": true,
450
452
  type: "int",
@@ -97,7 +97,7 @@ it("adds using statement across namespaces", () => {
97
97
  "public": true,
98
98
  name: "Client",
99
99
  get children() {
100
- return _$createComponent(csharp.ClassMethod, {
100
+ return _$createComponent(csharp.Method, {
101
101
  "public": true,
102
102
  name: "MethodOne",
103
103
  parameters: params,