@alloy-js/csharp 0.20.0-dev.3 → 0.20.0-dev.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +18 -32
- package/dist/src/components/class/declaration.test.js +171 -193
- package/dist/src/components/constructor/constructor.d.ts.map +1 -1
- package/dist/src/components/constructor/constructor.js +11 -16
- 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 -14
- 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 -15
- 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 -36
- 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 -13
- 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 -11
- 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 -36
- package/dist/src/components/property/property.test.js +14 -14
- package/dist/src/components/record/declaration.d.ts.map +1 -1
- package/dist/src/components/record/declaration.js +8 -12
- package/dist/src/components/record/declaration.test.js +6 -13
- 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 +6 -2
- 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 +120 -143
- package/src/components/class/declaration.tsx +19 -32
- package/src/components/constructor/constructor.test.tsx +10 -16
- package/src/components/constructor/constructor.tsx +13 -27
- 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 -14
- 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 -19
- package/src/components/interface/property.test.tsx +11 -11
- package/src/components/interface/property.tsx +15 -33
- package/src/components/lexical-scope.tsx +29 -0
- package/src/components/method/method.test.tsx +11 -11
- package/src/components/method/method.tsx +12 -18
- 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 -16
- package/src/components/property/property.test.tsx +14 -14
- package/src/components/property/property.tsx +17 -38
- package/src/components/record/declaration.test.tsx +5 -12
- package/src/components/record/declaration.tsx +10 -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 +6251 -2454
- 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/dist/src/components/EnumDeclaration.d.ts.map +0 -1
- package/dist/src/components/EnumDeclaration.js +0 -82
- 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 -20
- package/dist/src/symbols/scopes.d.ts.map +0 -1
- package/dist/src/symbols/scopes.js +0 -42
- 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 -98
- package/src/components/Namespace.tsx +0 -35
- package/src/symbols/csharp-output-symbol.ts +0 -22
- package/src/symbols/scopes.ts +0 -61
- 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
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { createComponent as _$createComponent, memo as _$memo } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { Scope } from "@alloy-js/core";
|
|
3
|
+
import { NamespaceContext } from "../contexts/namespace.js";
|
|
4
|
+
import { createCSharpNamespaceScope } from "../scopes/namespace.js";
|
|
5
|
+
export function NamespaceScope(props) {
|
|
6
|
+
const scope = createCSharpNamespaceScope(props.symbol);
|
|
7
|
+
return _$createComponent(NamespaceContext.Provider, {
|
|
8
|
+
get value() {
|
|
9
|
+
return {
|
|
10
|
+
symbol: props.symbol
|
|
11
|
+
};
|
|
12
|
+
},
|
|
13
|
+
get children() {
|
|
14
|
+
return _$createComponent(Scope, {
|
|
15
|
+
value: scope,
|
|
16
|
+
get children() {
|
|
17
|
+
return props.children;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export function NamespaceScopes(props) {
|
|
24
|
+
function wrapWithScope(symbol, children) {
|
|
25
|
+
const scopeChildren = _$createComponent(NamespaceScope, {
|
|
26
|
+
symbol: symbol,
|
|
27
|
+
children: children
|
|
28
|
+
});
|
|
29
|
+
if (symbol.enclosingNamespace) {
|
|
30
|
+
return wrapWithScope(symbol.enclosingNamespace, scopeChildren);
|
|
31
|
+
}
|
|
32
|
+
return scopeChildren;
|
|
33
|
+
}
|
|
34
|
+
return _$createComponent(NamespaceContext.Provider, {
|
|
35
|
+
get value() {
|
|
36
|
+
return {
|
|
37
|
+
symbol: props.symbol
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
get children() {
|
|
41
|
+
return wrapWithScope(props.symbol, props.children);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../src/components/namespace.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAMtD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,YAyB9C"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { memo as _$memo, createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { Block } from "@alloy-js/core";
|
|
3
|
+
import { NamespaceContext } from "../contexts/namespace.js";
|
|
4
|
+
import { useSourceFileScope } from "../scopes/source-file.js";
|
|
5
|
+
import { createNamespaceSymbol } from "../symbols/factories.js";
|
|
6
|
+
import { NamespaceScope } from "./namespace-scopes.js";
|
|
7
|
+
export function Namespace(props) {
|
|
8
|
+
const namespaceSymbol = createNamespaceSymbol(props.name);
|
|
9
|
+
const sfScope = useSourceFileScope();
|
|
10
|
+
if (!sfScope) {
|
|
11
|
+
return _$createComponent(NamespaceContext.Provider, {
|
|
12
|
+
value: {
|
|
13
|
+
symbol: namespaceSymbol
|
|
14
|
+
},
|
|
15
|
+
get children() {
|
|
16
|
+
return props.children;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
} else {
|
|
20
|
+
sfScope.hasBlockNamespace = true;
|
|
21
|
+
return ["namespace ", _$memo(() => namespaceSymbol.name), " ", _$createComponent(Block, {
|
|
22
|
+
get children() {
|
|
23
|
+
return _$createComponent(NamespaceContext.Provider, {
|
|
24
|
+
value: {
|
|
25
|
+
symbol: namespaceSymbol
|
|
26
|
+
},
|
|
27
|
+
get children() {
|
|
28
|
+
return _$createComponent(NamespaceScope, {
|
|
29
|
+
symbol: namespaceSymbol,
|
|
30
|
+
get children() {
|
|
31
|
+
return props.children;
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
})];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/*
|
|
42
|
+
const scope = createCSharpNamespaceScope(namespaceSymbol);
|
|
43
|
+
|
|
44
|
+
return <Scope value={scope}>{props.children}</Scope>;
|
|
45
|
+
}
|
|
46
|
+
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.ref.test.d.ts","sourceRoot":"","sources":["../../../src/components/namespace.ref.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { createComponent as _$createComponent, createIntrinsic as _$createIntrinsic } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { Output, refkey } from "@alloy-js/core";
|
|
3
|
+
import { d } from "@alloy-js/core/testing";
|
|
4
|
+
import { expect, it } from "vitest";
|
|
5
|
+
import { ClassDeclaration } from "./class/declaration.js";
|
|
6
|
+
import { Namespace } from "./namespace.js";
|
|
7
|
+
import { SourceFile } from "./SourceFile.js";
|
|
8
|
+
it("references types in the same namespace", () => {
|
|
9
|
+
const classRef = refkey();
|
|
10
|
+
const tree = _$createComponent(Output, {
|
|
11
|
+
get children() {
|
|
12
|
+
return _$createComponent(Namespace, {
|
|
13
|
+
name: "Test",
|
|
14
|
+
get children() {
|
|
15
|
+
return _$createComponent(SourceFile, {
|
|
16
|
+
path: "test.cs",
|
|
17
|
+
get children() {
|
|
18
|
+
return [_$createComponent(ClassDeclaration, {
|
|
19
|
+
name: "TestClass",
|
|
20
|
+
refkey: classRef
|
|
21
|
+
}), _$createIntrinsic("hbr", {}), classRef, ";"];
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
expect(tree).toRenderTo(d`
|
|
29
|
+
namespace Test;
|
|
30
|
+
|
|
31
|
+
class TestClass;
|
|
32
|
+
TestClass;
|
|
33
|
+
`);
|
|
34
|
+
});
|
|
35
|
+
it("references types in a parent namespace", () => {
|
|
36
|
+
const classRef = refkey();
|
|
37
|
+
const tree = _$createComponent(Output, {
|
|
38
|
+
get children() {
|
|
39
|
+
return _$createComponent(Namespace, {
|
|
40
|
+
name: "Test",
|
|
41
|
+
get children() {
|
|
42
|
+
return _$createComponent(SourceFile, {
|
|
43
|
+
path: "test.cs",
|
|
44
|
+
get children() {
|
|
45
|
+
return [_$createComponent(ClassDeclaration, {
|
|
46
|
+
name: "TestClass",
|
|
47
|
+
refkey: classRef
|
|
48
|
+
}), _$createIntrinsic("hbr", {}), _$createComponent(Namespace, {
|
|
49
|
+
name: "Nested",
|
|
50
|
+
get children() {
|
|
51
|
+
return [classRef, ";"];
|
|
52
|
+
}
|
|
53
|
+
})];
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
expect(tree).toRenderTo(d`
|
|
61
|
+
namespace Test {
|
|
62
|
+
class TestClass;
|
|
63
|
+
namespace Nested {
|
|
64
|
+
TestClass;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
`);
|
|
68
|
+
});
|
|
69
|
+
it("references types in a child namespace", () => {
|
|
70
|
+
const classRef = refkey();
|
|
71
|
+
const tree = _$createComponent(Output, {
|
|
72
|
+
get children() {
|
|
73
|
+
return _$createComponent(Namespace, {
|
|
74
|
+
name: "Test",
|
|
75
|
+
get children() {
|
|
76
|
+
return _$createComponent(SourceFile, {
|
|
77
|
+
path: "test.cs",
|
|
78
|
+
get children() {
|
|
79
|
+
return [classRef, ";", _$createIntrinsic("hbr", {}), _$createComponent(Namespace, {
|
|
80
|
+
name: "Nested",
|
|
81
|
+
get children() {
|
|
82
|
+
return _$createComponent(ClassDeclaration, {
|
|
83
|
+
name: "TestClass",
|
|
84
|
+
refkey: classRef
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
})];
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
expect(tree).toRenderTo(d`
|
|
95
|
+
namespace Test {
|
|
96
|
+
Nested.TestClass;
|
|
97
|
+
namespace Nested {
|
|
98
|
+
class TestClass;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
`);
|
|
102
|
+
});
|
|
103
|
+
it("references types in a different top-level namespace declared in the same file", () => {
|
|
104
|
+
const classRef = refkey();
|
|
105
|
+
const tree = _$createComponent(Output, {
|
|
106
|
+
get children() {
|
|
107
|
+
return _$createComponent(SourceFile, {
|
|
108
|
+
path: "test.cs",
|
|
109
|
+
get children() {
|
|
110
|
+
return [_$createComponent(Namespace, {
|
|
111
|
+
name: "TestCode1",
|
|
112
|
+
children: classRef
|
|
113
|
+
}), _$createIntrinsic("hbr", {}), _$createComponent(Namespace, {
|
|
114
|
+
name: "TestCode2",
|
|
115
|
+
get children() {
|
|
116
|
+
return _$createComponent(ClassDeclaration, {
|
|
117
|
+
name: "TestClass",
|
|
118
|
+
refkey: classRef
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
})];
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
expect(tree).toRenderTo(d`
|
|
127
|
+
using TestCode2;
|
|
128
|
+
|
|
129
|
+
namespace TestCode1 {
|
|
130
|
+
TestClass
|
|
131
|
+
}
|
|
132
|
+
namespace TestCode2 {
|
|
133
|
+
class TestClass;
|
|
134
|
+
}
|
|
135
|
+
`);
|
|
136
|
+
});
|
|
137
|
+
it("references types in a different top-level namespace declared in a different file", () => {
|
|
138
|
+
const classRef = refkey();
|
|
139
|
+
const tree = _$createComponent(Output, {
|
|
140
|
+
get children() {
|
|
141
|
+
return [_$createComponent(SourceFile, {
|
|
142
|
+
path: "test.cs",
|
|
143
|
+
get children() {
|
|
144
|
+
return _$createComponent(Namespace, {
|
|
145
|
+
name: "TestCode1",
|
|
146
|
+
get children() {
|
|
147
|
+
return [classRef, ";"];
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}), _$createComponent(SourceFile, {
|
|
152
|
+
path: "other.cs",
|
|
153
|
+
get children() {
|
|
154
|
+
return _$createComponent(Namespace, {
|
|
155
|
+
name: "TestCode2",
|
|
156
|
+
get children() {
|
|
157
|
+
return _$createComponent(ClassDeclaration, {
|
|
158
|
+
name: "TestClass",
|
|
159
|
+
refkey: classRef
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
})];
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
expect(tree).toRenderTo({
|
|
168
|
+
"test.cs": d`
|
|
169
|
+
using TestCode2;
|
|
170
|
+
|
|
171
|
+
namespace TestCode1 {
|
|
172
|
+
TestClass;
|
|
173
|
+
}
|
|
174
|
+
`,
|
|
175
|
+
"other.cs": d`
|
|
176
|
+
namespace TestCode2 {
|
|
177
|
+
class TestClass;
|
|
178
|
+
}
|
|
179
|
+
`
|
|
180
|
+
});
|
|
181
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.test.d.ts","sourceRoot":"","sources":["../../../src/components/namespace.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { Output } from "@alloy-js/core";
|
|
3
|
+
import { d } from "@alloy-js/core/testing";
|
|
4
|
+
import { expect, it } from "vitest";
|
|
5
|
+
import { ClassDeclaration } from "./class/declaration.js";
|
|
6
|
+
import { Namespace } from "./namespace.js";
|
|
7
|
+
import { SourceFile } from "./SourceFile.js";
|
|
8
|
+
it("defines multiple namespaces and source files with unique content", () => {
|
|
9
|
+
const tree = _$createComponent(Output, {
|
|
10
|
+
get children() {
|
|
11
|
+
return [_$createComponent(Namespace, {
|
|
12
|
+
name: "Namespace1",
|
|
13
|
+
get children() {
|
|
14
|
+
return [_$createComponent(SourceFile, {
|
|
15
|
+
path: "Model1.cs",
|
|
16
|
+
get children() {
|
|
17
|
+
return _$createComponent(ClassDeclaration, {
|
|
18
|
+
"public": true,
|
|
19
|
+
name: "Model1"
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}), _$createComponent(SourceFile, {
|
|
23
|
+
path: "Model2.cs",
|
|
24
|
+
get children() {
|
|
25
|
+
return _$createComponent(ClassDeclaration, {
|
|
26
|
+
"public": true,
|
|
27
|
+
name: "Model2"
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
})];
|
|
31
|
+
}
|
|
32
|
+
}), _$createComponent(Namespace, {
|
|
33
|
+
name: "Namespace2",
|
|
34
|
+
get children() {
|
|
35
|
+
return [_$createComponent(SourceFile, {
|
|
36
|
+
path: "Model3.cs",
|
|
37
|
+
get children() {
|
|
38
|
+
return _$createComponent(ClassDeclaration, {
|
|
39
|
+
"public": true,
|
|
40
|
+
name: "Model3"
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}), _$createComponent(SourceFile, {
|
|
44
|
+
path: "Model4.cs",
|
|
45
|
+
get children() {
|
|
46
|
+
return _$createComponent(ClassDeclaration, {
|
|
47
|
+
"public": true,
|
|
48
|
+
name: "Model4"
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
})];
|
|
52
|
+
}
|
|
53
|
+
})];
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
expect(tree).toRenderTo({
|
|
57
|
+
"Model1.cs": d`
|
|
58
|
+
namespace Namespace1;
|
|
59
|
+
|
|
60
|
+
public class Model1;
|
|
61
|
+
`,
|
|
62
|
+
"Model2.cs": d`
|
|
63
|
+
namespace Namespace1;
|
|
64
|
+
|
|
65
|
+
public class Model2;
|
|
66
|
+
`,
|
|
67
|
+
"Model3.cs": d`
|
|
68
|
+
namespace Namespace2;
|
|
69
|
+
|
|
70
|
+
public class Model3;
|
|
71
|
+
`,
|
|
72
|
+
"Model4.cs": d`
|
|
73
|
+
namespace Namespace2;
|
|
74
|
+
|
|
75
|
+
public class Model4;
|
|
76
|
+
`
|
|
77
|
+
});
|
|
78
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Children, OutputSymbol, Refkey } from "@alloy-js/core";
|
|
1
|
+
import { Children, Namekey, OutputSymbol, Refkey } from "@alloy-js/core";
|
|
2
2
|
export interface ParameterProps {
|
|
3
|
-
name: string;
|
|
3
|
+
name: string | Namekey;
|
|
4
4
|
type: Children;
|
|
5
5
|
/** If the parmaeter is optional(without default value) */
|
|
6
6
|
optional?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../../../../src/components/parameters/parameters.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../../../../src/components/parameters/parameters.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAMR,OAAO,EACP,YAAY,EACZ,MAAM,EACP,MAAM,gBAAgB,CAAC;AAIxB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,kEAAkE;AAClE,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,YAe9C;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;CAC1C;AAED,wCAAwC;AACxC,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,YAehD"}
|
|
@@ -1,21 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { code, Declaration, For, Indent
|
|
3
|
-
import {
|
|
4
|
-
import { CSharpOutputSymbol } from "../../symbols/csharp-output-symbol.js";
|
|
5
|
-
import { useCSharpMemberScope } from "../../symbols/scopes.js";
|
|
1
|
+
import { createComponent as _$createComponent, memo as _$memo, createIntrinsic as _$createIntrinsic } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { code, createSymbolSlot, Declaration, For, Indent } from "@alloy-js/core";
|
|
3
|
+
import { createParameterSymbol } from "../../symbols/factories.js";
|
|
6
4
|
import { Name } from "../Name.js";
|
|
7
5
|
/** Define a parameter to be used in class or interface method. */
|
|
8
6
|
export function Parameter(props) {
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
refkeys: props.refkey ?? refkey(props.name)
|
|
7
|
+
const TypeSlot = createSymbolSlot();
|
|
8
|
+
const memberSymbol = createParameterSymbol(props.name, {
|
|
9
|
+
refkeys: props.refkey,
|
|
10
|
+
type: TypeSlot.firstSymbol
|
|
14
11
|
});
|
|
15
12
|
return _$createComponent(Declaration, {
|
|
16
13
|
symbol: memberSymbol,
|
|
17
14
|
get children() {
|
|
18
|
-
return [_$
|
|
15
|
+
return [_$createComponent(TypeSlot, {
|
|
16
|
+
get children() {
|
|
17
|
+
return props.type;
|
|
18
|
+
}
|
|
19
|
+
}), _$memo(() => props.optional ? "?" : ""), " ", _$createComponent(Name, {}), _$memo(() => props.default ? code` = ${props.default}` : "")];
|
|
19
20
|
}
|
|
20
21
|
});
|
|
21
22
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameters.test.d.ts","sourceRoot":"","sources":["../../../../src/components/parameters/parameters.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { memo as _$memo, createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { ClassDeclaration } from "#components/class/declaration.js";
|
|
3
|
+
import { Method } from "#components/method/method.js";
|
|
4
|
+
import { List, memberRefkey, namekey } from "@alloy-js/core";
|
|
5
|
+
import { expect, it } from "vitest";
|
|
6
|
+
import { TestNamespace } from "../../../test/utils.js";
|
|
7
|
+
const Wrapper = props => _$createComponent(TestNamespace, {
|
|
8
|
+
get children() {
|
|
9
|
+
return _$createComponent(ClassDeclaration, {
|
|
10
|
+
"public": true,
|
|
11
|
+
name: "TestClass",
|
|
12
|
+
get children() {
|
|
13
|
+
return props.children;
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
it("can be referenced", () => {
|
|
19
|
+
const param1Key = namekey("param1");
|
|
20
|
+
const param2Key = namekey("param2");
|
|
21
|
+
expect(_$createComponent(Wrapper, {
|
|
22
|
+
get children() {
|
|
23
|
+
return _$createComponent(Method, {
|
|
24
|
+
name: "MethodOne",
|
|
25
|
+
parameters: [{
|
|
26
|
+
name: param1Key,
|
|
27
|
+
type: "T1"
|
|
28
|
+
}, {
|
|
29
|
+
name: param2Key,
|
|
30
|
+
type: "T2"
|
|
31
|
+
}]
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
})).toRenderTo(`
|
|
35
|
+
public class TestClass
|
|
36
|
+
{
|
|
37
|
+
void MethodOne(T1 param1, T2 param2) {}
|
|
38
|
+
}
|
|
39
|
+
`);
|
|
40
|
+
});
|
|
41
|
+
it("members can be referenced", () => {
|
|
42
|
+
const classKey = namekey("TestType");
|
|
43
|
+
const methodKey = namekey("TestMethod");
|
|
44
|
+
const param1Key = namekey("param1");
|
|
45
|
+
expect(_$createComponent(TestNamespace, {
|
|
46
|
+
get children() {
|
|
47
|
+
return _$createComponent(List, {
|
|
48
|
+
get children() {
|
|
49
|
+
return [_$createComponent(ClassDeclaration, {
|
|
50
|
+
name: classKey,
|
|
51
|
+
get children() {
|
|
52
|
+
return _$createComponent(Method, {
|
|
53
|
+
name: methodKey
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}), _$createComponent(ClassDeclaration, {
|
|
57
|
+
name: "Test",
|
|
58
|
+
get children() {
|
|
59
|
+
return _$createComponent(Method, {
|
|
60
|
+
name: "Test",
|
|
61
|
+
parameters: [{
|
|
62
|
+
name: param1Key,
|
|
63
|
+
type: classKey
|
|
64
|
+
}],
|
|
65
|
+
get children() {
|
|
66
|
+
return ["return ", _$memo(() => memberRefkey(param1Key, methodKey)), "();"];
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
})];
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
})).toRenderTo(`
|
|
75
|
+
class TestType
|
|
76
|
+
{
|
|
77
|
+
void TestMethod() {}
|
|
78
|
+
}
|
|
79
|
+
class Test
|
|
80
|
+
{
|
|
81
|
+
void Test(TestType param1)
|
|
82
|
+
{
|
|
83
|
+
return param1.TestMethod();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
`);
|
|
87
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"property.d.ts","sourceRoot":"","sources":["../../../../src/components/property/property.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAKR,MAAM,
|
|
1
|
+
{"version":3,"file":"property.d.ts","sourceRoot":"","sources":["../../../../src/components/property/property.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAKR,MAAM,EACP,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,eAAe,EAIhB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAiB,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG7E,0BAA0B;AAC1B,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAcD,gDAAgD;AAChD,MAAM,WAAW,aAAc,SAAQ,eAAe,EAAE,iBAAiB;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,oBAAoB;IACpB,IAAI,EAAE,QAAQ,CAAC;IAEf,uCAAuC;IACvC,GAAG,CAAC,EAAE,OAAO,CAAC;IAEd,uCAAuC;IACvC,GAAG,CAAC,EAAE,OAAO,CAAC;IAEd,0DAA0D;IAC1D,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,kBAAkB;IAClB,GAAG,CAAC,EAAE,QAAQ,CAAC;IAEf;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,QAAQ,CAAC;IAEvB;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,YAiC5C"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { createComponent as _$createComponent, memo as _$memo } from "@alloy-js/core/jsx-runtime";
|
|
2
|
-
import { Block, code, List, MemberDeclaration,
|
|
2
|
+
import { Block, code, List, MemberDeclaration, MemberName } from "@alloy-js/core";
|
|
3
3
|
import { computeModifiersPrefix, getAccessModifier, makeModifiers } from "../../modifiers.js";
|
|
4
|
-
import {
|
|
5
|
-
import { CSharpOutputSymbol } from "../../symbols/csharp-output-symbol.js";
|
|
6
|
-
import { CSharpMemberScope, useCSharpMemberScope } from "../../symbols/scopes.js";
|
|
4
|
+
import { createPropertySymbol } from "../../symbols/factories.js";
|
|
7
5
|
import { AttributeList } from "../attributes/attributes.js";
|
|
8
6
|
import { DocWhen } from "../doc/comment.js";
|
|
9
7
|
|
|
@@ -23,16 +21,8 @@ const getModifiers = makeModifiers(["new", "static", "virtual", "sealed", "overr
|
|
|
23
21
|
* ```
|
|
24
22
|
*/
|
|
25
23
|
export function Property(props) {
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
const propertySymbol = new CSharpOutputSymbol(name, {
|
|
29
|
-
scope,
|
|
30
|
-
refkeys: props.refkey ?? refkey(props.name)
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
// scope for property declaration
|
|
34
|
-
const propertyScope = new CSharpMemberScope("property-decl", {
|
|
35
|
-
owner: propertySymbol
|
|
24
|
+
const propertySymbol = createPropertySymbol(props.name, {
|
|
25
|
+
refkeys: props.refkey
|
|
36
26
|
});
|
|
37
27
|
const modifiers = computeModifiersPrefix([getAccessModifier(props), getModifiers(props)]);
|
|
38
28
|
if (props.init && props.set) {
|
|
@@ -42,32 +32,27 @@ export function Property(props) {
|
|
|
42
32
|
return _$createComponent(MemberDeclaration, {
|
|
43
33
|
symbol: propertySymbol,
|
|
44
34
|
get children() {
|
|
45
|
-
return _$createComponent(
|
|
46
|
-
|
|
35
|
+
return [_$createComponent(DocWhen, {
|
|
36
|
+
get doc() {
|
|
37
|
+
return props.doc;
|
|
38
|
+
}
|
|
39
|
+
}), _$createComponent(AttributeList, {
|
|
40
|
+
get attributes() {
|
|
41
|
+
return props.attributes;
|
|
42
|
+
},
|
|
43
|
+
endline: true
|
|
44
|
+
}), modifiers, _$memo(() => props.type), _$memo(() => props.nullable && "?"), " ", _$createComponent(MemberName, {}), " ", _$createComponent(Block, {
|
|
45
|
+
newline: true,
|
|
46
|
+
inline: true,
|
|
47
47
|
get children() {
|
|
48
|
-
return
|
|
49
|
-
|
|
50
|
-
return props.doc;
|
|
51
|
-
}
|
|
52
|
-
}), _$createComponent(AttributeList, {
|
|
53
|
-
get attributes() {
|
|
54
|
-
return props.attributes;
|
|
55
|
-
},
|
|
56
|
-
endline: true
|
|
57
|
-
}), modifiers, _$memo(() => props.type), _$memo(() => props.nullable && "?"), " ", name, " ", _$createComponent(Block, {
|
|
58
|
-
newline: true,
|
|
59
|
-
inline: true,
|
|
48
|
+
return _$createComponent(List, {
|
|
49
|
+
joiner: " ",
|
|
60
50
|
get children() {
|
|
61
|
-
return _$
|
|
62
|
-
joiner: " ",
|
|
63
|
-
get children() {
|
|
64
|
-
return [_$memo(() => props.get && "get;"), _$memo(() => props.set && "set;"), _$memo(() => props.init && "init;")];
|
|
65
|
-
}
|
|
66
|
-
});
|
|
51
|
+
return [_$memo(() => props.get && "get;"), _$memo(() => props.set && "set;"), _$memo(() => props.init && "init;")];
|
|
67
52
|
}
|
|
68
|
-
})
|
|
53
|
+
});
|
|
69
54
|
}
|
|
70
|
-
});
|
|
55
|
+
}), _$memo(() => props.initializer && code` = ${props.initializer};`)];
|
|
71
56
|
}
|
|
72
57
|
});
|
|
73
58
|
}
|