@alloy-js/go 0.2.1-dev.0 → 0.3.0-dev.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/dist/dev/src/builtins/fmt/fmt.js +148 -0
  2. package/dist/dev/src/builtins/fmt/fmt.js.map +1 -0
  3. package/dist/dev/src/builtins/index.js +11 -0
  4. package/dist/dev/src/builtins/index.js.map +1 -0
  5. package/dist/dev/src/builtins/io/io.js +650 -0
  6. package/dist/dev/src/builtins/io/io.js.map +1 -0
  7. package/dist/dev/src/builtins/net/net.js +1212 -0
  8. package/dist/dev/src/builtins/net/net.js.map +1 -0
  9. package/dist/dev/src/builtins/time/time.js +464 -0
  10. package/dist/dev/src/builtins/time/time.js.map +1 -0
  11. package/dist/dev/src/components/ImportStatement.js +114 -0
  12. package/dist/dev/src/components/ImportStatement.js.map +1 -0
  13. package/dist/dev/src/components/ModuleDirectory.js +28 -0
  14. package/dist/dev/src/components/ModuleDirectory.js.map +1 -0
  15. package/dist/dev/src/components/Name.js +12 -0
  16. package/dist/dev/src/components/Name.js.map +1 -0
  17. package/dist/dev/src/components/Reference.js +15 -0
  18. package/dist/dev/src/components/Reference.js.map +1 -0
  19. package/dist/dev/src/components/SourceDirectory.js +38 -0
  20. package/dist/dev/src/components/SourceDirectory.js.map +1 -0
  21. package/dist/dev/src/components/SourceFile.js +119 -0
  22. package/dist/dev/src/components/SourceFile.js.map +1 -0
  23. package/dist/dev/src/components/doc/comment.js +46 -0
  24. package/dist/dev/src/components/doc/comment.js.map +1 -0
  25. package/dist/dev/src/components/doc/comment.test.js +371 -0
  26. package/dist/dev/src/components/doc/comment.test.js.map +1 -0
  27. package/dist/dev/src/components/function/function.js +250 -0
  28. package/dist/dev/src/components/function/function.js.map +1 -0
  29. package/dist/dev/src/components/function/function.test.js +630 -0
  30. package/dist/dev/src/components/function/function.test.js.map +1 -0
  31. package/dist/dev/src/components/index.js +16 -0
  32. package/dist/dev/src/components/index.js.map +1 -0
  33. package/dist/dev/src/components/interface/declaration.js +245 -0
  34. package/dist/dev/src/components/interface/declaration.js.map +1 -0
  35. package/dist/dev/src/components/interface/interface.test.js +853 -0
  36. package/dist/dev/src/components/interface/interface.test.js.map +1 -0
  37. package/dist/dev/src/components/package.test.js +137 -0
  38. package/dist/dev/src/components/package.test.js.map +1 -0
  39. package/dist/dev/src/components/parameters/parameters.js +102 -0
  40. package/dist/dev/src/components/parameters/parameters.js.map +1 -0
  41. package/dist/dev/src/components/parameters/typeparameters.js +93 -0
  42. package/dist/dev/src/components/parameters/typeparameters.js.map +1 -0
  43. package/dist/dev/src/components/pointer/pointer.js +8 -0
  44. package/dist/dev/src/components/pointer/pointer.js.map +1 -0
  45. package/dist/dev/src/components/stc/index.js +27 -0
  46. package/dist/dev/src/components/stc/index.js.map +1 -0
  47. package/dist/dev/src/components/struct/declaration.js +213 -0
  48. package/dist/dev/src/components/struct/declaration.js.map +1 -0
  49. package/dist/dev/src/components/struct/struct.test.js +1261 -0
  50. package/dist/dev/src/components/struct/struct.test.js.map +1 -0
  51. package/dist/dev/src/components/type/declaration.js +112 -0
  52. package/dist/dev/src/components/type/declaration.js.map +1 -0
  53. package/dist/dev/src/components/var/declaration.js +136 -0
  54. package/dist/dev/src/components/var/declaration.js.map +1 -0
  55. package/dist/dev/src/components/var/var-declaration.test.js +564 -0
  56. package/dist/dev/src/components/var/var-declaration.test.js.map +1 -0
  57. package/dist/dev/src/context/package.js +6 -0
  58. package/dist/dev/src/context/package.js.map +1 -0
  59. package/dist/dev/src/create-module.js +157 -0
  60. package/dist/dev/src/create-module.js.map +1 -0
  61. package/dist/dev/src/create-module.test.js +175 -0
  62. package/dist/dev/src/create-module.test.js.map +1 -0
  63. package/dist/dev/src/index.js +7 -0
  64. package/dist/dev/src/index.js.map +1 -0
  65. package/dist/dev/src/name-policy.js +27 -0
  66. package/dist/dev/src/name-policy.js.map +1 -0
  67. package/dist/dev/src/scopes/contexts.js +34 -0
  68. package/dist/dev/src/scopes/contexts.js.map +1 -0
  69. package/dist/dev/src/scopes/factories.js +17 -0
  70. package/dist/dev/src/scopes/factories.js.map +1 -0
  71. package/dist/dev/src/scopes/function.js +14 -0
  72. package/dist/dev/src/scopes/function.js.map +1 -0
  73. package/dist/dev/src/scopes/go.js +12 -0
  74. package/dist/dev/src/scopes/go.js.map +1 -0
  75. package/dist/dev/src/scopes/index.js +10 -0
  76. package/dist/dev/src/scopes/index.js.map +1 -0
  77. package/dist/dev/src/scopes/lexical.js +11 -0
  78. package/dist/dev/src/scopes/lexical.js.map +1 -0
  79. package/dist/dev/src/scopes/module.js +31 -0
  80. package/dist/dev/src/scopes/module.js.map +1 -0
  81. package/dist/dev/src/scopes/named-type.js +33 -0
  82. package/dist/dev/src/scopes/named-type.js.map +1 -0
  83. package/dist/dev/src/scopes/package.js +39 -0
  84. package/dist/dev/src/scopes/package.js.map +1 -0
  85. package/dist/dev/src/scopes/source-file.js +43 -0
  86. package/dist/dev/src/scopes/source-file.js.map +1 -0
  87. package/dist/dev/src/symbols/factories.js +165 -0
  88. package/dist/dev/src/symbols/factories.js.map +1 -0
  89. package/dist/dev/src/symbols/function.js +24 -0
  90. package/dist/dev/src/symbols/function.js.map +1 -0
  91. package/dist/dev/src/symbols/go.js +60 -0
  92. package/dist/dev/src/symbols/go.js.map +1 -0
  93. package/dist/dev/src/symbols/index.js +7 -0
  94. package/dist/dev/src/symbols/index.js.map +1 -0
  95. package/dist/dev/src/symbols/named-type.js +42 -0
  96. package/dist/dev/src/symbols/named-type.js.map +1 -0
  97. package/dist/dev/src/symbols/package.js +39 -0
  98. package/dist/dev/src/symbols/package.js.map +1 -0
  99. package/dist/dev/src/symbols/reference.js +76 -0
  100. package/dist/dev/src/symbols/reference.js.map +1 -0
  101. package/dist/dev/src/symbols/type-parameter.js +16 -0
  102. package/dist/dev/src/symbols/type-parameter.js.map +1 -0
  103. package/dist/dev/test/utils.js +92 -0
  104. package/dist/dev/test/utils.js.map +1 -0
  105. package/dist/dev/test/vitest.setup.js +2 -0
  106. package/dist/dev/test/vitest.setup.js.map +1 -0
  107. package/dist/src/components/SourceFile.d.ts.map +1 -1
  108. package/dist/src/components/SourceFile.js +2 -2
  109. package/dist/src/components/SourceFile.js.map +1 -1
  110. package/dist/src/components/type/declaration.d.ts.map +1 -1
  111. package/dist/src/components/type/declaration.js +2 -2
  112. package/dist/src/components/type/declaration.js.map +1 -1
  113. package/dist/src/create-module.d.ts.map +1 -1
  114. package/dist/src/create-module.js +8 -9
  115. package/dist/src/create-module.js.map +1 -1
  116. package/dist/src/scopes/factories.d.ts.map +1 -1
  117. package/dist/src/scopes/factories.js +3 -2
  118. package/dist/src/scopes/factories.js.map +1 -1
  119. package/dist/src/scopes/module.js +2 -2
  120. package/dist/src/scopes/module.js.map +1 -1
  121. package/dist/src/scopes/package.js +2 -2
  122. package/dist/src/scopes/package.js.map +1 -1
  123. package/dist/src/scopes/source-file.d.ts.map +1 -1
  124. package/dist/src/scopes/source-file.js +4 -3
  125. package/dist/src/scopes/source-file.js.map +1 -1
  126. package/dist/src/symbols/factories.d.ts.map +1 -1
  127. package/dist/src/symbols/factories.js +67 -16
  128. package/dist/src/symbols/factories.js.map +1 -1
  129. package/dist/src/symbols/go.d.ts.map +1 -1
  130. package/dist/src/symbols/go.js +6 -2
  131. package/dist/src/symbols/go.js.map +1 -1
  132. package/dist/src/symbols/named-type.d.ts.map +1 -1
  133. package/dist/src/symbols/named-type.js +2 -2
  134. package/dist/src/symbols/named-type.js.map +1 -1
  135. package/dist/src/symbols/package.d.ts.map +1 -1
  136. package/dist/src/symbols/package.js +2 -1
  137. package/dist/src/symbols/package.js.map +1 -1
  138. package/dist/tsconfig.tsbuildinfo +1 -1
  139. package/package.json +13 -6
  140. package/src/components/SourceFile.tsx +2 -1
  141. package/src/components/type/declaration.tsx +10 -4
  142. package/src/create-module.ts +11 -8
  143. package/src/scopes/factories.ts +3 -3
  144. package/src/scopes/module.ts +2 -2
  145. package/src/scopes/package.ts +2 -2
  146. package/src/scopes/source-file.ts +3 -1
  147. package/src/symbols/factories.ts +82 -47
  148. package/src/symbols/go.ts +6 -1
  149. package/src/symbols/named-type.ts +3 -1
  150. package/src/symbols/package.ts +2 -2
  151. package/vitest.config.ts +8 -0
package/package.json CHANGED
@@ -1,18 +1,25 @@
1
1
  {
2
2
  "name": "@alloy-js/go",
3
- "version": "0.2.1-dev.0",
3
+ "version": "0.3.0-dev.3",
4
4
  "description": "Go bindings for Alloy",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/alloy-framework/alloy.git"
8
+ },
5
9
  "exports": {
6
10
  ".": {
11
+ "development": "./dist/dev/src/index.js",
7
12
  "import": "./dist/src/index.js"
8
13
  },
9
14
  "./stc": {
15
+ "development": "./dist/dev/src/components/stc/index.js",
10
16
  "import": "./dist/src/components/stc/index.js"
11
17
  }
12
18
  },
13
19
  "imports": {
14
20
  "#test/*": "./test/*",
15
21
  "#components/*": {
22
+ "development": "./dist/dev/src/components/*",
16
23
  "default": "./dist/src/components/*"
17
24
  }
18
25
  },
@@ -20,23 +27,23 @@
20
27
  "author": "",
21
28
  "license": "MIT",
22
29
  "dependencies": {
23
- "@alloy-js/core": "~0.22.0 || >= 0.23.0-dev.0",
30
+ "@alloy-js/core": "~0.22.0 || >= 0.23.0-dev.12",
24
31
  "change-case": "^5.4.4",
25
32
  "pathe": "^2.0.3"
26
33
  },
27
34
  "devDependencies": {
28
- "@alloy-js/cli": "~0.22.0 || >= 0.23.0-dev.0",
29
- "@alloy-js/rollup-plugin": "~0.1.0 || >= 0.1.1-dev.0",
35
+ "@alloy-js/cli": "~0.22.0 || >= 0.23.0-dev.4",
36
+ "@alloy-js/rollup-plugin": "~0.1.0 || >= 0.1.1-dev.1",
30
37
  "@microsoft/api-extractor": "~7.52.8",
31
38
  "@rollup/plugin-typescript": "^12.1.2",
32
39
  "concurrently": "^9.2.0",
33
40
  "typescript": "^5.8.3",
34
- "vitest": "^3.2.4"
41
+ "vitest": "3.2.4"
35
42
  },
36
43
  "type": "module",
37
44
  "scripts": {
38
45
  "generate-docs": "api-extractor run",
39
- "build": "alloy build && pnpm run generate-docs",
46
+ "build": "alloy build --with-dev && pnpm run generate-docs",
40
47
  "clean": "rimraf dist/ .temp/",
41
48
  "test:watch": "vitest -w",
42
49
  "watch": "alloy build --watch",
@@ -1,5 +1,6 @@
1
1
  import {
2
2
  SourceFile as CoreSourceFile,
3
+ createScope,
3
4
  Scope,
4
5
  Show,
5
6
  SourceDirectoryContext,
@@ -27,7 +28,7 @@ export function SourceFile(props: SourceFileProps) {
27
28
  const directoryContext = useContext(SourceDirectoryContext)!;
28
29
  const currentDir = directoryContext.path;
29
30
  const path: string = join(currentDir, props.path);
30
- const scope = new GoSourceFileScope(path, pkg);
31
+ const scope = createScope(GoSourceFileScope, path, pkg);
31
32
 
32
33
  const header = (
33
34
  <SourceFileHeader
@@ -2,6 +2,7 @@ import {
2
2
  Children,
3
3
  ComponentContext,
4
4
  createContext,
5
+ createSymbol,
5
6
  Declaration,
6
7
  Indent,
7
8
  List,
@@ -73,10 +74,15 @@ export function TypeDeclaration(props: TypeDeclarationProps) {
73
74
  });
74
75
 
75
76
  for (const typeParameter of props.typeParameters ?? []) {
76
- new TypeParameterSymbol(typeParameter.name, symbol.typeParameters, {
77
- refkeys: typeParameter.refkey,
78
- constraint: typeParameter.constraint,
79
- });
77
+ createSymbol(
78
+ TypeParameterSymbol,
79
+ typeParameter.name,
80
+ symbol.typeParameters,
81
+ {
82
+ refkeys: typeParameter.refkey,
83
+ constraint: typeParameter.constraint,
84
+ },
85
+ );
80
86
  }
81
87
  }
82
88
 
@@ -1,5 +1,6 @@
1
1
  import {
2
2
  Binder,
3
+ createSymbol,
3
4
  LibrarySymbolReference,
4
5
  namekey,
5
6
  refkey,
@@ -191,14 +192,13 @@ function createSymbolFromDescriptor(
191
192
  if (ownerSymbol === null) {
192
193
  const dname = basename(name);
193
194
  const packageName = descriptor.name ?? dname;
194
- const packageSymbol = new PackageSymbol(packageName, undefined, {
195
+ return createSymbol(PackageSymbol, packageName, undefined, {
195
196
  binder,
196
197
  refkeys: refkey(),
197
198
  lazyMemberInitializer,
198
199
  path: descriptor.path,
199
200
  builtin: context.builtin,
200
201
  });
201
- return packageSymbol;
202
202
  }
203
203
  if (!(ownerSymbol instanceof PackageSymbol)) {
204
204
  throw new Error(
@@ -208,7 +208,7 @@ function createSymbolFromDescriptor(
208
208
  if (ownerSymbol.members.symbolNames.has(name)) {
209
209
  return ownerSymbol.members.symbolNames.get(name)! as PackageSymbol;
210
210
  }
211
- return new PackageSymbol(name, ownerSymbol as PackageSymbol, {
211
+ return createSymbol(PackageSymbol, name, ownerSymbol as PackageSymbol, {
212
212
  binder,
213
213
  refkeys: refkey(),
214
214
  lazyMemberInitializer,
@@ -223,7 +223,8 @@ function createSymbolFromDescriptor(
223
223
  `Cannot create a named type symbol (${name}) with a non-package owner symbol (${ownerSymbol.name}).`,
224
224
  );
225
225
  }
226
- return new NamedTypeSymbol(
226
+ return createSymbol(
227
+ NamedTypeSymbol,
227
228
  namekey(name),
228
229
  ownerSymbol.members,
229
230
  descriptor.kind,
@@ -239,7 +240,7 @@ function createSymbolFromDescriptor(
239
240
  `Cannot create a function symbol (${name}) with a non-package owner symbol (${ownerSymbol.name}).`,
240
241
  );
241
242
  }
242
- return new FunctionSymbol(namekey(name), ownerSymbol.members, {
243
+ return createSymbol(FunctionSymbol, namekey(name), ownerSymbol.members, {
243
244
  binder,
244
245
  refkeys: refkey(),
245
246
  });
@@ -249,7 +250,8 @@ function createSymbolFromDescriptor(
249
250
  `Cannot create a field symbol (${name}) with a non-named-type owner symbol (${ownerSymbol.name}).`,
250
251
  );
251
252
  }
252
- return new NamedTypeSymbol(
253
+ return createSymbol(
254
+ NamedTypeSymbol,
253
255
  namekey(name),
254
256
  ownerSymbol.members,
255
257
  ownerSymbol.typeKind === "interface" ?
@@ -272,7 +274,8 @@ function createSymbolFromDescriptor(
272
274
  `Cannot create a field symbol (${name}) with a non-named-type owner symbol (${ownerSymbol.name}).`,
273
275
  );
274
276
  }
275
- const symbol = new NamedTypeSymbol(
277
+ const symbol = createSymbol(
278
+ NamedTypeSymbol,
276
279
  namekey(name),
277
280
  ownerSymbol.members,
278
281
  ownerSymbol.typeKind === "interface" ?
@@ -298,7 +301,7 @@ function createSymbolFromDescriptor(
298
301
  `Cannot create a variable symbol (${name}) with a non-package owner symbol (${ownerSymbol.name}).`,
299
302
  );
300
303
  }
301
- return new GoSymbol(namekey(name), ownerSymbol.members, {
304
+ return createSymbol(GoSymbol, namekey(name), ownerSymbol.members, {
302
305
  binder,
303
306
  refkeys: refkey(),
304
307
  type:
@@ -1,4 +1,4 @@
1
- import { OutputScopeOptions } from "@alloy-js/core";
1
+ import { OutputScopeOptions, createScope } from "@alloy-js/core";
2
2
  import { NamedTypeSymbol } from "../symbols/named-type.js";
3
3
  import { useGoScope } from "./contexts.js";
4
4
  import { GoFunctionScope } from "./function.js";
@@ -20,10 +20,10 @@ export function createNamedTypeScope(
20
20
  );
21
21
  }
22
22
 
23
- return new GoNamedTypeScope(ownerSymbol, currentScope, options);
23
+ return createScope(GoNamedTypeScope, ownerSymbol, currentScope, options);
24
24
  }
25
25
 
26
26
  export function createFunctionScope(options: OutputScopeOptions = {}) {
27
27
  const parentScope = useGoScope();
28
- return new GoFunctionScope("function scope", parentScope, options);
28
+ return createScope(GoFunctionScope, "function scope", parentScope, options);
29
29
  }
@@ -1,4 +1,4 @@
1
- import { OutputScope, useScope } from "@alloy-js/core";
1
+ import { OutputScope, createScope, useScope } from "@alloy-js/core";
2
2
  import { GoScope } from "./go.js";
3
3
 
4
4
  export class GoModuleScope extends GoScope {
@@ -18,7 +18,7 @@ export function createGoModuleScope(name: string) {
18
18
  if (parentScope) {
19
19
  throw new Error("Modules can only be created at the top level");
20
20
  }
21
- const scope = new GoModuleScope(name);
21
+ const scope = createScope(GoModuleScope, name);
22
22
  return scope;
23
23
  }
24
24
 
@@ -1,4 +1,4 @@
1
- import { OutputScope, useScope } from "@alloy-js/core";
1
+ import { OutputScope, createScope, useScope } from "@alloy-js/core";
2
2
  import type { PackageSymbol } from "../symbols/package.js";
3
3
  import { GoModuleScope } from "./module.js";
4
4
  import { GoNamedTypeScope } from "./named-type.js";
@@ -28,7 +28,7 @@ export function createGoPackageScope(packageSymbol: PackageSymbol) {
28
28
  throw new Error("Packages can only be created within a package or module");
29
29
  }
30
30
 
31
- const scope = new GoPackageScope(packageSymbol, parentScope);
31
+ const scope = createScope(GoPackageScope, packageSymbol, parentScope);
32
32
 
33
33
  return scope;
34
34
  }
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  OutputScope,
3
3
  OutputScopeOptions,
4
+ createSymbol,
4
5
  shallowReactive,
5
6
  useScope,
6
7
  } from "@alloy-js/core";
@@ -39,8 +40,9 @@ export class GoSourceFileScope extends GoLexicalScope {
39
40
  return this.#imports.get(import_)!;
40
41
  }
41
42
 
42
- const localSymbol = new GoSymbol(import_.name, this.values, {
43
+ const localSymbol = createSymbol(GoSymbol, import_.name, this.values, {
43
44
  aliasTarget: import_,
45
+ binder: this.binder,
44
46
  });
45
47
 
46
48
  this.#imports.set(import_, localSymbol);
@@ -1,4 +1,4 @@
1
- import { Namekey, NamePolicyGetter } from "@alloy-js/core";
1
+ import { createSymbol, Namekey, NamePolicyGetter } from "@alloy-js/core";
2
2
  import { join } from "pathe";
3
3
  import { GoElements, useGoNamePolicy } from "../name-policy.js";
4
4
  import { useGoScope, useNamedTypeScope } from "../scopes/contexts.js";
@@ -27,11 +27,11 @@ export function createParameterSymbol(
27
27
  if (!(scope instanceof GoFunctionScope)) {
28
28
  throw new Error(`Can't create parameter symbol outside of a func scope.`);
29
29
  }
30
- return new GoSymbol(
31
- originalName,
32
- scope.parameters,
33
- withNamePolicy(options, "parameter"),
34
- );
30
+ const binder = options.binder ?? scope.binder;
31
+ return createSymbol(GoSymbol, originalName, scope.parameters, {
32
+ ...withNamePolicy(options, "parameter"),
33
+ binder,
34
+ });
35
35
  }
36
36
 
37
37
  export interface CreateTypeParameterSymbolOptions extends GoSymbolOptions {
@@ -51,11 +51,11 @@ export function createTypeParameterSymbol(
51
51
  );
52
52
  }
53
53
 
54
- return new GoSymbol(
55
- originalName,
56
- scope.typeParameters,
57
- withNamePolicy(options, "type-parameter"),
58
- );
54
+ const binder = options.binder ?? scope.binder;
55
+ return createSymbol(GoSymbol, originalName, scope.typeParameters, {
56
+ ...withNamePolicy(options, "type-parameter"),
57
+ binder,
58
+ });
59
59
  }
60
60
 
61
61
  export function createStructMemberSymbol(
@@ -73,11 +73,16 @@ export function createStructMemberSymbol(
73
73
  );
74
74
  }
75
75
 
76
- return new NamedTypeSymbol(
76
+ const binder = options.binder ?? scope.ownerSymbol.binder;
77
+ return createSymbol(
78
+ NamedTypeSymbol,
77
79
  originalName,
78
80
  scope.members,
79
81
  "struct-member",
80
- withNamePolicy(options, "struct-member"),
82
+ {
83
+ ...withNamePolicy(options, "struct-member"),
84
+ binder,
85
+ },
81
86
  );
82
87
  }
83
88
 
@@ -93,11 +98,16 @@ export function createInterfaceMemberSymbol(
93
98
  );
94
99
  }
95
100
 
96
- return new NamedTypeSymbol(
101
+ const binder = options.binder ?? scope.ownerSymbol.binder;
102
+ return createSymbol(
103
+ NamedTypeSymbol,
97
104
  originalName,
98
105
  scope.members,
99
106
  "interface-member",
100
- withNamePolicy(options, "interface-member"),
107
+ {
108
+ ...withNamePolicy(options, "interface-member"),
109
+ binder,
110
+ },
101
111
  );
102
112
  }
103
113
 
@@ -109,12 +119,19 @@ export function createPackageSymbol(name: string, path?: string) {
109
119
  const modName = mod.name;
110
120
  const builtin = mod.builtin;
111
121
  const pkgPath = path ? join(modName, path) : modName;
112
- return new PackageSymbol(name, undefined, { path: pkgPath, builtin });
122
+ return createSymbol(PackageSymbol, name, undefined, {
123
+ path: pkgPath,
124
+ builtin,
125
+ binder: mod.binder,
126
+ });
113
127
  }
114
128
  if (pkgSymbol.members.symbolNames.has(name)) {
115
129
  return pkgSymbol.members.symbolNames.get(name)! as PackageSymbol;
116
130
  }
117
- return new PackageSymbol(name, pkgSymbol, { path });
131
+ return createSymbol(PackageSymbol, name, pkgSymbol, {
132
+ path,
133
+ binder: pkgSymbol.binder,
134
+ });
118
135
  }
119
136
 
120
137
  export function createFunctionSymbol(
@@ -124,17 +141,17 @@ export function createFunctionSymbol(
124
141
  ) {
125
142
  const scope = useGoScope();
126
143
  if (!isMethod && scope instanceof GoLexicalScope) {
127
- return new FunctionSymbol(
128
- originalName,
129
- scope.types,
130
- withNamePolicy(options, "function"),
131
- );
144
+ const binder = options.binder ?? scope.binder;
145
+ return createSymbol(FunctionSymbol, originalName, scope.types, {
146
+ ...withNamePolicy(options, "function"),
147
+ binder,
148
+ });
132
149
  }
133
- return new FunctionSymbol(
134
- originalName,
135
- undefined,
136
- withNamePolicy(options, "function"),
137
- );
150
+ const binder = options.binder ?? scope.binder;
151
+ return createSymbol(FunctionSymbol, originalName, undefined, {
152
+ ...withNamePolicy(options, "function"),
153
+ binder,
154
+ });
138
155
  }
139
156
 
140
157
  export function createPropertySymbol(
@@ -142,11 +159,11 @@ export function createPropertySymbol(
142
159
  options: GoSymbolOptions,
143
160
  ) {
144
161
  const scope = useNamedTypeScope();
145
- return new GoSymbol(
146
- originalName,
147
- scope.members,
148
- withNamePolicy(options, "struct-member"),
149
- );
162
+ const binder = options.binder ?? scope.binder;
163
+ return createSymbol(GoSymbol, originalName, scope.members, {
164
+ ...withNamePolicy(options, "struct-member"),
165
+ binder,
166
+ });
150
167
  }
151
168
 
152
169
  export function createVariableSymbol(
@@ -159,11 +176,11 @@ export function createVariableSymbol(
159
176
  `Can't create variable symbol outside of a lexical scope, got a ${scope.constructor.name}.`,
160
177
  );
161
178
  }
162
- return new GoSymbol(
163
- originalName,
164
- scope.values,
165
- withNamePolicy(options, "variable"),
166
- );
179
+ const binder = options.binder ?? scope.binder;
180
+ return createSymbol(GoSymbol, originalName, scope.values, {
181
+ ...withNamePolicy(options, "variable"),
182
+ binder,
183
+ });
167
184
  }
168
185
 
169
186
  export function createTypeSymbol(
@@ -173,12 +190,11 @@ export function createTypeSymbol(
173
190
  ) {
174
191
  const scope = useGoScope();
175
192
  if (scope instanceof GoLexicalScope) {
176
- return new NamedTypeSymbol(
177
- originalName,
178
- scope.types,
179
- kind,
180
- withNamePolicy(options, "type"),
181
- );
193
+ const binder = options.binder ?? scope.binder;
194
+ return createSymbol(NamedTypeSymbol, originalName, scope.types, kind, {
195
+ ...withNamePolicy(options, "type"),
196
+ binder,
197
+ });
182
198
  }
183
199
  throw new Error(
184
200
  `Can't create type symbol outside of a lexical scope, got a ${scope.constructor.name}.`,
@@ -192,11 +208,16 @@ export function createNestedStructSymbol(
192
208
  ) {
193
209
  const scope = useGoScope();
194
210
  if (scope instanceof GoNamedTypeScope) {
195
- return new NamedTypeSymbol(
211
+ const binder = options.binder ?? scope.binder;
212
+ return createSymbol(
213
+ NamedTypeSymbol,
196
214
  originalName,
197
215
  scope.ownerSymbol.members,
198
216
  kind,
199
- withNamePolicy(options, "struct-member"),
217
+ {
218
+ ...withNamePolicy(options, "struct-member"),
219
+ binder,
220
+ },
200
221
  );
201
222
  }
202
223
  throw new Error(
@@ -214,9 +235,23 @@ export function createAnonymousTypeSymbol(
214
235
  "anonymous_" + anonymousTypeID++ + "_this_should_not_appear_in_output";
215
236
  const scope = useGoScope();
216
237
  if (scope instanceof GoLexicalScope) {
217
- return new NamedTypeSymbol(name, scope.types, kind, options);
238
+ const binder = options.binder ?? scope.binder;
239
+ return createSymbol(NamedTypeSymbol, name, scope.types, kind, {
240
+ ...options,
241
+ binder,
242
+ });
218
243
  } else if (scope instanceof GoNamedTypeScope) {
219
- return new NamedTypeSymbol(name, scope.ownerSymbol.members, kind, options);
244
+ const binder = options.binder ?? scope.binder;
245
+ return createSymbol(
246
+ NamedTypeSymbol,
247
+ name,
248
+ scope.ownerSymbol.members,
249
+ kind,
250
+ {
251
+ ...options,
252
+ binder,
253
+ },
254
+ );
220
255
  }
221
256
  throw new Error(
222
257
  `Can't create anonymous type symbol outside of a lexical or NamedType scope, got a ${scope.constructor.name}.`,
package/src/symbols/go.ts CHANGED
@@ -5,6 +5,7 @@ import {
5
5
  OutputSpace,
6
6
  OutputSymbol,
7
7
  OutputSymbolOptions,
8
+ createSymbol,
8
9
  } from "@alloy-js/core";
9
10
  import { GoScope } from "../scopes/go.js";
10
11
  import { PackageSymbol } from "./package.js";
@@ -75,7 +76,11 @@ export class GoSymbol extends OutputSymbol {
75
76
 
76
77
  copy(): OutputSymbol {
77
78
  const options = this.getGoCopyOptions();
78
- const copy = new GoSymbol(this.name, undefined, options);
79
+ const binder = this.binder;
80
+ const copy = createSymbol(GoSymbol, this.name, undefined, {
81
+ ...options,
82
+ binder,
83
+ });
79
84
  this.initializeGoCopy(copy);
80
85
  return copy;
81
86
  }
@@ -1,4 +1,5 @@
1
1
  import {
2
+ createSymbol,
2
3
  Namekey,
3
4
  OutputSpace,
4
5
  track,
@@ -62,7 +63,8 @@ export class NamedTypeSymbol extends GoSymbol {
62
63
 
63
64
  copy() {
64
65
  const options = this.getGoCopyOptions();
65
- const copy = new NamedTypeSymbol(
66
+ const copy = createSymbol(
67
+ NamedTypeSymbol,
66
68
  this.name,
67
69
  undefined,
68
70
  this.#typeKind,
@@ -1,4 +1,4 @@
1
- import { OutputSymbolOptions } from "@alloy-js/core";
1
+ import { OutputSymbolOptions, createSymbol } from "@alloy-js/core";
2
2
  import { join } from "pathe";
3
3
  import { NamedTypeSymbol } from "./named-type.js";
4
4
 
@@ -44,7 +44,7 @@ export class PackageSymbol extends NamedTypeSymbol {
44
44
 
45
45
  copy() {
46
46
  const options = this.getGoCopyOptions();
47
- const copy = new PackageSymbol(this.name, undefined, {
47
+ const copy = createSymbol(PackageSymbol, this.name, undefined, {
48
48
  ...options,
49
49
  path: this.#path,
50
50
  });
package/vitest.config.ts CHANGED
@@ -2,6 +2,14 @@ import alloyPlugin from "@alloy-js/rollup-plugin";
2
2
  import { defineConfig } from "vitest/config";
3
3
 
4
4
  export default defineConfig({
5
+ resolve: {
6
+ conditions: ["source"],
7
+ },
8
+ ssr: {
9
+ resolve: {
10
+ conditions: ["source"],
11
+ },
12
+ },
5
13
  esbuild: {
6
14
  jsx: "preserve",
7
15
  sourcemap: "both",