@alloy-js/csharp 0.20.0-dev.1 → 0.20.0-dev.10

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 (391) 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/UsingDirective.d.ts +5 -1
  13. package/dist/src/components/UsingDirective.d.ts.map +1 -1
  14. package/dist/src/components/UsingDirective.js +5 -2
  15. package/dist/src/components/UsingDirective.js.map +1 -0
  16. package/dist/src/components/access-expression/access-expression.d.ts +54 -0
  17. package/dist/src/components/access-expression/access-expression.d.ts.map +1 -0
  18. package/dist/src/components/access-expression/access-expression.js +277 -0
  19. package/dist/src/components/access-expression/access-expression.js.map +1 -0
  20. package/dist/src/components/access-expression/access-expression.test.d.ts +2 -0
  21. package/dist/src/components/access-expression/access-expression.test.d.ts.map +1 -0
  22. package/dist/src/components/access-expression/access-expression.test.js +336 -0
  23. package/dist/src/components/access-expression/access-expression.test.js.map +1 -0
  24. package/dist/src/components/access-expression/part-descriptors.d.ts +32 -0
  25. package/dist/src/components/access-expression/part-descriptors.d.ts.map +1 -0
  26. package/dist/src/components/access-expression/part-descriptors.js +99 -0
  27. package/dist/src/components/access-expression/part-descriptors.js.map +1 -0
  28. package/dist/src/components/attributes/attributes.js +2 -1
  29. package/dist/src/components/attributes/attributes.js.map +1 -0
  30. package/dist/src/components/attributes/attributes.test.js +2 -1
  31. package/dist/src/components/attributes/attributes.test.js.map +1 -0
  32. package/dist/src/components/class/declaration.d.ts +2 -2
  33. package/dist/src/components/class/declaration.d.ts.map +1 -1
  34. package/dist/src/components/class/declaration.js +21 -34
  35. package/dist/src/components/class/declaration.js.map +1 -0
  36. package/dist/src/components/class/declaration.test.js +199 -200
  37. package/dist/src/components/class/declaration.test.js.map +1 -0
  38. package/dist/src/components/constructor/constructor.d.ts.map +1 -1
  39. package/dist/src/components/constructor/constructor.js +13 -20
  40. package/dist/src/components/constructor/constructor.js.map +1 -0
  41. package/dist/src/components/constructor/constructor.test.js +12 -20
  42. package/dist/src/components/constructor/constructor.test.js.map +1 -0
  43. package/dist/src/components/doc/comment.js +2 -1
  44. package/dist/src/components/doc/comment.js.map +1 -0
  45. package/dist/src/components/doc/comment.test.js +2 -1
  46. package/dist/src/components/doc/comment.test.js.map +1 -0
  47. package/dist/src/components/doc/from-markdown.js +2 -1
  48. package/dist/src/components/doc/from-markdown.js.map +1 -0
  49. package/dist/src/components/doc/from-markdown.test.js +2 -1
  50. package/dist/src/components/doc/from-markdown.test.js.map +1 -0
  51. package/dist/src/components/{EnumDeclaration.d.ts → enum/declaration.d.ts} +6 -11
  52. package/dist/src/components/enum/declaration.d.ts.map +1 -0
  53. package/dist/src/components/enum/declaration.js +55 -0
  54. package/dist/src/components/enum/declaration.js.map +1 -0
  55. package/dist/src/components/enum/declaration.ref.test.d.ts +2 -0
  56. package/dist/src/components/enum/declaration.ref.test.d.ts.map +1 -0
  57. package/dist/src/components/enum/declaration.ref.test.js +121 -0
  58. package/dist/src/components/enum/declaration.ref.test.js.map +1 -0
  59. package/dist/src/components/enum/declaration.test.d.ts +2 -0
  60. package/dist/src/components/enum/declaration.test.d.ts.map +1 -0
  61. package/dist/src/components/enum/declaration.test.js +40 -0
  62. package/dist/src/components/enum/declaration.test.js.map +1 -0
  63. package/dist/src/components/enum/member.d.ts +7 -0
  64. package/dist/src/components/enum/member.d.ts.map +1 -0
  65. package/dist/src/components/enum/member.js +30 -0
  66. package/dist/src/components/enum/member.js.map +1 -0
  67. package/dist/src/components/enum/member.test.d.ts +2 -0
  68. package/dist/src/components/enum/member.test.d.ts.map +1 -0
  69. package/dist/src/components/enum/member.test.js +29 -0
  70. package/dist/src/components/enum/member.test.js.map +1 -0
  71. package/dist/src/components/field/field.d.ts.map +1 -1
  72. package/dist/src/components/field/field.js +11 -18
  73. package/dist/src/components/field/field.js.map +1 -0
  74. package/dist/src/components/field/field.test.js +9 -8
  75. package/dist/src/components/field/field.test.js.map +1 -0
  76. package/dist/src/components/index.d.ts +7 -3
  77. package/dist/src/components/index.d.ts.map +1 -1
  78. package/dist/src/components/index.js +9 -4
  79. package/dist/src/components/index.js.map +1 -0
  80. package/dist/src/components/interface/declaration.d.ts.map +1 -1
  81. package/dist/src/components/interface/declaration.js +21 -22
  82. package/dist/src/components/interface/declaration.js.map +1 -0
  83. package/dist/src/components/interface/declaration.test.js +28 -36
  84. package/dist/src/components/interface/declaration.test.js.map +1 -0
  85. package/dist/src/components/interface/method.d.ts.map +1 -1
  86. package/dist/src/components/interface/method.js +9 -19
  87. package/dist/src/components/interface/method.js.map +1 -0
  88. package/dist/src/components/interface/method.test.js +40 -48
  89. package/dist/src/components/interface/method.test.js.map +1 -0
  90. package/dist/src/components/interface/property.d.ts.map +1 -1
  91. package/dist/src/components/interface/property.js +23 -40
  92. package/dist/src/components/interface/property.js.map +1 -0
  93. package/dist/src/components/interface/property.test.js +13 -12
  94. package/dist/src/components/interface/property.test.js.map +1 -0
  95. package/dist/src/components/invocation-expression/invocation-expression.d.ts +29 -0
  96. package/dist/src/components/invocation-expression/invocation-expression.d.ts.map +1 -0
  97. package/dist/src/components/invocation-expression/invocation-expression.js +70 -0
  98. package/dist/src/components/invocation-expression/invocation-expression.js.map +1 -0
  99. package/dist/src/components/invocation-expression/invocation-expression.test.d.ts +2 -0
  100. package/dist/src/components/invocation-expression/invocation-expression.test.d.ts.map +1 -0
  101. package/dist/src/components/invocation-expression/invocation-expression.test.js +105 -0
  102. package/dist/src/components/invocation-expression/invocation-expression.test.js.map +1 -0
  103. package/dist/src/components/lexical-scope.d.ts +8 -0
  104. package/dist/src/components/lexical-scope.d.ts.map +1 -0
  105. package/dist/src/components/lexical-scope.js +25 -0
  106. package/dist/src/components/lexical-scope.js.map +1 -0
  107. package/dist/src/components/method/method.d.ts +5 -2
  108. package/dist/src/components/method/method.d.ts.map +1 -1
  109. package/dist/src/components/method/method.js +9 -17
  110. package/dist/src/components/method/method.js.map +1 -0
  111. package/dist/src/components/method/method.test.js +13 -12
  112. package/dist/src/components/method/method.test.js.map +1 -0
  113. package/dist/src/components/method-scope.d.ts +8 -0
  114. package/dist/src/components/method-scope.d.ts.map +1 -0
  115. package/dist/src/components/method-scope.js +25 -0
  116. package/dist/src/components/method-scope.js.map +1 -0
  117. package/dist/src/components/namespace-scopes.d.ts +13 -0
  118. package/dist/src/components/namespace-scopes.d.ts.map +1 -0
  119. package/dist/src/components/namespace-scopes.js +45 -0
  120. package/dist/src/components/namespace-scopes.js.map +1 -0
  121. package/dist/src/components/namespace.d.ts +7 -0
  122. package/dist/src/components/namespace.d.ts.map +1 -0
  123. package/dist/src/components/namespace.js +47 -0
  124. package/dist/src/components/namespace.js.map +1 -0
  125. package/dist/src/components/namespace.ref.test.d.ts +2 -0
  126. package/dist/src/components/namespace.ref.test.d.ts.map +1 -0
  127. package/dist/src/components/namespace.ref.test.js +182 -0
  128. package/dist/src/components/namespace.ref.test.js.map +1 -0
  129. package/dist/src/components/namespace.test.d.ts.map +1 -0
  130. package/dist/src/components/namespace.test.js +79 -0
  131. package/dist/src/components/namespace.test.js.map +1 -0
  132. package/dist/src/components/parameters/parameters.d.ts +2 -3
  133. package/dist/src/components/parameters/parameters.d.ts.map +1 -1
  134. package/dist/src/components/parameters/parameters.js +15 -15
  135. package/dist/src/components/parameters/parameters.js.map +1 -0
  136. package/dist/src/components/parameters/parameters.test.d.ts +2 -0
  137. package/dist/src/components/parameters/parameters.test.d.ts.map +1 -0
  138. package/dist/src/components/parameters/parameters.test.js +154 -0
  139. package/dist/src/components/parameters/parameters.test.js.map +1 -0
  140. package/dist/src/components/property/property.d.ts +2 -2
  141. package/dist/src/components/property/property.d.ts.map +1 -1
  142. package/dist/src/components/property/property.js +30 -40
  143. package/dist/src/components/property/property.js.map +1 -0
  144. package/dist/src/components/property/property.test.js +16 -15
  145. package/dist/src/components/property/property.test.js.map +1 -0
  146. package/dist/src/components/record/declaration.d.ts +18 -0
  147. package/dist/src/components/record/declaration.d.ts.map +1 -1
  148. package/dist/src/components/record/declaration.js +21 -14
  149. package/dist/src/components/record/declaration.js.map +1 -0
  150. package/dist/src/components/record/declaration.test.js +52 -4
  151. package/dist/src/components/record/declaration.test.js.map +1 -0
  152. package/dist/src/components/source-file/source-file.d.ts +19 -0
  153. package/dist/src/components/source-file/source-file.d.ts.map +1 -0
  154. package/dist/src/components/source-file/source-file.js +59 -0
  155. package/dist/src/components/source-file/source-file.js.map +1 -0
  156. package/dist/src/components/source-file/source-file.test.d.ts +2 -0
  157. package/dist/src/components/source-file/source-file.test.d.ts.map +1 -0
  158. package/dist/src/components/source-file/source-file.test.js +136 -0
  159. package/dist/src/components/source-file/source-file.test.js.map +1 -0
  160. package/dist/src/components/stc/index.js +2 -1
  161. package/dist/src/components/stc/index.js.map +1 -0
  162. package/dist/src/components/struct/declaration.d.ts.map +1 -1
  163. package/dist/src/components/struct/declaration.js +6 -7
  164. package/dist/src/components/struct/declaration.js.map +1 -0
  165. package/dist/src/components/struct/declaration.test.js +32 -40
  166. package/dist/src/components/struct/declaration.test.js.map +1 -0
  167. package/dist/src/components/type-parameters/type-parameter-constraints.js +2 -1
  168. package/dist/src/components/type-parameters/type-parameter-constraints.js.map +1 -0
  169. package/dist/src/components/type-parameters/type-parameter-constraints.test.js +2 -1
  170. package/dist/src/components/type-parameters/type-parameter-constraints.test.js.map +1 -0
  171. package/dist/src/components/type-parameters/type-parameter.d.ts.map +1 -1
  172. package/dist/src/components/type-parameters/type-parameter.js +9 -11
  173. package/dist/src/components/type-parameters/type-parameter.js.map +1 -0
  174. package/dist/src/components/type-parameters/type-parameters.js +2 -1
  175. package/dist/src/components/type-parameters/type-parameters.js.map +1 -0
  176. package/dist/src/components/type-parameters/type-parameters.test.js +5 -4
  177. package/dist/src/components/type-parameters/type-parameters.test.js.map +1 -0
  178. package/dist/src/components/var/declaration.d.ts.map +1 -1
  179. package/dist/src/components/var/declaration.js +8 -9
  180. package/dist/src/components/var/declaration.js.map +1 -0
  181. package/dist/src/components/var/declaration.test.js +13 -21
  182. package/dist/src/components/var/declaration.test.js.map +1 -0
  183. package/dist/src/contexts/format-options.d.ts +5 -0
  184. package/dist/src/contexts/format-options.d.ts.map +1 -0
  185. package/dist/src/contexts/format-options.js +9 -0
  186. package/dist/src/contexts/format-options.js.map +1 -0
  187. package/dist/src/contexts/global-namespace.d.ts +5 -0
  188. package/dist/src/contexts/global-namespace.d.ts.map +1 -0
  189. package/dist/src/contexts/global-namespace.js +25 -0
  190. package/dist/src/contexts/global-namespace.js.map +1 -0
  191. package/dist/src/contexts/namespace.d.ts +8 -0
  192. package/dist/src/contexts/namespace.d.ts.map +1 -0
  193. package/dist/src/contexts/namespace.js +6 -0
  194. package/dist/src/contexts/namespace.js.map +1 -0
  195. package/dist/src/index.d.ts +2 -0
  196. package/dist/src/index.d.ts.map +1 -1
  197. package/dist/src/index.js +4 -1
  198. package/dist/src/index.js.map +1 -0
  199. package/dist/src/modifiers.d.ts +11 -0
  200. package/dist/src/modifiers.d.ts.map +1 -1
  201. package/dist/src/modifiers.js +2 -1
  202. package/dist/src/modifiers.js.map +1 -0
  203. package/dist/src/name-policy.js +2 -1
  204. package/dist/src/name-policy.js.map +1 -0
  205. package/dist/src/scopes/class.d.ts +10 -0
  206. package/dist/src/scopes/class.d.ts.map +1 -0
  207. package/dist/src/scopes/class.js +11 -0
  208. package/dist/src/scopes/class.js.map +1 -0
  209. package/dist/src/scopes/contexts.d.ts +9 -0
  210. package/dist/src/scopes/contexts.d.ts.map +1 -0
  211. package/dist/src/scopes/contexts.js +34 -0
  212. package/dist/src/scopes/contexts.js.map +1 -0
  213. package/dist/src/scopes/csharp.d.ts +10 -0
  214. package/dist/src/scopes/csharp.d.ts.map +1 -0
  215. package/dist/src/scopes/csharp.js +15 -0
  216. package/dist/src/scopes/csharp.js.map +1 -0
  217. package/dist/src/scopes/factories.d.ts +9 -0
  218. package/dist/src/scopes/factories.d.ts.map +1 -0
  219. package/dist/src/scopes/factories.js +24 -0
  220. package/dist/src/scopes/factories.js.map +1 -0
  221. package/dist/src/scopes/index.d.ts +10 -0
  222. package/dist/src/scopes/index.d.ts.map +1 -0
  223. package/dist/src/scopes/index.js +10 -0
  224. package/dist/src/scopes/index.js.map +1 -0
  225. package/dist/src/scopes/lexical.d.ts +7 -0
  226. package/dist/src/scopes/lexical.d.ts.map +1 -0
  227. package/dist/src/scopes/lexical.js +8 -0
  228. package/dist/src/scopes/lexical.js.map +1 -0
  229. package/dist/src/scopes/method.d.ts +9 -0
  230. package/dist/src/scopes/method.d.ts.map +1 -0
  231. package/dist/src/scopes/method.js +14 -0
  232. package/dist/src/scopes/method.js.map +1 -0
  233. package/dist/src/scopes/named-type.d.ts +22 -0
  234. package/dist/src/scopes/named-type.d.ts.map +1 -0
  235. package/dist/src/scopes/named-type.js +33 -0
  236. package/dist/src/scopes/named-type.js.map +1 -0
  237. package/dist/src/scopes/namespace.d.ts +11 -0
  238. package/dist/src/scopes/namespace.d.ts.map +1 -0
  239. package/dist/src/scopes/namespace.js +39 -0
  240. package/dist/src/scopes/namespace.js.map +1 -0
  241. package/dist/src/scopes/source-file.d.ts +16 -0
  242. package/dist/src/scopes/source-file.d.ts.map +1 -0
  243. package/dist/src/scopes/source-file.js +44 -0
  244. package/dist/src/scopes/source-file.js.map +1 -0
  245. package/dist/src/symbols/csharp.d.ts +87 -0
  246. package/dist/src/symbols/csharp.d.ts.map +1 -0
  247. package/dist/src/symbols/csharp.js +246 -0
  248. package/dist/src/symbols/csharp.js.map +1 -0
  249. package/dist/src/symbols/factories.d.ts +25 -0
  250. package/dist/src/symbols/factories.d.ts.map +1 -0
  251. package/dist/src/symbols/factories.js +93 -0
  252. package/dist/src/symbols/factories.js.map +1 -0
  253. package/dist/src/symbols/index.d.ts +5 -2
  254. package/dist/src/symbols/index.d.ts.map +1 -1
  255. package/dist/src/symbols/index.js +6 -2
  256. package/dist/src/symbols/index.js.map +1 -0
  257. package/dist/src/symbols/method.d.ts +13 -0
  258. package/dist/src/symbols/method.d.ts.map +1 -0
  259. package/dist/src/symbols/method.js +16 -0
  260. package/dist/src/symbols/method.js.map +1 -0
  261. package/dist/src/symbols/named-type.d.ts +19 -0
  262. package/dist/src/symbols/named-type.d.ts.map +1 -0
  263. package/dist/src/symbols/named-type.js +31 -0
  264. package/dist/src/symbols/named-type.js.map +1 -0
  265. package/dist/src/symbols/namespace.d.ts +22 -0
  266. package/dist/src/symbols/namespace.d.ts.map +1 -0
  267. package/dist/src/symbols/namespace.js +45 -0
  268. package/dist/src/symbols/namespace.js.map +1 -0
  269. package/dist/src/symbols/reference.d.ts +2 -2
  270. package/dist/src/symbols/reference.d.ts.map +1 -1
  271. package/dist/src/symbols/reference.js +50 -44
  272. package/dist/src/symbols/reference.js.map +1 -0
  273. package/dist/test/project-directory.test.js +20 -19
  274. package/dist/test/project-directory.test.js.map +1 -0
  275. package/dist/test/using.test.js +23 -21
  276. package/dist/test/using.test.js.map +1 -0
  277. package/dist/test/utils.d.ts.map +1 -1
  278. package/dist/test/utils.js +7 -4
  279. package/dist/test/utils.js.map +1 -0
  280. package/dist/test/vitest.setup.js +2 -1
  281. package/dist/test/vitest.setup.js.map +1 -0
  282. package/dist/tsconfig.tsbuildinfo +1 -1
  283. package/package.json +12 -6
  284. package/src/components/Declaration.tsx +3 -6
  285. package/src/components/Reference.tsx +3 -1
  286. package/src/components/UsingDirective.tsx +12 -2
  287. package/src/components/access-expression/access-expression.test.tsx +284 -0
  288. package/src/components/access-expression/access-expression.tsx +375 -0
  289. package/src/components/access-expression/part-descriptors.ts +175 -0
  290. package/src/components/class/declaration.test.tsx +142 -150
  291. package/src/components/class/declaration.tsx +20 -32
  292. package/src/components/constructor/constructor.test.tsx +10 -16
  293. package/src/components/constructor/constructor.tsx +13 -32
  294. package/src/components/enum/declaration.ref.test.tsx +93 -0
  295. package/src/components/enum/declaration.test.tsx +34 -0
  296. package/src/components/enum/declaration.tsx +65 -0
  297. package/src/components/enum/member.test.tsx +24 -0
  298. package/src/components/enum/member.tsx +36 -0
  299. package/src/components/field/field.test.tsx +7 -7
  300. package/src/components/field/field.tsx +12 -22
  301. package/src/components/index.ts +7 -3
  302. package/src/components/interface/declaration.test.tsx +26 -32
  303. package/src/components/interface/declaration.tsx +16 -18
  304. package/src/components/interface/method.test.tsx +38 -44
  305. package/src/components/interface/method.tsx +7 -20
  306. package/src/components/interface/property.test.tsx +11 -11
  307. package/src/components/interface/property.tsx +15 -34
  308. package/src/components/invocation-expression/invocation-expression.test.tsx +101 -0
  309. package/src/components/invocation-expression/invocation-expression.tsx +60 -0
  310. package/src/components/lexical-scope.tsx +29 -0
  311. package/src/components/method/method.test.tsx +11 -11
  312. package/src/components/method/method.tsx +12 -23
  313. package/src/components/method-scope.tsx +27 -0
  314. package/src/components/namespace-scopes.tsx +44 -0
  315. package/src/components/namespace.ref.test.tsx +139 -0
  316. package/src/components/namespace.test.tsx +52 -0
  317. package/src/components/namespace.tsx +45 -0
  318. package/src/components/parameters/parameters.test.tsx +117 -0
  319. package/src/components/parameters/parameters.tsx +11 -23
  320. package/src/components/property/property.test.tsx +14 -14
  321. package/src/components/property/property.tsx +23 -41
  322. package/src/components/record/declaration.test.tsx +47 -3
  323. package/src/components/record/declaration.tsx +34 -11
  324. package/src/components/source-file/source-file.test.tsx +96 -0
  325. package/src/components/source-file/source-file.tsx +98 -0
  326. package/src/components/struct/declaration.test.tsx +16 -22
  327. package/src/components/struct/declaration.tsx +4 -6
  328. package/src/components/type-parameters/type-parameter.tsx +14 -11
  329. package/src/components/type-parameters/type-parameters.test.tsx +4 -4
  330. package/src/components/var/declaration.test.tsx +8 -14
  331. package/src/components/var/declaration.tsx +12 -6
  332. package/src/contexts/format-options.ts +14 -0
  333. package/src/contexts/global-namespace.ts +29 -0
  334. package/src/contexts/namespace.ts +13 -0
  335. package/src/index.ts +2 -0
  336. package/src/modifiers.ts +14 -0
  337. package/src/scopes/class.ts +12 -0
  338. package/src/scopes/contexts.ts +45 -0
  339. package/src/scopes/csharp.ts +23 -0
  340. package/src/scopes/factories.ts +45 -0
  341. package/src/scopes/index.ts +9 -0
  342. package/src/scopes/lexical.ts +10 -0
  343. package/src/scopes/method.ts +22 -0
  344. package/src/scopes/named-type.ts +44 -0
  345. package/src/scopes/namespace.ts +59 -0
  346. package/src/scopes/source-file.ts +67 -0
  347. package/src/symbols/csharp.ts +339 -0
  348. package/src/symbols/factories.ts +215 -0
  349. package/src/symbols/index.ts +5 -2
  350. package/src/symbols/method.ts +26 -0
  351. package/src/symbols/named-type.ts +54 -0
  352. package/src/symbols/namespace.ts +62 -0
  353. package/src/symbols/reference.tsx +64 -0
  354. package/temp/api.json +6919 -2532
  355. package/test/project-directory.test.tsx +14 -16
  356. package/test/using.test.tsx +21 -21
  357. package/test/utils.tsx +2 -1
  358. package/tsconfig.json +4 -1
  359. package/tsdoc-metadata.json +1 -1
  360. package/dist/src/components/EnumDeclaration.d.ts.map +0 -1
  361. package/dist/src/components/EnumDeclaration.js +0 -85
  362. package/dist/src/components/Namespace.d.ts +0 -11
  363. package/dist/src/components/Namespace.d.ts.map +0 -1
  364. package/dist/src/components/Namespace.js +0 -33
  365. package/dist/src/components/SourceFile.d.ts +0 -14
  366. package/dist/src/components/SourceFile.d.ts.map +0 -1
  367. package/dist/src/components/SourceFile.js +0 -69
  368. package/dist/src/symbols/csharp-output-symbol.d.ts +0 -8
  369. package/dist/src/symbols/csharp-output-symbol.d.ts.map +0 -1
  370. package/dist/src/symbols/csharp-output-symbol.js +0 -19
  371. package/dist/src/symbols/scopes.d.ts +0 -14
  372. package/dist/src/symbols/scopes.d.ts.map +0 -1
  373. package/dist/src/symbols/scopes.js +0 -31
  374. package/dist/test/enum.test.d.ts +0 -2
  375. package/dist/test/enum.test.d.ts.map +0 -1
  376. package/dist/test/enum.test.js +0 -178
  377. package/dist/test/namespace.test.d.ts.map +0 -1
  378. package/dist/test/namespace.test.js +0 -81
  379. package/dist/test/sourcefile.test.d.ts +0 -2
  380. package/dist/test/sourcefile.test.d.ts.map +0 -1
  381. package/dist/test/sourcefile.test.js +0 -58
  382. package/src/components/EnumDeclaration.tsx +0 -99
  383. package/src/components/Namespace.tsx +0 -35
  384. package/src/components/SourceFile.tsx +0 -78
  385. package/src/symbols/csharp-output-symbol.ts +0 -22
  386. package/src/symbols/reference.ts +0 -65
  387. package/src/symbols/scopes.ts +0 -41
  388. package/test/enum.test.tsx +0 -149
  389. package/test/namespace.test.tsx +0 -55
  390. package/test/sourcefile.test.tsx +0 -47
  391. /package/dist/{test → src/components}/namespace.test.d.ts +0 -0
@@ -1,3 +1,6 @@
1
+ import { Constructor } from "#components/constructor/constructor.jsx";
2
+ import { EnumDeclaration } from "#components/enum/declaration.jsx";
3
+ import { EnumMember } from "#components/enum/member.jsx";
1
4
  import {
2
5
  Children,
3
6
  code,
@@ -6,28 +9,21 @@ import {
6
9
  NamePolicyContext,
7
10
  Output,
8
11
  refkey,
9
- render,
10
12
  } from "@alloy-js/core";
11
13
  import * as coretest from "@alloy-js/core/testing";
12
14
  import { describe, expect, it } from "vitest";
13
- import { findFile, TestNamespace, toSourceText } from "../../../test/utils.jsx";
15
+ import { TestNamespace, toSourceText } from "../../../test/utils.jsx";
14
16
  import { createCSharpNamePolicy } from "../../name-policy.js";
15
17
  import { Attribute } from "../attributes/attributes.jsx";
16
18
  import { Field } from "../field/field.jsx";
17
19
  import { Method } from "../method/method.jsx";
18
- import { Namespace } from "../Namespace.jsx";
19
20
  import { Property } from "../property/property.jsx";
20
- import { SourceFile } from "../SourceFile.jsx";
21
- import { Constructor, EnumDeclaration, EnumMember } from "../stc/index.js";
21
+ import { SourceFile } from "../source-file/source-file.jsx";
22
22
  import { TypeParameterProps } from "../type-parameters/type-parameter.jsx";
23
23
  import { ClassDeclaration } from "./declaration.jsx";
24
24
 
25
25
  function Wrapper({ children }: { children: Children }) {
26
- return (
27
- <TestNamespace>
28
- <SourceFile path="Test.cs">{children}</SourceFile>
29
- </TestNamespace>
30
- );
26
+ return <TestNamespace>{children}</TestNamespace>;
31
27
  }
32
28
 
33
29
  it("declares class with no members", () => {
@@ -70,6 +66,24 @@ describe("modifiers", () => {
70
66
  public abstract partial class TestClass;
71
67
  `);
72
68
  });
69
+
70
+ it("places visibility, attributes, and modifiers in the correct order", () => {
71
+ expect(
72
+ <TestNamespace>
73
+ <ClassDeclaration
74
+ partial
75
+ public
76
+ abstract
77
+ sealed
78
+ name="TestClass"
79
+ attributes={[<Attribute name="Test" />]}
80
+ />
81
+ </TestNamespace>,
82
+ ).toRenderTo(`
83
+ [Test]
84
+ public abstract sealed partial class TestClass;
85
+ `);
86
+ });
73
87
  });
74
88
 
75
89
  describe("base", () => {
@@ -109,45 +123,43 @@ describe("base", () => {
109
123
  });
110
124
 
111
125
  it("declares class with some members", () => {
112
- const res = toSourceText(
113
- <ClassDeclaration public name="TestClass">
114
- <List>
115
- <Field public name="MemberOne" type="string" />
116
- <Field public name="MemberTwo" type="int" />
117
- </List>
118
- </ClassDeclaration>,
126
+ const tree = (
127
+ <TestNamespace>
128
+ <ClassDeclaration public name="TestClass">
129
+ <List>
130
+ <Field public name="MemberOne" type="string" />
131
+ <Field public name="MemberTwo" type="int" />
132
+ </List>
133
+ </ClassDeclaration>
134
+ </TestNamespace>
119
135
  );
120
136
 
121
- expect(res).toBe(coretest.d`
122
- namespace TestCode
137
+ expect(tree).toRenderTo(coretest.d`
138
+ public class TestClass
123
139
  {
124
- public class TestClass
125
- {
126
- public string MemberOne;
127
- public int MemberTwo;
128
- }
140
+ public string MemberOne;
141
+ public int MemberTwo;
129
142
  }
130
143
  `);
131
144
  });
132
145
 
133
146
  it("declares class with some methods", () => {
134
- const res = toSourceText(
135
- <ClassDeclaration public name="TestClass">
136
- <List>
137
- <Method public name="MethodOne" />
138
- <Method private virtual name="MethodTwo" />
139
- </List>
140
- </ClassDeclaration>,
147
+ const tree = (
148
+ <TestNamespace>
149
+ <ClassDeclaration public name="TestClass">
150
+ <List>
151
+ <Method public name="MethodOne" />
152
+ <Method private virtual name="MethodTwo" />
153
+ </List>
154
+ </ClassDeclaration>
155
+ </TestNamespace>
141
156
  );
142
157
 
143
- expect(res).toBe(coretest.d`
144
- namespace TestCode
158
+ expect(tree).toRenderTo(coretest.d`
159
+ public class TestClass
145
160
  {
146
- public class TestClass
147
- {
148
- public void MethodOne() {}
149
- private virtual void MethodTwo() {}
150
- }
161
+ public void MethodOne() {}
162
+ private virtual void MethodTwo() {}
151
163
  }
152
164
  `);
153
165
  });
@@ -168,59 +180,52 @@ it("uses refkeys for members, params, and return type", () => {
168
180
  },
169
181
  ];
170
182
 
171
- const res = render(
183
+ expect(
172
184
  <Output namePolicy={createCSharpNamePolicy()}>
173
- <Namespace name="TestCode">
174
- <SourceFile path="Test.cs">
175
- <EnumDeclaration public name="TestEnum" refkey={enumTypeRefkey}>
176
- <List comma hardline>
177
- <EnumMember name="One" />
178
- <EnumMember name="Two" />
179
- </List>
180
- </EnumDeclaration>
181
- <hbr />
182
- <ClassDeclaration public name="TestInput" refkey={inputTypeRefkey} />
185
+ <SourceFile path="Test.cs">
186
+ <EnumDeclaration public name="TestEnum" refkey={enumTypeRefkey}>
187
+ <List comma hardline>
188
+ <EnumMember name="One" />
189
+ <EnumMember name="Two" />
190
+ </List>
191
+ </EnumDeclaration>
192
+ <hbr />
193
+ <ClassDeclaration public name="TestInput" refkey={inputTypeRefkey} />
194
+ <hbr />
195
+ <ClassDeclaration
196
+ public
197
+ name="TestResult"
198
+ refkey={testResultTypeRefkey}
199
+ />
200
+ <hbr />
201
+ <ClassDeclaration public name="TestClass">
202
+ <Field private name="MemberOne" type={enumTypeRefkey} />
183
203
  <hbr />
184
- <ClassDeclaration
204
+ <Method
185
205
  public
186
- name="TestResult"
187
- refkey={testResultTypeRefkey}
188
- />
189
- <hbr />
190
- <ClassDeclaration public name="TestClass">
191
- <Field private name="MemberOne" type={enumTypeRefkey} />
192
- <hbr />
193
- <Method
194
- public
195
- name="MethodOne"
196
- parameters={params}
197
- returns={testResultTypeRefkey}
198
- >
199
- return new {testResultTypeRefkey}();
200
- </Method>
201
- </ClassDeclaration>
202
- </SourceFile>
203
- </Namespace>
206
+ name="MethodOne"
207
+ parameters={params}
208
+ returns={testResultTypeRefkey}
209
+ >
210
+ return new {testResultTypeRefkey}();
211
+ </Method>
212
+ </ClassDeclaration>
213
+ </SourceFile>
204
214
  </Output>,
205
- );
206
-
207
- expect(findFile(res, "Test.cs").contents).toBe(coretest.d`
208
- namespace TestCode
215
+ ).toRenderTo(`
216
+ public enum TestEnum
209
217
  {
210
- public enum TestEnum
211
- {
212
- One,
213
- Two
214
- }
215
- public class TestInput;
216
- public class TestResult;
217
- public class TestClass
218
+ One,
219
+ Two
220
+ }
221
+ public class TestInput;
222
+ public class TestResult;
223
+ public class TestClass
224
+ {
225
+ private TestEnum _memberOne;
226
+ public TestResult MethodOne(int intParam, TestInput bodyParam)
218
227
  {
219
- private TestEnum _memberOne;
220
- public TestResult MethodOne(int intParam, TestInput bodyParam)
221
- {
222
- return new TestResult();
223
- }
228
+ return new TestResult();
224
229
  }
225
230
  }
226
231
  `);
@@ -241,27 +246,22 @@ describe("with type parameters", () => {
241
246
 
242
247
  expect(
243
248
  <TestNamespace>
244
- <SourceFile path="Test.cs">
245
- <ClassDeclaration
246
- public
247
- name="TestClass"
248
- typeParameters={typeParameters}
249
- >
250
- <List>
251
- <Property name="PropA" type={typeParameters[0].refkey} get set />
252
- <Property name="PropB" type={typeParameters[1].refkey} get set />
253
- </List>
254
- </ClassDeclaration>
255
- </SourceFile>
249
+ <ClassDeclaration
250
+ public
251
+ name="TestClass"
252
+ typeParameters={typeParameters}
253
+ >
254
+ <List>
255
+ <Property name="PropA" type={typeParameters[0].refkey} get set />
256
+ <Property name="PropB" type={typeParameters[1].refkey} get set />
257
+ </List>
258
+ </ClassDeclaration>
256
259
  </TestNamespace>,
257
260
  ).toRenderTo(`
258
- namespace TestCode
261
+ public class TestClass<T, U>
259
262
  {
260
- public class TestClass<T, U>
261
- {
262
- T PropA { get; set; }
263
- U PropB { get; set; }
264
- }
263
+ T PropA { get; set; }
264
+ U PropB { get; set; }
265
265
  }
266
266
  `);
267
267
  });
@@ -290,10 +290,10 @@ describe("with type parameters", () => {
290
290
  </TestNamespace>,
291
291
  ).toRenderTo(`
292
292
  public class TestClass<T, U>
293
- where T : IFoo
294
- where U : IBar
293
+ where T : IFoo
294
+ where U : IBar
295
295
  {
296
- // Body
296
+ // Body
297
297
  }
298
298
  `);
299
299
  });
@@ -308,25 +308,24 @@ it("declares class with invalid members", () => {
308
308
  );
309
309
 
310
310
  expect(() => toSourceText(decl)).toThrow(
311
- "can't define an enum member outside of an enum-decl scope",
311
+ "EnumMember must be used within an EnumDeclaration.",
312
312
  );
313
313
  });
314
314
 
315
315
  describe("constructor", () => {
316
316
  it("declares with constructor", () => {
317
- const res = toSourceText(
318
- <ClassDeclaration public name="TestClass">
319
- <Constructor public />
320
- </ClassDeclaration>,
317
+ const tree = (
318
+ <TestNamespace>
319
+ <ClassDeclaration public name="TestClass">
320
+ <Constructor public />
321
+ </ClassDeclaration>
322
+ </TestNamespace>
321
323
  );
322
324
 
323
- expect(res).toBe(coretest.d`
324
- namespace TestCode
325
+ expect(tree).toRenderTo(coretest.d`
326
+ public class TestClass
325
327
  {
326
- public class TestClass
327
- {
328
- public TestClass() {}
329
- }
328
+ public TestClass() {}
330
329
  }
331
330
  `);
332
331
  });
@@ -350,33 +349,32 @@ describe("constructor", () => {
350
349
  },
351
350
  ];
352
351
 
353
- const res = toSourceText(
354
- <ClassDeclaration public name="TestClass">
355
- <Field private name="name" type="string" refkey={thisNameRefkey} />
356
- <hbr />
357
- <Field private name="size" type="int" refkey={thisSizeRefkey} />
358
- <hbr />
359
- <Constructor public parameters={ctorParams}>
360
- {thisNameRefkey} = {paramNameRefkey};<hbr />
361
- {thisSizeRefkey} = {paramSizeRefkey};
362
- </Constructor>
363
- </ClassDeclaration>,
352
+ const tree = (
353
+ <TestNamespace>
354
+ <ClassDeclaration public name="TestClass">
355
+ <Field private name="name" type="string" refkey={thisNameRefkey} />
356
+ <hbr />
357
+ <Field private name="size" type="int" refkey={thisSizeRefkey} />
358
+ <hbr />
359
+ <Constructor public parameters={ctorParams}>
360
+ {thisNameRefkey} = {paramNameRefkey};<hbr />
361
+ {thisSizeRefkey} = {paramSizeRefkey};
362
+ </Constructor>
363
+ </ClassDeclaration>
364
+ </TestNamespace>
364
365
  );
365
366
 
366
367
  // TODO: assignments to members should have this. prefix
367
368
  // e.g. this.name = name;
368
- expect(res).toBe(coretest.d`
369
- namespace TestCode
369
+ expect(tree).toRenderTo(coretest.d`
370
+ public class TestClass
370
371
  {
371
- public class TestClass
372
+ private string _name;
373
+ private int _size;
374
+ public TestClass(string name, int size)
372
375
  {
373
- private string _name;
374
- private int _size;
375
- public TestClass(string name, int size)
376
- {
377
- _name = name;
378
- _size = size;
379
- }
376
+ _name = name;
377
+ _size = size;
380
378
  }
381
379
  }
382
380
  `);
@@ -415,12 +413,9 @@ describe("constructor", () => {
415
413
  </ClassDeclaration>
416
414
  </Wrapper>,
417
415
  ).toRenderTo(`
418
- namespace TestCode
416
+ public class TestClass(string name, int size)
419
417
  {
420
- public class TestClass(string name, int size)
421
- {
422
- string PrettyName { get; } = $"{name} {size}";
423
- }
418
+ string PrettyName { get; } = $"{name} {size}";
424
419
  }
425
420
  `);
426
421
  });
@@ -441,12 +436,9 @@ describe("constructor", () => {
441
436
  </NamePolicyContext.Provider>
442
437
  </Wrapper>,
443
438
  ).toRenderTo(`
444
- namespace TestCode
439
+ public class TestClass(string name)
445
440
  {
446
- public class TestClass(string name)
447
- {
448
- string name_2;
449
- }
441
+ string name_2;
450
442
  }
451
443
  `);
452
444
  });
@@ -474,8 +466,8 @@ it("supports class member doc comments", () => {
474
466
  /// This is a test
475
467
  class Test
476
468
  {
477
- /// This is a member
478
- public int Member;
469
+ /// This is a member
470
+ public int Member;
479
471
  }
480
472
  `);
481
473
  });
@@ -5,6 +5,7 @@ import {
5
5
  DeclarationProps,
6
6
  join,
7
7
  Name,
8
+ Namekey,
8
9
  Refkey,
9
10
  Scope,
10
11
  } from "@alloy-js/core";
@@ -14,9 +15,8 @@ import {
14
15
  getAccessModifier,
15
16
  makeModifiers,
16
17
  } from "../../modifiers.js";
17
- import { useCSharpNamePolicy } from "../../name-policy.js";
18
- import { CSharpOutputSymbol } from "../../symbols/csharp-output-symbol.js";
19
- import { CSharpMemberScope } from "../../symbols/scopes.js";
18
+ import { createClassScope } from "../../scopes/factories.js";
19
+ import { createNamedTypeSymbol } from "../../symbols/factories.js";
20
20
  import { AttributeList, AttributesProp } from "../attributes/attributes.jsx";
21
21
  import { DocWhen } from "../doc/comment.jsx";
22
22
  import { ParameterProps, Parameters } from "../parameters/parameters.jsx";
@@ -33,9 +33,9 @@ export interface ClassModifiers {
33
33
 
34
34
  const getClassModifiers = makeModifiers<ClassModifiers>([
35
35
  "abstract",
36
- "partial",
37
36
  "sealed",
38
37
  "static",
38
+ "partial",
39
39
  ]);
40
40
 
41
41
  // properties for creating a class
@@ -43,7 +43,7 @@ export interface ClassDeclarationProps
43
43
  extends Omit<DeclarationProps, "nameKind">,
44
44
  AccessModifiers,
45
45
  ClassModifiers {
46
- name: string;
46
+ name: string | Namekey;
47
47
  /** Doc comment */
48
48
  doc?: Children;
49
49
  refkey?: Refkey;
@@ -130,19 +130,11 @@ export interface ClassDeclarationProps
130
130
  * ```
131
131
  */
132
132
  export function ClassDeclaration(props: ClassDeclarationProps) {
133
- const name = useCSharpNamePolicy().getName(props.name!, "class");
134
-
135
- const thisClassSymbol = new CSharpOutputSymbol(name, {
133
+ const thisClassSymbol = createNamedTypeSymbol(props.name, "class", {
136
134
  refkeys: props.refkey,
137
135
  });
138
136
 
139
- // this creates a new scope for the class definition.
140
- // members will automatically "inherit" this scope so
141
- // that refkeys to them will produce the fully-qualified
142
- // name e.g. Foo.Bar.
143
- const thisClassScope = new CSharpMemberScope("class-decl", {
144
- owner: thisClassSymbol,
145
- });
137
+ const thisClassScope = createClassScope(thisClassSymbol);
146
138
 
147
139
  const bases = [
148
140
  ...(props.baseType ? [props.baseType] : []),
@@ -159,24 +151,20 @@ export function ClassDeclaration(props: ClassDeclarationProps) {
159
151
  <DocWhen doc={props.doc} />
160
152
  <AttributeList attributes={props.attributes} endline />
161
153
  {modifiers}class <Name />
162
- {props.typeParameters && (
163
- <TypeParameters parameters={props.typeParameters} />
164
- )}
165
- {props.primaryConstructor && (
166
- <Scope value={thisClassScope}>
154
+ <Scope value={thisClassScope}>
155
+ {props.typeParameters && (
156
+ <TypeParameters parameters={props.typeParameters} />
157
+ )}
158
+ {props.primaryConstructor && (
167
159
  <Parameters parameters={props.primaryConstructor} />
168
- </Scope>
169
- )}
170
- {base}
171
- {props.typeParameters && (
172
- <TypeParameterConstraints parameters={props.typeParameters} />
173
- )}
174
- {!props.children && ";"}
175
- {props.children && (
176
- <Block newline>
177
- <Scope value={thisClassScope}>{props.children}</Scope>
178
- </Block>
179
- )}
160
+ )}
161
+ {base}
162
+ {props.typeParameters && (
163
+ <TypeParameterConstraints parameters={props.typeParameters} />
164
+ )}
165
+ {!props.children && ";"}
166
+ {props.children && <Block newline>{props.children}</Block>}
167
+ </Scope>
180
168
  </Declaration>
181
169
  );
182
170
  }
@@ -2,7 +2,6 @@ import { refkey } from "@alloy-js/core";
2
2
  import { expect, it } from "vitest";
3
3
  import { TestNamespace } from "../../../test/utils.jsx";
4
4
  import { ClassDeclaration } from "../class/declaration.jsx";
5
- import { SourceFile } from "../SourceFile.jsx";
6
5
  import { Constructor } from "./constructor.jsx";
7
6
 
8
7
  it("reference constructor parameters in body", () => {
@@ -16,25 +15,20 @@ it("reference constructor parameters in body", () => {
16
15
 
17
16
  expect(
18
17
  <TestNamespace>
19
- <SourceFile path="Test.cs">
20
- <ClassDeclaration public name="TestClass">
21
- <Constructor public parameters={ctorParams}>
22
- {paramNameRefkey};<hbr />
23
- {paramSizeRefkey};
24
- </Constructor>
25
- </ClassDeclaration>
26
- </SourceFile>
18
+ <ClassDeclaration public name="TestClass">
19
+ <Constructor public parameters={ctorParams}>
20
+ {paramNameRefkey};<hbr />
21
+ {paramSizeRefkey};
22
+ </Constructor>
23
+ </ClassDeclaration>
27
24
  </TestNamespace>,
28
25
  ).toRenderTo(`
29
- namespace TestCode
26
+ public class TestClass
30
27
  {
31
- public class TestClass
28
+ public TestClass(string name, int size)
32
29
  {
33
- public TestClass(string name, int size)
34
- {
35
- name;
36
- size;
37
- }
30
+ name;
31
+ size;
38
32
  }
39
33
  }
40
34
  `);
@@ -1,20 +1,13 @@
1
- import {
2
- Block,
3
- Declaration,
4
- Name,
5
- Refkey,
6
- refkey,
7
- Scope,
8
- } from "@alloy-js/core";
1
+ import { MethodScope } from "#components/method-scope.jsx";
2
+ import { Block, MemberDeclaration, MemberName, Refkey } from "@alloy-js/core";
9
3
  import { Children } from "@alloy-js/core/jsx-runtime";
10
4
  import {
11
5
  AccessModifiers,
12
6
  computeModifiersPrefix,
13
7
  getAccessModifier,
14
8
  } from "../../modifiers.js";
15
- import { useCSharpNamePolicy } from "../../name-policy.js";
16
- import { CSharpOutputSymbol } from "../../symbols/csharp-output-symbol.js";
17
- import { CSharpMemberScope, useCSharpScope } from "../../symbols/scopes.js";
9
+ import { useNamedTypeScope } from "../../scopes/contexts.js";
10
+ import { MethodSymbol } from "../../symbols/method.js";
18
11
  import { ParameterProps, Parameters } from "../parameters/parameters.jsx";
19
12
 
20
13
  /**
@@ -32,36 +25,24 @@ export interface ConstructorProps extends AccessModifiers {
32
25
  }
33
26
 
34
27
  export function Constructor(props: ConstructorProps) {
35
- const scope = useCSharpScope();
36
- if (
37
- scope.kind !== "member" ||
38
- (scope.name !== "class-decl" && scope.name !== "struct-decl")
39
- ) {
40
- throw new Error(
41
- "can't define a class method outside of a class or struct scope",
42
- );
43
- }
28
+ const scope = useNamedTypeScope();
44
29
 
45
- const name = useCSharpNamePolicy().getName(scope.owner!.name, "class-method");
46
- const ctorSymbol = new CSharpOutputSymbol(name, {
47
- scope,
48
- refkeys: props.refkey ?? refkey(name),
49
- });
30
+ const name = scope.ownerSymbol.name;
50
31
 
51
- const ctorDeclScope = new CSharpMemberScope("constructor-decl", {
52
- owner: ctorSymbol,
32
+ const ctorSymbol = new MethodSymbol(name, scope.members, "constructor", {
33
+ refkeys: props.refkey,
53
34
  });
54
35
 
55
36
  const modifiers = computeModifiersPrefix([getAccessModifier(props)]);
56
37
 
57
38
  return (
58
- <Declaration symbol={ctorSymbol}>
59
- <Scope value={ctorDeclScope}>
39
+ <MemberDeclaration symbol={ctorSymbol}>
40
+ <MethodScope>
60
41
  {modifiers}
61
- <Name />
42
+ <MemberName />
62
43
  <Parameters parameters={props.parameters} />
63
44
  <Block newline>{props.children}</Block>
64
- </Scope>
65
- </Declaration>
45
+ </MethodScope>
46
+ </MemberDeclaration>
66
47
  );
67
48
  }