@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.
Files changed (249) hide show
  1. package/dist/src/components/Declaration.d.ts +2 -2
  2. package/dist/src/components/Declaration.d.ts.map +1 -1
  3. package/dist/src/components/Declaration.js +3 -13
  4. package/dist/src/components/Reference.d.ts.map +1 -1
  5. package/dist/src/components/Reference.js +5 -1
  6. package/dist/src/components/SourceFile.d.ts +8 -9
  7. package/dist/src/components/SourceFile.d.ts.map +1 -1
  8. package/dist/src/components/SourceFile.js +69 -45
  9. package/dist/src/components/UsingDirective.d.ts +5 -1
  10. package/dist/src/components/UsingDirective.d.ts.map +1 -1
  11. package/dist/src/components/UsingDirective.js +3 -1
  12. package/dist/src/components/class/declaration.d.ts +2 -2
  13. package/dist/src/components/class/declaration.d.ts.map +1 -1
  14. package/dist/src/components/class/declaration.js +18 -32
  15. package/dist/src/components/class/declaration.test.js +171 -193
  16. package/dist/src/components/constructor/constructor.d.ts.map +1 -1
  17. package/dist/src/components/constructor/constructor.js +11 -16
  18. package/dist/src/components/constructor/constructor.test.js +10 -19
  19. package/dist/src/components/{EnumDeclaration.d.ts → enum/declaration.d.ts} +6 -11
  20. package/dist/src/components/enum/declaration.d.ts.map +1 -0
  21. package/dist/src/components/enum/declaration.js +54 -0
  22. package/dist/src/components/enum/declaration.ref.test.d.ts +2 -0
  23. package/dist/src/components/enum/declaration.ref.test.d.ts.map +1 -0
  24. package/dist/src/components/enum/declaration.ref.test.js +120 -0
  25. package/dist/src/components/enum/declaration.test.d.ts +2 -0
  26. package/dist/src/components/enum/declaration.test.d.ts.map +1 -0
  27. package/dist/src/components/enum/declaration.test.js +39 -0
  28. package/dist/src/components/enum/member.d.ts +7 -0
  29. package/dist/src/components/enum/member.d.ts.map +1 -0
  30. package/dist/src/components/enum/member.js +29 -0
  31. package/dist/src/components/enum/member.test.d.ts +2 -0
  32. package/dist/src/components/enum/member.test.d.ts.map +1 -0
  33. package/dist/src/components/enum/member.test.js +28 -0
  34. package/dist/src/components/field/field.d.ts.map +1 -1
  35. package/dist/src/components/field/field.js +9 -14
  36. package/dist/src/components/field/field.test.js +7 -7
  37. package/dist/src/components/index.d.ts +5 -2
  38. package/dist/src/components/index.d.ts.map +1 -1
  39. package/dist/src/components/index.js +5 -2
  40. package/dist/src/components/interface/declaration.d.ts.map +1 -1
  41. package/dist/src/components/interface/declaration.js +19 -21
  42. package/dist/src/components/interface/declaration.test.js +26 -35
  43. package/dist/src/components/interface/method.d.ts.map +1 -1
  44. package/dist/src/components/interface/method.js +7 -15
  45. package/dist/src/components/interface/method.test.js +38 -47
  46. package/dist/src/components/interface/property.d.ts.map +1 -1
  47. package/dist/src/components/interface/property.js +21 -36
  48. package/dist/src/components/interface/property.test.js +11 -11
  49. package/dist/src/components/lexical-scope.d.ts +8 -0
  50. package/dist/src/components/lexical-scope.d.ts.map +1 -0
  51. package/dist/src/components/lexical-scope.js +24 -0
  52. package/dist/src/components/method/method.d.ts +5 -2
  53. package/dist/src/components/method/method.d.ts.map +1 -1
  54. package/dist/src/components/method/method.js +7 -13
  55. package/dist/src/components/method/method.test.js +11 -11
  56. package/dist/src/components/method-scope.d.ts +8 -0
  57. package/dist/src/components/method-scope.d.ts.map +1 -0
  58. package/dist/src/components/method-scope.js +24 -0
  59. package/dist/src/components/namespace-scopes.d.ts +13 -0
  60. package/dist/src/components/namespace-scopes.d.ts.map +1 -0
  61. package/dist/src/components/namespace-scopes.js +44 -0
  62. package/dist/src/components/namespace.d.ts +7 -0
  63. package/dist/src/components/namespace.d.ts.map +1 -0
  64. package/dist/src/components/namespace.js +46 -0
  65. package/dist/src/components/namespace.ref.test.d.ts +2 -0
  66. package/dist/src/components/namespace.ref.test.d.ts.map +1 -0
  67. package/dist/src/components/namespace.ref.test.js +181 -0
  68. package/dist/src/components/namespace.test.d.ts.map +1 -0
  69. package/dist/src/components/namespace.test.js +78 -0
  70. package/dist/src/components/parameters/parameters.d.ts +2 -2
  71. package/dist/src/components/parameters/parameters.d.ts.map +1 -1
  72. package/dist/src/components/parameters/parameters.js +12 -11
  73. package/dist/src/components/parameters/parameters.test.d.ts +2 -0
  74. package/dist/src/components/parameters/parameters.test.d.ts.map +1 -0
  75. package/dist/src/components/parameters/parameters.test.js +87 -0
  76. package/dist/src/components/property/property.d.ts.map +1 -1
  77. package/dist/src/components/property/property.js +21 -36
  78. package/dist/src/components/property/property.test.js +14 -14
  79. package/dist/src/components/record/declaration.d.ts.map +1 -1
  80. package/dist/src/components/record/declaration.js +8 -12
  81. package/dist/src/components/record/declaration.test.js +6 -13
  82. package/dist/src/components/struct/declaration.d.ts.map +1 -1
  83. package/dist/src/components/struct/declaration.js +4 -6
  84. package/dist/src/components/struct/declaration.test.js +30 -39
  85. package/dist/src/components/type-parameters/type-parameter.d.ts.map +1 -1
  86. package/dist/src/components/type-parameters/type-parameter.js +7 -10
  87. package/dist/src/components/type-parameters/type-parameters.test.js +3 -3
  88. package/dist/src/components/var/declaration.d.ts.map +1 -1
  89. package/dist/src/components/var/declaration.js +6 -8
  90. package/dist/src/components/var/declaration.test.js +11 -20
  91. package/dist/src/contexts/global-namespace.d.ts +5 -0
  92. package/dist/src/contexts/global-namespace.d.ts.map +1 -0
  93. package/dist/src/contexts/global-namespace.js +24 -0
  94. package/dist/src/contexts/namespace.d.ts +8 -0
  95. package/dist/src/contexts/namespace.d.ts.map +1 -0
  96. package/dist/src/contexts/namespace.js +5 -0
  97. package/dist/src/index.d.ts +1 -0
  98. package/dist/src/index.d.ts.map +1 -1
  99. package/dist/src/index.js +1 -0
  100. package/dist/src/modifiers.d.ts +11 -0
  101. package/dist/src/modifiers.d.ts.map +1 -1
  102. package/dist/src/scopes/class.d.ts +10 -0
  103. package/dist/src/scopes/class.d.ts.map +1 -0
  104. package/dist/src/scopes/class.js +10 -0
  105. package/dist/src/scopes/contexts.d.ts +9 -0
  106. package/dist/src/scopes/contexts.d.ts.map +1 -0
  107. package/dist/src/scopes/contexts.js +33 -0
  108. package/dist/src/scopes/csharp.d.ts +8 -0
  109. package/dist/src/scopes/csharp.d.ts.map +1 -0
  110. package/dist/src/scopes/csharp.js +11 -0
  111. package/dist/src/scopes/factories.d.ts +9 -0
  112. package/dist/src/scopes/factories.d.ts.map +1 -0
  113. package/dist/src/scopes/factories.js +23 -0
  114. package/dist/src/scopes/index.d.ts +10 -0
  115. package/dist/src/scopes/index.d.ts.map +1 -0
  116. package/dist/src/scopes/index.js +9 -0
  117. package/dist/src/scopes/lexical.d.ts +7 -0
  118. package/dist/src/scopes/lexical.d.ts.map +1 -0
  119. package/dist/src/scopes/lexical.js +7 -0
  120. package/dist/src/scopes/method.d.ts +9 -0
  121. package/dist/src/scopes/method.d.ts.map +1 -0
  122. package/dist/src/scopes/method.js +13 -0
  123. package/dist/src/scopes/named-type.d.ts +22 -0
  124. package/dist/src/scopes/named-type.d.ts.map +1 -0
  125. package/dist/src/scopes/named-type.js +32 -0
  126. package/dist/src/scopes/namespace.d.ts +11 -0
  127. package/dist/src/scopes/namespace.d.ts.map +1 -0
  128. package/dist/src/scopes/namespace.js +38 -0
  129. package/dist/src/scopes/source-file.d.ts +16 -0
  130. package/dist/src/scopes/source-file.d.ts.map +1 -0
  131. package/dist/src/scopes/source-file.js +43 -0
  132. package/dist/src/symbols/csharp.d.ts +76 -0
  133. package/dist/src/symbols/csharp.d.ts.map +1 -0
  134. package/dist/src/symbols/csharp.js +222 -0
  135. package/dist/src/symbols/factories.d.ts +25 -0
  136. package/dist/src/symbols/factories.d.ts.map +1 -0
  137. package/dist/src/symbols/factories.js +86 -0
  138. package/dist/src/symbols/index.d.ts +5 -2
  139. package/dist/src/symbols/index.d.ts.map +1 -1
  140. package/dist/src/symbols/index.js +6 -3
  141. package/dist/src/symbols/method.d.ts +13 -0
  142. package/dist/src/symbols/method.d.ts.map +1 -0
  143. package/dist/src/symbols/method.js +15 -0
  144. package/dist/src/symbols/named-type.d.ts +19 -0
  145. package/dist/src/symbols/named-type.d.ts.map +1 -0
  146. package/dist/src/symbols/named-type.js +30 -0
  147. package/dist/src/symbols/namespace.d.ts +22 -0
  148. package/dist/src/symbols/namespace.d.ts.map +1 -0
  149. package/dist/src/symbols/namespace.js +44 -0
  150. package/dist/src/symbols/reference.d.ts +2 -2
  151. package/dist/src/symbols/reference.d.ts.map +1 -1
  152. package/dist/src/symbols/reference.js +36 -43
  153. package/dist/test/project-directory.test.js +12 -16
  154. package/dist/test/sourcefile.test.js +7 -19
  155. package/dist/test/using.test.js +18 -16
  156. package/dist/test/utils.js +2 -2
  157. package/dist/tsconfig.tsbuildinfo +1 -1
  158. package/package.json +6 -2
  159. package/src/components/Declaration.tsx +3 -6
  160. package/src/components/Reference.tsx +3 -1
  161. package/src/components/SourceFile.tsx +68 -55
  162. package/src/components/UsingDirective.tsx +12 -2
  163. package/src/components/class/declaration.test.tsx +120 -143
  164. package/src/components/class/declaration.tsx +19 -32
  165. package/src/components/constructor/constructor.test.tsx +10 -16
  166. package/src/components/constructor/constructor.tsx +13 -27
  167. package/src/components/enum/declaration.ref.test.tsx +93 -0
  168. package/src/components/enum/declaration.test.tsx +34 -0
  169. package/src/components/enum/declaration.tsx +65 -0
  170. package/src/components/enum/member.test.tsx +24 -0
  171. package/src/components/enum/member.tsx +36 -0
  172. package/src/components/field/field.test.tsx +7 -7
  173. package/src/components/field/field.tsx +12 -14
  174. package/src/components/index.ts +5 -2
  175. package/src/components/interface/declaration.test.tsx +26 -32
  176. package/src/components/interface/declaration.tsx +16 -18
  177. package/src/components/interface/method.test.tsx +38 -44
  178. package/src/components/interface/method.tsx +7 -19
  179. package/src/components/interface/property.test.tsx +11 -11
  180. package/src/components/interface/property.tsx +15 -33
  181. package/src/components/lexical-scope.tsx +29 -0
  182. package/src/components/method/method.test.tsx +11 -11
  183. package/src/components/method/method.tsx +12 -18
  184. package/src/components/method-scope.tsx +27 -0
  185. package/src/components/namespace-scopes.tsx +44 -0
  186. package/src/components/namespace.ref.test.tsx +139 -0
  187. package/src/components/namespace.test.tsx +52 -0
  188. package/src/components/namespace.tsx +45 -0
  189. package/src/components/parameters/parameters.test.tsx +71 -0
  190. package/src/components/parameters/parameters.tsx +9 -16
  191. package/src/components/property/property.test.tsx +14 -14
  192. package/src/components/property/property.tsx +17 -38
  193. package/src/components/record/declaration.test.tsx +5 -12
  194. package/src/components/record/declaration.tsx +10 -11
  195. package/src/components/struct/declaration.test.tsx +16 -22
  196. package/src/components/struct/declaration.tsx +4 -6
  197. package/src/components/type-parameters/type-parameter.tsx +14 -11
  198. package/src/components/type-parameters/type-parameters.test.tsx +4 -4
  199. package/src/components/var/declaration.test.tsx +8 -14
  200. package/src/components/var/declaration.tsx +12 -6
  201. package/src/contexts/global-namespace.ts +29 -0
  202. package/src/contexts/namespace.ts +13 -0
  203. package/src/index.ts +1 -0
  204. package/src/modifiers.ts +14 -0
  205. package/src/scopes/class.ts +12 -0
  206. package/src/scopes/contexts.ts +45 -0
  207. package/src/scopes/csharp.ts +18 -0
  208. package/src/scopes/factories.ts +45 -0
  209. package/src/scopes/index.ts +9 -0
  210. package/src/scopes/lexical.ts +10 -0
  211. package/src/scopes/method.ts +22 -0
  212. package/src/scopes/named-type.ts +44 -0
  213. package/src/scopes/namespace.ts +59 -0
  214. package/src/scopes/source-file.ts +67 -0
  215. package/src/symbols/csharp.ts +307 -0
  216. package/src/symbols/factories.ts +199 -0
  217. package/src/symbols/index.ts +5 -2
  218. package/src/symbols/method.ts +26 -0
  219. package/src/symbols/named-type.ts +54 -0
  220. package/src/symbols/namespace.ts +62 -0
  221. package/src/symbols/reference.ts +47 -50
  222. package/temp/api.json +6251 -2454
  223. package/test/project-directory.test.tsx +12 -16
  224. package/test/sourcefile.test.tsx +7 -21
  225. package/test/using.test.tsx +18 -16
  226. package/test/utils.tsx +1 -1
  227. package/dist/src/components/EnumDeclaration.d.ts.map +0 -1
  228. package/dist/src/components/EnumDeclaration.js +0 -82
  229. package/dist/src/components/Namespace.d.ts +0 -11
  230. package/dist/src/components/Namespace.d.ts.map +0 -1
  231. package/dist/src/components/Namespace.js +0 -33
  232. package/dist/src/symbols/csharp-output-symbol.d.ts +0 -8
  233. package/dist/src/symbols/csharp-output-symbol.d.ts.map +0 -1
  234. package/dist/src/symbols/csharp-output-symbol.js +0 -19
  235. package/dist/src/symbols/scopes.d.ts +0 -20
  236. package/dist/src/symbols/scopes.d.ts.map +0 -1
  237. package/dist/src/symbols/scopes.js +0 -42
  238. package/dist/test/enum.test.d.ts +0 -2
  239. package/dist/test/enum.test.d.ts.map +0 -1
  240. package/dist/test/enum.test.js +0 -178
  241. package/dist/test/namespace.test.d.ts.map +0 -1
  242. package/dist/test/namespace.test.js +0 -81
  243. package/src/components/EnumDeclaration.tsx +0 -98
  244. package/src/components/Namespace.tsx +0 -35
  245. package/src/symbols/csharp-output-symbol.ts +0 -22
  246. package/src/symbols/scopes.ts +0 -61
  247. package/test/enum.test.tsx +0 -149
  248. package/test/namespace.test.tsx +0 -55
  249. /package/dist/{test → src/components}/namespace.test.d.ts +0 -0
@@ -1,8 +1,8 @@
1
1
  import * as core from "@alloy-js/core";
2
2
  export interface DeclarationProps {
3
3
  name: string;
4
- refkey?: core.Refkey;
4
+ refkey?: core.Refkey | core.Refkey[];
5
5
  children?: core.Children;
6
6
  }
7
- export declare function Declaration(props: DeclarationProps): core.Children;
7
+ export declare function Declaration(props: DeclarationProps): void;
8
8
  //# sourceMappingURL=Declaration.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Declaration.d.ts","sourceRoot":"","sources":["../../../src/components/Declaration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AAIvC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;CAC1B;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,iBAMlD"}
1
+ {"version":3,"file":"Declaration.d.ts","sourceRoot":"","sources":["../../../src/components/Declaration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AAGvC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;CAC1B;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,QAIlD"}
@@ -1,18 +1,8 @@
1
- import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
- import * as core from "@alloy-js/core";
3
- import { CSharpOutputSymbol } from "../symbols/csharp-output-symbol.js";
4
-
5
1
  // properties for creating a declaration
6
2
 
7
3
  // declares a symbol in the program (class, enum, interface etc)
8
4
  export function Declaration(props) {
9
- const sym = new CSharpOutputSymbol(props.name, {
10
- refkeys: props.refkey
11
- });
12
- return _$createComponent(core.Declaration, {
13
- symbol: sym,
14
- get children() {
15
- return props.children;
16
- }
17
- });
5
+ throw new Error("Not supported");
6
+
7
+ //return <core.Declaration symbol={sym}>{props.children}</core.Declaration>;
18
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Reference.d.ts","sourceRoot":"","sources":["../../../src/components/Reference.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AAGvC,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACrB;AAGD,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,iBAInD"}
1
+ {"version":3,"file":"Reference.d.ts","sourceRoot":"","sources":["../../../src/components/Reference.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AAGvC,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACrB;AAGD,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,iBAMnD"}
@@ -1,8 +1,12 @@
1
+ import { memo as _$memo } from "@alloy-js/core/jsx-runtime";
2
+ import * as core from "@alloy-js/core";
1
3
  import { ref } from "../symbols/reference.js";
2
4
  // used to resolve refkey references within source files
3
5
  export function Reference({
4
6
  refkey
5
7
  }) {
6
8
  const reference = ref(refkey);
7
- return [reference];
9
+ const symbolRef = core.computed(() => reference()[1]);
10
+ core.emitSymbol(symbolRef);
11
+ return [_$memo(() => reference()[0])];
8
12
  }
@@ -1,14 +1,13 @@
1
- import * as core from "@alloy-js/core";
2
- export interface SourceFileContext {
3
- addUsing(namespace: string): void;
4
- }
5
- export declare function useSourceFile(): SourceFileContext | undefined;
1
+ import { Children } from "@alloy-js/core";
6
2
  export interface SourceFileProps {
7
3
  /** Path of the source file */
8
4
  path: string;
9
- /** A list of namespaces to use */
10
- using?: Array<string>;
11
- children?: core.Children;
5
+ children?: Children;
6
+ /**
7
+ * A list of using directives to explicitly include. Note that providing
8
+ * explicit usings is not necessary when referencing symbols via refkeys.
9
+ */
10
+ using?: string[];
12
11
  }
13
- export declare function SourceFile(props: SourceFileProps): core.Children;
12
+ export declare function SourceFile(props: SourceFileProps): Children;
14
13
  //# sourceMappingURL=SourceFile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SourceFile.d.ts","sourceRoot":"","sources":["../../../src/components/SourceFile.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AAMvC,MAAM,WAAW,iBAAiB;IAEhC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAKD,wBAAgB,aAAa,IAAI,iBAAiB,GAAG,SAAS,CAE7D;AAED,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IAEb,kCAAkC;IAClC,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAEtB,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;CAC1B;AAID,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,iBA+ChD"}
1
+ {"version":3,"file":"SourceFile.d.ts","sourceRoot":"","sources":["../../../src/components/SourceFile.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAMT,MAAM,gBAAgB,CAAC;AASxB,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAID,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,YA2DhD"}
@@ -1,40 +1,23 @@
1
- import { memo as _$memo, createComponent as _$createComponent, createIntrinsic as _$createIntrinsic } from "@alloy-js/core/jsx-runtime";
2
- import * as core from "@alloy-js/core";
3
- import { useNamespace } from "./Namespace.js";
1
+ import { memo as _$memo, createIntrinsic as _$createIntrinsic, createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
+ import { computed, SourceFile as CoreSourceFile, Scope, Show, useBinder } from "@alloy-js/core";
3
+ import { getGlobalNamespace } from "../contexts/global-namespace.js";
4
+ import { useNamespaceContext } from "../contexts/namespace.js";
5
+ import { CSharpSourceFileScope } from "../scopes/source-file.js";
6
+ import { NamespaceScope, NamespaceScopes } from "./namespace-scopes.js";
4
7
  import { Reference } from "./Reference.js";
5
8
  import { UsingDirective } from "./UsingDirective.js";
6
-
7
- // contains the info for the current source file
8
-
9
- const SourceFileContext = core.createContext();
10
-
11
- // returns the current source file
12
- export function useSourceFile() {
13
- return core.useContext(SourceFileContext);
14
- }
15
9
  // a C# source file. exists within the context of a namespace
16
10
  // contains using statements and declarations
17
11
  export function SourceFile(props) {
18
- const namespaceCtx = useNamespace();
19
- if (!namespaceCtx) {
20
- throw new Error("SourceFile must be declared inside a namespace");
21
- }
22
- const using = core.reactive(new Array());
23
- if (props.using) {
24
- using.push(...props.using);
25
- }
26
-
27
- // adds the specified namespace to the array of using statements.
28
- // called via SourceFileContext.addUsing when resolving refkeys.
29
- function addUsing(namespace) {
30
- if (!using.includes(namespace)) {
31
- using.push(namespace);
32
- }
33
- }
34
- const sourceFileCtx = {
35
- addUsing
36
- };
37
- return _$createComponent(core.SourceFile, {
12
+ const sourceFileScope = new CSharpSourceFileScope(props.path);
13
+ const nsContext = useNamespaceContext();
14
+ const globalNs = getGlobalNamespace(useBinder());
15
+ const nsSymbol = nsContext ? nsContext.symbol : globalNs;
16
+ const nsRef = nsContext ? nsContext.symbol.name : undefined;
17
+ const usings = computed(() => {
18
+ return Array.from(sourceFileScope.usings).concat(props.using ?? []);
19
+ });
20
+ return _$createComponent(CoreSourceFile, {
38
21
  get path() {
39
22
  return props.path;
40
23
  },
@@ -43,25 +26,66 @@ export function SourceFile(props) {
43
26
  tabWidth: 4,
44
27
  printWidth: 120,
45
28
  get children() {
46
- return _$createComponent(SourceFileContext.Provider, {
47
- value: sourceFileCtx,
29
+ return _$createComponent(Scope, {
30
+ value: sourceFileScope,
48
31
  get children() {
49
- return _$createComponent(core.Scope, {
50
- get name() {
51
- return props.path;
52
- },
53
- kind: "source-file",
32
+ return [_$memo(() => _$memo(() => !!(sourceFileScope.usings.size > 0 || props.using && props.using.length > 0))() && [_$createComponent(UsingDirective, {
33
+ get namespaces() {
34
+ return usings.value;
35
+ }
36
+ }), _$createIntrinsic("hbr", {}), _$createIntrinsic("hbr", {})]), _$createComponent(Show, {
37
+ when: !!nsContext && nsSymbol !== globalNs,
54
38
  get children() {
55
- return [_$memo(() => _$memo(() => using.length > 0)() && [_$createComponent(UsingDirective, {
56
- namespaces: using
57
- }), _$createIntrinsic("hbr", {}), _$createIntrinsic("hbr", {})]), "namespace ", _$memo(() => namespaceCtx.name), _$createComponent(core.Block, {
58
- newline: true,
39
+ return [_$createComponent(Show, {
40
+ get when() {
41
+ return sourceFileScope.hasBlockNamespace;
42
+ },
59
43
  get children() {
60
- return props.children;
44
+ return ["namespace ", nsRef, " {", _$createIntrinsic("hbr", {}), " "];
45
+ }
46
+ }), _$createComponent(Show, {
47
+ get when() {
48
+ return !sourceFileScope.hasBlockNamespace;
49
+ },
50
+ get children() {
51
+ return ["namespace ", nsRef, ";", _$createIntrinsic("hbr", {}), _$createIntrinsic("hbr", {})];
52
+ }
53
+ }), _$createIntrinsic("align", {
54
+ get width() {
55
+ return sourceFileScope.hasBlockNamespace ? 4 : 0;
56
+ },
57
+ get children() {
58
+ return _$createComponent(NamespaceScopes, {
59
+ get symbol() {
60
+ return nsContext.symbol;
61
+ },
62
+ get children() {
63
+ return props.children;
64
+ }
65
+ });
66
+ }
67
+ }), _$createComponent(Show, {
68
+ get when() {
69
+ return sourceFileScope.hasBlockNamespace;
70
+ },
71
+ get children() {
72
+ return [_$createIntrinsic("hbr", {}), "}"];
61
73
  }
62
74
  })];
63
75
  }
64
- });
76
+ }), _$createComponent(Show, {
77
+ when: !nsContext || nsSymbol === globalNs,
78
+ get children() {
79
+ return _$createComponent(NamespaceScope, {
80
+ get symbol() {
81
+ return getGlobalNamespace(useBinder());
82
+ },
83
+ get children() {
84
+ return props.children;
85
+ }
86
+ });
87
+ }
88
+ })];
65
89
  }
66
90
  });
67
91
  }
@@ -1,6 +1,10 @@
1
1
  import * as core from "@alloy-js/core";
2
+ import { NamespaceSymbol } from "../symbols/namespace.js";
2
3
  export interface UsingDirectiveProps {
3
- namespaces: Array<string>;
4
+ /**
5
+ * Namespace symbols or namespace names to use to generate using statements.
6
+ */
7
+ namespaces?: (NamespaceSymbol | string)[];
4
8
  }
5
9
  export declare function UsingDirective(props: UsingDirectiveProps): core.Children;
6
10
  //# sourceMappingURL=UsingDirective.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UsingDirective.d.ts","sourceRoot":"","sources":["../../../src/components/UsingDirective.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AAEvC,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC3B;AAGD,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,iBAUxD"}
1
+ {"version":3,"file":"UsingDirective.d.ts","sourceRoot":"","sources":["../../../src/components/UsingDirective.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC;CAC3C;AAGD,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,iBAgBxD"}
@@ -3,7 +3,9 @@ import * as core from "@alloy-js/core";
3
3
  // one ore more C# using directives
4
4
  export function UsingDirective(props) {
5
5
  const sortedNamespaces = core.computed(() => {
6
- return props.namespaces.sort();
6
+ return props.namespaces.map(ns => typeof ns === "string" ? ns : ns.getFullyQualifiedName({
7
+ omitGlobal: true
8
+ })).sort((n1, n2) => n1.localeCompare(n2));
7
9
  });
8
10
  return _$createComponent(core.For, {
9
11
  each: sortedNamespaces,
@@ -1,4 +1,4 @@
1
- import { Children, DeclarationProps, Refkey } from "@alloy-js/core";
1
+ import { Children, DeclarationProps, Namekey, Refkey } from "@alloy-js/core";
2
2
  import { AccessModifiers } from "../../modifiers.js";
3
3
  import { AttributesProp } from "../attributes/attributes.jsx";
4
4
  import { ParameterProps } from "../parameters/parameters.jsx";
@@ -10,7 +10,7 @@ export interface ClassModifiers {
10
10
  readonly static?: boolean;
11
11
  }
12
12
  export interface ClassDeclarationProps extends Omit<DeclarationProps, "nameKind">, AccessModifiers, ClassModifiers {
13
- name: string;
13
+ name: string | Namekey;
14
14
  /** Doc comment */
15
15
  doc?: Children;
16
16
  refkey?: Refkey;
@@ -1 +1 @@
1
- {"version":3,"file":"declaration.d.ts","sourceRoot":"","sources":["../../../../src/components/class/declaration.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAER,gBAAgB,EAGhB,MAAM,EAEP,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,eAAe,EAIhB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAiB,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE7E,OAAO,EAAE,cAAc,EAAc,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAG3E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAUD,MAAM,WAAW,qBACf,SAAQ,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,EACxC,eAAe,EACf,cAAc;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,kBAAkB,CAAC,EAAE,CAAC;IAEjD,yCAAyC;IACzC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB,uCAAuC;IACvC,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC;IAE5B;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAE5B;;;;;;;;;;;;;;;OAeG;IACH,kBAAkB,CAAC,EAAE,cAAc,EAAE,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,YAkD5D"}
1
+ {"version":3,"file":"declaration.d.ts","sourceRoot":"","sources":["../../../../src/components/class/declaration.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAER,gBAAgB,EAGhB,OAAO,EACP,MAAM,EAEP,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,eAAe,EAIhB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAiB,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE7E,OAAO,EAAE,cAAc,EAAc,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAG3E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAUD,MAAM,WAAW,qBACf,SAAQ,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,EACxC,eAAe,EACf,cAAc;IAChB,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,kBAAkB;IAClB,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,kBAAkB,CAAC,EAAE,CAAC;IAEjD,yCAAyC;IACzC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB,uCAAuC;IACvC,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC;IAE5B;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAE5B;;;;;;;;;;;;;;;OAeG;IACH,kBAAkB,CAAC,EAAE,cAAc,EAAE,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,YAqC5D"}
@@ -1,9 +1,8 @@
1
1
  import { memo as _$memo, createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
2
  import { Block, Declaration, join, Name, Scope } from "@alloy-js/core";
3
3
  import { computeModifiersPrefix, getAccessModifier, makeModifiers } from "../../modifiers.js";
4
- import { useCSharpNamePolicy } from "../../name-policy.js";
5
- import { CSharpOutputSymbol } from "../../symbols/csharp-output-symbol.js";
6
- import { CSharpMemberScope } from "../../symbols/scopes.js";
4
+ import { createClassScope } from "../../scopes/factories.js";
5
+ import { createNamedTypeSymbol } from "../../symbols/factories.js";
7
6
  import { AttributeList } from "../attributes/attributes.js";
8
7
  import { DocWhen } from "../doc/comment.js";
9
8
  import { Parameters } from "../parameters/parameters.js";
@@ -38,18 +37,10 @@ const getClassModifiers = makeModifiers(["abstract", "sealed", "static", "partia
38
37
  * ```
39
38
  */
40
39
  export function ClassDeclaration(props) {
41
- const name = useCSharpNamePolicy().getName(props.name, "class");
42
- const thisClassSymbol = new CSharpOutputSymbol(name, {
40
+ const thisClassSymbol = createNamedTypeSymbol(props.name, "class", {
43
41
  refkeys: props.refkey
44
42
  });
45
-
46
- // this creates a new scope for the class definition.
47
- // members will automatically "inherit" this scope so
48
- // that refkeys to them will produce the fully-qualified
49
- // name e.g. Foo.Bar.
50
- const thisClassScope = new CSharpMemberScope("class-decl", {
51
- owner: thisClassSymbol
52
- });
43
+ const thisClassScope = createClassScope(thisClassSymbol);
53
44
  const bases = [...(props.baseType ? [props.baseType] : []), ...(props.interfaceTypes || [])];
54
45
  const base = bases.length > 0 ? [" : ", _$memo(() => join(bases, {
55
46
  joiner: ", "
@@ -67,34 +58,29 @@ export function ClassDeclaration(props) {
67
58
  return props.attributes;
68
59
  },
69
60
  endline: true
70
- }), modifiers, "class ", _$createComponent(Name, {}), _$memo(() => _$memo(() => !!props.typeParameters)() && _$createComponent(TypeParameters, {
71
- get parameters() {
72
- return props.typeParameters;
73
- }
74
- })), _$memo(() => _$memo(() => !!props.primaryConstructor)() && _$createComponent(Scope, {
61
+ }), modifiers, "class ", _$createComponent(Name, {}), _$createComponent(Scope, {
75
62
  value: thisClassScope,
76
63
  get children() {
77
- return _$createComponent(Parameters, {
64
+ return [_$memo(() => _$memo(() => !!props.typeParameters)() && _$createComponent(TypeParameters, {
65
+ get parameters() {
66
+ return props.typeParameters;
67
+ }
68
+ })), _$memo(() => _$memo(() => !!props.primaryConstructor)() && _$createComponent(Parameters, {
78
69
  get parameters() {
79
70
  return props.primaryConstructor;
80
71
  }
81
- });
82
- }
83
- })), base, _$memo(() => _$memo(() => !!props.typeParameters)() && _$createComponent(TypeParameterConstraints, {
84
- get parameters() {
85
- return props.typeParameters;
86
- }
87
- })), _$memo(() => !props.children && ";"), _$memo(() => _$memo(() => !!props.children)() && _$createComponent(Block, {
88
- newline: true,
89
- get children() {
90
- return _$createComponent(Scope, {
91
- value: thisClassScope,
72
+ })), base, _$memo(() => _$memo(() => !!props.typeParameters)() && _$createComponent(TypeParameterConstraints, {
73
+ get parameters() {
74
+ return props.typeParameters;
75
+ }
76
+ })), _$memo(() => !props.children && ";"), _$memo(() => _$memo(() => !!props.children)() && _$createComponent(Block, {
77
+ newline: true,
92
78
  get children() {
93
79
  return props.children;
94
80
  }
95
- });
81
+ }))];
96
82
  }
97
- }))];
83
+ })];
98
84
  }
99
85
  });
100
86
  }