@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.
- package/dist/dev/src/builtins/fmt/fmt.js +148 -0
- package/dist/dev/src/builtins/fmt/fmt.js.map +1 -0
- package/dist/dev/src/builtins/index.js +11 -0
- package/dist/dev/src/builtins/index.js.map +1 -0
- package/dist/dev/src/builtins/io/io.js +650 -0
- package/dist/dev/src/builtins/io/io.js.map +1 -0
- package/dist/dev/src/builtins/net/net.js +1212 -0
- package/dist/dev/src/builtins/net/net.js.map +1 -0
- package/dist/dev/src/builtins/time/time.js +464 -0
- package/dist/dev/src/builtins/time/time.js.map +1 -0
- package/dist/dev/src/components/ImportStatement.js +114 -0
- package/dist/dev/src/components/ImportStatement.js.map +1 -0
- package/dist/dev/src/components/ModuleDirectory.js +28 -0
- package/dist/dev/src/components/ModuleDirectory.js.map +1 -0
- package/dist/dev/src/components/Name.js +12 -0
- package/dist/dev/src/components/Name.js.map +1 -0
- package/dist/dev/src/components/Reference.js +15 -0
- package/dist/dev/src/components/Reference.js.map +1 -0
- package/dist/dev/src/components/SourceDirectory.js +38 -0
- package/dist/dev/src/components/SourceDirectory.js.map +1 -0
- package/dist/dev/src/components/SourceFile.js +119 -0
- package/dist/dev/src/components/SourceFile.js.map +1 -0
- package/dist/dev/src/components/doc/comment.js +46 -0
- package/dist/dev/src/components/doc/comment.js.map +1 -0
- package/dist/dev/src/components/doc/comment.test.js +371 -0
- package/dist/dev/src/components/doc/comment.test.js.map +1 -0
- package/dist/dev/src/components/function/function.js +250 -0
- package/dist/dev/src/components/function/function.js.map +1 -0
- package/dist/dev/src/components/function/function.test.js +630 -0
- package/dist/dev/src/components/function/function.test.js.map +1 -0
- package/dist/dev/src/components/index.js +16 -0
- package/dist/dev/src/components/index.js.map +1 -0
- package/dist/dev/src/components/interface/declaration.js +245 -0
- package/dist/dev/src/components/interface/declaration.js.map +1 -0
- package/dist/dev/src/components/interface/interface.test.js +853 -0
- package/dist/dev/src/components/interface/interface.test.js.map +1 -0
- package/dist/dev/src/components/package.test.js +137 -0
- package/dist/dev/src/components/package.test.js.map +1 -0
- package/dist/dev/src/components/parameters/parameters.js +102 -0
- package/dist/dev/src/components/parameters/parameters.js.map +1 -0
- package/dist/dev/src/components/parameters/typeparameters.js +93 -0
- package/dist/dev/src/components/parameters/typeparameters.js.map +1 -0
- package/dist/dev/src/components/pointer/pointer.js +8 -0
- package/dist/dev/src/components/pointer/pointer.js.map +1 -0
- package/dist/dev/src/components/stc/index.js +27 -0
- package/dist/dev/src/components/stc/index.js.map +1 -0
- package/dist/dev/src/components/struct/declaration.js +213 -0
- package/dist/dev/src/components/struct/declaration.js.map +1 -0
- package/dist/dev/src/components/struct/struct.test.js +1261 -0
- package/dist/dev/src/components/struct/struct.test.js.map +1 -0
- package/dist/dev/src/components/type/declaration.js +112 -0
- package/dist/dev/src/components/type/declaration.js.map +1 -0
- package/dist/dev/src/components/var/declaration.js +136 -0
- package/dist/dev/src/components/var/declaration.js.map +1 -0
- package/dist/dev/src/components/var/var-declaration.test.js +564 -0
- package/dist/dev/src/components/var/var-declaration.test.js.map +1 -0
- package/dist/dev/src/context/package.js +6 -0
- package/dist/dev/src/context/package.js.map +1 -0
- package/dist/dev/src/create-module.js +157 -0
- package/dist/dev/src/create-module.js.map +1 -0
- package/dist/dev/src/create-module.test.js +175 -0
- package/dist/dev/src/create-module.test.js.map +1 -0
- package/dist/dev/src/index.js +7 -0
- package/dist/dev/src/index.js.map +1 -0
- package/dist/dev/src/name-policy.js +27 -0
- package/dist/dev/src/name-policy.js.map +1 -0
- package/dist/dev/src/scopes/contexts.js +34 -0
- package/dist/dev/src/scopes/contexts.js.map +1 -0
- package/dist/dev/src/scopes/factories.js +17 -0
- package/dist/dev/src/scopes/factories.js.map +1 -0
- package/dist/dev/src/scopes/function.js +14 -0
- package/dist/dev/src/scopes/function.js.map +1 -0
- package/dist/dev/src/scopes/go.js +12 -0
- package/dist/dev/src/scopes/go.js.map +1 -0
- package/dist/dev/src/scopes/index.js +10 -0
- package/dist/dev/src/scopes/index.js.map +1 -0
- package/dist/dev/src/scopes/lexical.js +11 -0
- package/dist/dev/src/scopes/lexical.js.map +1 -0
- package/dist/dev/src/scopes/module.js +31 -0
- package/dist/dev/src/scopes/module.js.map +1 -0
- package/dist/dev/src/scopes/named-type.js +33 -0
- package/dist/dev/src/scopes/named-type.js.map +1 -0
- package/dist/dev/src/scopes/package.js +39 -0
- package/dist/dev/src/scopes/package.js.map +1 -0
- package/dist/dev/src/scopes/source-file.js +43 -0
- package/dist/dev/src/scopes/source-file.js.map +1 -0
- package/dist/dev/src/symbols/factories.js +165 -0
- package/dist/dev/src/symbols/factories.js.map +1 -0
- package/dist/dev/src/symbols/function.js +24 -0
- package/dist/dev/src/symbols/function.js.map +1 -0
- package/dist/dev/src/symbols/go.js +60 -0
- package/dist/dev/src/symbols/go.js.map +1 -0
- package/dist/dev/src/symbols/index.js +7 -0
- package/dist/dev/src/symbols/index.js.map +1 -0
- package/dist/dev/src/symbols/named-type.js +42 -0
- package/dist/dev/src/symbols/named-type.js.map +1 -0
- package/dist/dev/src/symbols/package.js +39 -0
- package/dist/dev/src/symbols/package.js.map +1 -0
- package/dist/dev/src/symbols/reference.js +76 -0
- package/dist/dev/src/symbols/reference.js.map +1 -0
- package/dist/dev/src/symbols/type-parameter.js +16 -0
- package/dist/dev/src/symbols/type-parameter.js.map +1 -0
- package/dist/dev/test/utils.js +92 -0
- package/dist/dev/test/utils.js.map +1 -0
- package/dist/dev/test/vitest.setup.js +2 -0
- package/dist/dev/test/vitest.setup.js.map +1 -0
- package/dist/src/components/SourceFile.d.ts.map +1 -1
- package/dist/src/components/SourceFile.js +2 -2
- package/dist/src/components/SourceFile.js.map +1 -1
- package/dist/src/components/type/declaration.d.ts.map +1 -1
- package/dist/src/components/type/declaration.js +2 -2
- package/dist/src/components/type/declaration.js.map +1 -1
- package/dist/src/create-module.d.ts.map +1 -1
- package/dist/src/create-module.js +8 -9
- package/dist/src/create-module.js.map +1 -1
- package/dist/src/scopes/factories.d.ts.map +1 -1
- package/dist/src/scopes/factories.js +3 -2
- package/dist/src/scopes/factories.js.map +1 -1
- package/dist/src/scopes/module.js +2 -2
- package/dist/src/scopes/module.js.map +1 -1
- package/dist/src/scopes/package.js +2 -2
- package/dist/src/scopes/package.js.map +1 -1
- package/dist/src/scopes/source-file.d.ts.map +1 -1
- package/dist/src/scopes/source-file.js +4 -3
- package/dist/src/scopes/source-file.js.map +1 -1
- package/dist/src/symbols/factories.d.ts.map +1 -1
- package/dist/src/symbols/factories.js +67 -16
- package/dist/src/symbols/factories.js.map +1 -1
- package/dist/src/symbols/go.d.ts.map +1 -1
- package/dist/src/symbols/go.js +6 -2
- package/dist/src/symbols/go.js.map +1 -1
- package/dist/src/symbols/named-type.d.ts.map +1 -1
- package/dist/src/symbols/named-type.js +2 -2
- package/dist/src/symbols/named-type.js.map +1 -1
- package/dist/src/symbols/package.d.ts.map +1 -1
- package/dist/src/symbols/package.js +2 -1
- package/dist/src/symbols/package.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -6
- package/src/components/SourceFile.tsx +2 -1
- package/src/components/type/declaration.tsx +10 -4
- package/src/create-module.ts +11 -8
- package/src/scopes/factories.ts +3 -3
- package/src/scopes/module.ts +2 -2
- package/src/scopes/package.ts +2 -2
- package/src/scopes/source-file.ts +3 -1
- package/src/symbols/factories.ts +82 -47
- package/src/symbols/go.ts +6 -1
- package/src/symbols/named-type.ts +3 -1
- package/src/symbols/package.ts +2 -2
- package/vitest.config.ts +8 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { createSymbol, shallowReactive, useScope } from "@alloy-js/core";
|
|
2
|
+
import { GoSymbol } from "../symbols/go.js";
|
|
3
|
+
import { GoLexicalScope } from "./lexical.js";
|
|
4
|
+
export class GoSourceFileScope extends GoLexicalScope {
|
|
5
|
+
#imports = shallowReactive(new Map());
|
|
6
|
+
constructor(name, parent, options) {
|
|
7
|
+
super(name, parent, options);
|
|
8
|
+
}
|
|
9
|
+
get imports() {
|
|
10
|
+
return this.#imports;
|
|
11
|
+
}
|
|
12
|
+
get parent() {
|
|
13
|
+
return super.parent;
|
|
14
|
+
}
|
|
15
|
+
set parent(v) {
|
|
16
|
+
super.parent = v;
|
|
17
|
+
}
|
|
18
|
+
addImport(import_) {
|
|
19
|
+
if (this.#imports.has(import_)) {
|
|
20
|
+
return this.#imports.get(import_);
|
|
21
|
+
}
|
|
22
|
+
const localSymbol = createSymbol(GoSymbol, import_.name, this.values, {
|
|
23
|
+
aliasTarget: import_,
|
|
24
|
+
binder: this.binder
|
|
25
|
+
});
|
|
26
|
+
this.#imports.set(import_, localSymbol);
|
|
27
|
+
return localSymbol;
|
|
28
|
+
}
|
|
29
|
+
get enclosingPackage() {
|
|
30
|
+
return this.parent?.ownerSymbol;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function useSourceFileScope() {
|
|
34
|
+
let scope = useScope();
|
|
35
|
+
while (scope) {
|
|
36
|
+
if (scope instanceof GoSourceFileScope) {
|
|
37
|
+
return scope;
|
|
38
|
+
}
|
|
39
|
+
scope = scope.parent;
|
|
40
|
+
}
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=source-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createSymbol","shallowReactive","useScope","GoSymbol","GoLexicalScope","GoSourceFileScope","imports","Map","constructor","name","parent","options","v","addImport","import_","has","get","localSymbol","values","aliasTarget","binder","set","enclosingPackage","ownerSymbol","useSourceFileScope","scope","undefined"],"sources":["../../../../src/scopes/source-file.ts"],"sourcesContent":[null],"mappings":"AAAA,SAGEA,YAAY,EACZC,eAAe,EACfC,QAAQ,QACH,gBAAgB;AACvB,SAASC,QAAQ,QAAQ,kBAAkB;AAE3C,SAASC,cAAc,QAAQ,cAAc;AAK7C,OAAO,MAAMC,iBAAiB,SAASD,cAAc,CAAC;EACpD,CAACE,OAAO,GAAGL,eAAe,CAAgB,IAAIM,GAAG,CAAC,CAAC,CAAC;EAEpDC,WAAWA,CACTC,IAAY,EACZC,MAAuB,EACvBC,OAA4B,EAC5B;IACA,KAAK,CAACF,IAAI,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAC9B;EAEA,IAAIL,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC,CAACA,OAAO;EACtB;EAEA,IAAII,MAAMA,CAAA,EAAG;IACX,OAAO,KAAK,CAACA,MAAM;EACrB;EAEA,IAAIA,MAAMA,CAACE,CAAiB,EAAE;IAC5B,KAAK,CAACF,MAAM,GAAGE,CAAC;EAClB;EAEAC,SAASA,CAACC,OAAsB,EAAE;IAChC,IAAI,IAAI,CAAC,CAACR,OAAO,CAACS,GAAG,CAACD,OAAO,CAAC,EAAE;MAC9B,OAAO,IAAI,CAAC,CAACR,OAAO,CAACU,GAAG,CAACF,OAAO,CAAC;IACnC;IAEA,MAAMG,WAAW,GAAGjB,YAAY,CAACG,QAAQ,EAAEW,OAAO,CAACL,IAAI,EAAE,IAAI,CAACS,MAAM,EAAE;MACpEC,WAAW,EAAEL,OAAO;MACpBM,MAAM,EAAE,IAAI,CAACA;IACf,CAAC,CAAC;IAEF,IAAI,CAAC,CAACd,OAAO,CAACe,GAAG,CAACP,OAAO,EAAEG,WAAW,CAAC;IAEvC,OAAOA,WAAW;EACpB;EAEA,IAAIK,gBAAgBA,CAAA,EAA8B;IAChD,OAAO,IAAI,CAACZ,MAAM,EAAEa,WAAW;EACjC;AACF;AAEA,OAAO,SAASC,kBAAkBA,CAAA,EAAG;EACnC,IAAIC,KAA8B,GAAGvB,QAAQ,CAAC,CAAC;EAC/C,OAAOuB,KAAK,EAAE;IACZ,IAAIA,KAAK,YAAYpB,iBAAiB,EAAE;MACtC,OAAOoB,KAAK;IACd;IACAA,KAAK,GAAGA,KAAK,CAACf,MAAM;EACtB;EAEA,OAAOgB,SAAS;AAClB","ignoreList":[]}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { createSymbol } from "@alloy-js/core";
|
|
2
|
+
import { join } from "pathe";
|
|
3
|
+
import { useGoNamePolicy } from "../name-policy.js";
|
|
4
|
+
import { useGoScope, useNamedTypeScope } from "../scopes/contexts.js";
|
|
5
|
+
import { GoFunctionScope } from "../scopes/function.js";
|
|
6
|
+
import { GoLexicalScope } from "../scopes/lexical.js";
|
|
7
|
+
import { useModule } from "../scopes/module.js";
|
|
8
|
+
import { GoNamedTypeScope } from "../scopes/named-type.js";
|
|
9
|
+
import { useEnclosingPackageScope } from "../scopes/package.js";
|
|
10
|
+
import { FunctionSymbol } from "./function.js";
|
|
11
|
+
import { GoSymbol } from "./go.js";
|
|
12
|
+
import { NamedTypeSymbol } from "./named-type.js";
|
|
13
|
+
import { PackageSymbol } from "./package.js";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Create a symbol for a parameter in the current func scope.
|
|
17
|
+
*/
|
|
18
|
+
export function createParameterSymbol(originalName, options = {}) {
|
|
19
|
+
const scope = useGoScope();
|
|
20
|
+
if (!(scope instanceof GoFunctionScope)) {
|
|
21
|
+
throw new Error(`Can't create parameter symbol outside of a func scope.`);
|
|
22
|
+
}
|
|
23
|
+
const binder = options.binder ?? scope.binder;
|
|
24
|
+
return createSymbol(GoSymbol, originalName, scope.parameters, {
|
|
25
|
+
...withNamePolicy(options, "parameter"),
|
|
26
|
+
binder
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
export function createTypeParameterSymbol(originalName, options = {}) {
|
|
30
|
+
const scope = options.scope ?? useGoScope();
|
|
31
|
+
if (!(scope instanceof GoFunctionScope) && !(scope instanceof GoNamedTypeScope)) {
|
|
32
|
+
throw new Error("Can't create a type parameter symbol outside of a func or named type scope.");
|
|
33
|
+
}
|
|
34
|
+
const binder = options.binder ?? scope.binder;
|
|
35
|
+
return createSymbol(GoSymbol, originalName, scope.typeParameters, {
|
|
36
|
+
...withNamePolicy(options, "type-parameter"),
|
|
37
|
+
binder
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
export function createStructMemberSymbol(originalName, options = {}) {
|
|
41
|
+
const scope = useNamedTypeScope();
|
|
42
|
+
if (scope.ownerSymbol.typeKind !== "struct" && scope.ownerSymbol.typeKind !== "struct-member") {
|
|
43
|
+
throw new Error(`Can't define a field outside of a struct, kind ${scope.ownerSymbol.typeKind}.`);
|
|
44
|
+
}
|
|
45
|
+
const binder = options.binder ?? scope.ownerSymbol.binder;
|
|
46
|
+
return createSymbol(NamedTypeSymbol, originalName, scope.members, "struct-member", {
|
|
47
|
+
...withNamePolicy(options, "struct-member"),
|
|
48
|
+
binder
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
export function createInterfaceMemberSymbol(originalName, options = {}) {
|
|
52
|
+
const scope = useNamedTypeScope();
|
|
53
|
+
if (scope.ownerSymbol.typeKind !== "interface") {
|
|
54
|
+
throw new Error(`Can't define a field outside of an interface, kind ${scope.ownerSymbol.typeKind}.`);
|
|
55
|
+
}
|
|
56
|
+
const binder = options.binder ?? scope.ownerSymbol.binder;
|
|
57
|
+
return createSymbol(NamedTypeSymbol, originalName, scope.members, "interface-member", {
|
|
58
|
+
...withNamePolicy(options, "interface-member"),
|
|
59
|
+
binder
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
export function createPackageSymbol(name, path) {
|
|
63
|
+
const scope = useEnclosingPackageScope();
|
|
64
|
+
const pkgSymbol = scope?.ownerSymbol;
|
|
65
|
+
if (!pkgSymbol) {
|
|
66
|
+
const mod = useModule();
|
|
67
|
+
const modName = mod.name;
|
|
68
|
+
const builtin = mod.builtin;
|
|
69
|
+
const pkgPath = path ? join(modName, path) : modName;
|
|
70
|
+
return createSymbol(PackageSymbol, name, undefined, {
|
|
71
|
+
path: pkgPath,
|
|
72
|
+
builtin,
|
|
73
|
+
binder: mod.binder
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
if (pkgSymbol.members.symbolNames.has(name)) {
|
|
77
|
+
return pkgSymbol.members.symbolNames.get(name);
|
|
78
|
+
}
|
|
79
|
+
return createSymbol(PackageSymbol, name, pkgSymbol, {
|
|
80
|
+
path,
|
|
81
|
+
binder: pkgSymbol.binder
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
export function createFunctionSymbol(originalName, isMethod, options = {}) {
|
|
85
|
+
const scope = useGoScope();
|
|
86
|
+
if (!isMethod && scope instanceof GoLexicalScope) {
|
|
87
|
+
const binder = options.binder ?? scope.binder;
|
|
88
|
+
return createSymbol(FunctionSymbol, originalName, scope.types, {
|
|
89
|
+
...withNamePolicy(options, "function"),
|
|
90
|
+
binder
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
const binder = options.binder ?? scope.binder;
|
|
94
|
+
return createSymbol(FunctionSymbol, originalName, undefined, {
|
|
95
|
+
...withNamePolicy(options, "function"),
|
|
96
|
+
binder
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
export function createPropertySymbol(originalName, options) {
|
|
100
|
+
const scope = useNamedTypeScope();
|
|
101
|
+
const binder = options.binder ?? scope.binder;
|
|
102
|
+
return createSymbol(GoSymbol, originalName, scope.members, {
|
|
103
|
+
...withNamePolicy(options, "struct-member"),
|
|
104
|
+
binder
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
export function createVariableSymbol(originalName, options = {}) {
|
|
108
|
+
const scope = useGoScope();
|
|
109
|
+
if (!(scope instanceof GoLexicalScope)) {
|
|
110
|
+
throw new Error(`Can't create variable symbol outside of a lexical scope, got a ${scope.constructor.name}.`);
|
|
111
|
+
}
|
|
112
|
+
const binder = options.binder ?? scope.binder;
|
|
113
|
+
return createSymbol(GoSymbol, originalName, scope.values, {
|
|
114
|
+
...withNamePolicy(options, "variable"),
|
|
115
|
+
binder
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
export function createTypeSymbol(originalName, kind, options = {}) {
|
|
119
|
+
const scope = useGoScope();
|
|
120
|
+
if (scope instanceof GoLexicalScope) {
|
|
121
|
+
const binder = options.binder ?? scope.binder;
|
|
122
|
+
return createSymbol(NamedTypeSymbol, originalName, scope.types, kind, {
|
|
123
|
+
...withNamePolicy(options, "type"),
|
|
124
|
+
binder
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
throw new Error(`Can't create type symbol outside of a lexical scope, got a ${scope.constructor.name}.`);
|
|
128
|
+
}
|
|
129
|
+
export function createNestedStructSymbol(originalName, kind, options = {}) {
|
|
130
|
+
const scope = useGoScope();
|
|
131
|
+
if (scope instanceof GoNamedTypeScope) {
|
|
132
|
+
const binder = options.binder ?? scope.binder;
|
|
133
|
+
return createSymbol(NamedTypeSymbol, originalName, scope.ownerSymbol.members, kind, {
|
|
134
|
+
...withNamePolicy(options, "struct-member"),
|
|
135
|
+
binder
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
throw new Error(`Can't create named anonymous type symbol outside of a NamedType scope, got a ${scope.constructor.name}.`);
|
|
139
|
+
}
|
|
140
|
+
let anonymousTypeID = 0;
|
|
141
|
+
export function createAnonymousTypeSymbol(kind, options = {}) {
|
|
142
|
+
const name = "anonymous_" + anonymousTypeID++ + "_this_should_not_appear_in_output";
|
|
143
|
+
const scope = useGoScope();
|
|
144
|
+
if (scope instanceof GoLexicalScope) {
|
|
145
|
+
const binder = options.binder ?? scope.binder;
|
|
146
|
+
return createSymbol(NamedTypeSymbol, name, scope.types, kind, {
|
|
147
|
+
...options,
|
|
148
|
+
binder
|
|
149
|
+
});
|
|
150
|
+
} else if (scope instanceof GoNamedTypeScope) {
|
|
151
|
+
const binder = options.binder ?? scope.binder;
|
|
152
|
+
return createSymbol(NamedTypeSymbol, name, scope.ownerSymbol.members, kind, {
|
|
153
|
+
...options,
|
|
154
|
+
binder
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
throw new Error(`Can't create anonymous type symbol outside of a lexical or NamedType scope, got a ${scope.constructor.name}.`);
|
|
158
|
+
}
|
|
159
|
+
function withNamePolicy(options, elementType) {
|
|
160
|
+
return {
|
|
161
|
+
...options,
|
|
162
|
+
namePolicy: options.namePolicy ?? useGoNamePolicy().for(elementType)
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=factories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createSymbol","join","useGoNamePolicy","useGoScope","useNamedTypeScope","GoFunctionScope","GoLexicalScope","useModule","GoNamedTypeScope","useEnclosingPackageScope","FunctionSymbol","GoSymbol","NamedTypeSymbol","PackageSymbol","createParameterSymbol","originalName","options","scope","Error","binder","parameters","withNamePolicy","createTypeParameterSymbol","typeParameters","createStructMemberSymbol","ownerSymbol","typeKind","members","createInterfaceMemberSymbol","createPackageSymbol","name","path","pkgSymbol","mod","modName","builtin","pkgPath","undefined","symbolNames","has","get","createFunctionSymbol","isMethod","types","createPropertySymbol","createVariableSymbol","constructor","values","createTypeSymbol","kind","createNestedStructSymbol","anonymousTypeID","createAnonymousTypeSymbol","elementType","namePolicy","for"],"sources":["../../../../src/symbols/factories.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { track, TrackOpTypes, trigger, TriggerOpTypes } from "@alloy-js/core";
|
|
2
|
+
import { GoSymbol } from "./go.js";
|
|
3
|
+
/**
|
|
4
|
+
* A symbol for a function in Go, including receivers.
|
|
5
|
+
*/
|
|
6
|
+
export class FunctionSymbol extends GoSymbol {
|
|
7
|
+
symbolKind = "function";
|
|
8
|
+
constructor(name, spaces, options = {}) {
|
|
9
|
+
super(name, spaces, options);
|
|
10
|
+
}
|
|
11
|
+
#receiverSymbol = undefined;
|
|
12
|
+
get receiverSymbol() {
|
|
13
|
+
track(this, TrackOpTypes.GET, "receiverSymbol");
|
|
14
|
+
return this.#receiverSymbol;
|
|
15
|
+
}
|
|
16
|
+
set receiverSymbol(value) {
|
|
17
|
+
if (this.#receiverSymbol === value) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
trigger(this, TriggerOpTypes.SET, "receiverSymbol", value, this.#receiverSymbol);
|
|
21
|
+
this.#receiverSymbol = value;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["track","TrackOpTypes","trigger","TriggerOpTypes","GoSymbol","FunctionSymbol","symbolKind","constructor","name","spaces","options","receiverSymbol","undefined","GET","value","SET"],"sources":["../../../../src/symbols/function.ts"],"sourcesContent":[null],"mappings":"AAAA,SAGEA,KAAK,EACLC,YAAY,EACZC,OAAO,EACPC,cAAc,QACT,gBAAgB;AACvB,SAASC,QAAQ,QAAyB,SAAS;AAGnD;AACA;AACA;AACA,OAAO,MAAMC,cAAc,SAASD,QAAQ,CAAC;EAC3BE,UAAU,GAAG,UAAU;EAEvCC,WAAWA,CACTC,IAAsB,EACtBC,MAA+B,EAC/BC,OAAwB,GAAG,CAAC,CAAC,EAC7B;IACA,KAAK,CAACF,IAAI,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAC9B;EAEA,CAACC,cAAc,GAAqBC,SAAS;EAE7C,IAAID,cAAcA,CAAA,EAAgC;IAChDX,KAAK,CAAC,IAAI,EAAEC,YAAY,CAACY,GAAG,EAAE,gBAAgB,CAAC;IAC/C,OAAO,IAAI,CAAC,CAACF,cAAc;EAC7B;EAEA,IAAIA,cAAcA,CAACG,KAAkC,EAAE;IACrD,IAAI,IAAI,CAAC,CAACH,cAAc,KAAKG,KAAK,EAAE;MAClC;IACF;IACAZ,OAAO,CACL,IAAI,EACJC,cAAc,CAACY,GAAG,EAClB,gBAAgB,EAChBD,KAAK,EACL,IAAI,CAAC,CAACH,cACR,CAAC;IACD,IAAI,CAAC,CAACA,cAAc,GAAGG,KAAK;EAC9B;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { OutputDeclarationSpace, OutputMemberSpace, OutputSymbol, createSymbol } from "@alloy-js/core";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Options for creating a Go symbol.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* This is the base type for all symbols in Go.
|
|
9
|
+
*
|
|
10
|
+
* Many subtypes of this symbol exist for specific purposes. However, this symbol
|
|
11
|
+
* may be used in cases where a more specific symbol is not required.
|
|
12
|
+
*/
|
|
13
|
+
export class GoSymbol extends OutputSymbol {
|
|
14
|
+
constructor(name, spaces, options = {}) {
|
|
15
|
+
super(name, spaces, options);
|
|
16
|
+
}
|
|
17
|
+
get enclosingPackage() {
|
|
18
|
+
if (this.spaces.length === 0) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// todo: probably need to validate that a symbol can't belong to spaces in
|
|
23
|
+
// multiple packages.
|
|
24
|
+
const firstSpace = this.spaces[0];
|
|
25
|
+
if (firstSpace instanceof OutputMemberSpace) {
|
|
26
|
+
// this symbol is a member of something, so get the enclosing package from
|
|
27
|
+
// the symbol.
|
|
28
|
+
|
|
29
|
+
if (firstSpace.symbol.constructor.name === "PackageSymbol") {
|
|
30
|
+
// this is a package symbol, so return the package symbol itself.
|
|
31
|
+
// can't use instanceof here due to circular reference issues.
|
|
32
|
+
return firstSpace.symbol;
|
|
33
|
+
}
|
|
34
|
+
return firstSpace.symbol.enclosingPackage;
|
|
35
|
+
} else if (firstSpace instanceof OutputDeclarationSpace) {
|
|
36
|
+
// this symbol is in a lexical scope, so get the package symbol from the scope.
|
|
37
|
+
return firstSpace.scope.enclosingPackage;
|
|
38
|
+
}
|
|
39
|
+
throw new Error("No place to get package symbol from");
|
|
40
|
+
}
|
|
41
|
+
getGoCopyOptions() {
|
|
42
|
+
return {
|
|
43
|
+
...this.getCopyOptions()
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
initializeGoCopy(copy) {
|
|
47
|
+
this.initializeCopy(copy);
|
|
48
|
+
}
|
|
49
|
+
copy() {
|
|
50
|
+
const options = this.getGoCopyOptions();
|
|
51
|
+
const binder = this.binder;
|
|
52
|
+
const copy = createSymbol(GoSymbol, this.name, undefined, {
|
|
53
|
+
...options,
|
|
54
|
+
binder
|
|
55
|
+
});
|
|
56
|
+
this.initializeGoCopy(copy);
|
|
57
|
+
return copy;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=go.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["OutputDeclarationSpace","OutputMemberSpace","OutputSymbol","createSymbol","GoSymbol","constructor","name","spaces","options","enclosingPackage","length","undefined","firstSpace","symbol","scope","Error","getGoCopyOptions","getCopyOptions","initializeGoCopy","copy","initializeCopy","binder"],"sources":["../../../../src/symbols/go.ts"],"sourcesContent":[null],"mappings":"AAAA,SAEEA,sBAAsB,EACtBC,iBAAiB,EAEjBC,YAAY,EAEZC,YAAY,QACP,gBAAgB;;AAIvB;AACA;AACA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,QAAQ,SAASF,YAAY,CAAC;EACzCG,WAAWA,CACTC,IAAsB,EACtBC,MAA+C,EAC/CC,OAAwB,GAAG,CAAC,CAAC,EAC7B;IACA,KAAK,CAACF,IAAI,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAC9B;EAEA,IAAIC,gBAAgBA,CAAA,EAA8B;IAChD,IAAI,IAAI,CAACF,MAAM,CAACG,MAAM,KAAK,CAAC,EAAE;MAC5B,OAAOC,SAAS;IAClB;;IAEA;IACA;IACA,MAAMC,UAAU,GAAG,IAAI,CAACL,MAAM,CAAC,CAAC,CAAC;IAEjC,IAAIK,UAAU,YAAYX,iBAAiB,EAAE;MAC3C;MACA;;MAEA,IAAIW,UAAU,CAACC,MAAM,CAACR,WAAW,CAACC,IAAI,KAAK,eAAe,EAAE;QAC1D;QACA;QACA,OAAOM,UAAU,CAACC,MAAM;MAC1B;MAEA,OAAQD,UAAU,CAACC,MAAM,CAAcJ,gBAAgB;IACzD,CAAC,MAAM,IAAIG,UAAU,YAAYZ,sBAAsB,EAAE;MACvD;MACA,OAAQY,UAAU,CAACE,KAAK,CAAaL,gBAAgB;IACvD;IACA,MAAM,IAAIM,KAAK,CAAC,qCAAqC,CAAC;EACxD;EAEUC,gBAAgBA,CAAA,EAAoB;IAC5C,OAAO;MACL,GAAG,IAAI,CAACC,cAAc,CAAC;IACzB,CAAC;EACH;EAEUC,gBAAgBA,CAACC,IAAc,EAAE;IACzC,IAAI,CAACC,cAAc,CAACD,IAAI,CAAC;EAC3B;EAEAA,IAAIA,CAAA,EAAiB;IACnB,MAAMX,OAAO,GAAG,IAAI,CAACQ,gBAAgB,CAAC,CAAC;IACvC,MAAMK,MAAM,GAAG,IAAI,CAACA,MAAM;IAC1B,MAAMF,IAAI,GAAGhB,YAAY,CAACC,QAAQ,EAAE,IAAI,CAACE,IAAI,EAAEK,SAAS,EAAE;MACxD,GAAGH,OAAO;MACVa;IACF,CAAC,CAAC;IACF,IAAI,CAACH,gBAAgB,CAACC,IAAI,CAAC;IAC3B,OAAOA,IAAI;EACb;AACF","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../../src/symbols/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc,gBAAgB;AAC9B,cAAc,eAAe;AAC7B,cAAc,SAAS;AACvB,cAAc,iBAAiB;AAC/B,cAAc,cAAc;AAC5B,cAAc,gBAAgB","ignoreList":[]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { createSymbol, track, TrackOpTypes, trigger, TriggerOpTypes } from "@alloy-js/core";
|
|
2
|
+
import { GoSymbol } from "./go.js";
|
|
3
|
+
|
|
4
|
+
// represents a symbol from a .go file. Struct, interface, etc.
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A symbol for a named type in Go such as a struct, interface, and so forth.
|
|
8
|
+
*/
|
|
9
|
+
export class NamedTypeSymbol extends GoSymbol {
|
|
10
|
+
symbolKind = "named-type";
|
|
11
|
+
static memberSpaces = ["members", "typeParameters"];
|
|
12
|
+
constructor(name, spaces, kind, options) {
|
|
13
|
+
super(name, spaces, options);
|
|
14
|
+
this.#typeKind = kind;
|
|
15
|
+
}
|
|
16
|
+
#typeKind;
|
|
17
|
+
get typeKind() {
|
|
18
|
+
track(this, TrackOpTypes.GET, "typeKind");
|
|
19
|
+
return this.#typeKind;
|
|
20
|
+
}
|
|
21
|
+
set typeKind(value) {
|
|
22
|
+
const old = this.#typeKind;
|
|
23
|
+
if (old === value) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
this.#typeKind = value;
|
|
27
|
+
trigger(this, TriggerOpTypes.SET, "typeKind", value, old);
|
|
28
|
+
}
|
|
29
|
+
get typeParameters() {
|
|
30
|
+
return this.memberSpaceFor("typeParameters");
|
|
31
|
+
}
|
|
32
|
+
copy() {
|
|
33
|
+
const options = this.getGoCopyOptions();
|
|
34
|
+
const copy = createSymbol(NamedTypeSymbol, this.name, undefined, this.#typeKind, options);
|
|
35
|
+
this.initializeGoCopy(copy);
|
|
36
|
+
return copy;
|
|
37
|
+
}
|
|
38
|
+
get members() {
|
|
39
|
+
return this.memberSpaceFor("members");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=named-type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createSymbol","track","TrackOpTypes","trigger","TriggerOpTypes","GoSymbol","NamedTypeSymbol","symbolKind","memberSpaces","constructor","name","spaces","kind","options","typeKind","GET","value","old","SET","typeParameters","memberSpaceFor","copy","getGoCopyOptions","undefined","initializeGoCopy","members"],"sources":["../../../../src/symbols/named-type.ts"],"sourcesContent":[null],"mappings":"AAAA,SACEA,YAAY,EAGZC,KAAK,EACLC,YAAY,EACZC,OAAO,EACPC,cAAc,QACT,gBAAgB;AACvB,SAASC,QAAQ,QAAyB,SAAS;;AAEnD;;AAiBA;AACA;AACA;AACA,OAAO,MAAMC,eAAe,SAASD,QAAQ,CAAC;EAC5BE,UAAU,GAAwB,YAAY;EAC9D,OAAuBC,YAAY,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC;EAEnEC,WAAWA,CACTC,IAAsB,EACtBC,MAA+C,EAC/CC,IAAuB,EACvBC,OAAgC,EAChC;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;IACbb,KAAK,CAAC,IAAI,EAAEC,YAAY,CAACa,GAAG,EAAE,UAAU,CAAC;IACzC,OAAO,IAAI,CAAC,CAACD,QAAQ;EACvB;EACA,IAAIA,QAAQA,CAACE,KAAwB,EAAE;IACrC,MAAMC,GAAG,GAAG,IAAI,CAAC,CAACH,QAAQ;IAC1B,IAAIG,GAAG,KAAKD,KAAK,EAAE;MACjB;IACF;IACA,IAAI,CAAC,CAACF,QAAQ,GAAGE,KAAK;IACtBb,OAAO,CAAC,IAAI,EAAEC,cAAc,CAACc,GAAG,EAAE,UAAU,EAAEF,KAAK,EAAEC,GAAG,CAAC;EAC3D;EAEA,IAAIE,cAAcA,CAAA,EAAG;IACnB,OAAO,IAAI,CAACC,cAAc,CAAC,gBAAgB,CAAC;EAC9C;EAEAC,IAAIA,CAAA,EAAG;IACL,MAAMR,OAAO,GAAG,IAAI,CAACS,gBAAgB,CAAC,CAAC;IACvC,MAAMD,IAAI,GAAGrB,YAAY,CACvBM,eAAe,EACf,IAAI,CAACI,IAAI,EACTa,SAAS,EACT,IAAI,CAAC,CAACT,QAAQ,EACdD,OACF,CAAC;IACD,IAAI,CAACW,gBAAgB,CAACH,IAAI,CAAC;IAC3B,OAAOA,IAAI;EACb;EAEA,IAAII,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACL,cAAc,CAAC,SAAS,CAAC;EACvC;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { createSymbol } from "@alloy-js/core";
|
|
2
|
+
import { join } from "pathe";
|
|
3
|
+
import { NamedTypeSymbol } from "./named-type.js";
|
|
4
|
+
/**
|
|
5
|
+
* A symbol for a package in Go.
|
|
6
|
+
*/
|
|
7
|
+
export class PackageSymbol extends NamedTypeSymbol {
|
|
8
|
+
symbolKind = "package";
|
|
9
|
+
constructor(name, parentPackage, options) {
|
|
10
|
+
const space = parentPackage?.members;
|
|
11
|
+
super(name, space, "package", options);
|
|
12
|
+
this.#path = options?.path ?? name;
|
|
13
|
+
if (parentPackage) {
|
|
14
|
+
this.#fullyQualifiedName = join(parentPackage.fullyQualifiedName, this.#path);
|
|
15
|
+
} else {
|
|
16
|
+
this.#fullyQualifiedName = this.#path;
|
|
17
|
+
}
|
|
18
|
+
this.#builtin = options?.builtin || parentPackage?.builtin || false;
|
|
19
|
+
}
|
|
20
|
+
#path;
|
|
21
|
+
#fullyQualifiedName;
|
|
22
|
+
get fullyQualifiedName() {
|
|
23
|
+
return this.#fullyQualifiedName;
|
|
24
|
+
}
|
|
25
|
+
#builtin;
|
|
26
|
+
get builtin() {
|
|
27
|
+
return this.#builtin;
|
|
28
|
+
}
|
|
29
|
+
copy() {
|
|
30
|
+
const options = this.getGoCopyOptions();
|
|
31
|
+
const copy = createSymbol(PackageSymbol, this.name, undefined, {
|
|
32
|
+
...options,
|
|
33
|
+
path: this.#path
|
|
34
|
+
});
|
|
35
|
+
this.initializeGoCopy(copy);
|
|
36
|
+
return copy;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createSymbol","join","NamedTypeSymbol","PackageSymbol","symbolKind","constructor","name","parentPackage","options","space","members","path","fullyQualifiedName","builtin","copy","getGoCopyOptions","undefined","initializeGoCopy"],"sources":["../../../../src/symbols/package.ts"],"sourcesContent":[null],"mappings":"AAAA,SAA8BA,YAAY,QAAQ,gBAAgB;AAClE,SAASC,IAAI,QAAQ,OAAO;AAC5B,SAASC,eAAe,QAAQ,iBAAiB;AAOjD;AACA;AACA;AACA,OAAO,MAAMC,aAAa,SAASD,eAAe,CAAC;EACjCE,UAAU,GAAG,SAAS;EACtCC,WAAWA,CACTC,IAAY,EACZC,aAA6B,EAC7BC,OAA8B,EAC9B;IACA,MAAMC,KAAK,GAAGF,aAAa,EAAEG,OAAO;IACpC,KAAK,CAACJ,IAAI,EAAEG,KAAK,EAAE,SAAS,EAAED,OAAO,CAAC;IACtC,IAAI,CAAC,CAACG,IAAI,GAAGH,OAAO,EAAEG,IAAI,IAAIL,IAAI;IAClC,IAAIC,aAAa,EAAE;MACjB,IAAI,CAAC,CAACK,kBAAkB,GAAGX,IAAI,CAC7BM,aAAa,CAACK,kBAAkB,EAChC,IAAI,CAAC,CAACD,IACR,CAAC;IACH,CAAC,MAAM;MACL,IAAI,CAAC,CAACC,kBAAkB,GAAG,IAAI,CAAC,CAACD,IAAI;IACvC;IACA,IAAI,CAAC,CAACE,OAAO,GAAGL,OAAO,EAAEK,OAAO,IAAIN,aAAa,EAAEM,OAAO,IAAI,KAAK;EACrE;EAEA,CAACF,IAAI;EACL,CAACC,kBAAkB;EACnB,IAAIA,kBAAkBA,CAAA,EAAW;IAC/B,OAAO,IAAI,CAAC,CAACA,kBAAkB;EACjC;EAEA,CAACC,OAAO;EACR,IAAIA,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC,CAACA,OAAO;EACtB;EAEAC,IAAIA,CAAA,EAAG;IACL,MAAMN,OAAO,GAAG,IAAI,CAACO,gBAAgB,CAAC,CAAC;IACvC,MAAMD,IAAI,GAAGd,YAAY,CAACG,aAAa,EAAE,IAAI,CAACG,IAAI,EAAEU,SAAS,EAAE;MAC7D,GAAGR,OAAO;MACVG,IAAI,EAAE,IAAI,CAAC,CAACA;IACd,CAAC,CAAC;IACF,IAAI,CAACM,gBAAgB,CAACH,IAAI,CAAC;IAC3B,OAAOA,IAAI;EACb;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { memo, resolve } from "@alloy-js/core";
|
|
2
|
+
import { GoPackageScope } from "../scopes/package.js";
|
|
3
|
+
import { useSourceFileScope } from "../scopes/source-file.js";
|
|
4
|
+
import { PackageSymbol } from "./package.js";
|
|
5
|
+
function closestPackageScope(scopes, decl, memberPath) {
|
|
6
|
+
const allMembers = [decl, ...memberPath];
|
|
7
|
+
for (let i = allMembers.length - 1; i >= 0; i--) {
|
|
8
|
+
const member = allMembers[i];
|
|
9
|
+
if (member instanceof PackageSymbol) {
|
|
10
|
+
return {
|
|
11
|
+
pkgSymbol: member,
|
|
12
|
+
members: allMembers.slice(i + 1)
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
for (let i = scopes.length - 1; i >= 0; i--) {
|
|
17
|
+
const scope = scopes[i];
|
|
18
|
+
if (scope instanceof GoPackageScope) {
|
|
19
|
+
return {
|
|
20
|
+
pkgSymbol: scope.ownerSymbol,
|
|
21
|
+
members: allMembers
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
pkgSymbol: undefined,
|
|
27
|
+
members: allMembers
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// converts a refkey to its fully qualified name
|
|
32
|
+
// e.g. if refkey is for bar in enum type foo, and
|
|
33
|
+
// foo is in the same namespace as the refkey, then
|
|
34
|
+
// the result would be foo.bar.
|
|
35
|
+
export function ref(refkey) {
|
|
36
|
+
const refSfScope = useSourceFileScope();
|
|
37
|
+
const resolveResult = resolve(refkey);
|
|
38
|
+
return memo(() => {
|
|
39
|
+
if (resolveResult.value === undefined) {
|
|
40
|
+
return ["<Unresolved Symbol>", undefined];
|
|
41
|
+
}
|
|
42
|
+
const result = resolveResult.value;
|
|
43
|
+
const {
|
|
44
|
+
pathDown,
|
|
45
|
+
memberPath
|
|
46
|
+
} = result;
|
|
47
|
+
const {
|
|
48
|
+
lexicalDeclaration
|
|
49
|
+
} = result;
|
|
50
|
+
const parts = [];
|
|
51
|
+
let localSymbol;
|
|
52
|
+
const {
|
|
53
|
+
pkgSymbol: pkgSymbol,
|
|
54
|
+
members: pathFromPkg
|
|
55
|
+
} = closestPackageScope(pathDown, lexicalDeclaration, memberPath);
|
|
56
|
+
if (pkgSymbol) {
|
|
57
|
+
// we need to import the package
|
|
58
|
+
for (const pathMember of pathFromPkg) {
|
|
59
|
+
const memberName = pathMember.name;
|
|
60
|
+
const firstChar = memberName.charAt(0);
|
|
61
|
+
if (firstChar.toLowerCase() === firstChar) {
|
|
62
|
+
throw new Error(`Can't reference non-exported symbol ${pathMember.name} from another package.`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
localSymbol = refSfScope.addImport(pkgSymbol);
|
|
66
|
+
}
|
|
67
|
+
if (localSymbol) {
|
|
68
|
+
parts.push(localSymbol.name);
|
|
69
|
+
}
|
|
70
|
+
for (const member of pathFromPkg) {
|
|
71
|
+
parts.push(member.name);
|
|
72
|
+
}
|
|
73
|
+
return [parts.join("."), result.symbol];
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=reference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","resolve","GoPackageScope","useSourceFileScope","PackageSymbol","closestPackageScope","scopes","decl","memberPath","allMembers","i","length","member","pkgSymbol","members","slice","scope","ownerSymbol","undefined","ref","refkey","refSfScope","resolveResult","value","result","pathDown","lexicalDeclaration","parts","localSymbol","pathFromPkg","pathMember","memberName","name","firstChar","charAt","toLowerCase","Error","addImport","push","join","symbol"],"sources":["../../../../src/symbols/reference.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { GoSymbol } from "./go.js";
|
|
2
|
+
/**
|
|
3
|
+
* A symbol for type parameters in Go.
|
|
4
|
+
*/
|
|
5
|
+
export class TypeParameterSymbol extends GoSymbol {
|
|
6
|
+
symbolKind = "type-parameter";
|
|
7
|
+
constructor(name, spaces, options = {}) {
|
|
8
|
+
super(name, spaces, options);
|
|
9
|
+
this.#constraint = options.constraint ?? "any";
|
|
10
|
+
}
|
|
11
|
+
#constraint;
|
|
12
|
+
get constraint() {
|
|
13
|
+
return this.#constraint;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=type-parameter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["GoSymbol","TypeParameterSymbol","symbolKind","constructor","name","spaces","options","constraint"],"sources":["../../../../src/symbols/type-parameter.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,QAAQ,QAAyB,SAAS;AAKnD;AACA;AACA;AACA,OAAO,MAAMC,mBAAmB,SAASD,QAAQ,CAAC;EAChCE,UAAU,GAAG,gBAAgB;EAE7CC,WAAWA,CACTC,IAAsB,EACtBC,MAA+B,EAC/BC,OAAmC,GAAG,CAAC,CAAC,EACxC;IACA,KAAK,CAACF,IAAI,EAAEC,MAAM,EAAEC,OAAO,CAAC;IAC5B,IAAI,CAAC,CAACC,UAAU,GAAGD,OAAO,CAACC,UAAU,IAAI,KAAK;EAChD;EAEA,CAACA,UAAU;EACX,IAAIA,UAAUA,CAAA,EAAa;IACzB,OAAO,IAAI,CAAC,CAACA,UAAU;EACzB;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { Output, render } from "@alloy-js/core";
|
|
3
|
+
import { dedent } from "@alloy-js/core/testing";
|
|
4
|
+
import { expect } from "vitest";
|
|
5
|
+
import * as go from "../src/index.js";
|
|
6
|
+
export function toSourceText(c, options) {
|
|
7
|
+
const res = render(_$createComponent(Output, {
|
|
8
|
+
get children() {
|
|
9
|
+
return _$createComponent(go.SourceFile, {
|
|
10
|
+
path: "test.go",
|
|
11
|
+
children: c
|
|
12
|
+
}, {
|
|
13
|
+
fileName: import.meta.url,
|
|
14
|
+
lineNumber: 17,
|
|
15
|
+
columnNumber: 7
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}, {
|
|
19
|
+
fileName: import.meta.url,
|
|
20
|
+
lineNumber: 16,
|
|
21
|
+
columnNumber: 5
|
|
22
|
+
}), options);
|
|
23
|
+
return findFile(res, "test.go").contents;
|
|
24
|
+
}
|
|
25
|
+
export function findFile(res, path) {
|
|
26
|
+
const result = findFileWorker(res, path);
|
|
27
|
+
if (!result) {
|
|
28
|
+
throw new Error("Expected to find file " + path);
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
function findFileWorker(res, path) {
|
|
32
|
+
for (const item of res.contents) {
|
|
33
|
+
if (item.kind === "file") {
|
|
34
|
+
if (item.path === path) {
|
|
35
|
+
return item;
|
|
36
|
+
}
|
|
37
|
+
continue;
|
|
38
|
+
} else {
|
|
39
|
+
const found = findFileWorker(item, path);
|
|
40
|
+
if (found) {
|
|
41
|
+
return found;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export function assertFileContents(res, expectedFiles) {
|
|
49
|
+
for (const [path, contents] of Object.entries(expectedFiles)) {
|
|
50
|
+
const file = findFile(res, path);
|
|
51
|
+
expect(file.contents.trim()).toBe(dedent(contents).trim());
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export function TestPackage(props) {
|
|
55
|
+
return _$createComponent(Output, {
|
|
56
|
+
get children() {
|
|
57
|
+
return _$createComponent(go.ModuleDirectory, {
|
|
58
|
+
name: "github.com/alloy-framework/alloy",
|
|
59
|
+
get children() {
|
|
60
|
+
return _$createComponent(go.SourceDirectory, {
|
|
61
|
+
path: ".",
|
|
62
|
+
get children() {
|
|
63
|
+
return _$createComponent(go.SourceFile, {
|
|
64
|
+
path: "Test.go",
|
|
65
|
+
get children() {
|
|
66
|
+
return props.children;
|
|
67
|
+
}
|
|
68
|
+
}, {
|
|
69
|
+
fileName: import.meta.url,
|
|
70
|
+
lineNumber: 72,
|
|
71
|
+
columnNumber: 11
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}, {
|
|
75
|
+
fileName: import.meta.url,
|
|
76
|
+
lineNumber: 71,
|
|
77
|
+
columnNumber: 9
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}, {
|
|
81
|
+
fileName: import.meta.url,
|
|
82
|
+
lineNumber: 70,
|
|
83
|
+
columnNumber: 7
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}, {
|
|
87
|
+
fileName: import.meta.url,
|
|
88
|
+
lineNumber: 69,
|
|
89
|
+
columnNumber: 5
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Output","render","dedent","expect","go","toSourceText","c","options","res","_$createComponent","children","SourceFile","path","fileName","import","meta","url","lineNumber","columnNumber","findFile","contents","result","findFileWorker","Error","item","kind","found","assertFileContents","expectedFiles","Object","entries","file","trim","toBe","TestPackage","props","ModuleDirectory","name","SourceDirectory"],"sources":["../../../test/utils.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../test/vitest.setup.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,wBAAwB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SourceFile.d.ts","sourceRoot":"","sources":["../../../src/components/SourceFile.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"SourceFile.d.ts","sourceRoot":"","sources":["../../../src/components/SourceFile.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,QAAQ,EACd,MAAM,gBAAgB,CAAC;AAQxB,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,YA8BhD;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
|