@alloy-js/csharp 0.18.0-dev.24 → 0.18.0-dev.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.
- package/dist/src/components/Class.d.ts +26 -0
- package/dist/src/components/Class.d.ts.map +1 -0
- package/dist/src/components/{ClassDeclaration.js → Class.js} +38 -70
- package/dist/src/components/ClassMethod.d.ts +5 -44
- package/dist/src/components/ClassMethod.d.ts.map +1 -1
- package/dist/src/components/ClassMethod.js +9 -33
- package/dist/src/components/Enum.d.ts +15 -0
- package/dist/src/components/Enum.d.ts.map +1 -0
- package/dist/src/components/{EnumDeclaration.js → Enum.js} +5 -25
- package/dist/src/components/Parameters.d.ts +13 -0
- package/dist/src/components/Parameters.d.ts.map +1 -0
- package/dist/src/components/Parameters.js +34 -0
- package/dist/src/components/SourceFile.d.ts.map +1 -1
- package/dist/src/components/SourceFile.js +0 -1
- package/dist/src/components/index.d.ts +4 -14
- package/dist/src/components/index.d.ts.map +1 -1
- package/dist/src/components/index.js +5 -15
- package/dist/src/components/stc/index.d.ts +2 -2
- package/dist/src/components/stc/index.d.ts.map +1 -1
- package/dist/src/components/stc/index.js +2 -2
- package/dist/src/modifiers.d.ts +4 -10
- package/dist/src/modifiers.d.ts.map +1 -1
- package/dist/src/modifiers.js +32 -9
- package/dist/src/name-policy.d.ts +1 -1
- package/dist/src/name-policy.d.ts.map +1 -1
- package/dist/src/name-policy.js +0 -2
- package/dist/test/class-method.test.js +14 -37
- package/dist/test/class.test.d.ts +2 -0
- package/dist/test/class.test.d.ts.map +1 -0
- package/dist/test/class.test.js +298 -0
- package/dist/test/enum.test.js +12 -12
- package/dist/test/namespace.test.js +8 -8
- package/dist/test/projectdirectory.test.d.ts +2 -0
- package/dist/test/projectdirectory.test.d.ts.map +1 -0
- package/dist/test/{project-directory.test.js → projectdirectory.test.js} +8 -8
- package/dist/test/sourcefile.test.js +4 -4
- package/dist/test/using.test.js +9 -9
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -4
- package/src/components/Class.tsx +149 -0
- package/src/components/ClassMethod.tsx +15 -74
- package/src/components/{EnumDeclaration.tsx → Enum.tsx} +6 -30
- package/src/components/Parameters.tsx +51 -0
- package/src/components/SourceFile.tsx +0 -1
- package/src/components/index.ts +4 -14
- package/src/components/stc/index.ts +2 -2
- package/src/modifiers.ts +42 -25
- package/src/name-policy.ts +0 -5
- package/temp/api.json +1298 -6463
- package/test/class-method.test.tsx +14 -24
- package/test/class.test.tsx +292 -0
- package/test/enum.test.tsx +11 -11
- package/test/namespace.test.tsx +4 -4
- package/test/{project-directory.test.tsx → projectdirectory.test.tsx} +4 -4
- package/test/sourcefile.test.tsx +2 -2
- package/test/using.test.tsx +9 -9
- package/vitest.config.ts +0 -3
- package/dist/src/components/ClassDeclaration.d.ts +0 -92
- package/dist/src/components/ClassDeclaration.d.ts.map +0 -1
- package/dist/src/components/EnumDeclaration.d.ts +0 -34
- package/dist/src/components/EnumDeclaration.d.ts.map +0 -1
- package/dist/src/components/attributes/attributes.d.ts +0 -39
- package/dist/src/components/attributes/attributes.d.ts.map +0 -1
- package/dist/src/components/attributes/attributes.js +0 -62
- package/dist/src/components/attributes/attributes.test.d.ts +0 -2
- package/dist/src/components/attributes/attributes.test.d.ts.map +0 -1
- package/dist/src/components/attributes/attributes.test.js +0 -75
- package/dist/src/components/doc/comment.d.ts +0 -70
- package/dist/src/components/doc/comment.d.ts.map +0 -1
- package/dist/src/components/doc/comment.js +0 -88
- package/dist/src/components/doc/comment.test.d.ts +0 -2
- package/dist/src/components/doc/comment.test.d.ts.map +0 -1
- package/dist/src/components/doc/comment.test.js +0 -348
- package/dist/src/components/doc/from-markdown.d.ts +0 -6
- package/dist/src/components/doc/from-markdown.d.ts.map +0 -1
- package/dist/src/components/doc/from-markdown.js +0 -58
- package/dist/src/components/doc/from-markdown.test.d.ts +0 -2
- package/dist/src/components/doc/from-markdown.test.d.ts.map +0 -1
- package/dist/src/components/doc/from-markdown.test.js +0 -83
- package/dist/src/components/interface/declaration.d.ts +0 -65
- package/dist/src/components/interface/declaration.d.ts.map +0 -1
- package/dist/src/components/interface/declaration.js +0 -83
- package/dist/src/components/interface/declaration.test.d.ts +0 -2
- package/dist/src/components/interface/declaration.test.d.ts.map +0 -1
- package/dist/src/components/interface/declaration.test.js +0 -171
- package/dist/src/components/interface/method.d.ts +0 -50
- package/dist/src/components/interface/method.d.ts.map +0 -1
- package/dist/src/components/interface/method.js +0 -74
- package/dist/src/components/interface/method.test.d.ts +0 -2
- package/dist/src/components/interface/method.test.d.ts.map +0 -1
- package/dist/src/components/interface/method.test.js +0 -300
- package/dist/src/components/interface/property.d.ts +0 -56
- package/dist/src/components/interface/property.d.ts.map +0 -1
- package/dist/src/components/interface/property.js +0 -73
- package/dist/src/components/interface/property.test.d.ts +0 -2
- package/dist/src/components/interface/property.test.d.ts.map +0 -1
- package/dist/src/components/interface/property.test.js +0 -189
- package/dist/src/components/parameters/parameters.d.ts +0 -19
- package/dist/src/components/parameters/parameters.d.ts.map +0 -1
- package/dist/src/components/parameters/parameters.js +0 -43
- package/dist/src/components/property/property.d.ts +0 -80
- package/dist/src/components/property/property.d.ts.map +0 -1
- package/dist/src/components/property/property.js +0 -76
- package/dist/src/components/property/property.test.d.ts +0 -2
- package/dist/src/components/property/property.test.d.ts.map +0 -1
- package/dist/src/components/property/property.test.js +0 -242
- package/dist/src/components/record/declaration.d.ts +0 -35
- package/dist/src/components/record/declaration.d.ts.map +0 -1
- package/dist/src/components/record/declaration.js +0 -90
- package/dist/src/components/record/declaration.test.d.ts +0 -2
- package/dist/src/components/record/declaration.test.d.ts.map +0 -1
- package/dist/src/components/record/declaration.test.js +0 -94
- package/dist/src/components/type-parameters/type-parameter-constraints.d.ts +0 -8
- package/dist/src/components/type-parameters/type-parameter-constraints.d.ts.map +0 -1
- package/dist/src/components/type-parameters/type-parameter-constraints.js +0 -44
- package/dist/src/components/type-parameters/type-parameter-constraints.test.d.ts +0 -2
- package/dist/src/components/type-parameters/type-parameter-constraints.test.d.ts.map +0 -1
- package/dist/src/components/type-parameters/type-parameter-constraints.test.js +0 -67
- package/dist/src/components/type-parameters/type-parameter.d.ts +0 -20
- package/dist/src/components/type-parameters/type-parameter.d.ts.map +0 -1
- package/dist/src/components/type-parameters/type-parameter.js +0 -22
- package/dist/src/components/type-parameters/type-parameters.d.ts +0 -17
- package/dist/src/components/type-parameters/type-parameters.d.ts.map +0 -1
- package/dist/src/components/type-parameters/type-parameters.js +0 -54
- package/dist/src/components/type-parameters/type-parameters.test.d.ts +0 -2
- package/dist/src/components/type-parameters/type-parameters.test.d.ts.map +0 -1
- package/dist/src/components/type-parameters/type-parameters.test.js +0 -48
- package/dist/src/components/var/declaration.d.ts +0 -35
- package/dist/src/components/var/declaration.d.ts.map +0 -1
- package/dist/src/components/var/declaration.js +0 -40
- package/dist/src/components/var/declaration.test.d.ts +0 -2
- package/dist/src/components/var/declaration.test.d.ts.map +0 -1
- package/dist/src/components/var/declaration.test.js +0 -73
- package/dist/test/class-declaration.test.d.ts +0 -2
- package/dist/test/class-declaration.test.d.ts.map +0 -1
- package/dist/test/class-declaration.test.js +0 -481
- package/dist/test/project-directory.test.d.ts +0 -2
- package/dist/test/project-directory.test.d.ts.map +0 -1
- package/dist/test/vitest.setup.d.ts +0 -2
- package/dist/test/vitest.setup.d.ts.map +0 -1
- package/dist/test/vitest.setup.js +0 -1
- package/src/components/ClassDeclaration.tsx +0 -233
- package/src/components/attributes/attributes.test.tsx +0 -61
- package/src/components/attributes/attributes.tsx +0 -100
- package/src/components/doc/comment.test.tsx +0 -337
- package/src/components/doc/comment.tsx +0 -152
- package/src/components/doc/from-markdown.test.tsx +0 -103
- package/src/components/doc/from-markdown.tsx +0 -58
- package/src/components/interface/declaration.test.tsx +0 -158
- package/src/components/interface/declaration.tsx +0 -125
- package/src/components/interface/method.test.tsx +0 -293
- package/src/components/interface/method.tsx +0 -122
- package/src/components/interface/property.test.tsx +0 -165
- package/src/components/interface/property.tsx +0 -127
- package/src/components/parameters/parameters.tsx +0 -74
- package/src/components/property/property.test.tsx +0 -209
- package/src/components/property/property.tsx +0 -172
- package/src/components/record/declaration.test.tsx +0 -73
- package/src/components/record/declaration.tsx +0 -109
- package/src/components/type-parameters/type-parameter-constraints.test.tsx +0 -93
- package/src/components/type-parameters/type-parameter-constraints.tsx +0 -46
- package/src/components/type-parameters/type-parameter.tsx +0 -35
- package/src/components/type-parameters/type-parameters.test.tsx +0 -46
- package/src/components/type-parameters/type-parameters.tsx +0 -63
- package/src/components/var/declaration.test.tsx +0 -59
- package/src/components/var/declaration.tsx +0 -47
- package/test/class-declaration.test.tsx +0 -430
- package/test/vitest.setup.ts +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Children } from "@alloy-js/core/jsx-runtime";
|
|
2
2
|
import { describe, expect, it } from "vitest";
|
|
3
|
-
import {
|
|
3
|
+
import { Class, ClassMethod } from "../src/index.js";
|
|
4
4
|
import { TestNamespace } from "./utils.jsx";
|
|
5
5
|
|
|
6
6
|
const Wrapper = (props: { children: Children }) => (
|
|
7
7
|
<TestNamespace>
|
|
8
|
-
<
|
|
8
|
+
<Class accessModifier="public" name="TestClass">
|
|
9
9
|
{props.children}
|
|
10
|
-
</
|
|
10
|
+
</Class>
|
|
11
11
|
</TestNamespace>
|
|
12
12
|
);
|
|
13
13
|
|
|
@@ -18,7 +18,7 @@ describe("modifiers", () => {
|
|
|
18
18
|
(accessModifier) => {
|
|
19
19
|
expect(
|
|
20
20
|
<Wrapper>
|
|
21
|
-
<ClassMethod {
|
|
21
|
+
<ClassMethod accessModifier={accessModifier} name="MethodOne" />
|
|
22
22
|
</Wrapper>,
|
|
23
23
|
).toRenderTo(`
|
|
24
24
|
public class TestClass
|
|
@@ -36,7 +36,7 @@ describe("modifiers", () => {
|
|
|
36
36
|
(methodModifier) => {
|
|
37
37
|
expect(
|
|
38
38
|
<Wrapper>
|
|
39
|
-
<ClassMethod {
|
|
39
|
+
<ClassMethod methodModifier={methodModifier} name="MethodOne" />
|
|
40
40
|
</Wrapper>,
|
|
41
41
|
).toRenderTo(`
|
|
42
42
|
public class TestClass
|
|
@@ -50,7 +50,7 @@ describe("modifiers", () => {
|
|
|
50
50
|
it("abstract exclude body", () => {
|
|
51
51
|
expect(
|
|
52
52
|
<Wrapper>
|
|
53
|
-
<ClassMethod abstract name="MethodOne" />
|
|
53
|
+
<ClassMethod methodModifier="abstract" name="MethodOne" />
|
|
54
54
|
</Wrapper>,
|
|
55
55
|
).toRenderTo(`
|
|
56
56
|
public class TestClass
|
|
@@ -77,7 +77,13 @@ describe("modifiers", () => {
|
|
|
77
77
|
it("combine modifiers", () => {
|
|
78
78
|
expect(
|
|
79
79
|
<Wrapper>
|
|
80
|
-
<ClassMethod
|
|
80
|
+
<ClassMethod
|
|
81
|
+
async
|
|
82
|
+
returns="Task"
|
|
83
|
+
accessModifier="public"
|
|
84
|
+
methodModifier="abstract"
|
|
85
|
+
name="MethodOne"
|
|
86
|
+
/>
|
|
81
87
|
</Wrapper>,
|
|
82
88
|
).toRenderTo(`
|
|
83
89
|
public class TestClass
|
|
@@ -114,7 +120,7 @@ it("defines params and return type", () => {
|
|
|
114
120
|
const res = (
|
|
115
121
|
<Wrapper>
|
|
116
122
|
<ClassMethod
|
|
117
|
-
public
|
|
123
|
+
accessModifier="public"
|
|
118
124
|
name="MethodOne"
|
|
119
125
|
parameters={params}
|
|
120
126
|
returns="string"
|
|
@@ -129,19 +135,3 @@ it("defines params and return type", () => {
|
|
|
129
135
|
}
|
|
130
136
|
`);
|
|
131
137
|
});
|
|
132
|
-
|
|
133
|
-
it("specify doc comment", () => {
|
|
134
|
-
expect(
|
|
135
|
-
<TestNamespace>
|
|
136
|
-
<ClassDeclaration name="Test">
|
|
137
|
-
<ClassMethod name="Method" doc="This is a test" />
|
|
138
|
-
</ClassDeclaration>
|
|
139
|
-
</TestNamespace>,
|
|
140
|
-
).toRenderTo(`
|
|
141
|
-
class Test
|
|
142
|
-
{
|
|
143
|
-
/// This is a test
|
|
144
|
-
void Method() {}
|
|
145
|
-
}
|
|
146
|
-
`);
|
|
147
|
-
});
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
import * as core from "@alloy-js/core";
|
|
2
|
+
import * as coretest from "@alloy-js/core/testing";
|
|
3
|
+
import { expect, it } from "vitest";
|
|
4
|
+
import * as csharp from "../src/index.js";
|
|
5
|
+
import * as utils from "./utils.js";
|
|
6
|
+
|
|
7
|
+
it("declares class with no members", () => {
|
|
8
|
+
const res = utils.toSourceText(
|
|
9
|
+
<csharp.Class accessModifier="public" name="TestClass" />,
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
expect(res).toBe(coretest.d`
|
|
13
|
+
namespace TestCode
|
|
14
|
+
{
|
|
15
|
+
public class TestClass;
|
|
16
|
+
}
|
|
17
|
+
`);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it("declares class with some members", () => {
|
|
21
|
+
const res = utils.toSourceText(
|
|
22
|
+
<csharp.Class accessModifier="public" name="TestClass">
|
|
23
|
+
<core.StatementList>
|
|
24
|
+
<csharp.ClassMember
|
|
25
|
+
accessModifier="public"
|
|
26
|
+
name="MemberOne"
|
|
27
|
+
type="string"
|
|
28
|
+
/>
|
|
29
|
+
<csharp.ClassMember
|
|
30
|
+
accessModifier="private"
|
|
31
|
+
name="MemberTwo"
|
|
32
|
+
type="int"
|
|
33
|
+
/>
|
|
34
|
+
</core.StatementList>
|
|
35
|
+
</csharp.Class>,
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
expect(res).toBe(coretest.d`
|
|
39
|
+
namespace TestCode
|
|
40
|
+
{
|
|
41
|
+
public class TestClass
|
|
42
|
+
{
|
|
43
|
+
public string MemberOne;
|
|
44
|
+
private int memberTwo;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
`);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it("declares class with some methods", () => {
|
|
51
|
+
const res = utils.toSourceText(
|
|
52
|
+
<csharp.Class accessModifier="public" name="TestClass">
|
|
53
|
+
<core.List>
|
|
54
|
+
<csharp.ClassMethod accessModifier="public" name="MethodOne" />
|
|
55
|
+
<csharp.ClassMethod
|
|
56
|
+
accessModifier="private"
|
|
57
|
+
methodModifier="virtual"
|
|
58
|
+
name="MethodTwo"
|
|
59
|
+
/>
|
|
60
|
+
</core.List>
|
|
61
|
+
</csharp.Class>,
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
expect(res).toBe(coretest.d`
|
|
65
|
+
namespace TestCode
|
|
66
|
+
{
|
|
67
|
+
public class TestClass
|
|
68
|
+
{
|
|
69
|
+
public void MethodOne() {}
|
|
70
|
+
private virtual void MethodTwo() {}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
`);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it("uses refkeys for members, params, and return type", () => {
|
|
77
|
+
const inputTypeRefkey = core.refkey();
|
|
78
|
+
const testResultTypeRefkey = core.refkey();
|
|
79
|
+
const enumTypeRefkey = core.refkey();
|
|
80
|
+
|
|
81
|
+
const params = [
|
|
82
|
+
{
|
|
83
|
+
name: "IntParam",
|
|
84
|
+
type: "int",
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
name: "BodyParam",
|
|
88
|
+
type: inputTypeRefkey,
|
|
89
|
+
},
|
|
90
|
+
];
|
|
91
|
+
|
|
92
|
+
const res = core.render(
|
|
93
|
+
<core.Output namePolicy={csharp.createCSharpNamePolicy()}>
|
|
94
|
+
<csharp.Namespace name="TestCode">
|
|
95
|
+
<csharp.SourceFile path="Test.cs">
|
|
96
|
+
<csharp.Enum
|
|
97
|
+
accessModifier="public"
|
|
98
|
+
name="TestEnum"
|
|
99
|
+
refkey={enumTypeRefkey}
|
|
100
|
+
>
|
|
101
|
+
<core.List comma hardline>
|
|
102
|
+
<csharp.EnumMember name="One" />
|
|
103
|
+
<csharp.EnumMember name="Two" />
|
|
104
|
+
</core.List>
|
|
105
|
+
</csharp.Enum>
|
|
106
|
+
<hbr />
|
|
107
|
+
<csharp.Class
|
|
108
|
+
accessModifier="public"
|
|
109
|
+
name="TestInput"
|
|
110
|
+
refkey={inputTypeRefkey}
|
|
111
|
+
/>
|
|
112
|
+
<hbr />
|
|
113
|
+
<csharp.Class
|
|
114
|
+
accessModifier="public"
|
|
115
|
+
name="TestResult"
|
|
116
|
+
refkey={testResultTypeRefkey}
|
|
117
|
+
/>
|
|
118
|
+
<hbr />
|
|
119
|
+
<csharp.Class accessModifier="public" name="TestClass">
|
|
120
|
+
<csharp.ClassMember
|
|
121
|
+
accessModifier="private"
|
|
122
|
+
name="MemberOne"
|
|
123
|
+
type={enumTypeRefkey}
|
|
124
|
+
/>
|
|
125
|
+
;
|
|
126
|
+
<hbr />
|
|
127
|
+
<csharp.ClassMethod
|
|
128
|
+
accessModifier="public"
|
|
129
|
+
name="MethodOne"
|
|
130
|
+
parameters={params}
|
|
131
|
+
returns={testResultTypeRefkey}
|
|
132
|
+
>
|
|
133
|
+
return new {testResultTypeRefkey}();
|
|
134
|
+
</csharp.ClassMethod>
|
|
135
|
+
</csharp.Class>
|
|
136
|
+
</csharp.SourceFile>
|
|
137
|
+
</csharp.Namespace>
|
|
138
|
+
</core.Output>,
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
expect(res.contents[0].contents).toBe(coretest.d`
|
|
142
|
+
namespace TestCode
|
|
143
|
+
{
|
|
144
|
+
public enum TestEnum
|
|
145
|
+
{
|
|
146
|
+
One,
|
|
147
|
+
Two
|
|
148
|
+
}
|
|
149
|
+
public class TestInput;
|
|
150
|
+
public class TestResult;
|
|
151
|
+
public class TestClass
|
|
152
|
+
{
|
|
153
|
+
private TestEnum memberOne;
|
|
154
|
+
public TestResult MethodOne(int intParam, TestInput bodyParam)
|
|
155
|
+
{
|
|
156
|
+
return new TestResult();
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
`);
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
it("declares class with generic parameters", () => {
|
|
164
|
+
const typeParameters = {
|
|
165
|
+
T: core.refkey(),
|
|
166
|
+
U: core.refkey(),
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
const res = utils.toSourceText(
|
|
170
|
+
<csharp.Class
|
|
171
|
+
accessModifier="public"
|
|
172
|
+
name="TestClass"
|
|
173
|
+
typeParameters={typeParameters}
|
|
174
|
+
>
|
|
175
|
+
<csharp.ClassMember
|
|
176
|
+
accessModifier="public"
|
|
177
|
+
name="memberOne"
|
|
178
|
+
type={typeParameters.T}
|
|
179
|
+
/>
|
|
180
|
+
;<hbr />
|
|
181
|
+
<csharp.ClassMember
|
|
182
|
+
accessModifier="private"
|
|
183
|
+
name="memberTwo"
|
|
184
|
+
type={typeParameters.U}
|
|
185
|
+
/>
|
|
186
|
+
;
|
|
187
|
+
</csharp.Class>,
|
|
188
|
+
);
|
|
189
|
+
|
|
190
|
+
expect(res).toBe(coretest.d`
|
|
191
|
+
namespace TestCode
|
|
192
|
+
{
|
|
193
|
+
public class TestClass<T, U>
|
|
194
|
+
{
|
|
195
|
+
public T MemberOne;
|
|
196
|
+
private U memberTwo;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
`);
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
it("declares class with invalid members", () => {
|
|
203
|
+
const decl = (
|
|
204
|
+
<csharp.Class accessModifier="public" name="TestClass">
|
|
205
|
+
<csharp.EnumMember name="One" />,<hbr />
|
|
206
|
+
<csharp.EnumMember name="Two" />
|
|
207
|
+
</csharp.Class>
|
|
208
|
+
);
|
|
209
|
+
|
|
210
|
+
expect(() => utils.toSourceText(decl)).toThrow(
|
|
211
|
+
"can't define an enum member outside of an enum-decl scope",
|
|
212
|
+
);
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
it("declares class with constructor", () => {
|
|
216
|
+
const res = utils.toSourceText(
|
|
217
|
+
<csharp.Class accessModifier="public" name="TestClass">
|
|
218
|
+
<csharp.ClassConstructor accessModifier="public" />
|
|
219
|
+
</csharp.Class>,
|
|
220
|
+
);
|
|
221
|
+
|
|
222
|
+
expect(res).toBe(coretest.d`
|
|
223
|
+
namespace TestCode
|
|
224
|
+
{
|
|
225
|
+
public class TestClass
|
|
226
|
+
{
|
|
227
|
+
public TestClass() {}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
`);
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
it("declares class with constructor params and assigns values to fields", () => {
|
|
234
|
+
const thisNameRefkey = core.refkey();
|
|
235
|
+
const thisSizeRefkey = core.refkey();
|
|
236
|
+
const paramNameRefkey = core.refkey();
|
|
237
|
+
const paramSizeRefkey = core.refkey();
|
|
238
|
+
|
|
239
|
+
const ctorParams = [
|
|
240
|
+
{
|
|
241
|
+
name: "name",
|
|
242
|
+
type: "string",
|
|
243
|
+
refkey: paramNameRefkey,
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
name: "size",
|
|
247
|
+
type: "int",
|
|
248
|
+
refkey: paramSizeRefkey,
|
|
249
|
+
},
|
|
250
|
+
];
|
|
251
|
+
|
|
252
|
+
const res = utils.toSourceText(
|
|
253
|
+
<csharp.Class accessModifier="public" name="TestClass">
|
|
254
|
+
<csharp.ClassMember
|
|
255
|
+
accessModifier="private"
|
|
256
|
+
name="name"
|
|
257
|
+
type="string"
|
|
258
|
+
refkey={thisNameRefkey}
|
|
259
|
+
/>
|
|
260
|
+
;<hbr />
|
|
261
|
+
<csharp.ClassMember
|
|
262
|
+
accessModifier="private"
|
|
263
|
+
name="size"
|
|
264
|
+
type="int"
|
|
265
|
+
refkey={thisSizeRefkey}
|
|
266
|
+
/>
|
|
267
|
+
;<hbr />
|
|
268
|
+
<csharp.ClassConstructor accessModifier="public" parameters={ctorParams}>
|
|
269
|
+
{thisNameRefkey} = {paramNameRefkey};<hbr />
|
|
270
|
+
{thisSizeRefkey} = {paramSizeRefkey};
|
|
271
|
+
</csharp.ClassConstructor>
|
|
272
|
+
</csharp.Class>,
|
|
273
|
+
);
|
|
274
|
+
|
|
275
|
+
// TODO: assignments to members should have this. prefix
|
|
276
|
+
// e.g. this.name = name;
|
|
277
|
+
expect(res).toBe(coretest.d`
|
|
278
|
+
namespace TestCode
|
|
279
|
+
{
|
|
280
|
+
public class TestClass
|
|
281
|
+
{
|
|
282
|
+
private string name;
|
|
283
|
+
private int size;
|
|
284
|
+
public TestClass(string name, int size)
|
|
285
|
+
{
|
|
286
|
+
name = name;
|
|
287
|
+
size = size;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
`);
|
|
292
|
+
});
|
package/test/enum.test.tsx
CHANGED
|
@@ -6,7 +6,7 @@ import * as utils from "./utils.js";
|
|
|
6
6
|
|
|
7
7
|
it("declares enum with no members", () => {
|
|
8
8
|
const res = utils.toSourceText(
|
|
9
|
-
<csharp.
|
|
9
|
+
<csharp.Enum accessModifier="public" name="TestEnum" />,
|
|
10
10
|
);
|
|
11
11
|
|
|
12
12
|
expect(res).toBe(coretest.d`
|
|
@@ -19,10 +19,10 @@ it("declares enum with no members", () => {
|
|
|
19
19
|
|
|
20
20
|
it("declares enum with members", () => {
|
|
21
21
|
const res = utils.toSourceText(
|
|
22
|
-
<csharp.
|
|
22
|
+
<csharp.Enum accessModifier="public" name="TestEnum">
|
|
23
23
|
<csharp.EnumMember name="One" />,<hbr />
|
|
24
24
|
<csharp.EnumMember name="Two" />
|
|
25
|
-
</csharp.
|
|
25
|
+
</csharp.Enum>,
|
|
26
26
|
);
|
|
27
27
|
|
|
28
28
|
expect(res).toBe(coretest.d`
|
|
@@ -39,10 +39,10 @@ it("declares enum with members", () => {
|
|
|
39
39
|
|
|
40
40
|
it("applies naming policy to enum and members", () => {
|
|
41
41
|
const res = utils.toSourceText(
|
|
42
|
-
<csharp.
|
|
42
|
+
<csharp.Enum accessModifier="public" name="testEnum">
|
|
43
43
|
<csharp.EnumMember name="one" />,<hbr />
|
|
44
44
|
<csharp.EnumMember name="two" />
|
|
45
|
-
</csharp.
|
|
45
|
+
</csharp.Enum>,
|
|
46
46
|
);
|
|
47
47
|
|
|
48
48
|
expect(res).toBe(coretest.d`
|
|
@@ -65,10 +65,10 @@ it("can reference things by refkey", () => {
|
|
|
65
65
|
<core.Output>
|
|
66
66
|
<csharp.Namespace name="TestCode">
|
|
67
67
|
<csharp.SourceFile path="Test.cs">
|
|
68
|
-
<csharp.
|
|
68
|
+
<csharp.Enum accessModifier="public" name="TestEnum" refkey={enumRK}>
|
|
69
69
|
<csharp.EnumMember name="One" />,<hbr />
|
|
70
70
|
<csharp.EnumMember name="Two" refkey={twoRK} />
|
|
71
|
-
</csharp.
|
|
71
|
+
</csharp.Enum>
|
|
72
72
|
<hbr />
|
|
73
73
|
{enumRK};<hbr />
|
|
74
74
|
{twoRK};
|
|
@@ -99,19 +99,19 @@ it("can reference things by refkey across files", () => {
|
|
|
99
99
|
<core.Output>
|
|
100
100
|
<csharp.Namespace name="TestCode">
|
|
101
101
|
<csharp.SourceFile path="Test.cs">
|
|
102
|
-
<csharp.
|
|
102
|
+
<csharp.Enum accessModifier="public" name="TestEnum">
|
|
103
103
|
<csharp.EnumMember name="One" />,<hbr />
|
|
104
104
|
<csharp.EnumMember name="Two" />
|
|
105
|
-
</csharp.
|
|
105
|
+
</csharp.Enum>
|
|
106
106
|
<hbr />
|
|
107
107
|
{enumRK};<hbr />
|
|
108
108
|
{barRK};
|
|
109
109
|
</csharp.SourceFile>
|
|
110
110
|
<csharp.SourceFile path="Other.cs">
|
|
111
|
-
<csharp.
|
|
111
|
+
<csharp.Enum accessModifier="public" name="OtherEnum" refkey={enumRK}>
|
|
112
112
|
<csharp.EnumMember name="Foo" />,<hbr />
|
|
113
113
|
<csharp.EnumMember name="Bar" refkey={barRK} />
|
|
114
|
-
</csharp.
|
|
114
|
+
</csharp.Enum>
|
|
115
115
|
<hbr />
|
|
116
116
|
{enumRK};<hbr />
|
|
117
117
|
{barRK};
|
package/test/namespace.test.tsx
CHANGED
|
@@ -8,18 +8,18 @@ it("defines multiple namespaces and source files with unique content", () => {
|
|
|
8
8
|
<core.Output>
|
|
9
9
|
<csharp.Namespace name="Namespace1">
|
|
10
10
|
<csharp.SourceFile path="Model1.cs">
|
|
11
|
-
<csharp.
|
|
11
|
+
<csharp.Class accessModifier="public" name="Model1" />
|
|
12
12
|
</csharp.SourceFile>
|
|
13
13
|
<csharp.SourceFile path="Model2.cs">
|
|
14
|
-
<csharp.
|
|
14
|
+
<csharp.Class accessModifier="public" name="Model2" />
|
|
15
15
|
</csharp.SourceFile>
|
|
16
16
|
</csharp.Namespace>
|
|
17
17
|
<csharp.Namespace name="Namespace2">
|
|
18
18
|
<csharp.SourceFile path="Model3.cs">
|
|
19
|
-
<csharp.
|
|
19
|
+
<csharp.Class accessModifier="public" name="Model3" />
|
|
20
20
|
</csharp.SourceFile>
|
|
21
21
|
<csharp.SourceFile path="Model4.cs">
|
|
22
|
-
<csharp.
|
|
22
|
+
<csharp.Class accessModifier="public" name="Model4" />
|
|
23
23
|
</csharp.SourceFile>
|
|
24
24
|
</csharp.Namespace>
|
|
25
25
|
</core.Output>,
|
|
@@ -14,10 +14,10 @@ it("defines a project directory file with multiple source files", () => {
|
|
|
14
14
|
>
|
|
15
15
|
<csharp.Namespace name="TestCode">
|
|
16
16
|
<csharp.SourceFile path="Test1.cs">
|
|
17
|
-
<csharp.
|
|
17
|
+
<csharp.Class accessModifier="public" name="TestClass1" />
|
|
18
18
|
</csharp.SourceFile>
|
|
19
19
|
<csharp.SourceFile path="Test2.cs">
|
|
20
|
-
<csharp.
|
|
20
|
+
<csharp.Class accessModifier="public" name="TestClass2" />
|
|
21
21
|
</csharp.SourceFile>
|
|
22
22
|
</csharp.Namespace>
|
|
23
23
|
</csharp.ProjectDirectory>
|
|
@@ -71,10 +71,10 @@ it("defines a project directory file with multiple source files and a custom TFM
|
|
|
71
71
|
>
|
|
72
72
|
<csharp.Namespace name="TestCode">
|
|
73
73
|
<csharp.SourceFile path="Test1.cs">
|
|
74
|
-
<csharp.
|
|
74
|
+
<csharp.Class accessModifier="public" name="TestClass1" />
|
|
75
75
|
</csharp.SourceFile>
|
|
76
76
|
<csharp.SourceFile path="Test2.cs">
|
|
77
|
-
<csharp.
|
|
77
|
+
<csharp.Class accessModifier="public" name="TestClass2" />
|
|
78
78
|
</csharp.SourceFile>
|
|
79
79
|
</csharp.Namespace>
|
|
80
80
|
</csharp.ProjectDirectory>
|
package/test/sourcefile.test.tsx
CHANGED
|
@@ -8,10 +8,10 @@ it("defines multiple source files with unique content", () => {
|
|
|
8
8
|
<core.Output>
|
|
9
9
|
<csharp.Namespace name="TestCode">
|
|
10
10
|
<csharp.SourceFile path="Test1.cs">
|
|
11
|
-
<csharp.
|
|
11
|
+
<csharp.Class accessModifier="public" name="TestClass1" />
|
|
12
12
|
</csharp.SourceFile>
|
|
13
13
|
<csharp.SourceFile path="Test2.cs">
|
|
14
|
-
<csharp.
|
|
14
|
+
<csharp.Class accessModifier="public" name="TestClass2" />
|
|
15
15
|
</csharp.SourceFile>
|
|
16
16
|
</csharp.Namespace>
|
|
17
17
|
</core.Output>,
|
package/test/using.test.tsx
CHANGED
|
@@ -52,34 +52,34 @@ it("adds using statement across namespaces", () => {
|
|
|
52
52
|
<core.Output namePolicy={csharp.createCSharpNamePolicy()}>
|
|
53
53
|
<csharp.Namespace name="Models">
|
|
54
54
|
<csharp.SourceFile path="Models.cs">
|
|
55
|
-
<csharp.
|
|
56
|
-
public
|
|
55
|
+
<csharp.Class
|
|
56
|
+
accessModifier="public"
|
|
57
57
|
name="Input"
|
|
58
58
|
refkey={inputTypeRefkey}
|
|
59
59
|
/>
|
|
60
60
|
<hbr />
|
|
61
|
-
<csharp.
|
|
62
|
-
public
|
|
61
|
+
<csharp.Class
|
|
62
|
+
accessModifier="public"
|
|
63
63
|
name="Output"
|
|
64
64
|
refkey={outputTypeRefkey}
|
|
65
65
|
/>
|
|
66
66
|
<hbr />
|
|
67
|
-
<csharp.
|
|
67
|
+
<csharp.Enum accessModifier="public" name="TestEnum">
|
|
68
68
|
<csharp.EnumMember name="One" />,<hbr />
|
|
69
69
|
<csharp.EnumMember name="Two" refkey={twoValRefkey} />
|
|
70
|
-
</csharp.
|
|
70
|
+
</csharp.Enum>
|
|
71
71
|
</csharp.SourceFile>
|
|
72
72
|
</csharp.Namespace>
|
|
73
73
|
<csharp.Namespace name="Client">
|
|
74
74
|
<csharp.SourceFile path="Client.cs" using={["System"]}>
|
|
75
|
-
<csharp.
|
|
75
|
+
<csharp.Class accessModifier="public" name="Client">
|
|
76
76
|
<csharp.ClassMethod
|
|
77
|
-
public
|
|
77
|
+
accessModifier="public"
|
|
78
78
|
name="MethodOne"
|
|
79
79
|
parameters={params}
|
|
80
80
|
returns={outputTypeRefkey}
|
|
81
81
|
/>
|
|
82
|
-
</csharp.
|
|
82
|
+
</csharp.Class>
|
|
83
83
|
<hbr />
|
|
84
84
|
{twoValRefkey};
|
|
85
85
|
</csharp.SourceFile>
|
package/vitest.config.ts
CHANGED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import * as core from "@alloy-js/core";
|
|
2
|
-
import { AccessModifiers } from "../modifiers.js";
|
|
3
|
-
import { AttributesProp } from "./attributes/attributes.jsx";
|
|
4
|
-
import { ParameterProps } from "./parameters/parameters.jsx";
|
|
5
|
-
import { TypeParameterProps } from "./type-parameters/type-parameter.jsx";
|
|
6
|
-
export interface ClassModifiers {
|
|
7
|
-
readonly abstract?: boolean;
|
|
8
|
-
readonly partial?: boolean;
|
|
9
|
-
readonly sealed?: boolean;
|
|
10
|
-
readonly static?: boolean;
|
|
11
|
-
}
|
|
12
|
-
export interface ClassDeclarationProps extends Omit<core.DeclarationProps, "nameKind">, AccessModifiers, ClassModifiers {
|
|
13
|
-
name: string;
|
|
14
|
-
/** Doc comment */
|
|
15
|
-
doc?: core.Children;
|
|
16
|
-
refkey?: core.Refkey;
|
|
17
|
-
/**
|
|
18
|
-
* Type parameters for the class
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```tsx
|
|
22
|
-
* <ClassDeclaration name="MyClass" typeParameters={["T"]} />
|
|
23
|
-
* ```
|
|
24
|
-
* This will produce:
|
|
25
|
-
* ```csharp
|
|
26
|
-
* public class MyClass<T>
|
|
27
|
-
* ```
|
|
28
|
-
*/
|
|
29
|
-
typeParameters?: (string | TypeParameterProps)[];
|
|
30
|
-
/** Base class that this class extends */
|
|
31
|
-
baseType?: core.Children;
|
|
32
|
-
/** Interfaces this class implements */
|
|
33
|
-
interfaceTypes?: core.Children[];
|
|
34
|
-
/**
|
|
35
|
-
* Define attributes to attach
|
|
36
|
-
* @example
|
|
37
|
-
* ```tsx
|
|
38
|
-
* <ClassDeclaration name="MyClass" attributes={[
|
|
39
|
-
* <Attribute name="Test" />
|
|
40
|
-
* <Attribute name="Test2" args={["arg1", "arg2"]} />
|
|
41
|
-
* ]}>
|
|
42
|
-
* ```
|
|
43
|
-
* This will produce:
|
|
44
|
-
* ```csharp
|
|
45
|
-
* [Test]
|
|
46
|
-
* [Test2("arg1", "arg2")]
|
|
47
|
-
* public class MyClass
|
|
48
|
-
* ```
|
|
49
|
-
*/
|
|
50
|
-
attributes?: AttributesProp;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* CSharp class declaration.
|
|
54
|
-
* @example
|
|
55
|
-
* ```tsx
|
|
56
|
-
* <ClassDeclaration public name="MyClass">
|
|
57
|
-
* <ClassMember public name="MyField" type="int" />
|
|
58
|
-
* <ClassConstructor>
|
|
59
|
-
* <Parameter name="value" type="int" />
|
|
60
|
-
* this.MyField = value;
|
|
61
|
-
* </ClassConstructor>
|
|
62
|
-
* </ClassDeclaration>
|
|
63
|
-
* ```
|
|
64
|
-
* This will produce:
|
|
65
|
-
* ```csharp
|
|
66
|
-
* public class MyClass
|
|
67
|
-
* {
|
|
68
|
-
* public int MyField;
|
|
69
|
-
* public MyClass(int value)
|
|
70
|
-
* {
|
|
71
|
-
* this.MyField = value;
|
|
72
|
-
* }
|
|
73
|
-
* }
|
|
74
|
-
* ```
|
|
75
|
-
*/
|
|
76
|
-
export declare function ClassDeclaration(props: ClassDeclarationProps): core.Children;
|
|
77
|
-
export interface ClassConstructorProps extends AccessModifiers {
|
|
78
|
-
parameters?: Array<ParameterProps>;
|
|
79
|
-
refkey?: core.Refkey;
|
|
80
|
-
symbol?: core.OutputSymbol;
|
|
81
|
-
children?: core.Children;
|
|
82
|
-
}
|
|
83
|
-
export declare function ClassConstructor(props: ClassConstructorProps): core.Children;
|
|
84
|
-
export interface ClassMemberProps extends AccessModifiers {
|
|
85
|
-
name: string;
|
|
86
|
-
type: core.Children;
|
|
87
|
-
refkey?: core.Refkey;
|
|
88
|
-
/** Doc comment */
|
|
89
|
-
doc?: core.Children;
|
|
90
|
-
}
|
|
91
|
-
export declare function ClassMember(props: ClassMemberProps): core.Children;
|
|
92
|
-
//# sourceMappingURL=ClassDeclaration.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ClassDeclaration.d.ts","sourceRoot":"","sources":["../../../src/components/ClassDeclaration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EACL,eAAe,EAIhB,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAAiB,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG5E,OAAO,EAAE,cAAc,EAAc,MAAM,6BAA6B,CAAC;AAEzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAG1E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAUD,MAAM,WAAW,qBACf,SAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAC7C,eAAe,EACf,cAAc;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IAErB;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,kBAAkB,CAAC,EAAE,CAAC;IAEjD,yCAAyC;IACzC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;IAEzB,uCAAuC;IACvC,cAAc,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAEjC;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,iBA6C5D;AAED,MAAM,WAAW,qBAAsB,SAAQ,eAAe;IAC5D,UAAU,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC;IAC3B,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;CAC1B;AAGD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,iBAiC5D;AAGD,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IACrB,kBAAkB;IAClB,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;CACrB;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,iBA0BlD"}
|