@rcrsr/rill 0.9.0 → 0.11.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/dist/ast-nodes.d.ts +43 -10
- package/dist/ast-nodes.d.ts.map +1 -1
- package/dist/ast-unions.d.ts +1 -1
- package/dist/ast-unions.d.ts.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/error-registry.d.ts.map +1 -1
- package/dist/error-registry.js +273 -6
- package/dist/error-registry.js.map +1 -1
- package/dist/ext/crypto/index.d.ts.map +1 -1
- package/dist/ext/crypto/index.js +23 -12
- package/dist/ext/crypto/index.js.map +1 -1
- package/dist/ext/exec/index.d.ts.map +1 -1
- package/dist/ext/exec/index.js +10 -11
- package/dist/ext/exec/index.js.map +1 -1
- package/dist/ext/fetch/index.d.ts.map +1 -1
- package/dist/ext/fetch/index.js +15 -15
- package/dist/ext/fetch/index.js.map +1 -1
- package/dist/ext/fs/index.d.ts.map +1 -1
- package/dist/ext/fs/index.js +139 -47
- package/dist/ext/fs/index.js.map +1 -1
- package/dist/ext/kv/index.d.ts.map +1 -1
- package/dist/ext/kv/index.js +130 -31
- package/dist/ext/kv/index.js.map +1 -1
- package/dist/generated/introspection-data.d.ts +1 -1
- package/dist/generated/introspection-data.d.ts.map +1 -1
- package/dist/generated/introspection-data.js +109 -8
- package/dist/generated/introspection-data.js.map +1 -1
- package/dist/generated/version-data.d.ts +1 -1
- package/dist/generated/version-data.d.ts.map +1 -1
- package/dist/generated/version-data.js +2 -2
- package/dist/generated/version-data.js.map +1 -1
- package/dist/highlight-map.d.ts.map +1 -1
- package/dist/highlight-map.js +1 -0
- package/dist/highlight-map.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lexer/readers.d.ts.map +1 -1
- package/dist/lexer/readers.js +1 -0
- package/dist/lexer/readers.js.map +1 -1
- package/dist/parser/index.d.ts +3 -1
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/index.js +4 -1
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/parser-control.d.ts +1 -1
- package/dist/parser/parser-control.d.ts.map +1 -1
- package/dist/parser/parser-control.js +2 -2
- package/dist/parser/parser-control.js.map +1 -1
- package/dist/parser/parser-expr.d.ts +2 -1
- package/dist/parser/parser-expr.d.ts.map +1 -1
- package/dist/parser/parser-expr.js +15 -2
- package/dist/parser/parser-expr.js.map +1 -1
- package/dist/parser/parser-extract.d.ts.map +1 -1
- package/dist/parser/parser-extract.js +10 -9
- package/dist/parser/parser-extract.js.map +1 -1
- package/dist/parser/parser-functions.js +11 -6
- package/dist/parser/parser-functions.js.map +1 -1
- package/dist/parser/parser-literals.d.ts +1 -1
- package/dist/parser/parser-literals.d.ts.map +1 -1
- package/dist/parser/parser-literals.js +61 -7
- package/dist/parser/parser-literals.js.map +1 -1
- package/dist/parser/parser-types.d.ts +22 -6
- package/dist/parser/parser-types.d.ts.map +1 -1
- package/dist/parser/parser-types.js +126 -9
- package/dist/parser/parser-types.js.map +1 -1
- package/dist/parser/parser-use.d.ts +11 -0
- package/dist/parser/parser-use.d.ts.map +1 -0
- package/dist/parser/parser-use.js +68 -0
- package/dist/parser/parser-use.js.map +1 -0
- package/dist/parser/parser-variables.d.ts.map +1 -1
- package/dist/parser/parser-variables.js +5 -4
- package/dist/parser/parser-variables.js.map +1 -1
- package/dist/runtime/core/callable.d.ts +59 -70
- package/dist/runtime/core/callable.d.ts.map +1 -1
- package/dist/runtime/core/callable.js +37 -93
- package/dist/runtime/core/callable.js.map +1 -1
- package/dist/runtime/core/context.d.ts.map +1 -1
- package/dist/runtime/core/context.js +104 -33
- package/dist/runtime/core/context.js.map +1 -1
- package/dist/runtime/core/equals.d.ts.map +1 -1
- package/dist/runtime/core/equals.js +59 -17
- package/dist/runtime/core/equals.js.map +1 -1
- package/dist/runtime/core/eval/evaluator.d.ts.map +1 -1
- package/dist/runtime/core/eval/evaluator.js +2 -1
- package/dist/runtime/core/eval/evaluator.js.map +1 -1
- package/dist/runtime/core/eval/index.d.ts +2 -2
- package/dist/runtime/core/eval/index.d.ts.map +1 -1
- package/dist/runtime/core/eval/index.js +5 -0
- package/dist/runtime/core/eval/index.js.map +1 -1
- package/dist/runtime/core/eval/mixins/closures.d.ts +3 -5
- package/dist/runtime/core/eval/mixins/closures.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/closures.js +76 -40
- package/dist/runtime/core/eval/mixins/closures.js.map +1 -1
- package/dist/runtime/core/eval/mixins/collections.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/collections.js +4 -2
- package/dist/runtime/core/eval/mixins/collections.js.map +1 -1
- package/dist/runtime/core/eval/mixins/conversion.d.ts +9 -9
- package/dist/runtime/core/eval/mixins/conversion.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/conversion.js +51 -21
- package/dist/runtime/core/eval/mixins/conversion.js.map +1 -1
- package/dist/runtime/core/eval/mixins/core.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/core.js +8 -2
- package/dist/runtime/core/eval/mixins/core.js.map +1 -1
- package/dist/runtime/core/eval/mixins/extraction.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/extraction.js +20 -8
- package/dist/runtime/core/eval/mixins/extraction.js.map +1 -1
- package/dist/runtime/core/eval/mixins/literals.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/literals.js +32 -15
- package/dist/runtime/core/eval/mixins/literals.js.map +1 -1
- package/dist/runtime/core/eval/mixins/types.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/types.js +166 -21
- package/dist/runtime/core/eval/mixins/types.js.map +1 -1
- package/dist/runtime/core/eval/mixins/use.d.ts +25 -0
- package/dist/runtime/core/eval/mixins/use.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/use.js +152 -0
- package/dist/runtime/core/eval/mixins/use.js.map +1 -0
- package/dist/runtime/core/eval/mixins/variables.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/variables.js +67 -32
- package/dist/runtime/core/eval/mixins/variables.js.map +1 -1
- package/dist/runtime/core/execute.d.ts.map +1 -1
- package/dist/runtime/core/execute.js +11 -1
- package/dist/runtime/core/execute.js.map +1 -1
- package/dist/runtime/core/field-descriptor.d.ts +6 -6
- package/dist/runtime/core/field-descriptor.d.ts.map +1 -1
- package/dist/runtime/core/field-descriptor.js +2 -2
- package/dist/runtime/core/field-descriptor.js.map +1 -1
- package/dist/runtime/core/introspection.d.ts +16 -0
- package/dist/runtime/core/introspection.d.ts.map +1 -1
- package/dist/runtime/core/introspection.js +102 -7
- package/dist/runtime/core/introspection.js.map +1 -1
- package/dist/runtime/core/resolvers.d.ts +39 -0
- package/dist/runtime/core/resolvers.d.ts.map +1 -0
- package/dist/runtime/core/resolvers.js +89 -0
- package/dist/runtime/core/resolvers.js.map +1 -0
- package/dist/runtime/core/types.d.ts +54 -5
- package/dist/runtime/core/types.d.ts.map +1 -1
- package/dist/runtime/core/types.js.map +1 -1
- package/dist/runtime/core/values.d.ts +43 -29
- package/dist/runtime/core/values.d.ts.map +1 -1
- package/dist/runtime/core/values.js +153 -68
- package/dist/runtime/core/values.js.map +1 -1
- package/dist/runtime/ext/builtins.d.ts +3 -4
- package/dist/runtime/ext/builtins.d.ts.map +1 -1
- package/dist/runtime/ext/builtins.js +621 -444
- package/dist/runtime/ext/builtins.js.map +1 -1
- package/dist/runtime/ext/extensions.d.ts +43 -43
- package/dist/runtime/ext/extensions.d.ts.map +1 -1
- package/dist/runtime/ext/extensions.js.map +1 -1
- package/dist/runtime/index.d.ts +8 -5
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +6 -2
- package/dist/runtime/index.js.map +1 -1
- package/dist/signature-parser.d.ts +43 -0
- package/dist/signature-parser.d.ts.map +1 -0
- package/dist/signature-parser.js +289 -0
- package/dist/signature-parser.js.map +1 -0
- package/dist/token-types.d.ts +1 -0
- package/dist/token-types.d.ts.map +1 -1
- package/dist/token-types.js +1 -0
- package/dist/token-types.js.map +1 -1
- package/dist/value-types.d.ts +20 -6
- package/dist/value-types.d.ts.map +1 -1
- package/dist/value-types.js +1 -1
- package/dist/value-types.js.map +1 -1
- package/package.json +4 -1
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* @internal
|
|
22
22
|
*/
|
|
23
23
|
import { RuntimeError } from '../../../../types.js';
|
|
24
|
-
import { inferType, checkType, isTypeValue } from '../../values.js';
|
|
24
|
+
import { inferType, checkType, isTypeValue, structuralTypeMatches, inferStructuralType, formatStructuralType, } from '../../values.js';
|
|
25
25
|
import { getVariable } from '../../context.js';
|
|
26
26
|
/**
|
|
27
27
|
* TypesMixin implementation.
|
|
@@ -47,22 +47,137 @@ import { getVariable } from '../../context.js';
|
|
|
47
47
|
function createTypesMixin(Base) {
|
|
48
48
|
return class TypesEvaluator extends Base {
|
|
49
49
|
/**
|
|
50
|
-
* Resolve a TypeRef to a RillTypeValue [IR-
|
|
50
|
+
* Resolve a TypeRef to a RillTypeValue [IR-2].
|
|
51
51
|
*
|
|
52
|
-
* Static refs return a frozen RillTypeValue directly.
|
|
52
|
+
* Static refs with no args return a frozen RillTypeValue directly.
|
|
53
|
+
* Static refs with args build a parameterized RillType.
|
|
53
54
|
* Dynamic refs call getVariable, then dispatch on the result:
|
|
54
55
|
* - RillTypeValue → return as-is
|
|
55
56
|
* - Otherwise → throw RILL-R004
|
|
56
57
|
*
|
|
57
58
|
* EC-1: Variable not found → undefined from getVariable → RILL-R005.
|
|
58
|
-
* EC-2
|
|
59
|
+
* EC-2: Non-type variable value → RILL-R004.
|
|
60
|
+
* EC-3: Leaf type with args → RILL-R004.
|
|
61
|
+
* EC-4: list with != 1 positional arg → RILL-R004.
|
|
62
|
+
* EC-5: dict/ordered with positional arg → RILL-R004.
|
|
63
|
+
* EC-6: tuple with named arg → RILL-R004.
|
|
64
|
+
* EC-7: arg value is not a type value → RILL-R004.
|
|
59
65
|
*/
|
|
60
66
|
resolveTypeRef(typeRef, getVariable) {
|
|
61
67
|
if (typeRef.kind === 'static') {
|
|
68
|
+
const { typeName, args } = typeRef;
|
|
69
|
+
// No args: existing bare-type behavior
|
|
70
|
+
if (!args || args.length === 0) {
|
|
71
|
+
return Object.freeze({
|
|
72
|
+
__rill_type: true,
|
|
73
|
+
typeName,
|
|
74
|
+
structure: { type: typeName },
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
// EC-3: Leaf types reject all type arguments
|
|
78
|
+
const LEAF_TYPES = new Set([
|
|
79
|
+
'string',
|
|
80
|
+
'number',
|
|
81
|
+
'bool',
|
|
82
|
+
'vector',
|
|
83
|
+
'type',
|
|
84
|
+
'any',
|
|
85
|
+
'closure',
|
|
86
|
+
]);
|
|
87
|
+
if (LEAF_TYPES.has(typeName)) {
|
|
88
|
+
throw new RuntimeError('RILL-R004', `${typeName} does not accept type arguments`);
|
|
89
|
+
}
|
|
90
|
+
// Helper: recursively resolve one TypeRefArg to RillType
|
|
91
|
+
const resolveArg = (arg) => {
|
|
92
|
+
const resolved = this.resolveTypeRef(arg.ref, getVariable);
|
|
93
|
+
return resolved.structure;
|
|
94
|
+
};
|
|
95
|
+
if (typeName === 'list') {
|
|
96
|
+
// EC-4: list requires exactly 1 positional arg
|
|
97
|
+
if (args.length !== 1 || args[0].name !== undefined) {
|
|
98
|
+
throw new RuntimeError('RILL-R004', 'list() requires exactly 1 type argument');
|
|
99
|
+
}
|
|
100
|
+
const structure = {
|
|
101
|
+
type: 'list',
|
|
102
|
+
element: resolveArg(args[0]),
|
|
103
|
+
};
|
|
104
|
+
return Object.freeze({
|
|
105
|
+
__rill_type: true,
|
|
106
|
+
typeName,
|
|
107
|
+
structure,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
if (typeName === 'dict') {
|
|
111
|
+
// EC-5: dict requires named args only
|
|
112
|
+
for (const arg of args) {
|
|
113
|
+
if (arg.name === undefined) {
|
|
114
|
+
throw new RuntimeError('RILL-R004', 'dict() requires named arguments (field: type)');
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const fields = {};
|
|
118
|
+
for (const arg of args) {
|
|
119
|
+
fields[arg.name] = resolveArg(arg);
|
|
120
|
+
}
|
|
121
|
+
const structure = { type: 'dict', fields };
|
|
122
|
+
return Object.freeze({
|
|
123
|
+
__rill_type: true,
|
|
124
|
+
typeName,
|
|
125
|
+
structure,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
if (typeName === 'tuple') {
|
|
129
|
+
// EC-6: tuple requires positional args only
|
|
130
|
+
for (const arg of args) {
|
|
131
|
+
if (arg.name !== undefined) {
|
|
132
|
+
throw new RuntimeError('RILL-R004', 'tuple() requires positional arguments');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
const elements = args.map(resolveArg);
|
|
136
|
+
const structure = { type: 'tuple', elements };
|
|
137
|
+
return Object.freeze({
|
|
138
|
+
__rill_type: true,
|
|
139
|
+
typeName,
|
|
140
|
+
structure,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
// typeName === 'ordered'
|
|
144
|
+
// EC-5: ordered requires named args only
|
|
145
|
+
for (const arg of args) {
|
|
146
|
+
if (arg.name === undefined) {
|
|
147
|
+
throw new RuntimeError('RILL-R004', 'dict() requires named arguments (field: type)');
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
const orderedFields = args.map((arg) => [
|
|
151
|
+
arg.name,
|
|
152
|
+
resolveArg(arg),
|
|
153
|
+
]);
|
|
154
|
+
const structure = {
|
|
155
|
+
type: 'ordered',
|
|
156
|
+
fields: orderedFields,
|
|
157
|
+
};
|
|
158
|
+
return Object.freeze({
|
|
159
|
+
__rill_type: true,
|
|
160
|
+
typeName,
|
|
161
|
+
structure,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
// Union type ref: (A | B) — resolve each member recursively and
|
|
165
|
+
// return a RillTypeValue with structure: { type: 'union', members: [...] }.
|
|
166
|
+
// typeName is set to a display string for error messages; the structure
|
|
167
|
+
// field carries the authoritative type shape for validation (DR-1).
|
|
168
|
+
if (typeRef.kind === 'union') {
|
|
169
|
+
const members = typeRef.members.map((member) => {
|
|
170
|
+
const resolved = this.resolveTypeRef(member, getVariable);
|
|
171
|
+
return resolved.structure;
|
|
172
|
+
});
|
|
173
|
+
const structure = { type: 'union', members };
|
|
174
|
+
const displayName = members
|
|
175
|
+
.map(formatStructuralType)
|
|
176
|
+
.join('|');
|
|
62
177
|
return Object.freeze({
|
|
63
178
|
__rill_type: true,
|
|
64
|
-
typeName:
|
|
65
|
-
structure
|
|
179
|
+
typeName: displayName,
|
|
180
|
+
structure,
|
|
66
181
|
});
|
|
67
182
|
}
|
|
68
183
|
const result = getVariable(typeRef.varName);
|
|
@@ -76,9 +191,30 @@ function createTypesMixin(Base) {
|
|
|
76
191
|
/**
|
|
77
192
|
* Assert that a value is of the expected type.
|
|
78
193
|
* Returns the value unchanged if assertion passes, throws on mismatch.
|
|
194
|
+
* Accepts a bare RillTypeName or a full RillType.
|
|
195
|
+
* When expected is a RillType with sub-fields (element, fields, elements),
|
|
196
|
+
* dispatches to structuralTypeMatches for deep validation.
|
|
79
197
|
* Exported for use by type assertion evaluation.
|
|
80
198
|
*/
|
|
81
199
|
assertType(value, expected, location) {
|
|
200
|
+
// Structural path: expected is a RillType object
|
|
201
|
+
if (typeof expected !== 'string') {
|
|
202
|
+
const hasSubFields = 'element' in expected ||
|
|
203
|
+
'fields' in expected ||
|
|
204
|
+
'elements' in expected ||
|
|
205
|
+
'members' in expected;
|
|
206
|
+
if (hasSubFields) {
|
|
207
|
+
if (!structuralTypeMatches(value, expected)) {
|
|
208
|
+
const expectedStr = formatStructuralType(expected);
|
|
209
|
+
const actualStr = formatStructuralType(inferStructuralType(value));
|
|
210
|
+
throw new RuntimeError('RILL-R004', `Type assertion failed: expected ${expectedStr}, got ${actualStr}`, location, { expectedType: expectedStr, actualType: actualStr });
|
|
211
|
+
}
|
|
212
|
+
return value;
|
|
213
|
+
}
|
|
214
|
+
// Bare structural type (no sub-fields): fall through using type name
|
|
215
|
+
expected = expected.type;
|
|
216
|
+
}
|
|
217
|
+
// Bare type name path
|
|
82
218
|
if (expected === 'any')
|
|
83
219
|
return value;
|
|
84
220
|
const actual = inferType(value);
|
|
@@ -99,7 +235,7 @@ function createTypesMixin(Base) {
|
|
|
99
235
|
await this.evaluatePostfixExpr(node.operand)
|
|
100
236
|
: input;
|
|
101
237
|
const resolved = this.resolveTypeRef(node.typeRef, (name) => getVariable(this.ctx, name));
|
|
102
|
-
return this.assertType(value, resolved.
|
|
238
|
+
return this.assertType(value, resolved.structure, node.span.start);
|
|
103
239
|
}
|
|
104
240
|
/**
|
|
105
241
|
* Evaluate type check: expr:?type or :?type (shorthand for $:?type).
|
|
@@ -113,6 +249,13 @@ function createTypesMixin(Base) {
|
|
|
113
249
|
await this.evaluatePostfixExpr(node.operand)
|
|
114
250
|
: input;
|
|
115
251
|
const resolved = this.resolveTypeRef(node.typeRef, (name) => getVariable(this.ctx, name));
|
|
252
|
+
const hasSubFields = 'element' in resolved.structure ||
|
|
253
|
+
'fields' in resolved.structure ||
|
|
254
|
+
'elements' in resolved.structure ||
|
|
255
|
+
'members' in resolved.structure;
|
|
256
|
+
if (hasSubFields) {
|
|
257
|
+
return structuralTypeMatches(value, resolved.structure);
|
|
258
|
+
}
|
|
116
259
|
return checkType(value, resolved.typeName);
|
|
117
260
|
}
|
|
118
261
|
/**
|
|
@@ -159,9 +302,9 @@ function createTypesMixin(Base) {
|
|
|
159
302
|
if (!isTypeValue(argValue)) {
|
|
160
303
|
throw new RuntimeError('RILL-R004', `Type constructor argument must be a type value, got ${inferType(argValue)}`, location);
|
|
161
304
|
}
|
|
162
|
-
return argValue.structure.
|
|
305
|
+
return argValue.structure.type === 'any' &&
|
|
163
306
|
argValue.typeName !== 'any'
|
|
164
|
-
? {
|
|
307
|
+
? { type: argValue.typeName }
|
|
165
308
|
: argValue.structure;
|
|
166
309
|
};
|
|
167
310
|
if (name === 'list') {
|
|
@@ -174,7 +317,7 @@ function createTypesMixin(Base) {
|
|
|
174
317
|
const argVal = await this.evaluateExpression(arg.value);
|
|
175
318
|
const elementType = await resolveArgAsType(argVal);
|
|
176
319
|
const structure = {
|
|
177
|
-
|
|
320
|
+
type: 'list',
|
|
178
321
|
element: elementType,
|
|
179
322
|
};
|
|
180
323
|
return Object.freeze({
|
|
@@ -198,7 +341,7 @@ function createTypesMixin(Base) {
|
|
|
198
341
|
fields[arg.name] = await resolveArgAsType(argVal);
|
|
199
342
|
}
|
|
200
343
|
}
|
|
201
|
-
const structure = {
|
|
344
|
+
const structure = { type: 'dict', fields };
|
|
202
345
|
return Object.freeze({
|
|
203
346
|
__rill_type: true,
|
|
204
347
|
typeName: 'dict',
|
|
@@ -220,7 +363,7 @@ function createTypesMixin(Base) {
|
|
|
220
363
|
elements.push(await resolveArgAsType(argVal));
|
|
221
364
|
}
|
|
222
365
|
}
|
|
223
|
-
const structure = {
|
|
366
|
+
const structure = { type: 'tuple', elements };
|
|
224
367
|
return Object.freeze({
|
|
225
368
|
__rill_type: true,
|
|
226
369
|
typeName: 'tuple',
|
|
@@ -243,7 +386,7 @@ function createTypesMixin(Base) {
|
|
|
243
386
|
}
|
|
244
387
|
}
|
|
245
388
|
const structure = {
|
|
246
|
-
|
|
389
|
+
type: 'ordered',
|
|
247
390
|
fields: orderedFields,
|
|
248
391
|
};
|
|
249
392
|
return Object.freeze({
|
|
@@ -256,7 +399,7 @@ function createTypesMixin(Base) {
|
|
|
256
399
|
* Evaluate a closure signature literal into a RillTypeValue [IR-8].
|
|
257
400
|
*
|
|
258
401
|
* Creates a closure type value from |param: T, ...|: R syntax.
|
|
259
|
-
* Each parameter produces a [name,
|
|
402
|
+
* Each parameter produces a [name, RillType] entry.
|
|
260
403
|
*
|
|
261
404
|
* Error contracts:
|
|
262
405
|
* - EC-8: missing return type -> RILL-R004 (enforced at parse time; node always has returnType)
|
|
@@ -264,14 +407,14 @@ function createTypesMixin(Base) {
|
|
|
264
407
|
*/
|
|
265
408
|
async evaluateClosureSigLiteral(node) {
|
|
266
409
|
const location = node.span.start;
|
|
267
|
-
// Helper: evaluate a type expression and extract
|
|
410
|
+
// Helper: evaluate a type expression and extract RillType
|
|
268
411
|
const resolveTypeExpr = async (argVal) => {
|
|
269
412
|
if (!isTypeValue(argVal)) {
|
|
270
413
|
throw new RuntimeError('RILL-R004', `Parameter type must be a type value, got ${inferType(argVal)}`, location);
|
|
271
414
|
}
|
|
272
|
-
return argVal.structure.
|
|
415
|
+
return argVal.structure.type === 'any' &&
|
|
273
416
|
argVal.typeName !== 'any'
|
|
274
|
-
? {
|
|
417
|
+
? { type: argVal.typeName }
|
|
275
418
|
: argVal.structure;
|
|
276
419
|
};
|
|
277
420
|
// Evaluate parameter types
|
|
@@ -283,16 +426,18 @@ function createTypesMixin(Base) {
|
|
|
283
426
|
params.push([param.name, paramType]);
|
|
284
427
|
}
|
|
285
428
|
// Evaluate return type (EC-8: required — parser enforces this at parse time)
|
|
429
|
+
// returnType is PostfixExprNode (stops before pipe operators) so the
|
|
430
|
+
// return type annotation cannot accidentally consume a trailing pipe chain.
|
|
286
431
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
287
|
-
const retVal = await this.
|
|
432
|
+
const retVal = await this.evaluatePostfixExpr(node.returnType);
|
|
288
433
|
if (!isTypeValue(retVal)) {
|
|
289
434
|
throw new RuntimeError('RILL-R004', `Closure type literal requires return type after |, got ${inferType(retVal)}`, location);
|
|
290
435
|
}
|
|
291
|
-
const ret = retVal.structure.
|
|
436
|
+
const ret = retVal.structure.type === 'any' &&
|
|
292
437
|
retVal.typeName !== 'any'
|
|
293
|
-
? {
|
|
438
|
+
? { type: retVal.typeName }
|
|
294
439
|
: retVal.structure;
|
|
295
|
-
const structure = {
|
|
440
|
+
const structure = { type: 'closure', params, ret };
|
|
296
441
|
return Object.freeze({
|
|
297
442
|
__rill_type: true,
|
|
298
443
|
typeName: 'closure',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/runtime/core/eval/mixins/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAWH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAMpD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAS,gBAAgB,CAAC,IAAyC;IACjE,OAAO,MAAM,cAAe,SAAQ,IAAI;QACtC;;;;;;;;;;WAUG;QACH,cAAc,CACZ,OAAgB,EAChB,WAAoD;YAEpD,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC9B,OAAO,MAAM,CAAC,MAAM,CAAC;oBACnB,WAAW,EAAE,IAAa;oBAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,SAAS,EAAE,EAAE,IAAI,EAAE,WAAoB,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE;iBAClE,CAAC,CAAC;YACL,CAAC;YAED,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,YAAY,CACpB,WAAW,EACX,aAAa,OAAO,CAAC,OAAO,iBAAiB,CAC9C,CAAC;YACJ,CAAC;YACD,IAAI,WAAW,CAAC,MAAM,CAAC;gBAAE,OAAO,MAAM,CAAC;YAEvC,MAAM,IAAI,YAAY,CACpB,WAAW,EACX,aAAa,OAAO,CAAC,OAAO,uCAAuC,SAAS,CAAC,MAAM,CAAC,GAAG,CACxF,CAAC;QACJ,CAAC;QAED;;;;WAIG;QACH,UAAU,CACR,KAAgB,EAChB,QAAsB,EACtB,QAAyB;YAEzB,IAAI,QAAQ,KAAK,KAAK;gBAAE,OAAO,KAAK,CAAC;YACrC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,MAAM,IAAI,YAAY,CACpB,WAAW,EACX,mCAAmC,QAAQ,SAAS,MAAM,EAAE,EAC5D,QAAQ,EACR,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAC/C,CAAC;YACJ,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED;;;WAGG;QACH,KAAK,CAAC,qBAAqB,CACzB,IAAuB,EACvB,KAAgB;YAEhB,iDAAiD;YACjD,kCAAkC;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO;gBACxB,CAAC,CAAC,8DAA8D;oBAC9D,MAAO,IAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;gBACvD,CAAC,CAAC,KAAK,CAAC;YAEV,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAC1D,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAC5B,CAAC;YACF,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpE,CAAC;QAED;;;WAGG;QACH,KAAK,CAAC,iBAAiB,CACrB,IAAmB,EACnB,KAAgB;YAEhB,iDAAiD;YACjD,kCAAkC;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO;gBACxB,CAAC,CAAC,8DAA8D;oBAC9D,MAAO,IAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;gBACvD,CAAC,CAAC,KAAK,CAAC;YAEV,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAC1D,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAC5B,CAAC;YACF,OAAO,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;QAED;;;WAGG;QACH,KAAK,CAAC,4BAA4B,CAChC,IAAuB;YAEvB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,IAAI,YAAY,CACpB,WAAW,EACX,yCAAyC,EACzC,IAAI,CAAC,IAAI,CAAC,KAAK,CAChB,CAAC;YACJ,CAAC;YACD,8DAA8D;YAC9D,MAAM,KAAK,GAAG,MAAO,IAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpE,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;QAED;;;WAGG;QACH,KAAK,CAAC,wBAAwB,CAAC,IAAmB;YAChD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,IAAI,YAAY,CACpB,WAAW,EACX,qCAAqC,EACrC,IAAI,CAAC,IAAI,CAAC,KAAK,CAChB,CAAC;YACJ,CAAC;YACD,8DAA8D;YAC9D,MAAM,KAAK,GAAG,MAAO,IAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpE,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;QAED;;;;;;;;;;;WAWG;QACH,KAAK,CAAC,uBAAuB,CAC3B,IAAyB;YAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAEjC,uEAAuE;YACvE,MAAM,gBAAgB,GAAG,KAAK,EAC5B,QAAmB,EACU,EAAE;gBAC/B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC3B,MAAM,IAAI,YAAY,CACpB,WAAW,EACX,uDAAuD,SAAS,CAAC,QAAQ,CAAC,EAAE,EAC5E,QAAQ,CACT,CAAC;gBACJ,CAAC;gBACD,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK;oBACtC,QAAQ,CAAC,QAAQ,KAAM,KAAsB;oBAC7C,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE;oBAChD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;YACzB,CAAC,CAAC;YAEF,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,2CAA2C;gBAC3C,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC3B,MAAM,IAAI,YAAY,CACpB,WAAW,EACX,yCAAyC,EACzC,QAAQ,CACT,CAAC;gBACJ,CAAC;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC;gBAC1B,8DAA8D;gBAC9D,MAAM,MAAM,GAAc,MAAO,IAAY,CAAC,kBAAkB,CAC9D,GAAG,CAAC,KAAK,CACV,CAAC;gBACF,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACnD,MAAM,SAAS,GAAuB;oBACpC,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,WAAW;iBACrB,CAAC;gBACF,OAAO,MAAM,CAAC,MAAM,CAAC;oBACnB,WAAW,EAAE,IAAa;oBAC1B,QAAQ,EAAE,MAAsB;oBAChC,SAAS;iBACV,CAAC,CAAC;YACL,CAAC;YAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,wCAAwC;gBACxC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;wBAC9B,MAAM,IAAI,YAAY,CACpB,WAAW,EACX,+CAA+C,EAC/C,QAAQ,CACT,CAAC;oBACJ,CAAC;gBACH,CAAC;gBACD,MAAM,MAAM,GAAuC,EAAE,CAAC;gBACtD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBACzB,8DAA8D;wBAC9D,MAAM,MAAM,GAAc,MAAO,IAAY,CAAC,kBAAkB,CAC9D,GAAG,CAAC,KAAK,CACV,CAAC;wBACF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBACpD,CAAC;gBACH,CAAC;gBACD,MAAM,SAAS,GAAuB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gBAC/D,OAAO,MAAM,CAAC,MAAM,CAAC;oBACnB,WAAW,EAAE,IAAa;oBAC1B,QAAQ,EAAE,MAAsB;oBAChC,SAAS;iBACV,CAAC,CAAC;YACL,CAAC;YAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACrB,8CAA8C;gBAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBACzB,MAAM,IAAI,YAAY,CACpB,WAAW,EACX,uCAAuC,EACvC,QAAQ,CACT,CAAC;oBACJ,CAAC;gBACH,CAAC;gBACD,MAAM,QAAQ,GAAyB,EAAE,CAAC;gBAC1C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;wBAC9B,8DAA8D;wBAC9D,MAAM,MAAM,GAAc,MAAO,IAAY,CAAC,kBAAkB,CAC9D,GAAG,CAAC,KAAK,CACV,CAAC;wBACF,QAAQ,CAAC,IAAI,CAAC,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;oBAChD,CAAC;gBACH,CAAC;gBACD,MAAM,SAAS,GAAuB,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;gBAClE,OAAO,MAAM,CAAC,MAAM,CAAC;oBACnB,WAAW,EAAE,IAAa;oBAC1B,QAAQ,EAAE,OAAuB;oBACjC,SAAS;iBACV,CAAC,CAAC;YACL,CAAC;YAED,qBAAqB;YACrB,2CAA2C;YAC3C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC9B,MAAM,IAAI,YAAY,CACpB,WAAW,EACX,kDAAkD,EAClD,QAAQ,CACT,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,MAAM,aAAa,GAAmC,EAAE,CAAC;YACzD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACzB,8DAA8D;oBAC9D,MAAM,MAAM,GAAc,MAAO,IAAY,CAAC,kBAAkB,CAC9D,GAAG,CAAC,KAAK,CACV,CAAC;oBACF,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;YACD,MAAM,SAAS,GAAuB;gBACpC,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,aAAa;aACtB,CAAC;YACF,OAAO,MAAM,CAAC,MAAM,CAAC;gBACnB,WAAW,EAAE,IAAa;gBAC1B,QAAQ,EAAE,SAAyB;gBACnC,SAAS;aACV,CAAC,CAAC;QACL,CAAC;QAED;;;;;;;;;WASG;QACH,KAAK,CAAC,yBAAyB,CAC7B,IAA2B;YAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAEjC,oEAAoE;YACpE,MAAM,eAAe,GAAG,KAAK,EAC3B,MAAiB,EACY,EAAE;gBAC/B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;oBACzB,MAAM,IAAI,YAAY,CACpB,WAAW,EACX,4CAA4C,SAAS,CAAC,MAAM,CAAC,EAAE,EAC/D,QAAQ,CACT,CAAC;gBACJ,CAAC;gBACD,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK;oBACpC,MAAM,CAAC,QAAQ,KAAM,KAAsB;oBAC3C,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE;oBAC9C,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;YACvB,CAAC,CAAC;YAEF,2BAA2B;YAC3B,MAAM,MAAM,GAAmC,EAAE,CAAC;YAClD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChC,8DAA8D;gBAC9D,MAAM,QAAQ,GAAc,MAAO,IAAY,CAAC,kBAAkB,CAChE,KAAK,CAAC,QAAQ,CACf,CAAC;gBACF,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAClD,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;YACvC,CAAC;YAED,6EAA6E;YAC7E,8DAA8D;YAC9D,MAAM,MAAM,GAAc,MAAO,IAAY,CAAC,kBAAkB,CAC9D,IAAI,CAAC,UAAU,CAChB,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,YAAY,CACpB,WAAW,EACX,0DAA0D,SAAS,CAAC,MAAM,CAAC,EAAE,EAC7E,QAAQ,CACT,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,GACP,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK;gBAC/B,MAAM,CAAC,QAAQ,KAAM,KAAsB;gBACzC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE;gBAC9C,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;YAEvB,MAAM,SAAS,GAAuB,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;YACvE,OAAO,MAAM,CAAC,MAAM,CAAC;gBACnB,WAAW,EAAE,IAAa;gBAC1B,QAAQ,EAAE,SAAyB;gBACnC,SAAS;aACV,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,8DAA8D;AAC9D,gGAAgG;AAChG,8DAA8D;AAC9D,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/runtime/core/eval/mixins/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UseMixin: Use Expression Evaluation
|
|
3
|
+
*
|
|
4
|
+
* Handles `use<scheme:resource>` expressions:
|
|
5
|
+
* - Resolves identifiers (static, variable, computed) to scheme + resource
|
|
6
|
+
* - Looks up registered resolvers from ctx.resolvers
|
|
7
|
+
* - Detects circular resolution via ctx.resolvingSchemes
|
|
8
|
+
* - Executes 'source' results in a child scope
|
|
9
|
+
* - Returns 'value' results directly
|
|
10
|
+
*
|
|
11
|
+
* Interface requirements (from spec IR-6):
|
|
12
|
+
* - evaluateUseExpr(node) -> Promise<RillValue>
|
|
13
|
+
*
|
|
14
|
+
* Error Contracts:
|
|
15
|
+
* - RILL-R054: Scheme not registered in resolvers
|
|
16
|
+
* - RILL-R055: Circular resolution detected
|
|
17
|
+
* - RILL-R056: Resolver callback throws
|
|
18
|
+
* - RILL-R057: Variable/computed form produces non-string
|
|
19
|
+
* - RILL-R058: Resolved string missing ':' separator
|
|
20
|
+
* - RILL-R061: parseSource not configured when resolver returns source
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export declare const UseMixin: any;
|
|
25
|
+
//# sourceMappingURL=use.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/core/eval/mixins/use.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AA8KH,eAAO,MAAM,QAAQ,EAAqB,GAAG,CAAC"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UseMixin: Use Expression Evaluation
|
|
3
|
+
*
|
|
4
|
+
* Handles `use<scheme:resource>` expressions:
|
|
5
|
+
* - Resolves identifiers (static, variable, computed) to scheme + resource
|
|
6
|
+
* - Looks up registered resolvers from ctx.resolvers
|
|
7
|
+
* - Detects circular resolution via ctx.resolvingSchemes
|
|
8
|
+
* - Executes 'source' results in a child scope
|
|
9
|
+
* - Returns 'value' results directly
|
|
10
|
+
*
|
|
11
|
+
* Interface requirements (from spec IR-6):
|
|
12
|
+
* - evaluateUseExpr(node) -> Promise<RillValue>
|
|
13
|
+
*
|
|
14
|
+
* Error Contracts:
|
|
15
|
+
* - RILL-R054: Scheme not registered in resolvers
|
|
16
|
+
* - RILL-R055: Circular resolution detected
|
|
17
|
+
* - RILL-R056: Resolver callback throws
|
|
18
|
+
* - RILL-R057: Variable/computed form produces non-string
|
|
19
|
+
* - RILL-R058: Resolved string missing ':' separator
|
|
20
|
+
* - RILL-R061: parseSource not configured when resolver returns source
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
import { RuntimeError } from '../../../../types.js';
|
|
25
|
+
import { createChildContext } from '../../context.js';
|
|
26
|
+
import { execute } from '../../execute.js';
|
|
27
|
+
/**
|
|
28
|
+
* UseMixin implementation.
|
|
29
|
+
*
|
|
30
|
+
* Provides use<> expression evaluation. Resolves scheme-qualified identifiers
|
|
31
|
+
* via the host-provided resolver map on RuntimeContext.
|
|
32
|
+
*
|
|
33
|
+
* Depends on:
|
|
34
|
+
* - EvaluatorBase: ctx, getNodeLocation()
|
|
35
|
+
* - context utilities: createChildContext
|
|
36
|
+
* - execute.ts: execute() for source results
|
|
37
|
+
* - CoreMixin: evaluateExpression() for computed identifiers
|
|
38
|
+
* - VariablesMixin: evaluateVariableAsync() for variable identifiers
|
|
39
|
+
*
|
|
40
|
+
* Methods added:
|
|
41
|
+
* - evaluateUseExpr(node) -> Promise<RillValue>
|
|
42
|
+
*/
|
|
43
|
+
function createUseMixin(Base) {
|
|
44
|
+
return class UseEvaluator extends Base {
|
|
45
|
+
/**
|
|
46
|
+
* Evaluate a use<> expression [IR-6].
|
|
47
|
+
*
|
|
48
|
+
* Resolves the identifier to a scheme + resource string, calls the
|
|
49
|
+
* registered resolver, and returns the result value (or executes source).
|
|
50
|
+
*/
|
|
51
|
+
async evaluateUseExpr(node) {
|
|
52
|
+
let scheme;
|
|
53
|
+
let resource;
|
|
54
|
+
const { identifier } = node;
|
|
55
|
+
if (identifier.kind === 'static') {
|
|
56
|
+
// Static form: scheme and segments known at parse time
|
|
57
|
+
scheme = identifier.scheme;
|
|
58
|
+
resource = identifier.segments.join('.');
|
|
59
|
+
}
|
|
60
|
+
else if (identifier.kind === 'variable') {
|
|
61
|
+
// Variable form: evaluate the variable, expect string
|
|
62
|
+
const varNode = {
|
|
63
|
+
type: 'Variable',
|
|
64
|
+
name: identifier.name,
|
|
65
|
+
isPipeVar: false,
|
|
66
|
+
accessChain: [],
|
|
67
|
+
defaultValue: null,
|
|
68
|
+
span: node.span,
|
|
69
|
+
};
|
|
70
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
71
|
+
const varValue = await this.evaluateVariableAsync(varNode);
|
|
72
|
+
if (typeof varValue !== 'string') {
|
|
73
|
+
throw RuntimeError.fromNode('RILL-R057', `use<> identifier must resolve to string, got ${typeof varValue}`, node);
|
|
74
|
+
}
|
|
75
|
+
const parsed = parseSchemeString(varValue, node);
|
|
76
|
+
scheme = parsed.scheme;
|
|
77
|
+
resource = parsed.resource;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// Computed form: evaluate the expression, expect string
|
|
81
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
82
|
+
const exprValue = await this.evaluateExpression(identifier.expression);
|
|
83
|
+
if (typeof exprValue !== 'string') {
|
|
84
|
+
throw RuntimeError.fromNode('RILL-R057', `use<> identifier must resolve to string, got ${typeof exprValue}`, node);
|
|
85
|
+
}
|
|
86
|
+
const parsed = parseSchemeString(exprValue, node);
|
|
87
|
+
scheme = parsed.scheme;
|
|
88
|
+
resource = parsed.resource;
|
|
89
|
+
}
|
|
90
|
+
// Look up resolver
|
|
91
|
+
const resolver = this.ctx.resolvers.get(scheme);
|
|
92
|
+
if (!resolver) {
|
|
93
|
+
throw RuntimeError.fromNode('RILL-R054', `No resolver registered for scheme '${scheme}'`, node);
|
|
94
|
+
}
|
|
95
|
+
// Cycle detection: check before calling resolver
|
|
96
|
+
const key = `${scheme}:${resource}`;
|
|
97
|
+
if (this.ctx.resolvingSchemes.has(key)) {
|
|
98
|
+
throw RuntimeError.fromNode('RILL-R055', `Circular resolution detected: ${key} is already being resolved`, node);
|
|
99
|
+
}
|
|
100
|
+
// Mark in-flight — must stay set through source execution so circular
|
|
101
|
+
// re-entry within the executed source is detected (EC-7 / RILL-R055).
|
|
102
|
+
this.ctx.resolvingSchemes.add(key);
|
|
103
|
+
let result;
|
|
104
|
+
try {
|
|
105
|
+
const config = this.ctx.resolverConfigs.get(scheme);
|
|
106
|
+
try {
|
|
107
|
+
result = await resolver(resource, config);
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
111
|
+
throw RuntimeError.fromNode('RILL-R056', `Resolver error for '${key}': ${message}`, node);
|
|
112
|
+
}
|
|
113
|
+
// Handle result — key is still in-flight for the source execution path
|
|
114
|
+
if (result.kind === 'value') {
|
|
115
|
+
return result.value;
|
|
116
|
+
}
|
|
117
|
+
// source: parse and execute in child scope
|
|
118
|
+
const parseSource = this.ctx.parseSource;
|
|
119
|
+
if (!parseSource) {
|
|
120
|
+
throw RuntimeError.fromNode('RILL-R061', `Resolver error for '${key}': parseSource is not configured on RuntimeContext — provide parseSource in RuntimeOptions to use source resolvers`, node);
|
|
121
|
+
}
|
|
122
|
+
const scriptNode = parseSource(result.text);
|
|
123
|
+
const childCtx = createChildContext(this.ctx);
|
|
124
|
+
const execResult = await execute(scriptNode, childCtx);
|
|
125
|
+
return execResult.result;
|
|
126
|
+
}
|
|
127
|
+
finally {
|
|
128
|
+
// Remove after resolver call and any source execution complete (or error)
|
|
129
|
+
this.ctx.resolvingSchemes.delete(key);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Parse a "scheme:resource" string, throwing RILL-R058 if ':' is absent.
|
|
136
|
+
* @internal
|
|
137
|
+
*/
|
|
138
|
+
function parseSchemeString(value, node) {
|
|
139
|
+
const colonIndex = value.indexOf(':');
|
|
140
|
+
if (colonIndex === -1) {
|
|
141
|
+
throw RuntimeError.fromNode('RILL-R058', `use<> identifier must contain ':' scheme separator`, node);
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
scheme: value.slice(0, colonIndex),
|
|
145
|
+
resource: value.slice(colonIndex + 1),
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
// Export with type assertion to work around TS4094 limitation
|
|
149
|
+
// TypeScript can't generate declarations for functions returning classes with protected members
|
|
150
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
151
|
+
export const UseMixin = createUseMixin;
|
|
152
|
+
//# sourceMappingURL=use.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use.js","sourceRoot":"","sources":["../../../../../src/runtime/core/eval/mixins/use.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/core/eval/mixins/variables.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;
|
|
1
|
+
{"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/core/eval/mixins/variables.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AA2zBH,eAAO,MAAM,cAAc,EAA2B,GAAG,CAAC"}
|