@alloy-js/csharp 0.20.0-dev.2 → 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.
- package/dist/src/components/Declaration.d.ts +2 -2
- package/dist/src/components/Declaration.d.ts.map +1 -1
- package/dist/src/components/Declaration.js +3 -13
- package/dist/src/components/Reference.d.ts.map +1 -1
- package/dist/src/components/Reference.js +5 -1
- package/dist/src/components/SourceFile.d.ts +8 -9
- package/dist/src/components/SourceFile.d.ts.map +1 -1
- package/dist/src/components/SourceFile.js +69 -45
- package/dist/src/components/UsingDirective.d.ts +5 -1
- package/dist/src/components/UsingDirective.d.ts.map +1 -1
- package/dist/src/components/UsingDirective.js +3 -1
- package/dist/src/components/class/declaration.d.ts +2 -2
- package/dist/src/components/class/declaration.d.ts.map +1 -1
- package/dist/src/components/class/declaration.js +19 -33
- package/dist/src/components/class/declaration.test.js +192 -193
- package/dist/src/components/constructor/constructor.d.ts.map +1 -1
- package/dist/src/components/constructor/constructor.js +11 -19
- package/dist/src/components/constructor/constructor.test.js +10 -19
- package/dist/src/components/{EnumDeclaration.d.ts → enum/declaration.d.ts} +6 -11
- package/dist/src/components/enum/declaration.d.ts.map +1 -0
- package/dist/src/components/enum/declaration.js +54 -0
- package/dist/src/components/enum/declaration.ref.test.d.ts +2 -0
- package/dist/src/components/enum/declaration.ref.test.d.ts.map +1 -0
- package/dist/src/components/enum/declaration.ref.test.js +120 -0
- package/dist/src/components/enum/declaration.test.d.ts +2 -0
- package/dist/src/components/enum/declaration.test.d.ts.map +1 -0
- package/dist/src/components/enum/declaration.test.js +39 -0
- package/dist/src/components/enum/member.d.ts +7 -0
- package/dist/src/components/enum/member.d.ts.map +1 -0
- package/dist/src/components/enum/member.js +29 -0
- package/dist/src/components/enum/member.test.d.ts +2 -0
- package/dist/src/components/enum/member.test.d.ts.map +1 -0
- package/dist/src/components/enum/member.test.js +28 -0
- package/dist/src/components/field/field.d.ts.map +1 -1
- package/dist/src/components/field/field.js +9 -17
- package/dist/src/components/field/field.test.js +7 -7
- package/dist/src/components/index.d.ts +5 -2
- package/dist/src/components/index.d.ts.map +1 -1
- package/dist/src/components/index.js +5 -2
- package/dist/src/components/interface/declaration.d.ts.map +1 -1
- package/dist/src/components/interface/declaration.js +19 -21
- package/dist/src/components/interface/declaration.test.js +26 -35
- package/dist/src/components/interface/method.d.ts.map +1 -1
- package/dist/src/components/interface/method.js +7 -18
- package/dist/src/components/interface/method.test.js +38 -47
- package/dist/src/components/interface/property.d.ts.map +1 -1
- package/dist/src/components/interface/property.js +21 -39
- package/dist/src/components/interface/property.test.js +11 -11
- package/dist/src/components/lexical-scope.d.ts +8 -0
- package/dist/src/components/lexical-scope.d.ts.map +1 -0
- package/dist/src/components/lexical-scope.js +24 -0
- package/dist/src/components/method/method.d.ts +5 -2
- package/dist/src/components/method/method.d.ts.map +1 -1
- package/dist/src/components/method/method.js +7 -16
- package/dist/src/components/method/method.test.js +11 -11
- package/dist/src/components/method-scope.d.ts +8 -0
- package/dist/src/components/method-scope.d.ts.map +1 -0
- package/dist/src/components/method-scope.js +24 -0
- package/dist/src/components/namespace-scopes.d.ts +13 -0
- package/dist/src/components/namespace-scopes.d.ts.map +1 -0
- package/dist/src/components/namespace-scopes.js +44 -0
- package/dist/src/components/namespace.d.ts +7 -0
- package/dist/src/components/namespace.d.ts.map +1 -0
- package/dist/src/components/namespace.js +46 -0
- package/dist/src/components/namespace.ref.test.d.ts +2 -0
- package/dist/src/components/namespace.ref.test.d.ts.map +1 -0
- package/dist/src/components/namespace.ref.test.js +181 -0
- package/dist/src/components/namespace.test.d.ts.map +1 -0
- package/dist/src/components/namespace.test.js +78 -0
- package/dist/src/components/parameters/parameters.d.ts +2 -2
- package/dist/src/components/parameters/parameters.d.ts.map +1 -1
- package/dist/src/components/parameters/parameters.js +12 -14
- package/dist/src/components/parameters/parameters.test.d.ts +2 -0
- package/dist/src/components/parameters/parameters.test.d.ts.map +1 -0
- package/dist/src/components/parameters/parameters.test.js +87 -0
- package/dist/src/components/property/property.d.ts.map +1 -1
- package/dist/src/components/property/property.js +21 -39
- package/dist/src/components/property/property.test.js +14 -14
- package/dist/src/components/record/declaration.d.ts +18 -0
- package/dist/src/components/record/declaration.d.ts.map +1 -1
- package/dist/src/components/record/declaration.js +19 -13
- package/dist/src/components/record/declaration.test.js +50 -3
- package/dist/src/components/struct/declaration.d.ts.map +1 -1
- package/dist/src/components/struct/declaration.js +4 -6
- package/dist/src/components/struct/declaration.test.js +30 -39
- package/dist/src/components/type-parameters/type-parameter.d.ts.map +1 -1
- package/dist/src/components/type-parameters/type-parameter.js +7 -10
- package/dist/src/components/type-parameters/type-parameters.test.js +3 -3
- package/dist/src/components/var/declaration.d.ts.map +1 -1
- package/dist/src/components/var/declaration.js +6 -8
- package/dist/src/components/var/declaration.test.js +11 -20
- package/dist/src/contexts/global-namespace.d.ts +5 -0
- package/dist/src/contexts/global-namespace.d.ts.map +1 -0
- package/dist/src/contexts/global-namespace.js +24 -0
- package/dist/src/contexts/namespace.d.ts +8 -0
- package/dist/src/contexts/namespace.d.ts.map +1 -0
- package/dist/src/contexts/namespace.js +5 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/modifiers.d.ts +11 -0
- package/dist/src/modifiers.d.ts.map +1 -1
- package/dist/src/scopes/class.d.ts +10 -0
- package/dist/src/scopes/class.d.ts.map +1 -0
- package/dist/src/scopes/class.js +10 -0
- package/dist/src/scopes/contexts.d.ts +9 -0
- package/dist/src/scopes/contexts.d.ts.map +1 -0
- package/dist/src/scopes/contexts.js +33 -0
- package/dist/src/scopes/csharp.d.ts +8 -0
- package/dist/src/scopes/csharp.d.ts.map +1 -0
- package/dist/src/scopes/csharp.js +11 -0
- package/dist/src/scopes/factories.d.ts +9 -0
- package/dist/src/scopes/factories.d.ts.map +1 -0
- package/dist/src/scopes/factories.js +23 -0
- package/dist/src/scopes/index.d.ts +10 -0
- package/dist/src/scopes/index.d.ts.map +1 -0
- package/dist/src/scopes/index.js +9 -0
- package/dist/src/scopes/lexical.d.ts +7 -0
- package/dist/src/scopes/lexical.d.ts.map +1 -0
- package/dist/src/scopes/lexical.js +7 -0
- package/dist/src/scopes/method.d.ts +9 -0
- package/dist/src/scopes/method.d.ts.map +1 -0
- package/dist/src/scopes/method.js +13 -0
- package/dist/src/scopes/named-type.d.ts +22 -0
- package/dist/src/scopes/named-type.d.ts.map +1 -0
- package/dist/src/scopes/named-type.js +32 -0
- package/dist/src/scopes/namespace.d.ts +11 -0
- package/dist/src/scopes/namespace.d.ts.map +1 -0
- package/dist/src/scopes/namespace.js +38 -0
- package/dist/src/scopes/source-file.d.ts +16 -0
- package/dist/src/scopes/source-file.d.ts.map +1 -0
- package/dist/src/scopes/source-file.js +43 -0
- package/dist/src/symbols/csharp.d.ts +76 -0
- package/dist/src/symbols/csharp.d.ts.map +1 -0
- package/dist/src/symbols/csharp.js +222 -0
- package/dist/src/symbols/factories.d.ts +25 -0
- package/dist/src/symbols/factories.d.ts.map +1 -0
- package/dist/src/symbols/factories.js +86 -0
- package/dist/src/symbols/index.d.ts +5 -2
- package/dist/src/symbols/index.d.ts.map +1 -1
- package/dist/src/symbols/index.js +6 -3
- package/dist/src/symbols/method.d.ts +13 -0
- package/dist/src/symbols/method.d.ts.map +1 -0
- package/dist/src/symbols/method.js +15 -0
- package/dist/src/symbols/named-type.d.ts +19 -0
- package/dist/src/symbols/named-type.d.ts.map +1 -0
- package/dist/src/symbols/named-type.js +30 -0
- package/dist/src/symbols/namespace.d.ts +22 -0
- package/dist/src/symbols/namespace.d.ts.map +1 -0
- package/dist/src/symbols/namespace.js +44 -0
- package/dist/src/symbols/reference.d.ts +2 -2
- package/dist/src/symbols/reference.d.ts.map +1 -1
- package/dist/src/symbols/reference.js +36 -43
- package/dist/test/project-directory.test.js +12 -16
- package/dist/test/sourcefile.test.js +7 -19
- package/dist/test/using.test.js +18 -16
- package/dist/test/utils.js +2 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -4
- package/src/components/Declaration.tsx +3 -6
- package/src/components/Reference.tsx +3 -1
- package/src/components/SourceFile.tsx +68 -55
- package/src/components/UsingDirective.tsx +12 -2
- package/src/components/class/declaration.test.tsx +138 -143
- package/src/components/class/declaration.tsx +20 -33
- package/src/components/constructor/constructor.test.tsx +10 -16
- package/src/components/constructor/constructor.tsx +13 -32
- package/src/components/enum/declaration.ref.test.tsx +93 -0
- package/src/components/enum/declaration.test.tsx +34 -0
- package/src/components/enum/declaration.tsx +65 -0
- package/src/components/enum/member.test.tsx +24 -0
- package/src/components/enum/member.tsx +36 -0
- package/src/components/field/field.test.tsx +7 -7
- package/src/components/field/field.tsx +12 -22
- package/src/components/index.ts +5 -2
- package/src/components/interface/declaration.test.tsx +26 -32
- package/src/components/interface/declaration.tsx +16 -18
- package/src/components/interface/method.test.tsx +38 -44
- package/src/components/interface/method.tsx +7 -20
- package/src/components/interface/property.test.tsx +11 -11
- package/src/components/interface/property.tsx +15 -34
- package/src/components/lexical-scope.tsx +29 -0
- package/src/components/method/method.test.tsx +11 -11
- package/src/components/method/method.tsx +12 -23
- package/src/components/method-scope.tsx +27 -0
- package/src/components/namespace-scopes.tsx +44 -0
- package/src/components/namespace.ref.test.tsx +139 -0
- package/src/components/namespace.test.tsx +52 -0
- package/src/components/namespace.tsx +45 -0
- package/src/components/parameters/parameters.test.tsx +71 -0
- package/src/components/parameters/parameters.tsx +9 -21
- package/src/components/property/property.test.tsx +14 -14
- package/src/components/property/property.tsx +17 -41
- package/src/components/record/declaration.test.tsx +47 -3
- package/src/components/record/declaration.tsx +34 -11
- package/src/components/struct/declaration.test.tsx +16 -22
- package/src/components/struct/declaration.tsx +4 -6
- package/src/components/type-parameters/type-parameter.tsx +14 -11
- package/src/components/type-parameters/type-parameters.test.tsx +4 -4
- package/src/components/var/declaration.test.tsx +8 -14
- package/src/components/var/declaration.tsx +12 -6
- package/src/contexts/global-namespace.ts +29 -0
- package/src/contexts/namespace.ts +13 -0
- package/src/index.ts +1 -0
- package/src/modifiers.ts +14 -0
- package/src/scopes/class.ts +12 -0
- package/src/scopes/contexts.ts +45 -0
- package/src/scopes/csharp.ts +18 -0
- package/src/scopes/factories.ts +45 -0
- package/src/scopes/index.ts +9 -0
- package/src/scopes/lexical.ts +10 -0
- package/src/scopes/method.ts +22 -0
- package/src/scopes/named-type.ts +44 -0
- package/src/scopes/namespace.ts +59 -0
- package/src/scopes/source-file.ts +67 -0
- package/src/symbols/csharp.ts +307 -0
- package/src/symbols/factories.ts +199 -0
- package/src/symbols/index.ts +5 -2
- package/src/symbols/method.ts +26 -0
- package/src/symbols/named-type.ts +54 -0
- package/src/symbols/namespace.ts +62 -0
- package/src/symbols/reference.ts +47 -50
- package/temp/api.json +6152 -2151
- package/test/project-directory.test.tsx +12 -16
- package/test/sourcefile.test.tsx +7 -21
- package/test/using.test.tsx +18 -16
- package/test/utils.tsx +1 -1
- package/tsdoc-metadata.json +1 -1
- package/dist/src/components/EnumDeclaration.d.ts.map +0 -1
- package/dist/src/components/EnumDeclaration.js +0 -85
- package/dist/src/components/Namespace.d.ts +0 -11
- package/dist/src/components/Namespace.d.ts.map +0 -1
- package/dist/src/components/Namespace.js +0 -33
- package/dist/src/symbols/csharp-output-symbol.d.ts +0 -8
- package/dist/src/symbols/csharp-output-symbol.d.ts.map +0 -1
- package/dist/src/symbols/csharp-output-symbol.js +0 -19
- package/dist/src/symbols/scopes.d.ts +0 -14
- package/dist/src/symbols/scopes.d.ts.map +0 -1
- package/dist/src/symbols/scopes.js +0 -31
- package/dist/test/enum.test.d.ts +0 -2
- package/dist/test/enum.test.d.ts.map +0 -1
- package/dist/test/enum.test.js +0 -178
- package/dist/test/namespace.test.d.ts.map +0 -1
- package/dist/test/namespace.test.js +0 -81
- package/src/components/EnumDeclaration.tsx +0 -99
- package/src/components/Namespace.tsx +0 -35
- package/src/symbols/csharp-output-symbol.ts +0 -22
- package/src/symbols/scopes.ts +0 -41
- package/test/enum.test.tsx +0 -149
- package/test/namespace.test.tsx +0 -55
- /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
|
-
|
|
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", () => {
|
|
@@ -76,6 +72,27 @@ describe("modifiers", () => {
|
|
|
76
72
|
public abstract partial class TestClass;
|
|
77
73
|
`);
|
|
78
74
|
});
|
|
75
|
+
it("places visibility, attributes, and modifiers in the correct order", () => {
|
|
76
|
+
expect(_$createComponent(TestNamespace, {
|
|
77
|
+
get children() {
|
|
78
|
+
return _$createComponent(ClassDeclaration, {
|
|
79
|
+
partial: true,
|
|
80
|
+
"public": true,
|
|
81
|
+
abstract: true,
|
|
82
|
+
sealed: true,
|
|
83
|
+
name: "TestClass",
|
|
84
|
+
get attributes() {
|
|
85
|
+
return [_$createComponent(Attribute, {
|
|
86
|
+
name: "Test"
|
|
87
|
+
})];
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
})).toRenderTo(`
|
|
92
|
+
[Test]
|
|
93
|
+
public abstract sealed partial class TestClass;
|
|
94
|
+
`);
|
|
95
|
+
});
|
|
79
96
|
});
|
|
80
97
|
describe("base", () => {
|
|
81
98
|
it("define base class", () => {
|
|
@@ -117,63 +134,65 @@ describe("base", () => {
|
|
|
117
134
|
});
|
|
118
135
|
});
|
|
119
136
|
it("declares class with some members", () => {
|
|
120
|
-
const
|
|
121
|
-
"public": true,
|
|
122
|
-
name: "TestClass",
|
|
137
|
+
const tree = _$createComponent(TestNamespace, {
|
|
123
138
|
get children() {
|
|
124
|
-
return _$createComponent(
|
|
139
|
+
return _$createComponent(ClassDeclaration, {
|
|
140
|
+
"public": true,
|
|
141
|
+
name: "TestClass",
|
|
125
142
|
get children() {
|
|
126
|
-
return
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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
|
+
});
|
|
135
156
|
}
|
|
136
157
|
});
|
|
137
158
|
}
|
|
138
|
-
})
|
|
139
|
-
expect(
|
|
140
|
-
|
|
159
|
+
});
|
|
160
|
+
expect(tree).toRenderTo(coretest.d`
|
|
161
|
+
public class TestClass
|
|
141
162
|
{
|
|
142
|
-
public
|
|
143
|
-
|
|
144
|
-
public string MemberOne;
|
|
145
|
-
public int MemberTwo;
|
|
146
|
-
}
|
|
163
|
+
public string MemberOne;
|
|
164
|
+
public int MemberTwo;
|
|
147
165
|
}
|
|
148
166
|
`);
|
|
149
167
|
});
|
|
150
168
|
it("declares class with some methods", () => {
|
|
151
|
-
const
|
|
152
|
-
"public": true,
|
|
153
|
-
name: "TestClass",
|
|
169
|
+
const tree = _$createComponent(TestNamespace, {
|
|
154
170
|
get children() {
|
|
155
|
-
return _$createComponent(
|
|
171
|
+
return _$createComponent(ClassDeclaration, {
|
|
172
|
+
"public": true,
|
|
173
|
+
name: "TestClass",
|
|
156
174
|
get children() {
|
|
157
|
-
return
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
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
|
+
});
|
|
165
187
|
}
|
|
166
188
|
});
|
|
167
189
|
}
|
|
168
|
-
})
|
|
169
|
-
expect(
|
|
170
|
-
|
|
190
|
+
});
|
|
191
|
+
expect(tree).toRenderTo(coretest.d`
|
|
192
|
+
public class TestClass
|
|
171
193
|
{
|
|
172
|
-
public
|
|
173
|
-
{
|
|
174
|
-
public void MethodOne() {}
|
|
175
|
-
private virtual void MethodTwo() {}
|
|
176
|
-
}
|
|
194
|
+
public void MethodOne() {}
|
|
195
|
+
private virtual void MethodTwo() {}
|
|
177
196
|
}
|
|
178
197
|
`);
|
|
179
198
|
});
|
|
@@ -193,79 +212,71 @@ it("uses refkeys for members, params, and return type", () => {
|
|
|
193
212
|
return createCSharpNamePolicy();
|
|
194
213
|
},
|
|
195
214
|
get children() {
|
|
196
|
-
return _$createComponent(
|
|
197
|
-
|
|
215
|
+
return _$createComponent(SourceFile, {
|
|
216
|
+
path: "Test.cs",
|
|
198
217
|
get children() {
|
|
199
|
-
return _$createComponent(
|
|
200
|
-
|
|
218
|
+
return [_$createComponent(EnumDeclaration, {
|
|
219
|
+
"public": true,
|
|
220
|
+
name: "TestEnum",
|
|
221
|
+
refkey: enumTypeRefkey,
|
|
201
222
|
get children() {
|
|
202
|
-
return
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
refkey: enumTypeRefkey,
|
|
223
|
+
return _$createComponent(List, {
|
|
224
|
+
comma: true,
|
|
225
|
+
hardline: true,
|
|
206
226
|
get children() {
|
|
207
|
-
return _$createComponent(
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
name: "One"
|
|
213
|
-
}), _$createComponent(EnumMember, {
|
|
214
|
-
name: "Two"
|
|
215
|
-
})];
|
|
216
|
-
}
|
|
217
|
-
});
|
|
227
|
+
return [_$createComponent(EnumMember, {
|
|
228
|
+
name: "One"
|
|
229
|
+
}), _$createComponent(EnumMember, {
|
|
230
|
+
name: "Two"
|
|
231
|
+
})];
|
|
218
232
|
}
|
|
219
|
-
})
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
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, {
|
|
228
252
|
"public": true,
|
|
229
|
-
name: "
|
|
253
|
+
name: "MethodOne",
|
|
254
|
+
parameters: params,
|
|
255
|
+
returns: testResultTypeRefkey,
|
|
230
256
|
get children() {
|
|
231
|
-
return [
|
|
232
|
-
"private": true,
|
|
233
|
-
name: "MemberOne",
|
|
234
|
-
type: enumTypeRefkey
|
|
235
|
-
}), _$createIntrinsic("hbr", {}), _$createComponent(Method, {
|
|
236
|
-
"public": true,
|
|
237
|
-
name: "MethodOne",
|
|
238
|
-
parameters: params,
|
|
239
|
-
returns: testResultTypeRefkey,
|
|
240
|
-
get children() {
|
|
241
|
-
return ["return new ", testResultTypeRefkey, "();"];
|
|
242
|
-
}
|
|
243
|
-
})];
|
|
257
|
+
return ["return new ", testResultTypeRefkey, "();"];
|
|
244
258
|
}
|
|
245
259
|
})];
|
|
246
260
|
}
|
|
247
|
-
});
|
|
261
|
+
})];
|
|
248
262
|
}
|
|
249
263
|
});
|
|
250
264
|
}
|
|
251
265
|
}));
|
|
252
266
|
expect(findFile(res, "Test.cs").contents).toBe(coretest.d`
|
|
253
|
-
|
|
267
|
+
public enum TestEnum
|
|
254
268
|
{
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
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)
|
|
263
278
|
{
|
|
264
|
-
|
|
265
|
-
public TestResult MethodOne(int intParam, TestInput bodyParam)
|
|
266
|
-
{
|
|
267
|
-
return new TestResult();
|
|
268
|
-
}
|
|
279
|
+
return new TestResult();
|
|
269
280
|
}
|
|
270
281
|
}
|
|
271
282
|
`);
|
|
@@ -281,46 +292,38 @@ describe("with type parameters", () => {
|
|
|
281
292
|
}];
|
|
282
293
|
expect(_$createComponent(TestNamespace, {
|
|
283
294
|
get children() {
|
|
284
|
-
return _$createComponent(
|
|
285
|
-
|
|
295
|
+
return _$createComponent(ClassDeclaration, {
|
|
296
|
+
"public": true,
|
|
297
|
+
name: "TestClass",
|
|
298
|
+
typeParameters: typeParameters,
|
|
286
299
|
get children() {
|
|
287
|
-
return _$createComponent(
|
|
288
|
-
"public": true,
|
|
289
|
-
name: "TestClass",
|
|
290
|
-
typeParameters: typeParameters,
|
|
300
|
+
return _$createComponent(List, {
|
|
291
301
|
get children() {
|
|
292
|
-
return _$createComponent(
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
set: true
|
|
308
|
-
})];
|
|
309
|
-
}
|
|
310
|
-
});
|
|
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
|
+
})];
|
|
311
317
|
}
|
|
312
318
|
});
|
|
313
319
|
}
|
|
314
320
|
});
|
|
315
321
|
}
|
|
316
322
|
})).toRenderTo(`
|
|
317
|
-
|
|
323
|
+
public class TestClass<T, U>
|
|
318
324
|
{
|
|
319
|
-
|
|
320
|
-
{
|
|
321
|
-
T PropA { get; set; }
|
|
322
|
-
U PropB { get; set; }
|
|
323
|
-
}
|
|
325
|
+
T PropA { get; set; }
|
|
326
|
+
U PropB { get; set; }
|
|
324
327
|
}
|
|
325
328
|
`);
|
|
326
329
|
});
|
|
@@ -343,10 +346,10 @@ describe("with type parameters", () => {
|
|
|
343
346
|
}
|
|
344
347
|
})).toRenderTo(`
|
|
345
348
|
public class TestClass<T, U>
|
|
346
|
-
|
|
347
|
-
|
|
349
|
+
where T : IFoo
|
|
350
|
+
where U : IBar
|
|
348
351
|
{
|
|
349
|
-
|
|
352
|
+
// Body
|
|
350
353
|
}
|
|
351
354
|
`);
|
|
352
355
|
});
|
|
@@ -363,26 +366,27 @@ it("declares class with invalid members", () => {
|
|
|
363
366
|
})];
|
|
364
367
|
}
|
|
365
368
|
});
|
|
366
|
-
expect(() => toSourceText(decl)).toThrow("
|
|
369
|
+
expect(() => toSourceText(decl)).toThrow("EnumMember must be used within an EnumDeclaration.");
|
|
367
370
|
});
|
|
368
371
|
describe("constructor", () => {
|
|
369
372
|
it("declares with constructor", () => {
|
|
370
|
-
const
|
|
371
|
-
"public": true,
|
|
372
|
-
name: "TestClass",
|
|
373
|
+
const tree = _$createComponent(TestNamespace, {
|
|
373
374
|
get children() {
|
|
374
|
-
return _$createComponent(
|
|
375
|
-
"public": true
|
|
375
|
+
return _$createComponent(ClassDeclaration, {
|
|
376
|
+
"public": true,
|
|
377
|
+
name: "TestClass",
|
|
378
|
+
get children() {
|
|
379
|
+
return _$createComponent(Constructor, {
|
|
380
|
+
"public": true
|
|
381
|
+
});
|
|
382
|
+
}
|
|
376
383
|
});
|
|
377
384
|
}
|
|
378
|
-
})
|
|
379
|
-
expect(
|
|
380
|
-
|
|
385
|
+
});
|
|
386
|
+
expect(tree).toRenderTo(coretest.d`
|
|
387
|
+
public class TestClass
|
|
381
388
|
{
|
|
382
|
-
public
|
|
383
|
-
{
|
|
384
|
-
public TestClass() {}
|
|
385
|
-
}
|
|
389
|
+
public TestClass() {}
|
|
386
390
|
}
|
|
387
391
|
`);
|
|
388
392
|
});
|
|
@@ -400,44 +404,45 @@ describe("constructor", () => {
|
|
|
400
404
|
type: "int",
|
|
401
405
|
refkey: paramSizeRefkey
|
|
402
406
|
}];
|
|
403
|
-
const
|
|
404
|
-
"public": true,
|
|
405
|
-
name: "TestClass",
|
|
407
|
+
const tree = _$createComponent(TestNamespace, {
|
|
406
408
|
get children() {
|
|
407
|
-
return
|
|
408
|
-
"private": true,
|
|
409
|
-
name: "name",
|
|
410
|
-
type: "string",
|
|
411
|
-
refkey: thisNameRefkey
|
|
412
|
-
}), _$createIntrinsic("hbr", {}), _$createComponent(Field, {
|
|
413
|
-
"private": true,
|
|
414
|
-
name: "size",
|
|
415
|
-
type: "int",
|
|
416
|
-
refkey: thisSizeRefkey
|
|
417
|
-
}), _$createIntrinsic("hbr", {}), _$createComponent(Constructor, {
|
|
409
|
+
return _$createComponent(ClassDeclaration, {
|
|
418
410
|
"public": true,
|
|
419
|
-
|
|
411
|
+
name: "TestClass",
|
|
420
412
|
get children() {
|
|
421
|
-
return [
|
|
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
|
+
})];
|
|
422
430
|
}
|
|
423
|
-
})
|
|
431
|
+
});
|
|
424
432
|
}
|
|
425
|
-
})
|
|
433
|
+
});
|
|
426
434
|
|
|
427
435
|
// TODO: assignments to members should have this. prefix
|
|
428
436
|
// e.g. this.name = name;
|
|
429
|
-
expect(
|
|
430
|
-
|
|
437
|
+
expect(tree).toRenderTo(coretest.d`
|
|
438
|
+
public class TestClass
|
|
431
439
|
{
|
|
432
|
-
|
|
440
|
+
private string _name;
|
|
441
|
+
private int _size;
|
|
442
|
+
public TestClass(string name, int size)
|
|
433
443
|
{
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
public TestClass(string name, int size)
|
|
437
|
-
{
|
|
438
|
-
_name = name;
|
|
439
|
-
_size = size;
|
|
440
|
-
}
|
|
444
|
+
_name = name;
|
|
445
|
+
_size = size;
|
|
441
446
|
}
|
|
442
447
|
}
|
|
443
448
|
`);
|
|
@@ -471,12 +476,9 @@ describe("constructor", () => {
|
|
|
471
476
|
});
|
|
472
477
|
}
|
|
473
478
|
})).toRenderTo(`
|
|
474
|
-
|
|
479
|
+
public class TestClass(string name, int size)
|
|
475
480
|
{
|
|
476
|
-
|
|
477
|
-
{
|
|
478
|
-
string PrettyName { get; } = $"{name} {size}";
|
|
479
|
-
}
|
|
481
|
+
string PrettyName { get; } = $"{name} {size}";
|
|
480
482
|
}
|
|
481
483
|
`);
|
|
482
484
|
});
|
|
@@ -507,12 +509,9 @@ describe("constructor", () => {
|
|
|
507
509
|
});
|
|
508
510
|
}
|
|
509
511
|
})).toRenderTo(`
|
|
510
|
-
|
|
512
|
+
public class TestClass(string name)
|
|
511
513
|
{
|
|
512
|
-
|
|
513
|
-
{
|
|
514
|
-
string name_2;
|
|
515
|
-
}
|
|
514
|
+
string name_2;
|
|
516
515
|
}
|
|
517
516
|
`);
|
|
518
517
|
});
|
|
@@ -550,8 +549,8 @@ it("supports class member doc comments", () => {
|
|
|
550
549
|
/// This is a test
|
|
551
550
|
class Test
|
|
552
551
|
{
|
|
553
|
-
|
|
554
|
-
|
|
552
|
+
/// This is a member
|
|
553
|
+
public int Member;
|
|
555
554
|
}
|
|
556
555
|
`);
|
|
557
556
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constructor.d.ts","sourceRoot":"","sources":["../../../../src/components/constructor/constructor.tsx"],"names":[],"mappings":"
|
|
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 {
|
|
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 {
|
|
5
|
-
import {
|
|
6
|
-
import { CSharpMemberScope, useCSharpScope } 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,26 +11,18 @@ import { Parameters } from "../parameters/parameters.js";
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
export function Constructor(props) {
|
|
14
|
-
const scope =
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const name = useCSharpNamePolicy().getName(scope.owner.name, "class-method");
|
|
19
|
-
const ctorSymbol = new CSharpOutputSymbol(name, {
|
|
20
|
-
scope,
|
|
21
|
-
refkeys: props.refkey ?? refkey(name)
|
|
22
|
-
});
|
|
23
|
-
const ctorDeclScope = new CSharpMemberScope("constructor-decl", {
|
|
24
|
-
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
|
|
25
18
|
});
|
|
26
19
|
const modifiers = computeModifiersPrefix([getAccessModifier(props)]);
|
|
27
|
-
return _$createComponent(
|
|
20
|
+
return _$createComponent(MemberDeclaration, {
|
|
28
21
|
symbol: ctorSymbol,
|
|
29
22
|
get children() {
|
|
30
|
-
return _$createComponent(
|
|
31
|
-
value: ctorDeclScope,
|
|
23
|
+
return _$createComponent(MethodScope, {
|
|
32
24
|
get children() {
|
|
33
|
-
return [modifiers, _$createComponent(
|
|
25
|
+
return [modifiers, _$createComponent(MemberName, {}), _$createComponent(Parameters, {
|
|
34
26
|
get parameters() {
|
|
35
27
|
return props.parameters;
|
|
36
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(
|
|
23
|
-
|
|
21
|
+
return _$createComponent(ClassDeclaration, {
|
|
22
|
+
"public": true,
|
|
23
|
+
name: "TestClass",
|
|
24
24
|
get children() {
|
|
25
|
-
return _$createComponent(
|
|
25
|
+
return _$createComponent(Constructor, {
|
|
26
26
|
"public": true,
|
|
27
|
-
|
|
27
|
+
parameters: ctorParams,
|
|
28
28
|
get children() {
|
|
29
|
-
return _$
|
|
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
|
-
|
|
36
|
+
public class TestClass
|
|
43
37
|
{
|
|
44
|
-
public
|
|
38
|
+
public TestClass(string name, int size)
|
|
45
39
|
{
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
name;
|
|
49
|
-
size;
|
|
50
|
-
}
|
|
40
|
+
name;
|
|
41
|
+
size;
|
|
51
42
|
}
|
|
52
43
|
}
|
|
53
44
|
`);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { AccessModifiers } from "
|
|
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?:
|
|
6
|
-
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):
|
|
29
|
-
|
|
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"}
|