@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
|
@@ -31,7 +31,7 @@ describe("modifiers", () => {
|
|
|
31
31
|
})).toRenderTo(`
|
|
32
32
|
public class TestClass
|
|
33
33
|
{
|
|
34
|
-
|
|
34
|
+
${accessModifier} string TestProp { get; }
|
|
35
35
|
}
|
|
36
36
|
`);
|
|
37
37
|
});
|
|
@@ -51,7 +51,7 @@ describe("modifiers", () => {
|
|
|
51
51
|
})).toRenderTo(`
|
|
52
52
|
public class TestClass
|
|
53
53
|
{
|
|
54
|
-
|
|
54
|
+
${methodModifier} string TestProp { get; }
|
|
55
55
|
}
|
|
56
56
|
`);
|
|
57
57
|
});
|
|
@@ -70,7 +70,7 @@ describe("modifiers", () => {
|
|
|
70
70
|
})).toRenderTo(`
|
|
71
71
|
public class TestClass
|
|
72
72
|
{
|
|
73
|
-
|
|
73
|
+
public new string TestProp { get; }
|
|
74
74
|
}
|
|
75
75
|
`);
|
|
76
76
|
});
|
|
@@ -87,7 +87,7 @@ it("applies PascalCase naming policy", () => {
|
|
|
87
87
|
})).toRenderTo(`
|
|
88
88
|
public class TestClass
|
|
89
89
|
{
|
|
90
|
-
|
|
90
|
+
string TestProp { get; }
|
|
91
91
|
}
|
|
92
92
|
`);
|
|
93
93
|
});
|
|
@@ -103,7 +103,7 @@ it("has getter only", () => {
|
|
|
103
103
|
})).toRenderTo(`
|
|
104
104
|
public class TestClass
|
|
105
105
|
{
|
|
106
|
-
|
|
106
|
+
string TestProp { get; }
|
|
107
107
|
}
|
|
108
108
|
`);
|
|
109
109
|
});
|
|
@@ -119,7 +119,7 @@ it("has setter only", () => {
|
|
|
119
119
|
})).toRenderTo(`
|
|
120
120
|
public class TestClass
|
|
121
121
|
{
|
|
122
|
-
|
|
122
|
+
string TestProp { set; }
|
|
123
123
|
}
|
|
124
124
|
`);
|
|
125
125
|
});
|
|
@@ -136,7 +136,7 @@ it("has getter and setter", () => {
|
|
|
136
136
|
})).toRenderTo(`
|
|
137
137
|
public class TestClass
|
|
138
138
|
{
|
|
139
|
-
|
|
139
|
+
string TestProp { get; set; }
|
|
140
140
|
}
|
|
141
141
|
`);
|
|
142
142
|
});
|
|
@@ -153,7 +153,7 @@ it("has getter and init", () => {
|
|
|
153
153
|
})).toRenderTo(`
|
|
154
154
|
public class TestClass
|
|
155
155
|
{
|
|
156
|
-
|
|
156
|
+
string TestProp { get; init; }
|
|
157
157
|
}
|
|
158
158
|
`);
|
|
159
159
|
});
|
|
@@ -176,8 +176,8 @@ it("specify doc comment", () => {
|
|
|
176
176
|
})).toRenderTo(`
|
|
177
177
|
class Test
|
|
178
178
|
{
|
|
179
|
-
|
|
180
|
-
|
|
179
|
+
/// This is a test
|
|
180
|
+
string Method { get; set; }
|
|
181
181
|
}
|
|
182
182
|
`);
|
|
183
183
|
});
|
|
@@ -195,7 +195,7 @@ it("specify nullable property", () => {
|
|
|
195
195
|
})).toRenderTo(`
|
|
196
196
|
public class TestClass
|
|
197
197
|
{
|
|
198
|
-
|
|
198
|
+
string? TestProp { get; set; }
|
|
199
199
|
}
|
|
200
200
|
`);
|
|
201
201
|
});
|
|
@@ -213,7 +213,7 @@ it("specify initializer", () => {
|
|
|
213
213
|
})).toRenderTo(`
|
|
214
214
|
public class TestClass
|
|
215
215
|
{
|
|
216
|
-
|
|
216
|
+
string TestProp { get; set; } = "abc";
|
|
217
217
|
}
|
|
218
218
|
`);
|
|
219
219
|
});
|
|
@@ -235,8 +235,8 @@ it("specify attributes", () => {
|
|
|
235
235
|
})).toRenderTo(`
|
|
236
236
|
public class TestClass
|
|
237
237
|
{
|
|
238
|
-
|
|
239
|
-
|
|
238
|
+
[Test]
|
|
239
|
+
int Test { get; set; }
|
|
240
240
|
}
|
|
241
241
|
`);
|
|
242
242
|
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as core from "@alloy-js/core";
|
|
2
2
|
import { AccessModifiers } from "../../modifiers.js";
|
|
3
|
+
import { ParameterProps } from "../parameters/parameters.jsx";
|
|
3
4
|
export interface RecordModifiers {
|
|
4
5
|
readonly partial?: boolean;
|
|
5
6
|
}
|
|
@@ -10,6 +11,23 @@ export interface RecordDeclarationProps extends Omit<core.DeclarationProps, "nam
|
|
|
10
11
|
doc?: core.Children;
|
|
11
12
|
refkey?: core.Refkey;
|
|
12
13
|
typeParameters?: Record<string, core.Refkey>;
|
|
14
|
+
/**
|
|
15
|
+
* Set the primary constructor parameters
|
|
16
|
+
* @example
|
|
17
|
+
* ```tsx
|
|
18
|
+
* <ClassDeclaration name="MyClass" primaryConstructor={[
|
|
19
|
+
* {name: "value", type: "int"}
|
|
20
|
+
* ]}>
|
|
21
|
+
* ```
|
|
22
|
+
* This will produce:
|
|
23
|
+
* ```csharp
|
|
24
|
+
* public class MyClass(int value)
|
|
25
|
+
* {
|
|
26
|
+
*
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
primaryConstructor?: ParameterProps[];
|
|
13
31
|
}
|
|
14
32
|
/**
|
|
15
33
|
* CSharp record declaration.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"declaration.d.ts","sourceRoot":"","sources":["../../../../src/components/record/declaration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,EACL,eAAe,EAIhB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"declaration.d.ts","sourceRoot":"","sources":["../../../../src/components/record/declaration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,EACL,eAAe,EAIhB,MAAM,oBAAoB,CAAC;AAS5B,OAAO,EAAE,cAAc,EAAc,MAAM,8BAA8B,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAID,2DAA2D;AAC3D,MAAM,WAAW,sBACf,SAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAC7C,eAAe,EACf,eAAe;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,kBAAkB;IAClB,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAE7C;;;;;;;;;;;;;;;OAeG;IACH,kBAAkB,CAAC,EAAE,cAAc,EAAE,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,iBAyD9D"}
|
|
@@ -2,10 +2,11 @@ import { createComponent as _$createComponent, createIntrinsic as _$createIntrin
|
|
|
2
2
|
import * as core from "@alloy-js/core";
|
|
3
3
|
import { computeModifiersPrefix, getAccessModifier, makeModifiers } from "../../modifiers.js";
|
|
4
4
|
import { useCSharpNamePolicy } from "../../name-policy.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { createClassScope } from "../../scopes/factories.js";
|
|
6
|
+
import { createNamedTypeSymbol, createTypeParameterSymbol } from "../../symbols/factories.js";
|
|
7
7
|
import { DocWhen } from "../doc/comment.js";
|
|
8
8
|
import { Name } from "../Name.js";
|
|
9
|
+
import { Parameters } from "../parameters/parameters.js";
|
|
9
10
|
const getRecordModifiers = makeModifiers(["partial"]);
|
|
10
11
|
|
|
11
12
|
/** Props to use the {@link RecordDeclaration} component */
|
|
@@ -32,17 +33,13 @@ const getRecordModifiers = makeModifiers(["partial"]);
|
|
|
32
33
|
*/
|
|
33
34
|
export function RecordDeclaration(props) {
|
|
34
35
|
const name = useCSharpNamePolicy().getName(props.name, "record");
|
|
35
|
-
const thisRecordSymbol = new CSharpOutputSymbol(name, {
|
|
36
|
-
refkeys: props.refkey
|
|
37
|
-
});
|
|
38
36
|
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const thisRecordScope = new CSharpMemberScope("record-decl", {
|
|
44
|
-
owner: thisRecordSymbol
|
|
37
|
+
// records don't have their own type kind but instead use class or struct
|
|
38
|
+
// depending on what kind of record we have.
|
|
39
|
+
const thisRecordSymbol = createNamedTypeSymbol(name, "record", {
|
|
40
|
+
refkeys: props.refkey
|
|
45
41
|
});
|
|
42
|
+
const thisRecordScope = createClassScope(thisRecordSymbol);
|
|
46
43
|
let typeParams;
|
|
47
44
|
if (props.typeParameters) {
|
|
48
45
|
const typeParamNames = new Array();
|
|
@@ -50,7 +47,7 @@ export function RecordDeclaration(props) {
|
|
|
50
47
|
typeParamNames.push(useCSharpNamePolicy().getName(entry[0], "type-parameter"));
|
|
51
48
|
// create a symbol for each type param so its
|
|
52
49
|
// refkey resolves to the type param's name
|
|
53
|
-
|
|
50
|
+
createTypeParameterSymbol(entry[0], {
|
|
54
51
|
scope: thisRecordScope,
|
|
55
52
|
refkeys: entry[1]
|
|
56
53
|
});
|
|
@@ -74,7 +71,16 @@ export function RecordDeclaration(props) {
|
|
|
74
71
|
get doc() {
|
|
75
72
|
return props.doc;
|
|
76
73
|
}
|
|
77
|
-
}), modifiers, "record ", _$createComponent(Name, {}), typeParams, _$memo(() => _$memo(() => !!props.
|
|
74
|
+
}), modifiers, "record ", _$createComponent(Name, {}), typeParams, _$memo(() => _$memo(() => !!props.primaryConstructor)() && _$createComponent(core.Scope, {
|
|
75
|
+
value: thisRecordScope,
|
|
76
|
+
get children() {
|
|
77
|
+
return _$createComponent(Parameters, {
|
|
78
|
+
get parameters() {
|
|
79
|
+
return props.primaryConstructor;
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
})), _$memo(() => _$memo(() => !!props.children)() ? _$createComponent(core.Block, {
|
|
78
84
|
newline: true,
|
|
79
85
|
get children() {
|
|
80
86
|
return _$createComponent(core.Scope, {
|
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
import { createComponent as _$createComponent, mergeProps as _$mergeProps } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { code, refkey } from "@alloy-js/core";
|
|
2
3
|
import { describe, expect, it } from "vitest";
|
|
3
4
|
import { TestNamespace } from "../../../test/utils.js";
|
|
4
5
|
import { Property } from "../property/property.js";
|
|
5
6
|
import { RecordDeclaration } from "./declaration.js";
|
|
6
|
-
|
|
7
|
+
|
|
8
|
+
// Remove Wrapper that added <SourceFile> because TestNamespace already does
|
|
9
|
+
function Wrapper({
|
|
10
|
+
children
|
|
11
|
+
}) {
|
|
12
|
+
return _$createComponent(TestNamespace, {
|
|
13
|
+
children: children
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
it("declares record with no members", () => {
|
|
7
17
|
expect(_$createComponent(TestNamespace, {
|
|
8
18
|
get children() {
|
|
9
19
|
return _$createComponent(RecordDeclaration, {
|
|
@@ -68,7 +78,7 @@ it("specify doc comment", () => {
|
|
|
68
78
|
record TestRecord;
|
|
69
79
|
`);
|
|
70
80
|
});
|
|
71
|
-
it("specify
|
|
81
|
+
it("specify record property inside", () => {
|
|
72
82
|
expect(_$createComponent(TestNamespace, {
|
|
73
83
|
get children() {
|
|
74
84
|
return _$createComponent(RecordDeclaration, {
|
|
@@ -88,7 +98,44 @@ it("specify class property inside", () => {
|
|
|
88
98
|
/// This is a test
|
|
89
99
|
record TestRecord
|
|
90
100
|
{
|
|
91
|
-
|
|
101
|
+
string Prop { get; set; }
|
|
92
102
|
}
|
|
93
103
|
`);
|
|
104
|
+
});
|
|
105
|
+
describe("constructor", () => {
|
|
106
|
+
it("declares primary constructor with args", () => {
|
|
107
|
+
const paramNameRefkey = refkey();
|
|
108
|
+
const paramSizeRefkey = refkey();
|
|
109
|
+
const ctorParams = [{
|
|
110
|
+
name: "name",
|
|
111
|
+
type: "string",
|
|
112
|
+
refkey: paramNameRefkey
|
|
113
|
+
}, {
|
|
114
|
+
name: "size",
|
|
115
|
+
type: "int",
|
|
116
|
+
refkey: paramSizeRefkey
|
|
117
|
+
}];
|
|
118
|
+
expect(_$createComponent(Wrapper, {
|
|
119
|
+
get children() {
|
|
120
|
+
return _$createComponent(RecordDeclaration, {
|
|
121
|
+
"public": true,
|
|
122
|
+
name: "Test",
|
|
123
|
+
primaryConstructor: ctorParams,
|
|
124
|
+
get children() {
|
|
125
|
+
return _$createComponent(Property, {
|
|
126
|
+
name: "PrettyName",
|
|
127
|
+
type: "string",
|
|
128
|
+
get: true,
|
|
129
|
+
initializer: code`$"{${paramNameRefkey}} {${paramSizeRefkey}}"`
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
})).toRenderTo(`
|
|
135
|
+
public record Test(string name, int size)
|
|
136
|
+
{
|
|
137
|
+
string PrettyName { get; } = $"{name} {size}";
|
|
138
|
+
}
|
|
139
|
+
`);
|
|
140
|
+
});
|
|
94
141
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"declaration.d.ts","sourceRoot":"","sources":["../../../../src/components/struct/declaration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EACL,eAAe,EAIhB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAiB,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAI7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAG3E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAUD,MAAM,WAAW,sBACf,SAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAC7C,eAAe,EACf,eAAe;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,kBAAkB;IAClB,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IAErB;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EAAE,CAAC,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC;IAEjD;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAE5B,wCAAwC;IACxC,cAAc,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"declaration.d.ts","sourceRoot":"","sources":["../../../../src/components/struct/declaration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EACL,eAAe,EAIhB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAiB,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAI7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAG3E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAUD,MAAM,WAAW,sBACf,SAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAC7C,eAAe,EACf,eAAe;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,kBAAkB;IAClB,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IAErB;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EAAE,CAAC,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC;IAEjD;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAE5B,wCAAwC;IACxC,cAAc,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,iBAsC9D"}
|
|
@@ -3,8 +3,8 @@ import * as core from "@alloy-js/core";
|
|
|
3
3
|
import { join } from "@alloy-js/core";
|
|
4
4
|
import { computeModifiersPrefix, getAccessModifier, makeModifiers } from "../../modifiers.js";
|
|
5
5
|
import { useCSharpNamePolicy } from "../../name-policy.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { createNamedTypeScope } from "../../scopes/factories.js";
|
|
7
|
+
import { createNamedTypeSymbol } from "../../symbols/factories.js";
|
|
8
8
|
import { AttributeList } from "../attributes/attributes.js";
|
|
9
9
|
import { DocWhen } from "../doc/comment.js";
|
|
10
10
|
import { Name } from "../Name.js";
|
|
@@ -36,12 +36,10 @@ const getStructModifiers = makeModifiers(["new", "readonly", "ref", "partial"]);
|
|
|
36
36
|
*/
|
|
37
37
|
export function StructDeclaration(props) {
|
|
38
38
|
const name = useCSharpNamePolicy().getName(props.name, "struct");
|
|
39
|
-
const thisStructSymbol =
|
|
39
|
+
const thisStructSymbol = createNamedTypeSymbol(name, "struct", {
|
|
40
40
|
refkeys: props.refkey
|
|
41
41
|
});
|
|
42
|
-
const thisStructScope =
|
|
43
|
-
owner: thisStructSymbol
|
|
44
|
-
});
|
|
42
|
+
const thisStructScope = createNamedTypeScope(thisStructSymbol);
|
|
45
43
|
const modifiers = computeModifiersPrefix([getAccessModifier(props), getStructModifiers(props)]);
|
|
46
44
|
const base = props.interfaceTypes && props.interfaceTypes.length > 0 ? [" : ", _$memo(() => join(props.interfaceTypes, {
|
|
47
45
|
joiner: ", "
|
|
@@ -7,7 +7,6 @@ import { Constructor } from "../constructor/constructor.js";
|
|
|
7
7
|
import { Field } from "../field/field.js";
|
|
8
8
|
import { Method } from "../method/method.js";
|
|
9
9
|
import { Property } from "../property/property.js";
|
|
10
|
-
import { SourceFile } from "../SourceFile.js";
|
|
11
10
|
import { StructDeclaration } from "./declaration.js";
|
|
12
11
|
it("declares struct with no members", () => {
|
|
13
12
|
expect(_$createComponent(TestNamespace, {
|
|
@@ -85,46 +84,38 @@ describe("with type parameters", () => {
|
|
|
85
84
|
}];
|
|
86
85
|
expect(_$createComponent(TestNamespace, {
|
|
87
86
|
get children() {
|
|
88
|
-
return _$createComponent(
|
|
89
|
-
|
|
87
|
+
return _$createComponent(StructDeclaration, {
|
|
88
|
+
"public": true,
|
|
89
|
+
name: "Test",
|
|
90
|
+
typeParameters: typeParameters,
|
|
90
91
|
get children() {
|
|
91
|
-
return _$createComponent(
|
|
92
|
-
"public": true,
|
|
93
|
-
name: "Test",
|
|
94
|
-
typeParameters: typeParameters,
|
|
92
|
+
return _$createComponent(List, {
|
|
95
93
|
get children() {
|
|
96
|
-
return _$createComponent(
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
set: true
|
|
112
|
-
})];
|
|
113
|
-
}
|
|
114
|
-
});
|
|
94
|
+
return [_$createComponent(Property, {
|
|
95
|
+
name: "PropA",
|
|
96
|
+
get type() {
|
|
97
|
+
return typeParameters[0].refkey;
|
|
98
|
+
},
|
|
99
|
+
get: true,
|
|
100
|
+
set: true
|
|
101
|
+
}), _$createComponent(Property, {
|
|
102
|
+
name: "PropB",
|
|
103
|
+
get type() {
|
|
104
|
+
return typeParameters[1].refkey;
|
|
105
|
+
},
|
|
106
|
+
get: true,
|
|
107
|
+
set: true
|
|
108
|
+
})];
|
|
115
109
|
}
|
|
116
110
|
});
|
|
117
111
|
}
|
|
118
112
|
});
|
|
119
113
|
}
|
|
120
114
|
})).toRenderTo(`
|
|
121
|
-
|
|
115
|
+
public struct Test<T, U>
|
|
122
116
|
{
|
|
123
|
-
|
|
124
|
-
{
|
|
125
|
-
T PropA { get; set; }
|
|
126
|
-
U PropB { get; set; }
|
|
127
|
-
}
|
|
117
|
+
T PropA { get; set; }
|
|
118
|
+
U PropB { get; set; }
|
|
128
119
|
}
|
|
129
120
|
`);
|
|
130
121
|
});
|
|
@@ -147,10 +138,10 @@ describe("with type parameters", () => {
|
|
|
147
138
|
}
|
|
148
139
|
})).toRenderTo(`
|
|
149
140
|
public struct Test<T, U>
|
|
150
|
-
|
|
151
|
-
|
|
141
|
+
where T : IFoo
|
|
142
|
+
where U : IBar
|
|
152
143
|
{
|
|
153
|
-
|
|
144
|
+
// Body
|
|
154
145
|
}
|
|
155
146
|
`);
|
|
156
147
|
});
|
|
@@ -187,7 +178,7 @@ it("define methods", () => {
|
|
|
187
178
|
})).toRenderTo(`
|
|
188
179
|
struct Test
|
|
189
180
|
{
|
|
190
|
-
|
|
181
|
+
void MethodOne() {}
|
|
191
182
|
}
|
|
192
183
|
`);
|
|
193
184
|
});
|
|
@@ -206,7 +197,7 @@ it("define constructor", () => {
|
|
|
206
197
|
})).toRenderTo(`
|
|
207
198
|
struct Test
|
|
208
199
|
{
|
|
209
|
-
|
|
200
|
+
public Test() {}
|
|
210
201
|
}
|
|
211
202
|
`);
|
|
212
203
|
});
|
|
@@ -236,8 +227,8 @@ it("defines fields", () => {
|
|
|
236
227
|
})).toRenderTo(`
|
|
237
228
|
public struct TestClass
|
|
238
229
|
{
|
|
239
|
-
|
|
240
|
-
|
|
230
|
+
public string MemberOne;
|
|
231
|
+
public int MemberTwo;
|
|
241
232
|
}
|
|
242
233
|
`);
|
|
243
234
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-parameter.d.ts","sourceRoot":"","sources":["../../../../src/components/type-parameters/type-parameter.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"type-parameter.d.ts","sourceRoot":"","sources":["../../../../src/components/type-parameters/type-parameter.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAGR,MAAM,EACP,MAAM,gBAAgB,CAAC;AAGxB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAAC;IAE7C;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACrC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,YAStD"}
|
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
-
import { MemberDeclaration,
|
|
3
|
-
import {
|
|
4
|
-
import { CSharpOutputSymbol } from "../../symbols/csharp-output-symbol.js";
|
|
5
|
-
import { useCSharpScope } from "../../symbols/scopes.js";
|
|
2
|
+
import { MemberDeclaration, MemberName } from "@alloy-js/core";
|
|
3
|
+
import { createTypeParameterSymbol } from "../../symbols/factories.js";
|
|
6
4
|
|
|
7
5
|
/**
|
|
8
6
|
* Information for a TypeScript generic type parameter.
|
|
9
7
|
*/
|
|
10
8
|
|
|
11
9
|
export function TypeParameter(props) {
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
const symbol = new CSharpOutputSymbol(name, {
|
|
15
|
-
scope,
|
|
16
|
-
refkeys: props.refkey ?? refkey(props.name)
|
|
10
|
+
const symbol = createTypeParameterSymbol(props.name, {
|
|
11
|
+
refkeys: props.refkey
|
|
17
12
|
});
|
|
18
13
|
return _$createComponent(MemberDeclaration, {
|
|
19
14
|
symbol: symbol,
|
|
20
|
-
children
|
|
15
|
+
get children() {
|
|
16
|
+
return _$createComponent(MemberName, {});
|
|
17
|
+
}
|
|
21
18
|
});
|
|
22
19
|
}
|
|
@@ -15,13 +15,13 @@ it("render very long", () => {
|
|
|
15
15
|
expect(_$createComponent(TestNamespace, {
|
|
16
16
|
get children() {
|
|
17
17
|
return _$createComponent(TypeParameters, {
|
|
18
|
-
parameters: ["
|
|
18
|
+
parameters: ["SomeVeryVeryLongParamThatMightGetSplitOverMultipleLinesLongLongLongLongLongA", "SomeVeryVeryLongParamThatMightGetSplitOverMultipleLinesLongLongLongLongLongB"]
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
21
|
})).toRenderTo(`
|
|
22
22
|
<
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
SomeVeryVeryLongParamThatMightGetSplitOverMultipleLinesLongLongLongLongLongA,
|
|
24
|
+
SomeVeryVeryLongParamThatMightGetSplitOverMultipleLinesLongLongLongLongLongB>
|
|
25
25
|
`);
|
|
26
26
|
});
|
|
27
27
|
it("declare type parameters using parameters names", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"declaration.d.ts","sourceRoot":"","sources":["../../../../src/components/var/declaration.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"declaration.d.ts","sourceRoot":"","sources":["../../../../src/components/var/declaration.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAER,gBAAgB,EAEhB,MAAM,EACP,MAAM,gBAAgB,CAAC;AAGxB,iDAAiD;AACjD,MAAM,WAAW,mBACf,SAAQ,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC;IAC1C,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,YASxD"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { memo as _$memo, createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
-
import { Name } from "@alloy-js/core";
|
|
3
|
-
import {
|
|
4
|
-
import { Declaration } from "../Declaration.js";
|
|
2
|
+
import { Declaration, Name } from "@alloy-js/core";
|
|
3
|
+
import { createVariableSymbol } from "../../symbols/factories.js";
|
|
5
4
|
|
|
6
5
|
/** Props for {@link VarDeclaration} component */
|
|
7
6
|
|
|
@@ -27,12 +26,11 @@ import { Declaration } from "../Declaration.js";
|
|
|
27
26
|
* ```
|
|
28
27
|
*/
|
|
29
28
|
export function VarDeclaration(props) {
|
|
30
|
-
const
|
|
29
|
+
const sym = createVariableSymbol(props.name, {
|
|
30
|
+
refkeys: props.refkey
|
|
31
|
+
});
|
|
31
32
|
return _$createComponent(Declaration, {
|
|
32
|
-
|
|
33
|
-
get refkey() {
|
|
34
|
-
return props.refkey;
|
|
35
|
-
},
|
|
33
|
+
symbol: sym,
|
|
36
34
|
get children() {
|
|
37
35
|
return [_$memo(() => props.type ?? "var"), " ", _$createComponent(Name, {}), " = ", _$memo(() => props.children), ";"];
|
|
38
36
|
}
|
|
@@ -2,7 +2,6 @@ import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime
|
|
|
2
2
|
import { List, refkey } from "@alloy-js/core";
|
|
3
3
|
import { expect, it } from "vitest";
|
|
4
4
|
import { TestNamespace } from "../../../test/utils.js";
|
|
5
|
-
import { SourceFile } from "../SourceFile.js";
|
|
6
5
|
import { VarDeclaration } from "./declaration.js";
|
|
7
6
|
it("declares var without type", () => {
|
|
8
7
|
expect(_$createComponent(TestNamespace, {
|
|
@@ -45,29 +44,21 @@ it("links refkey", () => {
|
|
|
45
44
|
const key = refkey();
|
|
46
45
|
expect(_$createComponent(TestNamespace, {
|
|
47
46
|
get children() {
|
|
48
|
-
return _$createComponent(
|
|
49
|
-
path: "test.cs",
|
|
47
|
+
return _$createComponent(List, {
|
|
50
48
|
get children() {
|
|
51
|
-
return _$createComponent(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
children: key
|
|
60
|
-
})];
|
|
61
|
-
}
|
|
62
|
-
});
|
|
49
|
+
return [_$createComponent(VarDeclaration, {
|
|
50
|
+
name: "testVar",
|
|
51
|
+
refkey: key,
|
|
52
|
+
children: "42"
|
|
53
|
+
}), _$createComponent(VarDeclaration, {
|
|
54
|
+
name: "testVar2",
|
|
55
|
+
children: key
|
|
56
|
+
})];
|
|
63
57
|
}
|
|
64
58
|
});
|
|
65
59
|
}
|
|
66
60
|
})).toRenderTo(`
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
var testVar = 42;
|
|
70
|
-
var testVar2 = testVar;
|
|
71
|
-
}
|
|
61
|
+
var testVar = 42;
|
|
62
|
+
var testVar2 = testVar;
|
|
72
63
|
`);
|
|
73
64
|
});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Binder } from "@alloy-js/core";
|
|
2
|
+
import { NamespaceSymbol } from "../symbols/namespace.js";
|
|
3
|
+
export declare function useGlobalNamespace(): NamespaceSymbol;
|
|
4
|
+
export declare function getGlobalNamespace(binder: Binder | undefined): NamespaceSymbol;
|
|
5
|
+
//# sourceMappingURL=global-namespace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-namespace.d.ts","sourceRoot":"","sources":["../../../src/contexts/global-namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAa,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,wBAAgB,kBAAkB,oBAGjC;AAMD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,mBAgB5D"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useBinder } from "@alloy-js/core";
|
|
2
|
+
import { NamespaceSymbol } from "../symbols/namespace.js";
|
|
3
|
+
export function useGlobalNamespace() {
|
|
4
|
+
const binder = useBinder();
|
|
5
|
+
return getGlobalNamespace(binder);
|
|
6
|
+
}
|
|
7
|
+
const globalNamespaces = new WeakMap();
|
|
8
|
+
const defaultGlobalNamespace = new NamespaceSymbol("global", undefined, {
|
|
9
|
+
isGlobal: true
|
|
10
|
+
});
|
|
11
|
+
export function getGlobalNamespace(binder) {
|
|
12
|
+
if (!binder) {
|
|
13
|
+
return defaultGlobalNamespace;
|
|
14
|
+
}
|
|
15
|
+
let namespace = globalNamespaces.get(binder);
|
|
16
|
+
if (!namespace) {
|
|
17
|
+
namespace = new NamespaceSymbol("global", undefined, {
|
|
18
|
+
binder,
|
|
19
|
+
isGlobal: true
|
|
20
|
+
});
|
|
21
|
+
globalNamespaces.set(binder, namespace);
|
|
22
|
+
}
|
|
23
|
+
return namespace;
|
|
24
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ComponentContext } from "@alloy-js/core";
|
|
2
|
+
import { NamespaceSymbol } from "../symbols/namespace.js";
|
|
3
|
+
export interface NamespaceContext {
|
|
4
|
+
symbol: NamespaceSymbol;
|
|
5
|
+
}
|
|
6
|
+
export declare const NamespaceContext: ComponentContext<NamespaceContext>;
|
|
7
|
+
export declare function useNamespaceContext(): NamespaceContext | undefined;
|
|
8
|
+
//# sourceMappingURL=namespace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../src/contexts/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA6B,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,eAAO,MAAM,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB,CAC/C,CAAC;AAElB,wBAAgB,mBAAmB,iCAElC"}
|
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
|