@alloy-js/go 0.3.0-dev.2 → 0.3.0
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/CHANGELOG.md +8 -0
- 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/tsconfig.tsbuildinfo +1 -1
- package/docs/api/components/FunctionDeclaration.md +53 -0
- package/docs/api/components/FunctionParameter.md +40 -0
- package/docs/api/components/FunctionParameters.md +29 -0
- package/docs/api/components/FunctionReceiver.md +38 -0
- package/docs/api/components/ImportStatements.md +25 -0
- package/docs/api/components/InterfaceDeclaration.md +54 -0
- package/docs/api/components/InterfaceEmbed.md +29 -0
- package/docs/api/components/InterfaceFunction.md +41 -0
- package/docs/api/components/InterfaceTypeDeclaration.md +56 -0
- package/docs/api/components/LineComment.md +29 -0
- package/docs/api/components/ModuleDirectory.md +29 -0
- package/docs/api/components/Name.md +19 -0
- package/docs/api/components/Pointer.md +29 -0
- package/docs/api/components/Reference.md +25 -0
- package/docs/api/components/SingleImportStatement.md +35 -0
- package/docs/api/components/SourceDirectory.md +27 -0
- package/docs/api/components/SourceFile.md +44 -0
- package/docs/api/components/StructDeclaration.md +51 -0
- package/docs/api/components/StructEmbed.md +29 -0
- package/docs/api/components/StructMember.md +41 -0
- package/docs/api/components/StructTypeDeclaration.md +56 -0
- package/docs/api/components/TypeConstraint.md +28 -0
- package/docs/api/components/TypeDeclaration.md +47 -0
- package/docs/api/components/TypeDeclarationGroup.md +27 -0
- package/docs/api/components/TypeParameter.md +37 -0
- package/docs/api/components/TypeParameters.md +25 -0
- package/docs/api/components/VariableDeclaration.md +44 -0
- package/docs/api/components/VariableDeclarationGroup.md +28 -0
- package/docs/api/components/index.md +30 -0
- package/docs/api/contexts/TypeDeclarationGroup-context.md +17 -0
- package/docs/api/contexts/VariableDeclarationGroup-context.md +18 -0
- package/docs/api/contexts/index.md +4 -0
- package/docs/api/functions/createAnonymousTypeSymbol.md +25 -0
- package/docs/api/functions/createFunctionScope.md +26 -0
- package/docs/api/functions/createFunctionSymbol.md +35 -0
- package/docs/api/functions/createGoModuleScope.md +18 -0
- package/docs/api/functions/createGoNamePolicy.md +17 -0
- package/docs/api/functions/createGoPackageScope.md +18 -0
- package/docs/api/functions/createInterfaceMemberSymbol.md +25 -0
- package/docs/api/functions/createModule.md +20 -0
- package/docs/api/functions/createNamedTypeScope.md +27 -0
- package/docs/api/functions/createNestedStructSymbol.md +26 -0
- package/docs/api/functions/createPackageSymbol.md +19 -0
- package/docs/api/functions/createParameterSymbol.md +36 -0
- package/docs/api/functions/createPropertySymbol.md +34 -0
- package/docs/api/functions/createStructMemberSymbol.md +25 -0
- package/docs/api/functions/createTypeParameterSymbol.md +25 -0
- package/docs/api/functions/createTypeSymbol.md +26 -0
- package/docs/api/functions/createVariableSymbol.md +34 -0
- package/docs/api/functions/index.md +29 -0
- package/docs/api/functions/ref.md +18 -0
- package/docs/api/functions/useEnclosingPackageScope.md +17 -0
- package/docs/api/functions/useFuncScope.md +17 -0
- package/docs/api/functions/useGoNamePolicy.md +17 -0
- package/docs/api/functions/useGoScope.md +17 -0
- package/docs/api/functions/useLexicalScope.md +17 -0
- package/docs/api/functions/useModule.md +17 -0
- package/docs/api/functions/useNamedTypeScope.md +17 -0
- package/docs/api/functions/usePackage.md +17 -0
- package/docs/api/functions/useSourceFileScope.md +17 -0
- package/docs/api/index.md +7 -0
- package/docs/api/types/CreateTypeParameterSymbolOptions.md +9 -0
- package/docs/api/types/Descriptor.md +5 -0
- package/docs/api/types/EmbedDescriptor.md +9 -0
- package/docs/api/types/FieldDescriptor.md +9 -0
- package/docs/api/types/FunctionDescriptor.md +9 -0
- package/docs/api/types/FunctionSymbol.md +13 -0
- package/docs/api/types/GoElements.md +5 -0
- package/docs/api/types/GoFunctionScope.md +12 -0
- package/docs/api/types/GoLexicalScope.md +11 -0
- package/docs/api/types/GoModuleScope.md +10 -0
- package/docs/api/types/GoNamedTypeScope.md +16 -0
- package/docs/api/types/GoPackageScope.md +10 -0
- package/docs/api/types/GoScope.md +10 -0
- package/docs/api/types/GoSourceFileScope.md +13 -0
- package/docs/api/types/GoSymbol.md +17 -0
- package/docs/api/types/GoSymbolKinds.md +5 -0
- package/docs/api/types/GoSymbolOptions.md +10 -0
- package/docs/api/types/ImportRecords.md +5 -0
- package/docs/api/types/InterfaceDescriptor.md +9 -0
- package/docs/api/types/LibraryFrom.md +5 -0
- package/docs/api/types/MemberDescriptor.md +8 -0
- package/docs/api/types/MethodDescriptor.md +9 -0
- package/docs/api/types/NamedTypeDescriptor.md +8 -0
- package/docs/api/types/NamedTypeSymbol.md +17 -0
- package/docs/api/types/NamedTypeSymbolKind.md +5 -0
- package/docs/api/types/NamedTypeSymbolOptions.md +9 -0
- package/docs/api/types/NamedTypeTypeKind.md +5 -0
- package/docs/api/types/PackageDescriptor.md +12 -0
- package/docs/api/types/PackageSymbol.md +15 -0
- package/docs/api/types/PackageSymbolOptions.md +10 -0
- package/docs/api/types/ResolveDescriptor.md +7 -0
- package/docs/api/types/SourceFileHeaderProps.md +9 -0
- package/docs/api/types/StrictDescriptor.md +5 -0
- package/docs/api/types/StructDescriptor.md +9 -0
- package/docs/api/types/TypeDescriptor.md +9 -0
- package/docs/api/types/VariableDescriptor.md +9 -0
- package/docs/api/types/index.md +38 -0
- package/docs/api/variables/index.md +3 -0
- package/docs/api/variables/std.md +2463 -0
- package/package.json +10 -7
- package/vitest.config.ts +8 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { createSymbol, namekey, refkey, REFKEYABLE, TO_SYMBOL, useBinder } from "@alloy-js/core";
|
|
2
|
+
import { basename } from "pathe";
|
|
3
|
+
import { FunctionSymbol, GoSymbol, PackageSymbol } from "./index.js";
|
|
4
|
+
import { NamedTypeSymbol } from "./symbols/named-type.js";
|
|
5
|
+
export function createModule(name, props, builtin = false) {
|
|
6
|
+
return createSymbolEntry(name, props, {
|
|
7
|
+
ownerSymbol(_binder) {
|
|
8
|
+
return null;
|
|
9
|
+
},
|
|
10
|
+
builtin
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
function createSymbolEntry(name, descriptor, context) {
|
|
14
|
+
const symbols = new WeakMap();
|
|
15
|
+
function getSymbol(binder) {
|
|
16
|
+
// We cache symbols per binder to ensure we only create one symbol. We also
|
|
17
|
+
// track an unbound symbol for cases where there is no binder (mostly
|
|
18
|
+
// tests).
|
|
19
|
+
return mapGet(symbols, binder, () => createSymbolFromDescriptor(name, binder, descriptor, context, initializeMembers));
|
|
20
|
+
}
|
|
21
|
+
const newContext = {
|
|
22
|
+
ownerSymbol(binder) {
|
|
23
|
+
return getSymbol(binder);
|
|
24
|
+
},
|
|
25
|
+
builtin: context.builtin
|
|
26
|
+
};
|
|
27
|
+
function initializeMembers() {
|
|
28
|
+
for (const key of Object.keys(obj)) {
|
|
29
|
+
if (typeof key === "symbol") continue;
|
|
30
|
+
obj[key][TO_SYMBOL]();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const obj = {
|
|
34
|
+
[REFKEYABLE]() {
|
|
35
|
+
return getSymbol(useBinder()).refkeys[0];
|
|
36
|
+
},
|
|
37
|
+
[TO_SYMBOL]() {
|
|
38
|
+
return getSymbol(useBinder());
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
switch (descriptor.kind) {
|
|
42
|
+
case "package":
|
|
43
|
+
case "struct":
|
|
44
|
+
case "interface":
|
|
45
|
+
for (const [memberName, memberDesc] of Object.entries(descriptor.members)) {
|
|
46
|
+
obj[memberName] = createSymbolEntry(memberName, memberDesc, newContext);
|
|
47
|
+
}
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
return obj;
|
|
51
|
+
}
|
|
52
|
+
function createSymbolFromDescriptor(name, binder, descriptor, context, lazyMemberInitializer) {
|
|
53
|
+
const ownerSymbol = context.ownerSymbol(binder);
|
|
54
|
+
if (ownerSymbol === null && descriptor.kind !== "package") {
|
|
55
|
+
throw new Error(`Cannot create a non-package symbol (${name}) without an owner symbol.`);
|
|
56
|
+
}
|
|
57
|
+
switch (descriptor.kind) {
|
|
58
|
+
case "package":
|
|
59
|
+
if (ownerSymbol === null) {
|
|
60
|
+
const dname = basename(name);
|
|
61
|
+
const packageName = descriptor.name ?? dname;
|
|
62
|
+
return createSymbol(PackageSymbol, packageName, undefined, {
|
|
63
|
+
binder,
|
|
64
|
+
refkeys: refkey(),
|
|
65
|
+
lazyMemberInitializer,
|
|
66
|
+
path: descriptor.path,
|
|
67
|
+
builtin: context.builtin
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
if (!(ownerSymbol instanceof PackageSymbol)) {
|
|
71
|
+
throw new Error(`Cannot create a package symbol (${name}) with a non-package owner symbol (${ownerSymbol.name}).`);
|
|
72
|
+
}
|
|
73
|
+
if (ownerSymbol.members.symbolNames.has(name)) {
|
|
74
|
+
return ownerSymbol.members.symbolNames.get(name);
|
|
75
|
+
}
|
|
76
|
+
return createSymbol(PackageSymbol, name, ownerSymbol, {
|
|
77
|
+
binder,
|
|
78
|
+
refkeys: refkey(),
|
|
79
|
+
lazyMemberInitializer,
|
|
80
|
+
path: descriptor.path,
|
|
81
|
+
builtin: context.builtin
|
|
82
|
+
});
|
|
83
|
+
case "struct":
|
|
84
|
+
case "interface":
|
|
85
|
+
case "type":
|
|
86
|
+
if (!(ownerSymbol instanceof PackageSymbol)) {
|
|
87
|
+
throw new Error(`Cannot create a named type symbol (${name}) with a non-package owner symbol (${ownerSymbol.name}).`);
|
|
88
|
+
}
|
|
89
|
+
return createSymbol(NamedTypeSymbol, namekey(name), ownerSymbol.members, descriptor.kind, {
|
|
90
|
+
binder,
|
|
91
|
+
refkeys: refkey(),
|
|
92
|
+
lazyMemberInitializer
|
|
93
|
+
});
|
|
94
|
+
case "function":
|
|
95
|
+
if (!(ownerSymbol instanceof PackageSymbol)) {
|
|
96
|
+
throw new Error(`Cannot create a function symbol (${name}) with a non-package owner symbol (${ownerSymbol.name}).`);
|
|
97
|
+
}
|
|
98
|
+
return createSymbol(FunctionSymbol, namekey(name), ownerSymbol.members, {
|
|
99
|
+
binder,
|
|
100
|
+
refkeys: refkey()
|
|
101
|
+
});
|
|
102
|
+
case "field":
|
|
103
|
+
if (!(ownerSymbol instanceof NamedTypeSymbol)) {
|
|
104
|
+
throw new Error(`Cannot create a field symbol (${name}) with a non-named-type owner symbol (${ownerSymbol.name}).`);
|
|
105
|
+
}
|
|
106
|
+
return createSymbol(NamedTypeSymbol, namekey(name), ownerSymbol.members, ownerSymbol.typeKind === "interface" ? "interface-member" : "struct-member", {
|
|
107
|
+
binder,
|
|
108
|
+
refkeys: refkey(),
|
|
109
|
+
type: descriptor.type === undefined ? undefined : typeof descriptor.type === "function" ? descriptor.type()[TO_SYMBOL]() : descriptor.type[TO_SYMBOL](),
|
|
110
|
+
lazyMemberInitializer
|
|
111
|
+
});
|
|
112
|
+
case "embed":
|
|
113
|
+
{
|
|
114
|
+
if (!(ownerSymbol instanceof NamedTypeSymbol)) {
|
|
115
|
+
throw new Error(`Cannot create a field symbol (${name}) with a non-named-type owner symbol (${ownerSymbol.name}).`);
|
|
116
|
+
}
|
|
117
|
+
const symbol = createSymbol(NamedTypeSymbol, namekey(name), ownerSymbol.members, ownerSymbol.typeKind === "interface" ? "interface-member" : "struct-member", {
|
|
118
|
+
binder,
|
|
119
|
+
refkeys: refkey(),
|
|
120
|
+
type: descriptor.type === undefined ? undefined : typeof descriptor.type === "function" ? descriptor.type()[TO_SYMBOL]() : descriptor.type[TO_SYMBOL](),
|
|
121
|
+
lazyMemberInitializer
|
|
122
|
+
});
|
|
123
|
+
symbol.copyMembersTo(ownerSymbol);
|
|
124
|
+
return symbol;
|
|
125
|
+
}
|
|
126
|
+
case "var":
|
|
127
|
+
if (!(ownerSymbol instanceof PackageSymbol)) {
|
|
128
|
+
throw new Error(`Cannot create a variable symbol (${name}) with a non-package owner symbol (${ownerSymbol.name}).`);
|
|
129
|
+
}
|
|
130
|
+
return createSymbol(GoSymbol, namekey(name), ownerSymbol.members, {
|
|
131
|
+
binder,
|
|
132
|
+
refkeys: refkey(),
|
|
133
|
+
type: descriptor.type === undefined ? undefined : typeof descriptor.type === "function" ? descriptor.type()[TO_SYMBOL]() : descriptor.type[TO_SYMBOL]()
|
|
134
|
+
});
|
|
135
|
+
default:
|
|
136
|
+
throw "Unsupported";
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
const defaultsPerMap = new WeakMap();
|
|
140
|
+
function mapGet(map, key, init) {
|
|
141
|
+
if (key === undefined) {
|
|
142
|
+
// Use a per-map default store when callers request a value for an undefined key.
|
|
143
|
+
let value = defaultsPerMap.get(map);
|
|
144
|
+
if (value === undefined && init) {
|
|
145
|
+
value = init();
|
|
146
|
+
defaultsPerMap.set(map, value);
|
|
147
|
+
}
|
|
148
|
+
return value;
|
|
149
|
+
}
|
|
150
|
+
let value = map.get(key);
|
|
151
|
+
if (value === undefined && init) {
|
|
152
|
+
value = init();
|
|
153
|
+
map.set(key, value);
|
|
154
|
+
}
|
|
155
|
+
return value;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=create-module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createSymbol","namekey","refkey","REFKEYABLE","TO_SYMBOL","useBinder","basename","FunctionSymbol","GoSymbol","PackageSymbol","NamedTypeSymbol","createModule","name","props","builtin","createSymbolEntry","ownerSymbol","_binder","descriptor","context","symbols","WeakMap","getSymbol","binder","mapGet","createSymbolFromDescriptor","initializeMembers","newContext","key","Object","keys","obj","refkeys","kind","memberName","memberDesc","entries","members","lazyMemberInitializer","Error","dname","packageName","undefined","path","symbolNames","has","get","typeKind","type","symbol","copyMembersTo","defaultsPerMap","map","init","value","set"],"sources":["../../../src/create-module.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { createComponent as _$createComponent, memo as _$memo } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { TestPackage } from "#test/utils.js";
|
|
3
|
+
import { namekey, toRefkey } from "@alloy-js/core";
|
|
4
|
+
import { expect, it } from "vitest";
|
|
5
|
+
import { fmt } from "./builtins/fmt/fmt.js";
|
|
6
|
+
import { VariableDeclaration } from "./components/index.js";
|
|
7
|
+
import { createModule } from "./create-module.js";
|
|
8
|
+
it("Can reference types which haven't been created yet", () => {
|
|
9
|
+
const std1 = createModule("std1", {
|
|
10
|
+
kind: "package",
|
|
11
|
+
members: {
|
|
12
|
+
SomeType: {
|
|
13
|
+
kind: "struct",
|
|
14
|
+
members: {
|
|
15
|
+
Special: {
|
|
16
|
+
kind: "field",
|
|
17
|
+
type: () => std2.SomeType2
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
const std2 = createModule("std2", {
|
|
24
|
+
kind: "package",
|
|
25
|
+
members: {
|
|
26
|
+
SomeType2: {
|
|
27
|
+
kind: "struct",
|
|
28
|
+
members: {
|
|
29
|
+
Hello: {
|
|
30
|
+
kind: "field"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
const test = namekey("test");
|
|
37
|
+
expect(_$createComponent(TestPackage, {
|
|
38
|
+
get children() {
|
|
39
|
+
return _$createComponent(VariableDeclaration, {
|
|
40
|
+
name: test,
|
|
41
|
+
get type() {
|
|
42
|
+
return std1.SomeType;
|
|
43
|
+
}
|
|
44
|
+
}, {
|
|
45
|
+
fileName: import.meta.url,
|
|
46
|
+
lineNumber: 37,
|
|
47
|
+
columnNumber: 7
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}, {
|
|
51
|
+
fileName: import.meta.url,
|
|
52
|
+
lineNumber: 36,
|
|
53
|
+
columnNumber: 5
|
|
54
|
+
})).toRenderTo(`
|
|
55
|
+
package alloy
|
|
56
|
+
|
|
57
|
+
import "std1"
|
|
58
|
+
|
|
59
|
+
var test std1.SomeType
|
|
60
|
+
`);
|
|
61
|
+
});
|
|
62
|
+
it("renders as a refkey", () => {
|
|
63
|
+
const mod = createModule("std", {
|
|
64
|
+
kind: "package",
|
|
65
|
+
members: {
|
|
66
|
+
BinaryReader: {
|
|
67
|
+
kind: "struct",
|
|
68
|
+
members: {}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
expect(_$createComponent(TestPackage, {
|
|
73
|
+
get children() {
|
|
74
|
+
return _$createComponent(VariableDeclaration, {
|
|
75
|
+
name: "test",
|
|
76
|
+
get type() {
|
|
77
|
+
return mod.BinaryReader;
|
|
78
|
+
}
|
|
79
|
+
}, {
|
|
80
|
+
fileName: import.meta.url,
|
|
81
|
+
lineNumber: 61,
|
|
82
|
+
columnNumber: 7
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}, {
|
|
86
|
+
fileName: import.meta.url,
|
|
87
|
+
lineNumber: 60,
|
|
88
|
+
columnNumber: 5
|
|
89
|
+
})).toRenderTo(`
|
|
90
|
+
package alloy
|
|
91
|
+
|
|
92
|
+
import "std"
|
|
93
|
+
|
|
94
|
+
var test std.BinaryReader
|
|
95
|
+
`);
|
|
96
|
+
});
|
|
97
|
+
it("has a refkey getter", () => {
|
|
98
|
+
const std = createModule("std", {
|
|
99
|
+
kind: "package",
|
|
100
|
+
members: {
|
|
101
|
+
SomeType: {
|
|
102
|
+
kind: "struct",
|
|
103
|
+
members: {
|
|
104
|
+
Special: {
|
|
105
|
+
kind: "field"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
const ioKey = toRefkey(std);
|
|
112
|
+
expect(ioKey).toBeDefined();
|
|
113
|
+
const brKey = toRefkey(std.SomeType);
|
|
114
|
+
expect(brKey).toBeDefined();
|
|
115
|
+
});
|
|
116
|
+
it("has built-ins available", () => {
|
|
117
|
+
const template = _$createComponent(TestPackage, {
|
|
118
|
+
get children() {
|
|
119
|
+
return [_$memo(() => fmt.Println, false, "fmt.Println"), "(\"Hello, World!\")"];
|
|
120
|
+
}
|
|
121
|
+
}, {
|
|
122
|
+
fileName: import.meta.url,
|
|
123
|
+
lineNumber: 92,
|
|
124
|
+
columnNumber: 20
|
|
125
|
+
});
|
|
126
|
+
expect(template).toRenderTo(`
|
|
127
|
+
package alloy
|
|
128
|
+
|
|
129
|
+
import "fmt"
|
|
130
|
+
|
|
131
|
+
fmt.Println("Hello, World!")
|
|
132
|
+
`);
|
|
133
|
+
});
|
|
134
|
+
it("can render multiple times", () => {
|
|
135
|
+
const mod = createModule("std", {
|
|
136
|
+
kind: "package",
|
|
137
|
+
members: {
|
|
138
|
+
BinaryReader: {
|
|
139
|
+
kind: "struct",
|
|
140
|
+
members: {}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
expect(_$createComponent(TestPackage, {
|
|
145
|
+
get children() {
|
|
146
|
+
return mod.BinaryReader;
|
|
147
|
+
}
|
|
148
|
+
}, {
|
|
149
|
+
fileName: import.meta.url,
|
|
150
|
+
lineNumber: 114,
|
|
151
|
+
columnNumber: 10
|
|
152
|
+
})).toRenderTo(`
|
|
153
|
+
package alloy
|
|
154
|
+
|
|
155
|
+
import "std"
|
|
156
|
+
|
|
157
|
+
std.BinaryReader
|
|
158
|
+
`);
|
|
159
|
+
expect(_$createComponent(TestPackage, {
|
|
160
|
+
get children() {
|
|
161
|
+
return mod.BinaryReader;
|
|
162
|
+
}
|
|
163
|
+
}, {
|
|
164
|
+
fileName: import.meta.url,
|
|
165
|
+
lineNumber: 121,
|
|
166
|
+
columnNumber: 10
|
|
167
|
+
})).toRenderTo(`
|
|
168
|
+
package alloy
|
|
169
|
+
|
|
170
|
+
import "std"
|
|
171
|
+
|
|
172
|
+
std.BinaryReader
|
|
173
|
+
`);
|
|
174
|
+
});
|
|
175
|
+
//# sourceMappingURL=create-module.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TestPackage","namekey","toRefkey","expect","it","fmt","VariableDeclaration","createModule","std1","kind","members","SomeType","Special","type","std2","SomeType2","Hello","test","_$createComponent","children","name","fileName","import","meta","url","lineNumber","columnNumber","toRenderTo","mod","BinaryReader","std","ioKey","toBeDefined","brKey","template","_$memo","Println"],"sources":["../../../src/create-module.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc,qBAAqB;AACnC,cAAc,uBAAuB;AACrC,cAAc,oBAAoB;AAClC,cAAc,kBAAkB;AAChC,cAAc,mBAAmB;AACjC,cAAc,oBAAoB","ignoreList":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { createNamePolicy, useNamePolicy } from "@alloy-js/core";
|
|
2
|
+
const GLOBAL_RESERVED_WORDS = new Set(["break", "case", "chan", "const", "continue", "default", "defer", "else", "fallthrough", "for", "func", "go", "goto", "if", "import", "interface", "map", "package", "range", "return", "select", "struct", "switch", "type", "var"]);
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Ensures a valid Go identifier for the given element kind.
|
|
6
|
+
* @param name - The name to validate.
|
|
7
|
+
* @param element - The Go element kind.
|
|
8
|
+
* @returns A Go-safe name.
|
|
9
|
+
*/
|
|
10
|
+
function ensureNonReservedName(name, _element) {
|
|
11
|
+
const suffix = "_";
|
|
12
|
+
|
|
13
|
+
// Global reserved words always need handling
|
|
14
|
+
if (GLOBAL_RESERVED_WORDS.has(name)) {
|
|
15
|
+
return `${name}${suffix}`;
|
|
16
|
+
}
|
|
17
|
+
return name;
|
|
18
|
+
}
|
|
19
|
+
export function createGoNamePolicy() {
|
|
20
|
+
return createNamePolicy((name, element) => {
|
|
21
|
+
return ensureNonReservedName(name, element);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
export function useGoNamePolicy() {
|
|
25
|
+
return useNamePolicy();
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=name-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createNamePolicy","useNamePolicy","GLOBAL_RESERVED_WORDS","Set","ensureNonReservedName","name","_element","suffix","has","createGoNamePolicy","element","useGoNamePolicy"],"sources":["../../../src/name-policy.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,gBAAgB,EAAcC,aAAa,QAAQ,gBAAgB;AAW5E,MAAMC,qBAAqB,GAAG,IAAIC,GAAG,CAAC,CACpC,OAAO,EACP,MAAM,EACN,MAAM,EACN,OAAO,EACP,UAAU,EACV,SAAS,EACT,OAAO,EACP,MAAM,EACN,aAAa,EACb,KAAK,EACL,MAAM,EACN,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,WAAW,EACX,KAAK,EACL,SAAS,EACT,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,KAAK,CACN,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,qBAAqBA,CAACC,IAAY,EAAEC,QAAoB,EAAU;EACzE,MAAMC,MAAM,GAAG,GAAG;;EAElB;EACA,IAAIL,qBAAqB,CAACM,GAAG,CAACH,IAAI,CAAC,EAAE;IACnC,OAAO,GAAGA,IAAI,GAAGE,MAAM,EAAE;EAC3B;EAEA,OAAOF,IAAI;AACb;AAEA,OAAO,SAASI,kBAAkBA,CAAA,EAA2B;EAC3D,OAAOT,gBAAgB,CAAC,CAACK,IAAI,EAAEK,OAAO,KAAK;IACzC,OAAON,qBAAqB,CAACC,IAAI,EAAEK,OAAO,CAAC;EAC7C,CAAC,CAAC;AACJ;AAEA,OAAO,SAASC,eAAeA,CAAA,EAA2B;EACxD,OAAOV,aAAa,CAAC,CAAC;AACxB","ignoreList":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { useScope } from "@alloy-js/core";
|
|
2
|
+
import { GoFunctionScope } from "./function.js";
|
|
3
|
+
import { GoScope } from "./go.js";
|
|
4
|
+
import { GoLexicalScope } from "./lexical.js";
|
|
5
|
+
import { GoNamedTypeScope } from "./named-type.js";
|
|
6
|
+
export function useGoScope() {
|
|
7
|
+
const scope = useScope();
|
|
8
|
+
if (!(scope instanceof GoScope)) {
|
|
9
|
+
throw new Error("Expected a Go scope, got a different kind of scope.");
|
|
10
|
+
}
|
|
11
|
+
return scope;
|
|
12
|
+
}
|
|
13
|
+
export function useNamedTypeScope() {
|
|
14
|
+
const scope = useGoScope();
|
|
15
|
+
if (!(scope instanceof GoNamedTypeScope)) {
|
|
16
|
+
throw new Error("Expected a named type scope, got a " + scope.constructor.name);
|
|
17
|
+
}
|
|
18
|
+
return scope;
|
|
19
|
+
}
|
|
20
|
+
export function useFuncScope() {
|
|
21
|
+
const scope = useGoScope();
|
|
22
|
+
if (!(scope instanceof GoFunctionScope)) {
|
|
23
|
+
throw new Error(`Expected a function scope, but got ${scope.constructor.name}.`);
|
|
24
|
+
}
|
|
25
|
+
return scope;
|
|
26
|
+
}
|
|
27
|
+
export function useLexicalScope() {
|
|
28
|
+
const scope = useGoScope();
|
|
29
|
+
if (!(scope instanceof GoLexicalScope)) {
|
|
30
|
+
throw new Error(`Expected a lexical scope, but got ${scope.constructor.name}.`);
|
|
31
|
+
}
|
|
32
|
+
return scope;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=contexts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useScope","GoFunctionScope","GoScope","GoLexicalScope","GoNamedTypeScope","useGoScope","scope","Error","useNamedTypeScope","constructor","name","useFuncScope","useLexicalScope"],"sources":["../../../../src/scopes/contexts.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAQ,QAAQ,gBAAgB;AACzC,SAASC,eAAe,QAAQ,eAAe;AAC/C,SAASC,OAAO,QAAQ,SAAS;AACjC,SAASC,cAAc,QAAQ,cAAc;AAC7C,SAASC,gBAAgB,QAAQ,iBAAiB;AAElD,OAAO,SAASC,UAAUA,CAAA,EAAG;EAC3B,MAAMC,KAAK,GAAGN,QAAQ,CAAC,CAAC;EACxB,IAAI,EAAEM,KAAK,YAAYJ,OAAO,CAAC,EAAE;IAC/B,MAAM,IAAIK,KAAK,CAAC,qDAAqD,CAAC;EACxE;EAEA,OAAOD,KAAK;AACd;AAEA,OAAO,SAASE,iBAAiBA,CAAA,EAAG;EAClC,MAAMF,KAAK,GAAGD,UAAU,CAAC,CAAC;EAC1B,IAAI,EAAEC,KAAK,YAAYF,gBAAgB,CAAC,EAAE;IACxC,MAAM,IAAIG,KAAK,CACb,qCAAqC,GAAGD,KAAK,CAACG,WAAW,CAACC,IAC5D,CAAC;EACH;EAEA,OAAOJ,KAAK;AACd;AAEA,OAAO,SAASK,YAAYA,CAAA,EAAG;EAC7B,MAAML,KAAK,GAAGD,UAAU,CAAC,CAAC;EAC1B,IAAI,EAAEC,KAAK,YAAYL,eAAe,CAAC,EAAE;IACvC,MAAM,IAAIM,KAAK,CACb,sCAAsCD,KAAK,CAACG,WAAW,CAACC,IAAI,GAC9D,CAAC;EACH;EACA,OAAOJ,KAAK;AACd;AAEA,OAAO,SAASM,eAAeA,CAAA,EAAG;EAChC,MAAMN,KAAK,GAAGD,UAAU,CAAC,CAAC;EAC1B,IAAI,EAAEC,KAAK,YAAYH,cAAc,CAAC,EAAE;IACtC,MAAM,IAAII,KAAK,CACb,qCAAqCD,KAAK,CAACG,WAAW,CAACC,IAAI,GAC7D,CAAC;EACH;EACA,OAAOJ,KAAK;AACd","ignoreList":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createScope } from "@alloy-js/core";
|
|
2
|
+
import { useGoScope } from "./contexts.js";
|
|
3
|
+
import { GoFunctionScope } from "./function.js";
|
|
4
|
+
import { GoNamedTypeScope } from "./named-type.js";
|
|
5
|
+
import { GoSourceFileScope } from "./source-file.js";
|
|
6
|
+
export function createNamedTypeScope(ownerSymbol, options = {}) {
|
|
7
|
+
const currentScope = useGoScope();
|
|
8
|
+
if (!(currentScope instanceof GoNamedTypeScope) && !(currentScope instanceof GoSourceFileScope)) {
|
|
9
|
+
throw new Error("Can't create Go type declaration scope inside of " + currentScope.constructor.name);
|
|
10
|
+
}
|
|
11
|
+
return createScope(GoNamedTypeScope, ownerSymbol, currentScope, options);
|
|
12
|
+
}
|
|
13
|
+
export function createFunctionScope(options = {}) {
|
|
14
|
+
const parentScope = useGoScope();
|
|
15
|
+
return createScope(GoFunctionScope, "function scope", parentScope, options);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=factories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createScope","useGoScope","GoFunctionScope","GoNamedTypeScope","GoSourceFileScope","createNamedTypeScope","ownerSymbol","options","currentScope","Error","constructor","name","createFunctionScope","parentScope"],"sources":["../../../../src/scopes/factories.ts"],"sourcesContent":[null],"mappings":"AAAA,SAA6BA,WAAW,QAAQ,gBAAgB;AAEhE,SAASC,UAAU,QAAQ,eAAe;AAC1C,SAASC,eAAe,QAAQ,eAAe;AAC/C,SAASC,gBAAgB,QAAQ,iBAAiB;AAClD,SAASC,iBAAiB,QAAQ,kBAAkB;AAEpD,OAAO,SAASC,oBAAoBA,CAClCC,WAA4B,EAC5BC,OAA2B,GAAG,CAAC,CAAC,EAChC;EACA,MAAMC,YAAY,GAAGP,UAAU,CAAC,CAAC;EACjC,IACE,EAAEO,YAAY,YAAYL,gBAAgB,CAAC,IAC3C,EAAEK,YAAY,YAAYJ,iBAAiB,CAAC,EAC5C;IACA,MAAM,IAAIK,KAAK,CACb,mDAAmD,GACjDD,YAAY,CAACE,WAAW,CAACC,IAC7B,CAAC;EACH;EAEA,OAAOX,WAAW,CAACG,gBAAgB,EAAEG,WAAW,EAAEE,YAAY,EAAED,OAAO,CAAC;AAC1E;AAEA,OAAO,SAASK,mBAAmBA,CAACL,OAA2B,GAAG,CAAC,CAAC,EAAE;EACpE,MAAMM,WAAW,GAAGZ,UAAU,CAAC,CAAC;EAChC,OAAOD,WAAW,CAACE,eAAe,EAAE,gBAAgB,EAAEW,WAAW,EAAEN,OAAO,CAAC;AAC7E","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { GoLexicalScope } from "./lexical.js";
|
|
2
|
+
export class GoFunctionScope extends GoLexicalScope {
|
|
3
|
+
static declarationSpaces = ["local-variables", "parameters", "type-parameters"];
|
|
4
|
+
get localVariables() {
|
|
5
|
+
return this.spaceFor("local-variables");
|
|
6
|
+
}
|
|
7
|
+
get parameters() {
|
|
8
|
+
return this.spaceFor("parameters");
|
|
9
|
+
}
|
|
10
|
+
get typeParameters() {
|
|
11
|
+
return this.spaceFor("type-parameters");
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["GoLexicalScope","GoFunctionScope","declarationSpaces","localVariables","spaceFor","parameters","typeParameters"],"sources":["../../../../src/scopes/function.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,cAAc,QAAQ,cAAc;AAE7C,OAAO,MAAMC,eAAe,SAASD,cAAc,CAAC;EAClD,OAAuBE,iBAAiB,GAAG,CACzC,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,CAClB;EAED,IAAIC,cAAcA,CAAA,EAAgB;IAChC,OAAO,IAAI,CAACC,QAAQ,CAAC,iBAAiB,CAAC;EACzC;EAEA,IAAIC,UAAUA,CAAA,EAAgB;IAC5B,OAAO,IAAI,CAACD,QAAQ,CAAC,YAAY,CAAC;EACpC;EAEA,IAAIE,cAAcA,CAAA,EAAgB;IAChC,OAAO,IAAI,CAACF,QAAQ,CAAC,iBAAiB,CAAC;EACzC;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { OutputScope } from "@alloy-js/core";
|
|
2
|
+
export class GoScope extends OutputScope {
|
|
3
|
+
constructor(name, parent, options) {
|
|
4
|
+
super(name, parent, options);
|
|
5
|
+
this.#packageSymbol = parent?.enclosingPackage;
|
|
6
|
+
}
|
|
7
|
+
#packageSymbol;
|
|
8
|
+
get enclosingPackage() {
|
|
9
|
+
return this.#packageSymbol;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=go.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["OutputScope","GoScope","constructor","name","parent","options","packageSymbol","enclosingPackage"],"sources":["../../../../src/scopes/go.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,WAAW,QAA4B,gBAAgB;AAGhE,OAAO,MAAMC,OAAO,SAASD,WAAW,CAAC;EACvCE,WAAWA,CACTC,IAAY,EACZC,MAA2B,EAC3BC,OAA4B,EAC5B;IACA,KAAK,CAACF,IAAI,EAAEC,MAAM,EAAEC,OAAO,CAAC;IAC5B,IAAI,CAAC,CAACC,aAAa,GAAGF,MAAM,EAAEG,gBAAgB;EAChD;EAEA,CAACD,aAAa;EACd,IAAIC,gBAAgBA,CAAA,EAAG;IACrB,OAAO,IAAI,CAAC,CAACD,aAAa;EAC5B;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from "./contexts.js";
|
|
2
|
+
export * from "./factories.js";
|
|
3
|
+
export * from "./function.js";
|
|
4
|
+
export * from "./go.js";
|
|
5
|
+
export * from "./lexical.js";
|
|
6
|
+
export * from "./module.js";
|
|
7
|
+
export * from "./named-type.js";
|
|
8
|
+
export * from "./package.js";
|
|
9
|
+
export * from "./source-file.js";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../../src/scopes/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc,eAAe;AAC7B,cAAc,gBAAgB;AAC9B,cAAc,eAAe;AAC7B,cAAc,SAAS;AACvB,cAAc,cAAc;AAC5B,cAAc,aAAa;AAC3B,cAAc,iBAAiB;AAC/B,cAAc,cAAc;AAC5B,cAAc,kBAAkB","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { GoScope } from "./go.js";
|
|
2
|
+
export class GoLexicalScope extends GoScope {
|
|
3
|
+
static declarationSpaces = ["values", "types"];
|
|
4
|
+
get values() {
|
|
5
|
+
return this.spaceFor("values");
|
|
6
|
+
}
|
|
7
|
+
get types() {
|
|
8
|
+
return this.spaceFor("types");
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=lexical.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["GoScope","GoLexicalScope","declarationSpaces","values","spaceFor","types"],"sources":["../../../../src/scopes/lexical.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,OAAO,QAAQ,SAAS;AAEjC,OAAO,MAAMC,cAAc,SAASD,OAAO,CAAC;EAC1C,OAAuBE,iBAAiB,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC;EAE9D,IAAIC,MAAMA,CAAA,EAAgB;IACxB,OAAO,IAAI,CAACC,QAAQ,CAAC,QAAQ,CAAC;EAChC;EAEA,IAAIC,KAAKA,CAAA,EAAgB;IACvB,OAAO,IAAI,CAACD,QAAQ,CAAC,OAAO,CAAC;EAC/B;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { createScope, useScope } from "@alloy-js/core";
|
|
2
|
+
import { GoScope } from "./go.js";
|
|
3
|
+
export class GoModuleScope extends GoScope {
|
|
4
|
+
constructor(name, builtin = false) {
|
|
5
|
+
super(name, undefined);
|
|
6
|
+
this.#builtin = builtin;
|
|
7
|
+
}
|
|
8
|
+
#builtin;
|
|
9
|
+
get builtin() {
|
|
10
|
+
return this.#builtin;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function createGoModuleScope(name) {
|
|
14
|
+
const parentScope = useScope();
|
|
15
|
+
if (parentScope) {
|
|
16
|
+
throw new Error("Modules can only be created at the top level");
|
|
17
|
+
}
|
|
18
|
+
const scope = createScope(GoModuleScope, name);
|
|
19
|
+
return scope;
|
|
20
|
+
}
|
|
21
|
+
export function useModule() {
|
|
22
|
+
let scope = useScope();
|
|
23
|
+
while (scope) {
|
|
24
|
+
if (scope instanceof GoModuleScope) {
|
|
25
|
+
return scope;
|
|
26
|
+
}
|
|
27
|
+
scope = scope.parent;
|
|
28
|
+
}
|
|
29
|
+
throw new Error("A module is not in scope");
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createScope","useScope","GoScope","GoModuleScope","constructor","name","builtin","undefined","createGoModuleScope","parentScope","Error","scope","useModule","parent"],"sources":["../../../../src/scopes/module.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAsBA,WAAW,EAAEC,QAAQ,QAAQ,gBAAgB;AACnE,SAASC,OAAO,QAAQ,SAAS;AAEjC,OAAO,MAAMC,aAAa,SAASD,OAAO,CAAC;EACzCE,WAAWA,CAACC,IAAY,EAAEC,OAAO,GAAG,KAAK,EAAE;IACzC,KAAK,CAACD,IAAI,EAAEE,SAAS,CAAC;IACtB,IAAI,CAAC,CAACD,OAAO,GAAGA,OAAO;EACzB;EAEA,CAACA,OAAO;EACR,IAAIA,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC,CAACA,OAAO;EACtB;AACF;AAEA,OAAO,SAASE,mBAAmBA,CAACH,IAAY,EAAE;EAChD,MAAMI,WAAW,GAAGR,QAAQ,CAAC,CAAC;EAC9B,IAAIQ,WAAW,EAAE;IACf,MAAM,IAAIC,KAAK,CAAC,8CAA8C,CAAC;EACjE;EACA,MAAMC,KAAK,GAAGX,WAAW,CAACG,aAAa,EAAEE,IAAI,CAAC;EAC9C,OAAOM,KAAK;AACd;AAEA,OAAO,SAASC,SAASA,CAAA,EAAG;EAC1B,IAAID,KAA8B,GAAGV,QAAQ,CAAC,CAAC;EAC/C,OAAOU,KAAK,EAAE;IACZ,IAAIA,KAAK,YAAYR,aAAa,EAAE;MAClC,OAAOQ,KAAK;IACd;IACAA,KAAK,GAAGA,KAAK,CAACE,MAAM;EACtB;EAEA,MAAM,IAAIH,KAAK,CAAC,0BAA0B,CAAC;AAC7C","ignoreList":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { GoScope } from "./go.js";
|
|
2
|
+
/**
|
|
3
|
+
* This scope contains NamedTypeSymbols for types that are declared in
|
|
4
|
+
* containers like packages. This scope is a member scope which whose
|
|
5
|
+
* member symbol is a NamedTypeSymbol.
|
|
6
|
+
*/
|
|
7
|
+
export class GoNamedTypeScope extends GoScope {
|
|
8
|
+
static declarationSpaces = [];
|
|
9
|
+
constructor(ownerSymbol, parentScope, options = {}) {
|
|
10
|
+
super(`${ownerSymbol.name} scope`, parentScope, {
|
|
11
|
+
ownerSymbol,
|
|
12
|
+
...options
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
get ownerSymbol() {
|
|
16
|
+
return super.ownerSymbol;
|
|
17
|
+
}
|
|
18
|
+
get enclosingPackage() {
|
|
19
|
+
return this.ownerSymbol.enclosingPackage;
|
|
20
|
+
}
|
|
21
|
+
get members() {
|
|
22
|
+
return this.ownerSymbol.members;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* For now, we stuff type parameters into the member scope. This is to ensure
|
|
27
|
+
* name conflicts are handled correctly.
|
|
28
|
+
*/
|
|
29
|
+
get typeParameters() {
|
|
30
|
+
return this.ownerSymbol.members;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=named-type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["GoScope","GoNamedTypeScope","declarationSpaces","constructor","ownerSymbol","parentScope","options","name","enclosingPackage","members","typeParameters"],"sources":["../../../../src/scopes/named-type.ts"],"sourcesContent":[null],"mappings":"AAEA,SAASA,OAAO,QAAQ,SAAS;AAIjC;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,SAASD,OAAO,CAAC;EAC5C,OAAuBE,iBAAiB,GAAG,EAAE;EAE7CC,WAAWA,CACTC,WAA4B,EAC5BC,WAIa,EACbC,OAA2B,GAAG,CAAC,CAAC,EAChC;IACA,KAAK,CAAC,GAAGF,WAAW,CAACG,IAAI,QAAQ,EAAEF,WAAW,EAAE;MAC9CD,WAAW;MACX,GAAGE;IACL,CAAC,CAAC;EACJ;EAEA,IAAIF,WAAWA,CAAA,EAAoB;IACjC,OAAO,KAAK,CAACA,WAAW;EAC1B;EAEA,IAAII,gBAAgBA,CAAA,EAAG;IACrB,OAAO,IAAI,CAACJ,WAAW,CAACI,gBAAgB;EAC1C;EAEA,IAAIC,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACL,WAAW,CAACK,OAAO;EACjC;;EAEA;AACF;AACA;AACA;EACE,IAAIC,cAAcA,CAAA,EAAG;IACnB,OAAO,IAAI,CAACN,WAAW,CAACK,OAAO;EACjC;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { createScope, useScope } from "@alloy-js/core";
|
|
2
|
+
import { GoModuleScope } from "./module.js";
|
|
3
|
+
import { GoNamedTypeScope } from "./named-type.js";
|
|
4
|
+
export class GoPackageScope extends GoNamedTypeScope {
|
|
5
|
+
constructor(packageSymbol, parentScope) {
|
|
6
|
+
super(packageSymbol, parentScope, {
|
|
7
|
+
binder: packageSymbol.binder
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
get ownerSymbol() {
|
|
11
|
+
return super.ownerSymbol;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function createGoPackageScope(packageSymbol) {
|
|
15
|
+
const parentScope = useScope();
|
|
16
|
+
if (parentScope && !(parentScope instanceof GoPackageScope || parentScope instanceof GoModuleScope)) {
|
|
17
|
+
throw new Error("Packages can only be created within a package or module");
|
|
18
|
+
}
|
|
19
|
+
const scope = createScope(GoPackageScope, packageSymbol, parentScope);
|
|
20
|
+
return scope;
|
|
21
|
+
}
|
|
22
|
+
export function useEnclosingPackageScope() {
|
|
23
|
+
const currentScope = useScope();
|
|
24
|
+
if (!(currentScope instanceof GoPackageScope)) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
return currentScope;
|
|
28
|
+
}
|
|
29
|
+
export function usePackage() {
|
|
30
|
+
let scope = useScope();
|
|
31
|
+
while (scope) {
|
|
32
|
+
if (scope instanceof GoPackageScope) {
|
|
33
|
+
return scope;
|
|
34
|
+
}
|
|
35
|
+
scope = scope.parent;
|
|
36
|
+
}
|
|
37
|
+
throw new Error("A package is not in scope");
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createScope","useScope","GoModuleScope","GoNamedTypeScope","GoPackageScope","constructor","packageSymbol","parentScope","binder","ownerSymbol","createGoPackageScope","Error","scope","useEnclosingPackageScope","currentScope","undefined","usePackage","parent"],"sources":["../../../../src/scopes/package.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAsBA,WAAW,EAAEC,QAAQ,QAAQ,gBAAgB;AAEnE,SAASC,aAAa,QAAQ,aAAa;AAC3C,SAASC,gBAAgB,QAAQ,iBAAiB;AAElD,OAAO,MAAMC,cAAc,SAASD,gBAAgB,CAAC;EACnDE,WAAWA,CACTC,aAA4B,EAC5BC,WAA4C,EAC5C;IACA,KAAK,CAACD,aAAa,EAAEC,WAAW,EAAE;MAAEC,MAAM,EAAEF,aAAa,CAACE;IAAO,CAAC,CAAC;EACrE;EAEA,IAAIC,WAAWA,CAAA,EAAG;IAChB,OAAO,KAAK,CAACA,WAAW;EAC1B;AACF;AAEA,OAAO,SAASC,oBAAoBA,CAACJ,aAA4B,EAAE;EACjE,MAAMC,WAAW,GAAGN,QAAQ,CAAC,CAAC;EAC9B,IACEM,WAAW,IACX,EACEA,WAAW,YAAYH,cAAc,IACrCG,WAAW,YAAYL,aAAa,CACrC,EACD;IACA,MAAM,IAAIS,KAAK,CAAC,yDAAyD,CAAC;EAC5E;EAEA,MAAMC,KAAK,GAAGZ,WAAW,CAACI,cAAc,EAAEE,aAAa,EAAEC,WAAW,CAAC;EAErE,OAAOK,KAAK;AACd;AAEA,OAAO,SAASC,wBAAwBA,CAAA,EAA+B;EACrE,MAAMC,YAAY,GAAGb,QAAQ,CAAC,CAAC;EAC/B,IAAI,EAAEa,YAAY,YAAYV,cAAc,CAAC,EAAE;IAC7C,OAAOW,SAAS;EAClB;EAEA,OAAOD,YAAY;AACrB;AAEA,OAAO,SAASE,UAAUA,CAAA,EAAG;EAC3B,IAAIJ,KAA8B,GAAGX,QAAQ,CAAC,CAAC;EAC/C,OAAOW,KAAK,EAAE;IACZ,IAAIA,KAAK,YAAYR,cAAc,EAAE;MACnC,OAAOQ,KAAK;IACd;IACAA,KAAK,GAAGA,KAAK,CAACK,MAAM;EACtB;EAEA,MAAM,IAAIN,KAAK,CAAC,2BAA2B,CAAC;AAC9C","ignoreList":[]}
|