@alloy-js/csharp 0.20.0-dev.3 → 0.20.0-dev.5

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 (346) 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 +5 -14
  4. package/dist/src/components/Declaration.js.map +1 -0
  5. package/dist/src/components/Name.js +2 -1
  6. package/dist/src/components/Name.js.map +1 -0
  7. package/dist/src/components/ProjectDirectory.js +2 -1
  8. package/dist/src/components/ProjectDirectory.js.map +1 -0
  9. package/dist/src/components/Reference.d.ts.map +1 -1
  10. package/dist/src/components/Reference.js +7 -2
  11. package/dist/src/components/Reference.js.map +1 -0
  12. package/dist/src/components/SourceFile.d.ts +8 -9
  13. package/dist/src/components/SourceFile.d.ts.map +1 -1
  14. package/dist/src/components/SourceFile.js +71 -46
  15. package/dist/src/components/SourceFile.js.map +1 -0
  16. package/dist/src/components/UsingDirective.d.ts +5 -1
  17. package/dist/src/components/UsingDirective.d.ts.map +1 -1
  18. package/dist/src/components/UsingDirective.js +5 -2
  19. package/dist/src/components/UsingDirective.js.map +1 -0
  20. package/dist/src/components/attributes/attributes.js +2 -1
  21. package/dist/src/components/attributes/attributes.js.map +1 -0
  22. package/dist/src/components/attributes/attributes.test.js +2 -1
  23. package/dist/src/components/attributes/attributes.test.js.map +1 -0
  24. package/dist/src/components/class/declaration.d.ts +2 -2
  25. package/dist/src/components/class/declaration.d.ts.map +1 -1
  26. package/dist/src/components/class/declaration.js +20 -33
  27. package/dist/src/components/class/declaration.js.map +1 -0
  28. package/dist/src/components/class/declaration.test.js +173 -194
  29. package/dist/src/components/class/declaration.test.js.map +1 -0
  30. package/dist/src/components/constructor/constructor.d.ts.map +1 -1
  31. package/dist/src/components/constructor/constructor.js +13 -17
  32. package/dist/src/components/constructor/constructor.js.map +1 -0
  33. package/dist/src/components/constructor/constructor.test.js +12 -20
  34. package/dist/src/components/constructor/constructor.test.js.map +1 -0
  35. package/dist/src/components/doc/comment.js +2 -1
  36. package/dist/src/components/doc/comment.js.map +1 -0
  37. package/dist/src/components/doc/comment.test.js +2 -1
  38. package/dist/src/components/doc/comment.test.js.map +1 -0
  39. package/dist/src/components/doc/from-markdown.js +2 -1
  40. package/dist/src/components/doc/from-markdown.js.map +1 -0
  41. package/dist/src/components/doc/from-markdown.test.js +2 -1
  42. package/dist/src/components/doc/from-markdown.test.js.map +1 -0
  43. package/dist/src/components/{EnumDeclaration.d.ts → enum/declaration.d.ts} +6 -11
  44. package/dist/src/components/enum/declaration.d.ts.map +1 -0
  45. package/dist/src/components/enum/declaration.js +55 -0
  46. package/dist/src/components/enum/declaration.js.map +1 -0
  47. package/dist/src/components/enum/declaration.ref.test.d.ts +2 -0
  48. package/dist/src/components/enum/declaration.ref.test.d.ts.map +1 -0
  49. package/dist/src/components/enum/declaration.ref.test.js +121 -0
  50. package/dist/src/components/enum/declaration.ref.test.js.map +1 -0
  51. package/dist/src/components/enum/declaration.test.d.ts +2 -0
  52. package/dist/src/components/enum/declaration.test.d.ts.map +1 -0
  53. package/dist/src/components/enum/declaration.test.js +40 -0
  54. package/dist/src/components/enum/declaration.test.js.map +1 -0
  55. package/dist/src/components/enum/member.d.ts +7 -0
  56. package/dist/src/components/enum/member.d.ts.map +1 -0
  57. package/dist/src/components/enum/member.js +30 -0
  58. package/dist/src/components/enum/member.js.map +1 -0
  59. package/dist/src/components/enum/member.test.d.ts +2 -0
  60. package/dist/src/components/enum/member.test.d.ts.map +1 -0
  61. package/dist/src/components/enum/member.test.js +29 -0
  62. package/dist/src/components/enum/member.test.js.map +1 -0
  63. package/dist/src/components/field/field.d.ts.map +1 -1
  64. package/dist/src/components/field/field.js +11 -15
  65. package/dist/src/components/field/field.js.map +1 -0
  66. package/dist/src/components/field/field.test.js +9 -8
  67. package/dist/src/components/field/field.test.js.map +1 -0
  68. package/dist/src/components/index.d.ts +5 -2
  69. package/dist/src/components/index.d.ts.map +1 -1
  70. package/dist/src/components/index.js +7 -3
  71. package/dist/src/components/index.js.map +1 -0
  72. package/dist/src/components/interface/declaration.d.ts.map +1 -1
  73. package/dist/src/components/interface/declaration.js +21 -22
  74. package/dist/src/components/interface/declaration.js.map +1 -0
  75. package/dist/src/components/interface/declaration.test.js +28 -36
  76. package/dist/src/components/interface/declaration.test.js.map +1 -0
  77. package/dist/src/components/interface/method.d.ts.map +1 -1
  78. package/dist/src/components/interface/method.js +9 -16
  79. package/dist/src/components/interface/method.js.map +1 -0
  80. package/dist/src/components/interface/method.test.js +40 -48
  81. package/dist/src/components/interface/method.test.js.map +1 -0
  82. package/dist/src/components/interface/property.d.ts.map +1 -1
  83. package/dist/src/components/interface/property.js +23 -37
  84. package/dist/src/components/interface/property.js.map +1 -0
  85. package/dist/src/components/interface/property.test.js +13 -12
  86. package/dist/src/components/interface/property.test.js.map +1 -0
  87. package/dist/src/components/lexical-scope.d.ts +8 -0
  88. package/dist/src/components/lexical-scope.d.ts.map +1 -0
  89. package/dist/src/components/lexical-scope.js +25 -0
  90. package/dist/src/components/lexical-scope.js.map +1 -0
  91. package/dist/src/components/method/method.d.ts +5 -2
  92. package/dist/src/components/method/method.d.ts.map +1 -1
  93. package/dist/src/components/method/method.js +9 -14
  94. package/dist/src/components/method/method.js.map +1 -0
  95. package/dist/src/components/method/method.test.js +13 -12
  96. package/dist/src/components/method/method.test.js.map +1 -0
  97. package/dist/src/components/method-scope.d.ts +8 -0
  98. package/dist/src/components/method-scope.d.ts.map +1 -0
  99. package/dist/src/components/method-scope.js +25 -0
  100. package/dist/src/components/method-scope.js.map +1 -0
  101. package/dist/src/components/namespace-scopes.d.ts +13 -0
  102. package/dist/src/components/namespace-scopes.d.ts.map +1 -0
  103. package/dist/src/components/namespace-scopes.js +45 -0
  104. package/dist/src/components/namespace-scopes.js.map +1 -0
  105. package/dist/src/components/namespace.d.ts +7 -0
  106. package/dist/src/components/namespace.d.ts.map +1 -0
  107. package/dist/src/components/namespace.js +47 -0
  108. package/dist/src/components/namespace.js.map +1 -0
  109. package/dist/src/components/namespace.ref.test.d.ts +2 -0
  110. package/dist/src/components/namespace.ref.test.d.ts.map +1 -0
  111. package/dist/src/components/namespace.ref.test.js +182 -0
  112. package/dist/src/components/namespace.ref.test.js.map +1 -0
  113. package/dist/src/components/namespace.test.d.ts.map +1 -0
  114. package/dist/src/components/namespace.test.js +79 -0
  115. package/dist/src/components/namespace.test.js.map +1 -0
  116. package/dist/src/components/parameters/parameters.d.ts +2 -2
  117. package/dist/src/components/parameters/parameters.d.ts.map +1 -1
  118. package/dist/src/components/parameters/parameters.js +14 -12
  119. package/dist/src/components/parameters/parameters.js.map +1 -0
  120. package/dist/src/components/parameters/parameters.test.d.ts +2 -0
  121. package/dist/src/components/parameters/parameters.test.d.ts.map +1 -0
  122. package/dist/src/components/parameters/parameters.test.js +88 -0
  123. package/dist/src/components/parameters/parameters.test.js.map +1 -0
  124. package/dist/src/components/property/property.d.ts.map +1 -1
  125. package/dist/src/components/property/property.js +23 -37
  126. package/dist/src/components/property/property.js.map +1 -0
  127. package/dist/src/components/property/property.test.js +16 -15
  128. package/dist/src/components/property/property.test.js.map +1 -0
  129. package/dist/src/components/record/declaration.d.ts.map +1 -1
  130. package/dist/src/components/record/declaration.js +10 -13
  131. package/dist/src/components/record/declaration.js.map +1 -0
  132. package/dist/src/components/record/declaration.test.js +8 -14
  133. package/dist/src/components/record/declaration.test.js.map +1 -0
  134. package/dist/src/components/stc/index.js +2 -1
  135. package/dist/src/components/stc/index.js.map +1 -0
  136. package/dist/src/components/struct/declaration.d.ts.map +1 -1
  137. package/dist/src/components/struct/declaration.js +6 -7
  138. package/dist/src/components/struct/declaration.js.map +1 -0
  139. package/dist/src/components/struct/declaration.test.js +32 -40
  140. package/dist/src/components/struct/declaration.test.js.map +1 -0
  141. package/dist/src/components/type-parameters/type-parameter-constraints.js +2 -1
  142. package/dist/src/components/type-parameters/type-parameter-constraints.js.map +1 -0
  143. package/dist/src/components/type-parameters/type-parameter-constraints.test.js +2 -1
  144. package/dist/src/components/type-parameters/type-parameter-constraints.test.js.map +1 -0
  145. package/dist/src/components/type-parameters/type-parameter.d.ts.map +1 -1
  146. package/dist/src/components/type-parameters/type-parameter.js +9 -11
  147. package/dist/src/components/type-parameters/type-parameter.js.map +1 -0
  148. package/dist/src/components/type-parameters/type-parameters.js +2 -1
  149. package/dist/src/components/type-parameters/type-parameters.js.map +1 -0
  150. package/dist/src/components/type-parameters/type-parameters.test.js +5 -4
  151. package/dist/src/components/type-parameters/type-parameters.test.js.map +1 -0
  152. package/dist/src/components/var/declaration.d.ts.map +1 -1
  153. package/dist/src/components/var/declaration.js +8 -9
  154. package/dist/src/components/var/declaration.js.map +1 -0
  155. package/dist/src/components/var/declaration.test.js +13 -21
  156. package/dist/src/components/var/declaration.test.js.map +1 -0
  157. package/dist/src/contexts/global-namespace.d.ts +5 -0
  158. package/dist/src/contexts/global-namespace.d.ts.map +1 -0
  159. package/dist/src/contexts/global-namespace.js +25 -0
  160. package/dist/src/contexts/global-namespace.js.map +1 -0
  161. package/dist/src/contexts/namespace.d.ts +8 -0
  162. package/dist/src/contexts/namespace.d.ts.map +1 -0
  163. package/dist/src/contexts/namespace.js +6 -0
  164. package/dist/src/contexts/namespace.js.map +1 -0
  165. package/dist/src/index.d.ts +1 -0
  166. package/dist/src/index.d.ts.map +1 -1
  167. package/dist/src/index.js +3 -1
  168. package/dist/src/index.js.map +1 -0
  169. package/dist/src/modifiers.d.ts +11 -0
  170. package/dist/src/modifiers.d.ts.map +1 -1
  171. package/dist/src/modifiers.js +2 -1
  172. package/dist/src/modifiers.js.map +1 -0
  173. package/dist/src/name-policy.js +2 -1
  174. package/dist/src/name-policy.js.map +1 -0
  175. package/dist/src/scopes/class.d.ts +10 -0
  176. package/dist/src/scopes/class.d.ts.map +1 -0
  177. package/dist/src/scopes/class.js +11 -0
  178. package/dist/src/scopes/class.js.map +1 -0
  179. package/dist/src/scopes/contexts.d.ts +9 -0
  180. package/dist/src/scopes/contexts.d.ts.map +1 -0
  181. package/dist/src/scopes/contexts.js +34 -0
  182. package/dist/src/scopes/contexts.js.map +1 -0
  183. package/dist/src/scopes/csharp.d.ts +8 -0
  184. package/dist/src/scopes/csharp.d.ts.map +1 -0
  185. package/dist/src/scopes/csharp.js +12 -0
  186. package/dist/src/scopes/csharp.js.map +1 -0
  187. package/dist/src/scopes/factories.d.ts +9 -0
  188. package/dist/src/scopes/factories.d.ts.map +1 -0
  189. package/dist/src/scopes/factories.js +24 -0
  190. package/dist/src/scopes/factories.js.map +1 -0
  191. package/dist/src/scopes/index.d.ts +10 -0
  192. package/dist/src/scopes/index.d.ts.map +1 -0
  193. package/dist/src/scopes/index.js +10 -0
  194. package/dist/src/scopes/index.js.map +1 -0
  195. package/dist/src/scopes/lexical.d.ts +7 -0
  196. package/dist/src/scopes/lexical.d.ts.map +1 -0
  197. package/dist/src/scopes/lexical.js +8 -0
  198. package/dist/src/scopes/lexical.js.map +1 -0
  199. package/dist/src/scopes/method.d.ts +9 -0
  200. package/dist/src/scopes/method.d.ts.map +1 -0
  201. package/dist/src/scopes/method.js +14 -0
  202. package/dist/src/scopes/method.js.map +1 -0
  203. package/dist/src/scopes/named-type.d.ts +22 -0
  204. package/dist/src/scopes/named-type.d.ts.map +1 -0
  205. package/dist/src/scopes/named-type.js +33 -0
  206. package/dist/src/scopes/named-type.js.map +1 -0
  207. package/dist/src/scopes/namespace.d.ts +11 -0
  208. package/dist/src/scopes/namespace.d.ts.map +1 -0
  209. package/dist/src/scopes/namespace.js +39 -0
  210. package/dist/src/scopes/namespace.js.map +1 -0
  211. package/dist/src/scopes/source-file.d.ts +16 -0
  212. package/dist/src/scopes/source-file.d.ts.map +1 -0
  213. package/dist/src/scopes/source-file.js +44 -0
  214. package/dist/src/scopes/source-file.js.map +1 -0
  215. package/dist/src/symbols/csharp.d.ts +76 -0
  216. package/dist/src/symbols/csharp.d.ts.map +1 -0
  217. package/dist/src/symbols/csharp.js +223 -0
  218. package/dist/src/symbols/csharp.js.map +1 -0
  219. package/dist/src/symbols/factories.d.ts +25 -0
  220. package/dist/src/symbols/factories.d.ts.map +1 -0
  221. package/dist/src/symbols/factories.js +87 -0
  222. package/dist/src/symbols/factories.js.map +1 -0
  223. package/dist/src/symbols/index.d.ts +5 -2
  224. package/dist/src/symbols/index.d.ts.map +1 -1
  225. package/dist/src/symbols/index.js +6 -2
  226. package/dist/src/symbols/index.js.map +1 -0
  227. package/dist/src/symbols/method.d.ts +13 -0
  228. package/dist/src/symbols/method.d.ts.map +1 -0
  229. package/dist/src/symbols/method.js +16 -0
  230. package/dist/src/symbols/method.js.map +1 -0
  231. package/dist/src/symbols/named-type.d.ts +19 -0
  232. package/dist/src/symbols/named-type.d.ts.map +1 -0
  233. package/dist/src/symbols/named-type.js +31 -0
  234. package/dist/src/symbols/named-type.js.map +1 -0
  235. package/dist/src/symbols/namespace.d.ts +22 -0
  236. package/dist/src/symbols/namespace.d.ts.map +1 -0
  237. package/dist/src/symbols/namespace.js +45 -0
  238. package/dist/src/symbols/namespace.js.map +1 -0
  239. package/dist/src/symbols/reference.d.ts +2 -2
  240. package/dist/src/symbols/reference.d.ts.map +1 -1
  241. package/dist/src/symbols/reference.js +38 -44
  242. package/dist/src/symbols/reference.js.map +1 -0
  243. package/dist/test/project-directory.test.js +14 -17
  244. package/dist/test/project-directory.test.js.map +1 -0
  245. package/dist/test/sourcefile.test.js +8 -19
  246. package/dist/test/sourcefile.test.js.map +1 -0
  247. package/dist/test/using.test.js +20 -17
  248. package/dist/test/using.test.js.map +1 -0
  249. package/dist/test/utils.js +4 -3
  250. package/dist/test/utils.js.map +1 -0
  251. package/dist/test/vitest.setup.js +2 -1
  252. package/dist/test/vitest.setup.js.map +1 -0
  253. package/dist/tsconfig.tsbuildinfo +1 -1
  254. package/package.json +9 -3
  255. package/src/components/Declaration.tsx +3 -6
  256. package/src/components/Reference.tsx +3 -1
  257. package/src/components/SourceFile.tsx +68 -55
  258. package/src/components/UsingDirective.tsx +12 -2
  259. package/src/components/class/declaration.test.tsx +120 -143
  260. package/src/components/class/declaration.tsx +19 -32
  261. package/src/components/constructor/constructor.test.tsx +10 -16
  262. package/src/components/constructor/constructor.tsx +13 -27
  263. package/src/components/enum/declaration.ref.test.tsx +93 -0
  264. package/src/components/enum/declaration.test.tsx +34 -0
  265. package/src/components/enum/declaration.tsx +65 -0
  266. package/src/components/enum/member.test.tsx +24 -0
  267. package/src/components/enum/member.tsx +36 -0
  268. package/src/components/field/field.test.tsx +7 -7
  269. package/src/components/field/field.tsx +12 -14
  270. package/src/components/index.ts +5 -2
  271. package/src/components/interface/declaration.test.tsx +26 -32
  272. package/src/components/interface/declaration.tsx +16 -18
  273. package/src/components/interface/method.test.tsx +38 -44
  274. package/src/components/interface/method.tsx +7 -19
  275. package/src/components/interface/property.test.tsx +11 -11
  276. package/src/components/interface/property.tsx +15 -33
  277. package/src/components/lexical-scope.tsx +29 -0
  278. package/src/components/method/method.test.tsx +11 -11
  279. package/src/components/method/method.tsx +12 -18
  280. package/src/components/method-scope.tsx +27 -0
  281. package/src/components/namespace-scopes.tsx +44 -0
  282. package/src/components/namespace.ref.test.tsx +139 -0
  283. package/src/components/namespace.test.tsx +52 -0
  284. package/src/components/namespace.tsx +45 -0
  285. package/src/components/parameters/parameters.test.tsx +71 -0
  286. package/src/components/parameters/parameters.tsx +9 -16
  287. package/src/components/property/property.test.tsx +14 -14
  288. package/src/components/property/property.tsx +17 -38
  289. package/src/components/record/declaration.test.tsx +5 -12
  290. package/src/components/record/declaration.tsx +10 -11
  291. package/src/components/struct/declaration.test.tsx +16 -22
  292. package/src/components/struct/declaration.tsx +4 -6
  293. package/src/components/type-parameters/type-parameter.tsx +14 -11
  294. package/src/components/type-parameters/type-parameters.test.tsx +4 -4
  295. package/src/components/var/declaration.test.tsx +8 -14
  296. package/src/components/var/declaration.tsx +12 -6
  297. package/src/contexts/global-namespace.ts +29 -0
  298. package/src/contexts/namespace.ts +13 -0
  299. package/src/index.ts +1 -0
  300. package/src/modifiers.ts +14 -0
  301. package/src/scopes/class.ts +12 -0
  302. package/src/scopes/contexts.ts +45 -0
  303. package/src/scopes/csharp.ts +18 -0
  304. package/src/scopes/factories.ts +45 -0
  305. package/src/scopes/index.ts +9 -0
  306. package/src/scopes/lexical.ts +10 -0
  307. package/src/scopes/method.ts +22 -0
  308. package/src/scopes/named-type.ts +44 -0
  309. package/src/scopes/namespace.ts +59 -0
  310. package/src/scopes/source-file.ts +67 -0
  311. package/src/symbols/csharp.ts +307 -0
  312. package/src/symbols/factories.ts +199 -0
  313. package/src/symbols/index.ts +5 -2
  314. package/src/symbols/method.ts +26 -0
  315. package/src/symbols/named-type.ts +54 -0
  316. package/src/symbols/namespace.ts +62 -0
  317. package/src/symbols/reference.ts +47 -50
  318. package/temp/api.json +6251 -2454
  319. package/test/project-directory.test.tsx +12 -16
  320. package/test/sourcefile.test.tsx +7 -21
  321. package/test/using.test.tsx +18 -16
  322. package/test/utils.tsx +1 -1
  323. package/tsconfig.json +4 -1
  324. package/dist/src/components/EnumDeclaration.d.ts.map +0 -1
  325. package/dist/src/components/EnumDeclaration.js +0 -82
  326. package/dist/src/components/Namespace.d.ts +0 -11
  327. package/dist/src/components/Namespace.d.ts.map +0 -1
  328. package/dist/src/components/Namespace.js +0 -33
  329. package/dist/src/symbols/csharp-output-symbol.d.ts +0 -8
  330. package/dist/src/symbols/csharp-output-symbol.d.ts.map +0 -1
  331. package/dist/src/symbols/csharp-output-symbol.js +0 -19
  332. package/dist/src/symbols/scopes.d.ts +0 -20
  333. package/dist/src/symbols/scopes.d.ts.map +0 -1
  334. package/dist/src/symbols/scopes.js +0 -42
  335. package/dist/test/enum.test.d.ts +0 -2
  336. package/dist/test/enum.test.d.ts.map +0 -1
  337. package/dist/test/enum.test.js +0 -178
  338. package/dist/test/namespace.test.d.ts.map +0 -1
  339. package/dist/test/namespace.test.js +0 -81
  340. package/src/components/EnumDeclaration.tsx +0 -98
  341. package/src/components/Namespace.tsx +0 -35
  342. package/src/symbols/csharp-output-symbol.ts +0 -22
  343. package/src/symbols/scopes.ts +0 -61
  344. package/test/enum.test.tsx +0 -149
  345. package/test/namespace.test.tsx +0 -55
  346. /package/dist/{test → src/components}/namespace.test.d.ts +0 -0
@@ -0,0 +1,223 @@
1
+ import { OutputDeclarationSpace, OutputMemberSpace, OutputSymbol, track, TrackOpTypes, trigger, TriggerOpTypes, watch } from "@alloy-js/core";
2
+ /**
3
+ * This is the base type for all symbols in C#.
4
+ *
5
+ * Many subtypes of this symbol exist for specific purposes. However, this symbol
6
+ * may be used in cases where a more specific symbol is not required.
7
+ *
8
+ * @remarks
9
+ *
10
+ * This is roughly equivalent to the Roslyn ISymbol interface:
11
+ * https://learn.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.isymbol?view=roslyn-dotnet-4.13.0
12
+ */
13
+ export class CSharpSymbol extends OutputSymbol {
14
+ symbolKind = "symbol";
15
+ constructor(name, spaces, options = {}) {
16
+ super(name, spaces, options);
17
+ this.#accessibility = options.accessibility;
18
+ this.#isAbstract = options.isAbstract ?? false;
19
+ this.#isVirtual = options.isVirtual ?? false;
20
+ this.#isStatic = options.isStatic ?? false;
21
+ this.#isOverride = options.isOverride ?? false;
22
+ this.#isSealed = options.isSealed ?? false;
23
+ this.#isExtern = options.isExtern ?? false;
24
+ this.#isReadOnly = options.isReadOnly ?? false;
25
+ }
26
+ get enclosingNamespace() {
27
+ if (this.spaces.length === 0) {
28
+ return undefined;
29
+ }
30
+
31
+ // todo: probably need to validate that a symbol can't belong to spaces in
32
+ // multiple namespaces.
33
+ const firstSpace = this.spaces[0];
34
+ if (firstSpace instanceof OutputMemberSpace) {
35
+ // this symbol is a member of something, so get the enclosing namespace from
36
+ // the symbol.
37
+
38
+ if (firstSpace.symbol.constructor.name === "NamespaceSymbol") {
39
+ // this is a namespace symbol, so return the namespace symbol itself.
40
+ // can't use instanceof here due to circular reference issues.
41
+ return firstSpace.symbol;
42
+ }
43
+ return firstSpace.symbol.enclosingNamespace;
44
+ } else if (firstSpace instanceof OutputDeclarationSpace) {
45
+ // this symbol is in a lexical scope, so get the namespace symbol from the
46
+ // scope.
47
+ return firstSpace.scope.enclosingNamespace;
48
+ }
49
+ throw new Error("No place to get namespace symbol from");
50
+ return undefined;
51
+ }
52
+ #accessibility;
53
+ get accessibility() {
54
+ track(this, TrackOpTypes.GET, "accessibility");
55
+ return this.#accessibility;
56
+ }
57
+ set accessibility(value) {
58
+ const old = this.#accessibility;
59
+ if (old === value) {
60
+ return;
61
+ }
62
+ this.#accessibility = value;
63
+ trigger(this, TriggerOpTypes.SET, "accessibility", value, old);
64
+ }
65
+ copy() {
66
+ const options = this.getCopyOptions();
67
+ const copy = new CSharpSymbol(this.name, undefined, {
68
+ ...options,
69
+ accessibility: this.#accessibility,
70
+ isStatic: this.#isStatic,
71
+ isVirtual: this.#isVirtual,
72
+ isAbstract: this.#isAbstract,
73
+ isOverride: this.#isOverride,
74
+ isSealed: this.#isSealed,
75
+ isExtern: this.#isExtern,
76
+ isReadOnly: this.#isReadOnly
77
+ });
78
+ this.initializeCopy(copy);
79
+ watch(() => this.accessibility, newAccessibility => {
80
+ copy.accessibility = newAccessibility;
81
+ });
82
+ return copy;
83
+ }
84
+
85
+ /**
86
+ * Whether this symbol is static.
87
+ */
88
+ get isStatic() {
89
+ track(this, TrackOpTypes.GET, "isStatic");
90
+ return this.#isStatic;
91
+ }
92
+ set isStatic(value) {
93
+ const old = this.#isStatic;
94
+ if (old === value) {
95
+ return;
96
+ }
97
+ this.#isStatic = value;
98
+ trigger(this, TriggerOpTypes.SET, "isStatic", value, old);
99
+ }
100
+ #isStatic = false;
101
+
102
+ /**
103
+ * Whether this symbol is virtual.
104
+ */
105
+ get isVirtual() {
106
+ track(this, TrackOpTypes.GET, "isVirtual");
107
+ return this.#isVirtual;
108
+ }
109
+ set isVirtual(value) {
110
+ const old = this.#isVirtual;
111
+ if (old === value) {
112
+ return;
113
+ }
114
+ this.#isVirtual = value;
115
+ trigger(this, TriggerOpTypes.SET, "isVirtual", value, old);
116
+ }
117
+ #isVirtual = false;
118
+
119
+ /**
120
+ * Whether this symbol is abstract.
121
+ */
122
+ get isAbstract() {
123
+ track(this, TrackOpTypes.GET, "isAbstract");
124
+ return this.#isAbstract;
125
+ }
126
+ set isAbstract(value) {
127
+ const old = this.#isAbstract;
128
+ if (old === value) {
129
+ return;
130
+ }
131
+ this.#isAbstract = value;
132
+ trigger(this, TriggerOpTypes.SET, "isAbstract", value, old);
133
+ }
134
+ #isAbstract = false;
135
+
136
+ /**
137
+ * Whether this symbol is override.
138
+ */
139
+ get isOverride() {
140
+ track(this, TrackOpTypes.GET, "isOverride");
141
+ return this.#isOverride;
142
+ }
143
+ set isOverride(value) {
144
+ const old = this.#isOverride;
145
+ if (old === value) {
146
+ return;
147
+ }
148
+ this.#isOverride = value;
149
+ trigger(this, TriggerOpTypes.SET, "isOverride", value, old);
150
+ }
151
+ #isOverride = false;
152
+
153
+ /**
154
+ * Whether this symbol is sealed.
155
+ */
156
+ get isSealed() {
157
+ track(this, TrackOpTypes.GET, "isSealed");
158
+ return this.#isSealed;
159
+ }
160
+ set isSealed(value) {
161
+ const old = this.#isSealed;
162
+ if (old === value) {
163
+ return;
164
+ }
165
+ this.#isSealed = value;
166
+ trigger(this, TriggerOpTypes.SET, "isSealed", value, old);
167
+ }
168
+ #isSealed = false;
169
+
170
+ /**
171
+ * Whether this symbol is extern.
172
+ */
173
+ get isExtern() {
174
+ track(this, TrackOpTypes.GET, "isExtern");
175
+ return this.#isExtern;
176
+ }
177
+ set isExtern(value) {
178
+ const old = this.#isExtern;
179
+ if (old === value) {
180
+ return;
181
+ }
182
+ this.#isExtern = value;
183
+ trigger(this, TriggerOpTypes.SET, "isExtern", value, old);
184
+ }
185
+ #isExtern = false;
186
+
187
+ /**
188
+ * Whether this symbol is readonly.
189
+ */
190
+ get isReadOnly() {
191
+ track(this, TrackOpTypes.GET, "isReadOnly");
192
+ return this.#isReadOnly;
193
+ }
194
+ set isReadOnly(value) {
195
+ const old = this.#isReadOnly;
196
+ if (old === value) {
197
+ return;
198
+ }
199
+ this.#isReadOnly = value;
200
+ trigger(this, TriggerOpTypes.SET, "isReadOnly", value, old);
201
+ }
202
+ #isReadOnly = false;
203
+ }
204
+ export function accessibilityFromProps(props) {
205
+ for (const key of ["public", "internal", "protected", "private"]) {
206
+ if (props[key]) {
207
+ return key;
208
+ }
209
+ }
210
+ return "private";
211
+ }
212
+ export function nonAccessibilityFromProps(props) {
213
+ return {
214
+ isOverride: props.override ?? false,
215
+ isAbstract: props.abstract ?? false,
216
+ isVirtual: props.virtual ?? false,
217
+ isStatic: props.static ?? false,
218
+ isSealed: props.sealed ?? false,
219
+ isExtern: props.extern ?? false,
220
+ isReadOnly: props.readOnly ?? false
221
+ };
222
+ }
223
+ //# sourceMappingURL=csharp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["OutputDeclarationSpace","OutputMemberSpace","OutputSymbol","track","TrackOpTypes","trigger","TriggerOpTypes","watch","CSharpSymbol","symbolKind","constructor","name","spaces","options","accessibility","isAbstract","isVirtual","isStatic","isOverride","isSealed","isExtern","isReadOnly","enclosingNamespace","length","undefined","firstSpace","symbol","scope","Error","GET","value","old","SET","copy","getCopyOptions","initializeCopy","newAccessibility","accessibilityFromProps","props","key","nonAccessibilityFromProps","override","abstract","virtual","static","sealed","extern","readOnly"],"sources":["../../../src/symbols/csharp.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,25 @@
1
+ import { Namekey, OutputSymbolOptions } from "@alloy-js/core";
2
+ import { CSharpMethodScope } from "../scopes/method.js";
3
+ import { CSharpNamedTypeScope } from "../scopes/named-type.js";
4
+ import { CSharpSymbol, CSharpSymbolOptions } from "./csharp.js";
5
+ import { MethodKinds, MethodSymbol } from "./method.js";
6
+ import { NamedTypeSymbol, NamedTypeTypeKind } from "./named-type.js";
7
+ import { NamespaceSymbol } from "./namespace.js";
8
+ /**
9
+ * Create a symbol for a parameter in the current method scope.
10
+ */
11
+ export declare function createParameterSymbol(originalName: string | Namekey, options?: CSharpSymbolOptions): CSharpSymbol;
12
+ export interface CreateTypeParameterSymbolOptions extends CSharpSymbolOptions {
13
+ scope?: CSharpMethodScope | CSharpNamedTypeScope;
14
+ }
15
+ export declare function createTypeParameterSymbol(originalName: string | Namekey, options?: CreateTypeParameterSymbolOptions): CSharpSymbol;
16
+ export declare function createFieldSymbol(originalName: string | Namekey, options?: CSharpSymbolOptions): CSharpSymbol;
17
+ export declare function createNamedTypeSymbol(name: string | Namekey, kind: NamedTypeTypeKind, options?: OutputSymbolOptions): NamedTypeSymbol;
18
+ export declare function createNamespaceSymbol(name: string): NamespaceSymbol;
19
+ export interface CreateMethodSymbolOptions extends CSharpSymbolOptions {
20
+ methodKind?: MethodKinds;
21
+ }
22
+ export declare function createMethodSymbol(originalName: string | Namekey, options?: CreateMethodSymbolOptions): MethodSymbol;
23
+ export declare function createPropertySymbol(name: string | Namekey, options: CSharpSymbolOptions): CSharpSymbol;
24
+ export declare function createVariableSymbol(originalName: string | Namekey, options?: CSharpSymbolOptions): CSharpSymbol;
25
+ //# sourceMappingURL=factories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../../../src/symbols/factories.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAEP,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;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,GAAG,OAAO,EACtB,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE,mBAAmB,mBAI9B;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,mBAOjD;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,gBAoBxC;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,GAAG,OAAO,EACtB,OAAO,EAAE,mBAAmB,gBAQ7B;AAED,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,GAAG,OAAO,EAC9B,OAAO,GAAE,mBAAwB,gBA2BlC"}
@@ -0,0 +1,87 @@
1
+ import { useBinder } from "@alloy-js/core";
2
+ import { getGlobalNamespace } from "../contexts/global-namespace.js";
3
+ import { useCSharpNamePolicy } from "../name-policy.js";
4
+ import { CSharpClassScope } from "../scopes/class.js";
5
+ import { useCSharpScope, useNamedTypeScope } from "../scopes/contexts.js";
6
+ import { CSharpLexicalScope } from "../scopes/lexical.js";
7
+ import { CSharpMethodScope } from "../scopes/method.js";
8
+ import { CSharpNamedTypeScope } from "../scopes/named-type.js";
9
+ import { CSharpNamespaceScope, useEnclosingNamespaceScope } from "../scopes/namespace.js";
10
+ import { CSharpSourceFileScope } from "../scopes/source-file.js";
11
+ import { CSharpSymbol } from "./csharp.js";
12
+ import { MethodSymbol } from "./method.js";
13
+ import { NamedTypeSymbol } from "./named-type.js";
14
+ import { NamespaceSymbol } from "./namespace.js";
15
+
16
+ /**
17
+ * Create a symbol for a parameter in the current method scope.
18
+ */
19
+ export function createParameterSymbol(originalName, options = {}) {
20
+ const scope = useCSharpScope();
21
+ if (!(scope instanceof CSharpMethodScope) && !(scope instanceof CSharpClassScope)) {
22
+ throw new Error(`Can't create parameter symbol outside of a method or class scope.`);
23
+ }
24
+ return new CSharpSymbol(originalName, scope.parameters, withNamePolicy(options, "parameter"));
25
+ }
26
+ export function createTypeParameterSymbol(originalName, options = {}) {
27
+ const scope = options.scope ?? useCSharpScope();
28
+ if (!(scope instanceof CSharpMethodScope) && !(scope instanceof CSharpNamedTypeScope)) {
29
+ throw new Error("Can't create a type parameter symbol outside of a method or named type scope.");
30
+ }
31
+ return new CSharpSymbol(originalName, scope.typeParameters, withNamePolicy(options, "type-parameter"));
32
+ }
33
+ export function createFieldSymbol(originalName, options = {}) {
34
+ let nameElement = "class-member-private";
35
+ if (options.accessibility === "public" || options.accessibility === "internal" || options.accessibility === "protected") {
36
+ nameElement = "class-member-public";
37
+ }
38
+ const scope = useNamedTypeScope();
39
+ if (scope.ownerSymbol.typeKind !== "class" && scope.ownerSymbol.typeKind !== "struct") {
40
+ throw new Error(`Can't define a field outside of a class or struct.`);
41
+ }
42
+ return new CSharpSymbol(originalName, scope.members, withNamePolicy(options, nameElement));
43
+ }
44
+ export function createNamedTypeSymbol(name, kind, options) {
45
+ const scope = useNamedTypeScope();
46
+ return new NamedTypeSymbol(name, scope.ownerSymbol.members, kind, options);
47
+ }
48
+ export function createNamespaceSymbol(name) {
49
+ const scope = useEnclosingNamespaceScope();
50
+ const nsSymbol = scope?.ownerSymbol ?? getGlobalNamespace(useBinder());
51
+ if (nsSymbol.members.symbolNames.has(name)) {
52
+ return nsSymbol.members.symbolNames.get(name);
53
+ }
54
+ return new NamespaceSymbol(name, nsSymbol);
55
+ }
56
+ export function createMethodSymbol(originalName, options = {}) {
57
+ const scope = useNamedTypeScope();
58
+ if (scope.ownerSymbol.typeKind !== "class" && scope.ownerSymbol.typeKind !== "interface" && scope.ownerSymbol.typeKind !== "struct") {
59
+ throw new Error(`Can't define a method outside of a class, interface, or struct.`);
60
+ }
61
+ return new MethodSymbol(originalName, scope.members, options.methodKind ?? "ordinary", withNamePolicy(options, "class-method"));
62
+ }
63
+ export function createPropertySymbol(name, options) {
64
+ const scope = useNamedTypeScope();
65
+ return new CSharpSymbol(name, scope.members, withNamePolicy(options, "class-property"));
66
+ }
67
+ export function createVariableSymbol(originalName, options = {}) {
68
+ let scope = useCSharpScope();
69
+ if (scope instanceof CSharpNamespaceScope && scope.ownerSymbol === getGlobalNamespace(scope.ownerSymbol.binder)) {
70
+ // allow top-level variables in the global namespace, which are local to the source file.
71
+ scope = scope.parent;
72
+ if (!(scope instanceof CSharpSourceFileScope)) {
73
+ throw new Error("Variable declarations must be in the global namespace or within a lexical scope.");
74
+ }
75
+ }
76
+ if (!(scope instanceof CSharpLexicalScope)) {
77
+ throw new Error(`Can't create variable symbol outside of a lexical scope, got a ${scope.constructor.name}.`);
78
+ }
79
+ return new CSharpSymbol(originalName, scope.localVariables, withNamePolicy(options, "variable"));
80
+ }
81
+ function withNamePolicy(options, elementType) {
82
+ return {
83
+ ...options,
84
+ namePolicy: options.namePolicy ?? useCSharpNamePolicy().for(elementType)
85
+ };
86
+ }
87
+ //# sourceMappingURL=factories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["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","createNamedTypeSymbol","name","kind","createNamespaceSymbol","nsSymbol","symbolNames","has","get","createMethodSymbol","methodKind","createPropertySymbol","createVariableSymbol","binder","parent","constructor","localVariables","elementType","namePolicy","for"],"sources":["../../../src/symbols/factories.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,7 @@
1
- export * from "./csharp-output-symbol.js";
1
+ export * from "./csharp.js";
2
+ export * from "./factories.js";
3
+ export * from "./method.js";
4
+ export * from "./named-type.js";
5
+ export * from "./namespace.js";
2
6
  export * from "./reference.js";
3
- export * from "./scopes.js";
4
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/symbols/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/symbols/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
@@ -1,3 +1,7 @@
1
- export * from "./csharp-output-symbol.js";
1
+ export * from "./csharp.js";
2
+ export * from "./factories.js";
3
+ export * from "./method.js";
4
+ export * from "./named-type.js";
5
+ export * from "./namespace.js";
2
6
  export * from "./reference.js";
3
- export * from "./scopes.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../../src/symbols/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc,aAAa;AAC3B,cAAc,gBAAgB;AAC9B,cAAc,aAAa;AAC3B,cAAc,iBAAiB;AAC/B,cAAc,gBAAgB;AAC9B,cAAc,gBAAgB","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ import { Namekey, OutputSpace } from "@alloy-js/core";
2
+ import { CSharpSymbol, CSharpSymbolOptions } from "./csharp.js";
3
+ export type MethodKinds = "ordinary" | "constructor";
4
+ /**
5
+ * A symbol for a method or constructor of a class, interface, or struct.
6
+ */
7
+ export declare class MethodSymbol extends CSharpSymbol {
8
+ #private;
9
+ readonly symbolKind = "method";
10
+ get methodKind(): MethodKinds;
11
+ constructor(name: string | Namekey, spaces: OutputSpace | undefined, kind: MethodKinds, options?: CSharpSymbolOptions);
12
+ }
13
+ //# sourceMappingURL=method.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"method.d.ts","sourceRoot":"","sources":["../../../src/symbols/method.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEhE,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,aAAa,CAAC;AAErD;;GAEG;AACH,qBAAa,YAAa,SAAQ,YAAY;;IAC5C,SAAgB,UAAU,YAAY;IAGtC,IAAI,UAAU,gBAEb;gBAGC,IAAI,EAAE,MAAM,GAAG,OAAO,EACtB,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE,mBAAwB;CAKpC"}
@@ -0,0 +1,16 @@
1
+ import { CSharpSymbol } from "./csharp.js";
2
+ /**
3
+ * A symbol for a method or constructor of a class, interface, or struct.
4
+ */
5
+ export class MethodSymbol extends CSharpSymbol {
6
+ symbolKind = "method";
7
+ #methodKind;
8
+ get methodKind() {
9
+ return this.#methodKind;
10
+ }
11
+ constructor(name, spaces, kind, options = {}) {
12
+ super(name, spaces, options);
13
+ this.#methodKind = kind;
14
+ }
15
+ }
16
+ //# sourceMappingURL=method.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CSharpSymbol","MethodSymbol","symbolKind","methodKind","constructor","name","spaces","kind","options"],"sources":["../../../src/symbols/method.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,YAAY,QAA6B,aAAa;AAI/D;AACA;AACA;AACA,OAAO,MAAMC,YAAY,SAASD,YAAY,CAAC;EAC7BE,UAAU,GAAG,QAAQ;EAErC,CAACC,UAAU;EACX,IAAIA,UAAUA,CAAA,EAAG;IACf,OAAO,IAAI,CAAC,CAACA,UAAU;EACzB;EAEAC,WAAWA,CACTC,IAAsB,EACtBC,MAA+B,EAC/BC,IAAiB,EACjBC,OAA4B,GAAG,CAAC,CAAC,EACjC;IACA,KAAK,CAACH,IAAI,EAAEC,MAAM,EAAEE,OAAO,CAAC;IAC5B,IAAI,CAAC,CAACL,UAAU,GAAGI,IAAI;EACzB;AACF","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ import { Namekey, OutputSpace, OutputSymbolOptions } from "@alloy-js/core";
2
+ import { CSharpSymbol } from "./csharp.js";
3
+ export type NamedTypeTypeKind = "class" | "interface" | "enum" | "namespace" | "struct" | "record";
4
+ export type NamedTypeSymbolKind = "named-type" | "namespace";
5
+ /**
6
+ * A symbol for a named type in C# such as a class, interface, enum, and so
7
+ * forth. Named types are generally defined in a namespace, and can have members
8
+ * of their own.
9
+ */
10
+ export declare class NamedTypeSymbol extends CSharpSymbol {
11
+ #private;
12
+ readonly symbolKind: NamedTypeSymbolKind;
13
+ static readonly memberSpaces: string[];
14
+ constructor(name: string | Namekey, spaces: OutputSpace[] | OutputSpace | undefined, kind: NamedTypeTypeKind, options?: OutputSymbolOptions);
15
+ get typeKind(): NamedTypeTypeKind;
16
+ copy(): NamedTypeSymbol;
17
+ get members(): import("@alloy-js/core").OutputMemberSpace;
18
+ }
19
+ //# sourceMappingURL=named-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"named-type.d.ts","sourceRoot":"","sources":["../../../src/symbols/named-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,MAAM,MAAM,iBAAiB,GACzB,OAAO,GACP,WAAW,GACX,MAAM,GACN,WAAW,GACX,QAAQ,GACR,QAAQ,CAAC;AACb,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,WAAW,CAAC;AAE7D;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,YAAY;;IAC/C,SAAgB,UAAU,EAAE,mBAAmB,CAAgB;IAC/D,gBAAuB,YAAY,WAAe;gBAGhD,IAAI,EAAE,MAAM,GAAG,OAAO,EACtB,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,GAAG,SAAS,EAC/C,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE,mBAAmB;IAO/B,IAAI,QAAQ,sBAEX;IAED,IAAI;IAYJ,IAAI,OAAO,+CAEV;CACF"}
@@ -0,0 +1,31 @@
1
+ import { CSharpSymbol } from "./csharp.js";
2
+
3
+ // represents a symbol from a .cs file. Class, enum, interface etc.
4
+
5
+ /**
6
+ * A symbol for a named type in C# such as a class, interface, enum, and so
7
+ * forth. Named types are generally defined in a namespace, and can have members
8
+ * of their own.
9
+ */
10
+ export class NamedTypeSymbol extends CSharpSymbol {
11
+ symbolKind = "named-type";
12
+ static memberSpaces = ["members"];
13
+ constructor(name, spaces, kind, options) {
14
+ super(name, spaces, options);
15
+ this.#typeKind = kind;
16
+ }
17
+ #typeKind;
18
+ get typeKind() {
19
+ return this.#typeKind;
20
+ }
21
+ copy() {
22
+ const options = this.getCopyOptions();
23
+ const copy = new NamedTypeSymbol(this.name, undefined, this.#typeKind, options);
24
+ this.initializeCopy(copy);
25
+ return copy;
26
+ }
27
+ get members() {
28
+ return this.memberSpaceFor("members");
29
+ }
30
+ }
31
+ //# sourceMappingURL=named-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CSharpSymbol","NamedTypeSymbol","symbolKind","memberSpaces","constructor","name","spaces","kind","options","typeKind","copy","getCopyOptions","undefined","initializeCopy","members","memberSpaceFor"],"sources":["../../../src/symbols/named-type.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,YAAY,QAAQ,aAAa;;AAE1C;;AAWA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,eAAe,SAASD,YAAY,CAAC;EAChCE,UAAU,GAAwB,YAAY;EAC9D,OAAuBC,YAAY,GAAG,CAAC,SAAS,CAAC;EAEjDC,WAAWA,CACTC,IAAsB,EACtBC,MAA+C,EAC/CC,IAAuB,EACvBC,OAA6B,EAC7B;IACA,KAAK,CAACH,IAAI,EAAEC,MAAM,EAAEE,OAAO,CAAC;IAC5B,IAAI,CAAC,CAACC,QAAQ,GAAGF,IAAI;EACvB;EAEA,CAACE,QAAQ;EACT,IAAIA,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAAC,CAACA,QAAQ;EACvB;EAEAC,IAAIA,CAAA,EAAG;IACL,MAAMF,OAAO,GAAG,IAAI,CAACG,cAAc,CAAC,CAAC;IACrC,MAAMD,IAAI,GAAG,IAAIT,eAAe,CAC9B,IAAI,CAACI,IAAI,EACTO,SAAS,EACT,IAAI,CAAC,CAACH,QAAQ,EACdD,OACF,CAAC;IACD,IAAI,CAACK,cAAc,CAACH,IAAI,CAAC;IACzB,OAAOA,IAAI;EACb;EAEA,IAAII,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACC,cAAc,CAAC,SAAS,CAAC;EACvC;AACF","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ import { OutputSymbolOptions } from "@alloy-js/core";
2
+ import { NamedTypeSymbol } from "./named-type.js";
3
+ export interface NamespaceSymbolOptions extends OutputSymbolOptions {
4
+ isGlobal?: boolean;
5
+ }
6
+ /**
7
+ * A symbol for a namespace in C#.
8
+ */
9
+ export declare class NamespaceSymbol extends NamedTypeSymbol {
10
+ #private;
11
+ readonly symbolKind = "namespace";
12
+ constructor(name: string, parentNamespace?: NamespaceSymbol, options?: NamespaceSymbolOptions);
13
+ /**
14
+ * Whether this symbol is the global namespace symbol.
15
+ */
16
+ get isGlobal(): boolean;
17
+ getFullyQualifiedName(options?: {
18
+ omitGlobal?: boolean;
19
+ }): string;
20
+ copy(): NamespaceSymbol;
21
+ }
22
+ //# sourceMappingURL=namespace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../src/symbols/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,eAAe;;IAClD,SAAgB,UAAU,eAAe;gBAEvC,IAAI,EAAE,MAAM,EACZ,eAAe,CAAC,EAAE,eAAe,EACjC,OAAO,CAAC,EAAE,sBAAsB;IAUlC;;OAEG;IACH,IAAI,QAAQ,YAEX;IAED,qBAAqB,CAAC,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,MAAM;IAoBrE,IAAI;CASL"}
@@ -0,0 +1,45 @@
1
+ import { NamedTypeSymbol } from "./named-type.js";
2
+ /**
3
+ * A symbol for a namespace in C#.
4
+ */
5
+ export class NamespaceSymbol extends NamedTypeSymbol {
6
+ symbolKind = "namespace";
7
+ constructor(name, parentNamespace, options) {
8
+ const space = parentNamespace?.members;
9
+ super(name, space, "namespace", options);
10
+ this.#isGlobal = !!options?.isGlobal;
11
+ }
12
+ #isGlobal;
13
+ /**
14
+ * Whether this symbol is the global namespace symbol.
15
+ */
16
+ get isGlobal() {
17
+ return this.#isGlobal;
18
+ }
19
+ getFullyQualifiedName(options = {}) {
20
+ const parts = [];
21
+
22
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
23
+ let current = this;
24
+ while (current && !current.isGlobal) {
25
+ parts.unshift(current.name);
26
+ current = current.ownerSymbol;
27
+ }
28
+ const idPart = parts.join(".");
29
+ if (options.omitGlobal) {
30
+ return idPart;
31
+ } else {
32
+ return `global::${idPart}`;
33
+ }
34
+ }
35
+ copy() {
36
+ const options = this.getCopyOptions();
37
+ const copy = new NamespaceSymbol(this.name, undefined, {
38
+ ...options,
39
+ isGlobal: this.#isGlobal
40
+ });
41
+ this.initializeCopy(copy);
42
+ return copy;
43
+ }
44
+ }
45
+ //# sourceMappingURL=namespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NamedTypeSymbol","NamespaceSymbol","symbolKind","constructor","name","parentNamespace","options","space","members","isGlobal","getFullyQualifiedName","parts","current","unshift","ownerSymbol","idPart","join","omitGlobal","copy","getCopyOptions","undefined","initializeCopy"],"sources":["../../../src/symbols/namespace.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,eAAe,QAAQ,iBAAiB;AAMjD;AACA;AACA;AACA,OAAO,MAAMC,eAAe,SAASD,eAAe,CAAC;EACnCE,UAAU,GAAG,WAAW;EACxCC,WAAWA,CACTC,IAAY,EACZC,eAAiC,EACjCC,OAAgC,EAChC;IACA,MAAMC,KAAK,GAAGF,eAAe,EAAEG,OAAO;IAEtC,KAAK,CAACJ,IAAI,EAAEG,KAAK,EAAE,WAAW,EAAED,OAAO,CAAC;IAExC,IAAI,CAAC,CAACG,QAAQ,GAAG,CAAC,CAACH,OAAO,EAAEG,QAAQ;EACtC;EAEA,CAACA,QAAQ;EACT;AACF;AACA;EACE,IAAIA,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAAC,CAACA,QAAQ;EACvB;EAEAC,qBAAqBA,CAACJ,OAAiC,GAAG,CAAC,CAAC,EAAU;IACpE,MAAMK,KAAK,GAAG,EAAE;;IAEhB;IACA,IAAIC,OAAoC,GAAG,IAAI;IAE/C,OAAOA,OAAO,IAAI,CAACA,OAAO,CAACH,QAAQ,EAAE;MACnCE,KAAK,CAACE,OAAO,CAACD,OAAO,CAACR,IAAI,CAAC;MAC3BQ,OAAO,GAAGA,OAAO,CAACE,WAA0C;IAC9D;IAEA,MAAMC,MAAM,GAAGJ,KAAK,CAACK,IAAI,CAAC,GAAG,CAAC;IAE9B,IAAIV,OAAO,CAACW,UAAU,EAAE;MACtB,OAAOF,MAAM;IACf,CAAC,MAAM;MACL,OAAO,WAAWA,MAAM,EAAE;IAC5B;EACF;EAEAG,IAAIA,CAAA,EAAG;IACL,MAAMZ,OAAO,GAAG,IAAI,CAACa,cAAc,CAAC,CAAC;IACrC,MAAMD,IAAI,GAAG,IAAIjB,eAAe,CAAC,IAAI,CAACG,IAAI,EAAEgB,SAAS,EAAE;MACrD,GAAGd,OAAO;MACVG,QAAQ,EAAE,IAAI,CAAC,CAACA;IAClB,CAAC,CAAC;IACF,IAAI,CAACY,cAAc,CAACH,IAAI,CAAC;IACzB,OAAOA,IAAI;EACb;AACF","ignoreList":[]}
@@ -1,3 +1,3 @@
1
- import * as core from "@alloy-js/core";
2
- export declare function ref(refkey: core.Refkey): () => string;
1
+ import { OutputSymbol, Refkey } from "@alloy-js/core";
2
+ export declare function ref(refkey: Refkey): () => [string, OutputSymbol | undefined];
3
3
  //# sourceMappingURL=reference.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../../src/symbols/reference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AAoBvC,wBAAgB,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,MAAM,CA4CrD"}
1
+ {"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../../src/symbols/reference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,YAAY,EAAE,MAAM,EAAW,MAAM,gBAAgB,CAAC;AAWrE,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC,CAkD5E"}