@alloy-js/csharp 0.21.0-dev.2 → 0.21.0-dev.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/src/components/enum/declaration.ref.test.js +1 -1
  2. package/dist/src/components/index.d.ts +1 -1
  3. package/dist/src/components/index.d.ts.map +1 -1
  4. package/dist/src/components/index.js +1 -2
  5. package/dist/src/components/index.js.map +1 -1
  6. package/dist/src/components/namespace/namespace-name.d.ts +10 -0
  7. package/dist/src/components/namespace/namespace-name.d.ts.map +1 -0
  8. package/dist/src/components/namespace/namespace-name.js +20 -0
  9. package/dist/src/components/namespace/namespace-name.js.map +1 -0
  10. package/dist/src/components/{namespace.d.ts → namespace/namespace.d.ts} +1 -1
  11. package/dist/src/components/namespace/namespace.d.ts.map +1 -0
  12. package/dist/src/components/{namespace.js → namespace/namespace.js} +9 -12
  13. package/dist/src/components/namespace/namespace.js.map +1 -0
  14. package/dist/src/components/namespace/namespace.test.d.ts.map +1 -0
  15. package/dist/src/components/namespace/namespace.test.js +207 -0
  16. package/dist/src/components/namespace/namespace.test.js.map +1 -0
  17. package/dist/src/components/namespace.ref.test.js +1 -1
  18. package/dist/src/components/source-file/source-file.d.ts.map +1 -1
  19. package/dist/src/components/source-file/source-file.js +4 -2
  20. package/dist/src/components/source-file/source-file.js.map +1 -1
  21. package/dist/src/components/source-file/source-file.test.js +1 -1
  22. package/dist/src/components/source-file/using.test.js +1 -1
  23. package/dist/src/symbols/factories.d.ts +1 -1
  24. package/dist/src/symbols/factories.d.ts.map +1 -1
  25. package/dist/src/symbols/factories.js +24 -6
  26. package/dist/src/symbols/factories.js.map +1 -1
  27. package/dist/tsconfig.tsbuildinfo +1 -1
  28. package/package.json +1 -1
  29. package/src/components/enum/declaration.ref.test.tsx +1 -1
  30. package/src/components/index.ts +1 -1
  31. package/src/components/namespace/namespace-name.tsx +31 -0
  32. package/src/components/namespace/namespace.test.tsx +145 -0
  33. package/src/components/{namespace.tsx → namespace/namespace.tsx} +7 -13
  34. package/src/components/namespace.ref.test.tsx +1 -1
  35. package/src/components/source-file/source-file.test.tsx +1 -1
  36. package/src/components/source-file/source-file.tsx +2 -2
  37. package/src/components/source-file/using.test.tsx +1 -1
  38. package/src/symbols/factories.ts +39 -10
  39. package/temp/api.json +34 -8
  40. package/dist/src/components/namespace.d.ts.map +0 -1
  41. package/dist/src/components/namespace.js.map +0 -1
  42. package/dist/src/components/namespace.test.d.ts.map +0 -1
  43. package/dist/src/components/namespace.test.js +0 -93
  44. package/dist/src/components/namespace.test.js.map +0 -1
  45. package/src/components/namespace.test.tsx +0 -65
  46. /package/dist/src/components/{namespace.test.d.ts → namespace/namespace.test.d.ts} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { createComponent as _$createComponent, createIntrinsic as _$createIntrinsic } from "@alloy-js/core/jsx-runtime";
2
- import { Namespace } from "#components/namespace.js";
2
+ import { Namespace } from "#components/namespace/namespace.js";
3
3
  import { SourceFile } from "#components/source-file/source-file.js";
4
4
  import { Output, refkey } from "@alloy-js/core";
5
5
  import { d } from "@alloy-js/core/testing";
@@ -15,7 +15,7 @@ export * from "./lexical-scope.jsx";
15
15
  export * from "./method-scope.jsx";
16
16
  export * from "./method/method.jsx";
17
17
  export * from "./Name.js";
18
- export * from "./namespace.js";
18
+ export { Namespace, type NamespaceProps } from "./namespace/namespace.jsx";
19
19
  export * from "./parameters/parameters.jsx";
20
20
  export * from "./ProjectDirectory.js";
21
21
  export * from "./property/property.jsx";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mDAAmD,CAAC;AAClE,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,YAAY,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mDAAmD,CAAC;AAClE,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3E,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,YAAY,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
@@ -15,7 +15,7 @@ export * from "./lexical-scope.js";
15
15
  export * from "./method-scope.js";
16
16
  export * from "./method/method.js";
17
17
  export * from "./Name.js";
18
- export * from "./namespace.js";
18
+ export { Namespace } from "./namespace/namespace.js";
19
19
  export * from "./parameters/parameters.js";
20
20
  export * from "./ProjectDirectory.js";
21
21
  export * from "./property/property.js";
@@ -25,5 +25,4 @@ export * from "./source-file/source-file.js";
25
25
  export * from "./struct/declaration.js";
26
26
  export * from "./using/using.js";
27
27
  export * from "./var/declaration.js";
28
- export {};
29
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../src/components/index.ts"],"sourcesContent":[null],"mappings":"AAAA;AACA;AACA;AACA,cAAc,kBAAkB;AAChC;AACA;AACA;AACA;AACA;AACA,cAAc,4BAA4B;AAC1C,cAAc,uBAAuB;AACrC,cAAc,yBAAyB;AACvC;AACA;AACA;AACA;AACA,cAAc,WAAW;AACzB,cAAc,gBAAgB;AAC9B;AACA,cAAc,uBAAuB;AACrC;AACA,cAAc,yBAAyB;AACvC,cAAc,gBAAgB;AAC9B;AACA;AAEA;AACA;AAAsC","ignoreList":[]}
1
+ {"version":3,"names":["Namespace"],"sources":["../../../src/components/index.ts"],"sourcesContent":[null],"mappings":"AAAA;AACA;AACA;AACA,cAAc,kBAAkB;AAChC;AACA;AACA;AACA;AACA;AACA,cAAc,4BAA4B;AAC1C,cAAc,uBAAuB;AACrC,cAAc,yBAAyB;AACvC;AACA;AACA;AACA;AACA,cAAc,WAAW;AACzB,SAASA,SAAS;AAClB;AACA,cAAc,uBAAuB;AACrC;AACA,cAAc,yBAAyB;AACvC,cAAc,gBAAgB;AAC9B;AACA;AAEA;AACA","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import { NamespaceSymbol } from "../../symbols/namespace.js";
2
+ /** @internal */
3
+ export interface NamespaceNameProps {
4
+ symbol: NamespaceSymbol;
5
+ /** If it should print relative to the parent context */
6
+ relative?: boolean;
7
+ }
8
+ /** @internal */
9
+ export declare function NamespaceName(props: NamespaceNameProps): string;
10
+ //# sourceMappingURL=namespace-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace-name.d.ts","sourceRoot":"","sources":["../../../../src/components/namespace/namespace-name.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,gBAAgB;AAChB,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,eAAe,CAAC;IAExB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,gBAAgB;AAChB,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,UAkBtD"}
@@ -0,0 +1,20 @@
1
+ import { useNamespaceContext } from "../../contexts/namespace.js";
2
+ import { NamespaceSymbol } from "../../symbols/namespace.js";
3
+
4
+ /** @internal */
5
+
6
+ /** @internal */
7
+ export function NamespaceName(props) {
8
+ const names = [props.symbol.name];
9
+ const parent = props.relative ? useNamespaceContext()?.symbol : undefined;
10
+ let current = props.symbol.ownerSymbol;
11
+ while (current) {
12
+ if (current === parent || !(current instanceof NamespaceSymbol) || current.isGlobal) {
13
+ break;
14
+ }
15
+ names.unshift(current.name);
16
+ current = current.ownerSymbol;
17
+ }
18
+ return names.join(".");
19
+ }
20
+ //# sourceMappingURL=namespace-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useNamespaceContext","NamespaceSymbol","NamespaceName","props","names","symbol","name","parent","relative","undefined","current","ownerSymbol","isGlobal","unshift","join"],"sources":["../../../../src/components/namespace/namespace-name.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,6BAA6B;AACjE,SAASC,eAAe,QAAQ,4BAA4B;;AAE5D;;AAQA;AACA,OAAO,SAASC,aAAaA,CAACC,KAAyB,EAAE;EACvD,MAAMC,KAAK,GAAG,CAACD,KAAK,CAACE,MAAM,CAACC,IAAI,CAAC;EACjC,MAAMC,MAAM,GAAGJ,KAAK,CAACK,QAAQ,GAAGR,mBAAmB,CAAC,CAAC,EAAEK,MAAM,GAAGI,SAAS;EAEzE,IAAIC,OAAO,GAAGP,KAAK,CAACE,MAAM,CAACM,WAAW;EACtC,OAAOD,OAAO,EAAE;IACd,IACEA,OAAO,KAAKH,MAAM,IAClB,EAAEG,OAAO,YAAYT,eAAe,CAAC,IACrCS,OAAO,CAACE,QAAQ,EAChB;MACA;IACF;IACAR,KAAK,CAACS,OAAO,CAACH,OAAO,CAACJ,IAAI,CAAC;IAC3BI,OAAO,GAAGA,OAAO,CAACC,WAAW;EAC/B;EAEA,OAAOP,KAAK,CAACU,IAAI,CAAC,GAAG,CAAC;AACxB","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  import { Namekey, Refkey } from "@alloy-js/core";
2
2
  import { Children } from "@alloy-js/core/jsx-runtime";
3
3
  export interface NamespaceProps {
4
- name: string | Namekey;
4
+ name: string | Namekey | (string | Namekey)[];
5
5
  refkey?: Refkey | Refkey[];
6
6
  children?: Children;
7
7
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../../src/components/namespace/namespace.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAS,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAOtD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,YA2B9C"}
@@ -1,9 +1,10 @@
1
1
  import { memo as _$memo, createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
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";
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
+ import { NamespaceName } from "./namespace-name.js";
7
8
  export function Namespace(props) {
8
9
  const namespaceSymbol = createNamespaceSymbol(props.name, {
9
10
  refkeys: props.refkey
@@ -20,7 +21,10 @@ export function Namespace(props) {
20
21
  });
21
22
  } else {
22
23
  sfScope.hasBlockNamespace = true;
23
- return ["namespace ", _$memo(() => namespaceSymbol.name), " ", _$createComponent(Block, {
24
+ return ["namespace ", _$createComponent(NamespaceName, {
25
+ symbol: namespaceSymbol,
26
+ relative: true
27
+ }), " ", _$createComponent(Block, {
24
28
  get children() {
25
29
  return _$createComponent(NamespaceContext.Provider, {
26
30
  value: {
@@ -39,11 +43,4 @@ export function Namespace(props) {
39
43
  })];
40
44
  }
41
45
  }
42
-
43
- /*
44
- const scope = createCSharpNamespaceScope(namespaceSymbol);
45
-
46
- return <Scope value={scope}>{props.children}</Scope>;
47
- }
48
- */
49
46
  //# sourceMappingURL=namespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Block","NamespaceContext","useSourceFileScope","createNamespaceSymbol","NamespaceScope","NamespaceName","Namespace","props","namespaceSymbol","name","refkeys","refkey","sfScope","_$createComponent","Provider","value","symbol","children","hasBlockNamespace","relative"],"sources":["../../../../src/components/namespace/namespace.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,KAAK,QAAyB,gBAAgB;AAEvD,SAASC,gBAAgB,QAAQ,6BAA6B;AAC9D,SAASC,kBAAkB,QAAQ,6BAA6B;AAChE,SAASC,qBAAqB,QAAQ,4BAA4B;AAClE,SAASC,cAAc;AACvB,SAASC,aAAa;AAQtB,OAAO,SAASC,SAASA,CAACC,KAAqB,EAAE;EAC/C,MAAMC,eAAe,GAAGL,qBAAqB,CAACI,KAAK,CAACE,IAAI,EAAE;IACxDC,OAAO,EAAEH,KAAK,CAACI;EACjB,CAAC,CAAC;EACF,MAAMC,OAAO,GAAGV,kBAAkB,CAAC,CAAC;EAEpC,IAAI,CAACU,OAAO,EAAE;IACZ,OAAAC,iBAAA,CACGZ,gBAAgB,CAACa,QAAQ;MAACC,KAAK,EAAE;QAAEC,MAAM,EAAER;MAAgB,CAAC;MAAA,IAAAS,SAAA;QAAA,OAC1DV,KAAK,CAACU,QAAQ;MAAA;IAAA;EAGrB,CAAC,MAAM;IACLL,OAAO,CAACM,iBAAiB,GAAG,IAAI;IAChC,sBAAAL,iBAAA,CAEeR,aAAa;MAACW,MAAM,EAAER,eAAe;MAAEW,QAAQ;IAAA,IAAI,GAAG,EAAAN,iBAAA,CAChEb,KAAK;MAAA,IAAAiB,SAAA;QAAA,OAAAJ,iBAAA,CACHZ,gBAAgB,CAACa,QAAQ;UAACC,KAAK,EAAE;YAAEC,MAAM,EAAER;UAAgB,CAAC;UAAA,IAAAS,SAAA;YAAA,OAAAJ,iBAAA,CAC1DT,cAAc;cAACY,MAAM,EAAER,eAAe;cAAA,IAAAS,SAAA;gBAAA,OACpCV,KAAK,CAACU,QAAQ;cAAA;YAAA;UAAA;QAAA;MAAA;IAAA;EAM3B;AACF","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace.test.d.ts","sourceRoot":"","sources":["../../../../src/components/namespace/namespace.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,207 @@
1
+ import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
+ import { TestNamespace } from "#test/utils.js";
3
+ import { Output } from "@alloy-js/core";
4
+ import { d } from "@alloy-js/core/testing";
5
+ import { expect, it } from "vitest";
6
+ import { ClassDeclaration } from "../class/declaration.js";
7
+ import { SourceFile } from "../source-file/source-file.js";
8
+ import { Namespace } from "./namespace.js";
9
+ it("defines multiple namespaces and source files with unique content", () => {
10
+ const tree = _$createComponent(Output, {
11
+ get children() {
12
+ return [_$createComponent(Namespace, {
13
+ name: "Namespace1",
14
+ get children() {
15
+ return [_$createComponent(SourceFile, {
16
+ path: "Model1.cs",
17
+ get children() {
18
+ return _$createComponent(ClassDeclaration, {
19
+ "public": true,
20
+ name: "Model1"
21
+ });
22
+ }
23
+ }), _$createComponent(SourceFile, {
24
+ path: "Model2.cs",
25
+ get children() {
26
+ return _$createComponent(ClassDeclaration, {
27
+ "public": true,
28
+ name: "Model2"
29
+ });
30
+ }
31
+ })];
32
+ }
33
+ }), _$createComponent(Namespace, {
34
+ name: "Namespace2",
35
+ get children() {
36
+ return [_$createComponent(SourceFile, {
37
+ path: "Model3.cs",
38
+ get children() {
39
+ return _$createComponent(ClassDeclaration, {
40
+ "public": true,
41
+ name: "Model3"
42
+ });
43
+ }
44
+ }), _$createComponent(SourceFile, {
45
+ path: "Model4.cs",
46
+ get children() {
47
+ return _$createComponent(ClassDeclaration, {
48
+ "public": true,
49
+ name: "Model4"
50
+ });
51
+ }
52
+ })];
53
+ }
54
+ })];
55
+ }
56
+ });
57
+ expect(tree).toRenderTo({
58
+ "Model1.cs": d`
59
+ namespace Namespace1;
60
+
61
+ public class Model1;
62
+ `,
63
+ "Model2.cs": d`
64
+ namespace Namespace1;
65
+
66
+ public class Model2;
67
+ `,
68
+ "Model3.cs": d`
69
+ namespace Namespace2;
70
+
71
+ public class Model3;
72
+ `,
73
+ "Model4.cs": d`
74
+ namespace Namespace2;
75
+
76
+ public class Model4;
77
+ `
78
+ });
79
+ });
80
+ it("nest namespaces", () => {
81
+ const tree = _$createComponent(Output, {
82
+ get children() {
83
+ return _$createComponent(Namespace, {
84
+ name: ["Namespace1"],
85
+ get children() {
86
+ return _$createComponent(Namespace, {
87
+ name: ["Namespace2"],
88
+ get children() {
89
+ return _$createComponent(SourceFile, {
90
+ path: "Model1.cs",
91
+ get children() {
92
+ return _$createComponent(ClassDeclaration, {
93
+ "public": true,
94
+ name: "Model1"
95
+ });
96
+ }
97
+ });
98
+ }
99
+ });
100
+ }
101
+ });
102
+ }
103
+ });
104
+ expect(tree).toRenderTo(`
105
+ namespace Namespace1.Namespace2;
106
+
107
+ public class Model1;
108
+ `);
109
+ });
110
+ it("define nested namespace directly with array", () => {
111
+ const tree = _$createComponent(Output, {
112
+ get children() {
113
+ return _$createComponent(Namespace, {
114
+ name: ["Namespace1", "Namespace2"],
115
+ get children() {
116
+ return _$createComponent(SourceFile, {
117
+ path: "Model1.cs",
118
+ get children() {
119
+ return _$createComponent(ClassDeclaration, {
120
+ "public": true,
121
+ name: "Model1"
122
+ });
123
+ }
124
+ });
125
+ }
126
+ });
127
+ }
128
+ });
129
+ expect(tree).toRenderTo(`
130
+ namespace Namespace1.Namespace2;
131
+
132
+ public class Model1;
133
+ `);
134
+ });
135
+ it("define nested namespace directly as dotted notation", () => {
136
+ const tree = _$createComponent(Output, {
137
+ get children() {
138
+ return _$createComponent(Namespace, {
139
+ name: "Namespace1.Namespace2",
140
+ get children() {
141
+ return _$createComponent(SourceFile, {
142
+ path: "Model1.cs",
143
+ get children() {
144
+ return _$createComponent(ClassDeclaration, {
145
+ "public": true,
146
+ name: "Model1"
147
+ });
148
+ }
149
+ });
150
+ }
151
+ });
152
+ }
153
+ });
154
+ expect(tree).toRenderTo({
155
+ "Model1.cs": d`
156
+ namespace Namespace1.Namespace2;
157
+
158
+ public class Model1;
159
+ `
160
+ });
161
+ });
162
+ it("uses a name policy", () => {
163
+ expect(_$createComponent(TestNamespace, {
164
+ get children() {
165
+ return _$createComponent(Namespace, {
166
+ name: "my-namespace"
167
+ });
168
+ }
169
+ })).toRenderTo(`
170
+ namespace MyNamespace {
171
+
172
+ }
173
+ `);
174
+ });
175
+ it("define nested namespace in sourcefile", () => {
176
+ const tree = _$createComponent(Output, {
177
+ get children() {
178
+ return _$createComponent(Namespace, {
179
+ name: "Base",
180
+ get children() {
181
+ return _$createComponent(SourceFile, {
182
+ path: "Model1.cs",
183
+ get children() {
184
+ return _$createComponent(Namespace, {
185
+ name: "Namespace1.Namespace2",
186
+ get children() {
187
+ return _$createComponent(ClassDeclaration, {
188
+ "public": true,
189
+ name: "Model1"
190
+ });
191
+ }
192
+ });
193
+ }
194
+ });
195
+ }
196
+ });
197
+ }
198
+ });
199
+ expect(tree).toRenderTo(`
200
+ namespace Base {
201
+ namespace Namespace1.Namespace2 {
202
+ public class Model1;
203
+ }
204
+ }
205
+ `);
206
+ });
207
+ //# sourceMappingURL=namespace.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TestNamespace","Output","d","expect","it","ClassDeclaration","SourceFile","Namespace","tree","_$createComponent","children","name","path","toRenderTo"],"sources":["../../../../src/components/namespace/namespace.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,7 @@ import { createComponent as _$createComponent, createIntrinsic as _$createIntrin
2
2
  import { List, memberRefkey, namekey, Output, refkey } from "@alloy-js/core";
3
3
  import { expect, it } from "vitest";
4
4
  import { ClassDeclaration } from "./class/declaration.js";
5
- import { Namespace } from "./namespace.js";
5
+ import { Namespace } from "./namespace/namespace.js";
6
6
  import { SourceFile } from "./source-file/source-file.js";
7
7
  it("references types in the same namespace", () => {
8
8
  const classRef = refkey();
@@ -1 +1 @@
1
- {"version":3,"file":"source-file.d.ts","sourceRoot":"","sources":["../../../../src/components/source-file/source-file.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,QAAQ,EAKT,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EAEpB,MAAM,kCAAkC,CAAC;AAM1C;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IAEb,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,2GAA2G;AAC3G,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,YA2DhD"}
1
+ {"version":3,"file":"source-file.d.ts","sourceRoot":"","sources":["../../../../src/components/source-file/source-file.tsx"],"names":[],"mappings":"AAIA,OAAO,EAEL,QAAQ,EAKT,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EAEpB,MAAM,kCAAkC,CAAC;AAM1C;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IAEb,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,2GAA2G;AAC3G,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,YA0DhD"}
@@ -1,5 +1,6 @@
1
1
  import { createComponent as _$createComponent, memo as _$memo, mergeProps as _$mergeProps, createIntrinsic as _$createIntrinsic } from "@alloy-js/core/jsx-runtime";
2
2
  import { NamespaceScopes } from "#components/namespace-scopes.js";
3
+ import { NamespaceName } from "#components/namespace/namespace-name.js";
3
4
  import { Reference } from "#components/Reference.js";
4
5
  import { Usings } from "#components/using/using.js";
5
6
  import { Block, computed, SourceFile as CoreSourceFile, Scope, useBinder } from "@alloy-js/core";
@@ -18,7 +19,6 @@ export function SourceFile(props) {
18
19
  const nsContext = useNamespaceContext();
19
20
  const globalNs = getGlobalNamespace(useBinder());
20
21
  const nsSymbol = nsContext ? nsContext.symbol : globalNs;
21
- const nsRef = nsContext ? nsContext.symbol.name : undefined;
22
22
  const usings = computed(() => {
23
23
  return Array.from(sourceFileScope.usings).concat(props.using ?? []);
24
24
  });
@@ -48,7 +48,9 @@ export function SourceFile(props) {
48
48
  get namespaces() {
49
49
  return usings.value;
50
50
  }
51
- }), _$createIntrinsic("hbr", {}), _$createIntrinsic("hbr", {})]), _$memo(() => nsSymbol === globalNs ? content : ["namespace ", nsRef, _$memo(() => _$memo(() => !!sourceFileScope.hasBlockNamespace)() ? [" ", _$createComponent(Block, {
51
+ }), _$createIntrinsic("hbr", {}), _$createIntrinsic("hbr", {})]), _$memo(() => nsSymbol === globalNs ? content : ["namespace ", _$createComponent(NamespaceName, {
52
+ symbol: nsSymbol
53
+ }), _$memo(() => _$memo(() => !!sourceFileScope.hasBlockNamespace)() ? [" ", _$createComponent(Block, {
52
54
  children: content
53
55
  })] : [";", _$createIntrinsic("hbr", {}), _$createIntrinsic("hbr", {}), content])])];
54
56
  }
@@ -1 +1 @@
1
- {"version":3,"names":["NamespaceScopes","Reference","Usings","Block","computed","SourceFile","CoreSourceFile","Scope","useBinder","useCsharpFormatOptions","getGlobalNamespace","useNamespaceContext","CSharpSourceFileScope","props","sourceFileScope","path","nsContext","globalNs","nsSymbol","symbol","nsRef","name","undefined","usings","Array","from","concat","using","content","_$createComponent","children","opts","printWidth","tabWidth","useTabs","_$mergeProps","filetype","reference","value","_$memo","size","length","namespaces","_$createIntrinsic","hasBlockNamespace"],"sources":["../../../../src/components/source-file/source-file.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,eAAe;AACxB,SAASC,SAAS;AAClB,SAASC,MAAM;AACf,SACEC,KAAK,EAELC,QAAQ,EACRC,UAAU,IAAIC,cAAc,EAC5BC,KAAK,EACLC,SAAS,QACJ,gBAAgB;AACvB,SAEEC,sBAAsB,QACjB,kCAAkC;AACzC,SAASC,kBAAkB,QAAQ,oCAAoC;AACvE,SAASC,mBAAmB,QAAQ,6BAA6B;AACjE,SAASC,qBAAqB,QAAQ,6BAA6B;;AAGnE;AACA;AACA;;AAeA;AACA,OAAO,SAASP,UAAUA,CAACQ,KAAsB,EAAE;EACjD,MAAMC,eAAe,GAAG,IAAIF,qBAAqB,CAACC,KAAK,CAACE,IAAI,CAAC;EAE7D,MAAMC,SAAS,GAAGL,mBAAmB,CAAC,CAAC;EACvC,MAAMM,QAAQ,GAAGP,kBAAkB,CAACF,SAAS,CAAC,CAAC,CAAC;EAChD,MAAMU,QAAQ,GAAGF,SAAS,GAAGA,SAAS,CAACG,MAAM,GAAGF,QAAQ;EACxD,MAAMG,KAAK,GAAGJ,SAAS,GAAGA,SAAS,CAACG,MAAM,CAACE,IAAI,GAAGC,SAAS;EAC3D,MAAMC,MAAM,GAAGnB,QAAQ,CAAC,MAAM;IAC5B,OACEoB,KAAK,CAACC,IAAI,CAACX,eAAe,CAACS,MAAM,CAAC,CAClCG,MAAM,CAACb,KAAK,CAACc,KAAK,IAAI,EAAE,CAAC;EAC7B,CAAC,CAAC;EAEF,MAAMC,OAAO,GAAGxB,QAAQ,CAAC,MAAAyB,iBAAA,CACtB7B,eAAe;IAACmB,MAAM,EAAED,QAAQ;IAAA,IAAAY,SAAA;MAAA,OAAGjB,KAAK,CAACiB,QAAQ;IAAA;EAAA,EACnD,CAAC;EAEF,MAAMC,IAAI,GAAGtB,sBAAsB,CAAC;IAClCuB,UAAU,EAAEnB,KAAK,CAACmB,UAAU;IAC5BC,QAAQ,EAAEpB,KAAK,CAACoB,QAAQ;IACxBC,OAAO,EAAErB,KAAK,CAACqB;EACjB,CAAC,CAAC;EAEF,OAAAL,iBAAA,CACGvB,cAAc,EAAA6B,YAAA;IAAA,IACbpB,IAAIA,CAAA;MAAA,OAAEF,KAAK,CAACE,IAAI;IAAA;IAChBqB,QAAQ;IACRC,SAAS,EAAEpC;EAAS,GAChB8B,IAAI;IAAA,IAAAD,SAAA;MAAA,OAAAD,iBAAA,CAEPtB,KAAK;QAAC+B,KAAK,EAAExB,eAAe;QAAA,IAAAgB,SAAA;UAAA,QAAAS,MAAA,OAC1BA,MAAA,UAACzB,eAAe,CAACS,MAAM,CAACiB,IAAI,GAAG,CAAC,IAC9B3B,KAAK,CAACc,KAAK,IAAId,KAAK,CAACc,KAAK,CAACc,MAAM,GAAG,CAAE,SAAAZ,iBAAA,CAEpC3B,MAAM;YAAA,IAACwC,UAAUA,CAAA;cAAA,OAAEnB,MAAM,CAACe,KAAK;YAAA;UAAA,IAAAK,iBAAA,aAAAA,iBAAA,YAInC,GAAAJ,MAAA,OACArB,QAAQ,KAAKD,QAAQ,GACpBW,OAAO,kBAEMR,KAAK,EAAAmB,MAAA,OACfA,MAAA,SAAAzB,eAAe,CAAC8B,iBAAiB,OAE7B,GAAG,EAAAf,iBAAA,CACH1B,KAAK;YAAA2B,QAAA,EAAEF;UAAO,YAAAe,iBAAA,aAAAA,iBAAA,aAKdf,OAAO,CACP,EAEJ;QAAA;MAAA;IAAA;EAAA;AAKb","ignoreList":[]}
1
+ {"version":3,"names":["NamespaceScopes","NamespaceName","Reference","Usings","Block","computed","SourceFile","CoreSourceFile","Scope","useBinder","useCsharpFormatOptions","getGlobalNamespace","useNamespaceContext","CSharpSourceFileScope","props","sourceFileScope","path","nsContext","globalNs","nsSymbol","symbol","usings","Array","from","concat","using","content","_$createComponent","children","opts","printWidth","tabWidth","useTabs","_$mergeProps","filetype","reference","value","_$memo","size","length","namespaces","_$createIntrinsic","hasBlockNamespace"],"sources":["../../../../src/components/source-file/source-file.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,eAAe;AACxB,SAASC,aAAa;AACtB,SAASC,SAAS;AAClB,SAASC,MAAM;AACf,SACEC,KAAK,EAELC,QAAQ,EACRC,UAAU,IAAIC,cAAc,EAC5BC,KAAK,EACLC,SAAS,QACJ,gBAAgB;AACvB,SAEEC,sBAAsB,QACjB,kCAAkC;AACzC,SAASC,kBAAkB,QAAQ,oCAAoC;AACvE,SAASC,mBAAmB,QAAQ,6BAA6B;AACjE,SAASC,qBAAqB,QAAQ,6BAA6B;;AAGnE;AACA;AACA;;AAeA;AACA,OAAO,SAASP,UAAUA,CAACQ,KAAsB,EAAE;EACjD,MAAMC,eAAe,GAAG,IAAIF,qBAAqB,CAACC,KAAK,CAACE,IAAI,CAAC;EAE7D,MAAMC,SAAS,GAAGL,mBAAmB,CAAC,CAAC;EACvC,MAAMM,QAAQ,GAAGP,kBAAkB,CAACF,SAAS,CAAC,CAAC,CAAC;EAChD,MAAMU,QAAQ,GAAGF,SAAS,GAAGA,SAAS,CAACG,MAAM,GAAGF,QAAQ;EACxD,MAAMG,MAAM,GAAGhB,QAAQ,CAAC,MAAM;IAC5B,OACEiB,KAAK,CAACC,IAAI,CAACR,eAAe,CAACM,MAAM,CAAC,CAClCG,MAAM,CAACV,KAAK,CAACW,KAAK,IAAI,EAAE,CAAC;EAC7B,CAAC,CAAC;EAEF,MAAMC,OAAO,GAAGrB,QAAQ,CAAC,MAAAsB,iBAAA,CACtB3B,eAAe;IAACoB,MAAM,EAAED,QAAQ;IAAA,IAAAS,SAAA;MAAA,OAAGd,KAAK,CAACc,QAAQ;IAAA;EAAA,EACnD,CAAC;EAEF,MAAMC,IAAI,GAAGnB,sBAAsB,CAAC;IAClCoB,UAAU,EAAEhB,KAAK,CAACgB,UAAU;IAC5BC,QAAQ,EAAEjB,KAAK,CAACiB,QAAQ;IACxBC,OAAO,EAAElB,KAAK,CAACkB;EACjB,CAAC,CAAC;EAEF,OAAAL,iBAAA,CACGpB,cAAc,EAAA0B,YAAA;IAAA,IACbjB,IAAIA,CAAA;MAAA,OAAEF,KAAK,CAACE,IAAI;IAAA;IAChBkB,QAAQ;IACRC,SAAS,EAAEjC;EAAS,GAChB2B,IAAI;IAAA,IAAAD,SAAA;MAAA,OAAAD,iBAAA,CAEPnB,KAAK;QAAC4B,KAAK,EAAErB,eAAe;QAAA,IAAAa,SAAA;UAAA,QAAAS,MAAA,OAC1BA,MAAA,UAACtB,eAAe,CAACM,MAAM,CAACiB,IAAI,GAAG,CAAC,IAC9BxB,KAAK,CAACW,KAAK,IAAIX,KAAK,CAACW,KAAK,CAACc,MAAM,GAAG,CAAE,SAAAZ,iBAAA,CAEpCxB,MAAM;YAAA,IAACqC,UAAUA,CAAA;cAAA,OAAEnB,MAAM,CAACe,KAAK;YAAA;UAAA,IAAAK,iBAAA,aAAAA,iBAAA,YAInC,GAAAJ,MAAA,OACAlB,QAAQ,KAAKD,QAAQ,GACpBQ,OAAO,kBAAAC,iBAAA,CAEM1B,aAAa;YAACmB,MAAM,EAAED;UAAQ,IAAAkB,MAAA,OACxCA,MAAA,SAAAtB,eAAe,CAAC2B,iBAAiB,OAE7B,GAAG,EAAAf,iBAAA,CACHvB,KAAK;YAAAwB,QAAA,EAAEF;UAAO,YAAAe,iBAAA,aAAAA,iBAAA,aAKdf,OAAO,CACP,EAEJ;QAAA;MAAA;IAAA;EAAA;AAKb","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
2
  import { ClassDeclaration } from "#components/class/declaration.js";
3
- import { Namespace } from "#components/namespace.js";
3
+ import { Namespace } from "#components/namespace/namespace.js";
4
4
  import { FormatOptions, Indent, Output, Prose } from "@alloy-js/core";
5
5
  import { describe, expect, it } from "vitest";
6
6
  import { CSharpFormatOptions } from "../../contexts/format-options.js";
@@ -3,7 +3,7 @@ import { ClassDeclaration } from "#components/class/declaration.js";
3
3
  import { EnumDeclaration } from "#components/enum/declaration.js";
4
4
  import { EnumMember } from "#components/enum/member.js";
5
5
  import { Method } from "#components/method/method.js";
6
- import { Namespace } from "#components/namespace.js";
6
+ import { Namespace } from "#components/namespace/namespace.js";
7
7
  import { SourceFile } from "#components/source-file/source-file.js";
8
8
  import { Output, refkey } from "@alloy-js/core";
9
9
  import * as coretest from "@alloy-js/core/testing";
@@ -15,7 +15,7 @@ export interface CreateTypeParameterSymbolOptions extends CSharpSymbolOptions {
15
15
  export declare function createTypeParameterSymbol(originalName: string | Namekey, options?: CreateTypeParameterSymbolOptions): CSharpSymbol;
16
16
  export declare function createFieldSymbol(originalName: string | Namekey, options?: CSharpSymbolOptions): CSharpSymbol;
17
17
  export declare function createNamedTypeSymbol(name: string | Namekey, kind: NamedTypeTypeKind, options?: OutputSymbolOptions): NamedTypeSymbol;
18
- export declare function createNamespaceSymbol(name: string | Namekey, options?: CSharpSymbolOptions): NamespaceSymbol;
18
+ export declare function createNamespaceSymbol(name: string | Namekey | (string | Namekey)[], options?: CSharpSymbolOptions): NamespaceSymbol;
19
19
  export interface CreateMethodSymbolOptions extends CSharpSymbolOptions {
20
20
  methodKind?: MethodKinds;
21
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../../../src/symbols/factories.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAGP,mBAAmB,EAEpB,MAAM,gBAAgB,CAAC;AAOxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAM/D,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,GAAG,OAAO,EAC9B,OAAO,GAAE,mBAAwB,gBAgBlC;AAED,MAAM,WAAW,gCAAiC,SAAQ,mBAAmB;IAC3E,KAAK,CAAC,EAAE,iBAAiB,GAAG,oBAAoB,CAAC;CAClD;AACD,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,GAAG,OAAO,EAC9B,OAAO,GAAE,gCAAqC,gBAiB/C;AAED,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,GAAG,OAAO,EAC9B,OAAO,GAAE,mBAAwB,gBA0BlC;AASD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,GAAG,OAAO,EACtB,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE,mBAAmB,mBAM9B;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,GAAG,OAAO,EACtB,OAAO,GAAE,mBAAwB,mBAalC;AAED,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACpE,UAAU,CAAC,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,GAAG,OAAO,EAC9B,OAAO,GAAE,yBAA8B,gBAsBxC;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,GAAG,OAAO,EACtB,OAAO,EAAE,mBAAmB,gBAU7B;AAED,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,GAAG,OAAO,EAC9B,OAAO,GAAE,mBAAwB,gBA6BlC"}
1
+ {"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../../../src/symbols/factories.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAGP,mBAAmB,EAEpB,MAAM,gBAAgB,CAAC;AAQxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,GAAG,OAAO,EAC9B,OAAO,GAAE,mBAAwB,gBAgBlC;AAED,MAAM,WAAW,gCAAiC,SAAQ,mBAAmB;IAC3E,KAAK,CAAC,EAAE,iBAAiB,GAAG,oBAAoB,CAAC;CAClD;AACD,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,GAAG,OAAO,EAC9B,OAAO,GAAE,gCAAqC,gBAiB/C;AAED,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,GAAG,OAAO,EAC9B,OAAO,GAAE,mBAAwB,gBA0BlC;AASD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,GAAG,OAAO,EACtB,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE,mBAAmB,mBAM9B;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,EAC7C,OAAO,GAAE,mBAAwB,GAChC,eAAe,CASjB;AAoCD,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACpE,UAAU,CAAC,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,GAAG,OAAO,EAC9B,OAAO,GAAE,yBAA8B,gBAsBxC;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,GAAG,OAAO,EACtB,OAAO,EAAE,mBAAmB,gBAU7B;AAED,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,GAAG,OAAO,EAC9B,OAAO,GAAE,mBAAwB,gBA6BlC"}
@@ -1,12 +1,13 @@
1
1
  import { onCleanup, useBinder } from "@alloy-js/core";
2
2
  import { getGlobalNamespace } from "../contexts/global-namespace.js";
3
+ import { useNamespaceContext } from "../contexts/namespace.js";
3
4
  import { useCSharpNamePolicy } from "../name-policy.js";
4
5
  import { CSharpClassScope } from "../scopes/class.js";
5
6
  import { useCSharpScope, useNamedTypeScope } from "../scopes/contexts.js";
6
7
  import { CSharpLexicalScope } from "../scopes/lexical.js";
7
8
  import { CSharpMethodScope } from "../scopes/method.js";
8
9
  import { CSharpNamedTypeScope } from "../scopes/named-type.js";
9
- import { CSharpNamespaceScope, useEnclosingNamespaceScope } from "../scopes/namespace.js";
10
+ import { CSharpNamespaceScope } from "../scopes/namespace.js";
10
11
  import { CSharpSourceFileScope } from "../scopes/source-file.js";
11
12
  import { CSharpSymbol } from "./csharp.js";
12
13
  import { MethodSymbol } from "./method.js";
@@ -52,14 +53,31 @@ export function createNamedTypeSymbol(name, kind, options) {
52
53
  return withCleanup(new NamedTypeSymbol(name, scope.ownerSymbol.members, kind, options));
53
54
  }
54
55
  export function createNamespaceSymbol(name, options = {}) {
55
- const scope = useEnclosingNamespaceScope();
56
- const nsSymbol = scope?.ownerSymbol ?? getGlobalNamespace(useBinder());
56
+ const scope = useNamespaceContext();
57
+ const parentSymbol = scope?.symbol ?? getGlobalNamespace(useBinder());
58
+ const names = normalizeNamespaceName(name);
59
+ let current = parentSymbol;
60
+ for (const name of names) {
61
+ current = createNamespaceSymbolInternal(name, current, options);
62
+ }
63
+ return current;
64
+ }
65
+ function normalizeNamespaceName(name) {
66
+ if (Array.isArray(name)) {
67
+ return name;
68
+ }
69
+ if (typeof name === "string" && name.includes(".")) {
70
+ return name.split(".");
71
+ }
72
+ return [name];
73
+ }
74
+ function createNamespaceSymbolInternal(name, parentSymbol, options = {}) {
57
75
  const namePolicy = options.namePolicy ?? useCSharpNamePolicy().for("namespace");
58
76
  const expectedName = namePolicy(typeof name === "string" ? name : name.name);
59
- if (nsSymbol.members.symbolNames.has(expectedName)) {
60
- return nsSymbol.members.symbolNames.get(expectedName);
77
+ if (parentSymbol.members.symbolNames.has(expectedName)) {
78
+ return parentSymbol.members.symbolNames.get(expectedName);
61
79
  }
62
- return withCleanup(new NamespaceSymbol(name, nsSymbol, withNamePolicy(options, "namespace")));
80
+ return withCleanup(new NamespaceSymbol(name, parentSymbol, withNamePolicy(options, "namespace")));
63
81
  }
64
82
  export function createMethodSymbol(originalName, options = {}) {
65
83
  const scope = useNamedTypeScope();
@@ -1 +1 @@
1
- {"version":3,"names":["onCleanup","useBinder","getGlobalNamespace","useCSharpNamePolicy","CSharpClassScope","useCSharpScope","useNamedTypeScope","CSharpLexicalScope","CSharpMethodScope","CSharpNamedTypeScope","CSharpNamespaceScope","useEnclosingNamespaceScope","CSharpSourceFileScope","CSharpSymbol","MethodSymbol","NamedTypeSymbol","NamespaceSymbol","createParameterSymbol","originalName","options","scope","Error","parameters","withNamePolicy","createTypeParameterSymbol","typeParameters","createFieldSymbol","nameElement","accessibility","ownerSymbol","typeKind","members","withCleanup","sym","delete","createNamedTypeSymbol","name","kind","createNamespaceSymbol","nsSymbol","namePolicy","for","expectedName","symbolNames","has","get","createMethodSymbol","methodKind","createPropertySymbol","createVariableSymbol","binder","parent","constructor","localVariables","elementType"],"sources":["../../../src/symbols/factories.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["onCleanup","useBinder","getGlobalNamespace","useNamespaceContext","useCSharpNamePolicy","CSharpClassScope","useCSharpScope","useNamedTypeScope","CSharpLexicalScope","CSharpMethodScope","CSharpNamedTypeScope","CSharpNamespaceScope","CSharpSourceFileScope","CSharpSymbol","MethodSymbol","NamedTypeSymbol","NamespaceSymbol","createParameterSymbol","originalName","options","scope","Error","parameters","withNamePolicy","createTypeParameterSymbol","typeParameters","createFieldSymbol","nameElement","accessibility","ownerSymbol","typeKind","members","withCleanup","sym","delete","createNamedTypeSymbol","name","kind","createNamespaceSymbol","parentSymbol","symbol","names","normalizeNamespaceName","current","createNamespaceSymbolInternal","Array","isArray","includes","split","namePolicy","for","expectedName","symbolNames","has","get","createMethodSymbol","methodKind","createPropertySymbol","createVariableSymbol","binder","parent","constructor","localVariables","elementType"],"sources":["../../../src/symbols/factories.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}