@rcrsr/rill 0.10.0 → 0.12.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 +47 -9
- 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/error-classes.d.ts +3 -0
- package/dist/error-classes.d.ts.map +1 -1
- package/dist/error-classes.js +3 -0
- package/dist/error-classes.js.map +1 -1
- package/dist/error-registry.d.ts.map +1 -1
- package/dist/error-registry.js +283 -4
- package/dist/error-registry.js.map +1 -1
- package/dist/ext/crypto/index.d.ts +2 -1
- package/dist/ext/crypto/index.d.ts.map +1 -1
- package/dist/ext/crypto/index.js +31 -12
- package/dist/ext/crypto/index.js.map +1 -1
- package/dist/ext/exec/index.d.ts +2 -1
- package/dist/ext/exec/index.d.ts.map +1 -1
- package/dist/ext/exec/index.js +18 -11
- package/dist/ext/exec/index.js.map +1 -1
- package/dist/ext/fetch/index.d.ts +2 -1
- package/dist/ext/fetch/index.d.ts.map +1 -1
- package/dist/ext/fetch/index.js +23 -15
- package/dist/ext/fetch/index.js.map +1 -1
- package/dist/ext/fs/index.d.ts +2 -1
- package/dist/ext/fs/index.d.ts.map +1 -1
- package/dist/ext/fs/index.js +147 -47
- package/dist/ext/fs/index.js.map +1 -1
- package/dist/ext/kv/index.d.ts +2 -1
- package/dist/ext/kv/index.d.ts.map +1 -1
- package/dist/ext/kv/index.js +138 -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.js +2 -2
- 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-expr.d.ts +2 -1
- package/dist/parser/parser-expr.d.ts.map +1 -1
- package/dist/parser/parser-expr.js +14 -1
- 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.js +2 -2
- package/dist/parser/parser-literals.js.map +1 -1
- package/dist/parser/parser-types.d.ts +8 -2
- package/dist/parser/parser-types.d.ts.map +1 -1
- package/dist/parser/parser-types.js +72 -3
- 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 +96 -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 +57 -70
- package/dist/runtime/core/callable.d.ts.map +1 -1
- package/dist/runtime/core/callable.js +33 -91
- 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.js +15 -10
- 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 +32 -51
- 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 +40 -19
- 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 +6 -0
- 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 -23
- 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 +34 -10
- 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 +162 -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 +64 -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 +10 -0
- package/dist/runtime/core/execute.js.map +1 -1
- package/dist/runtime/core/field-descriptor.d.ts +5 -5
- package/dist/runtime/core/field-descriptor.d.ts.map +1 -1
- package/dist/runtime/core/field-descriptor.js +1 -1
- 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 +55 -0
- package/dist/runtime/core/resolvers.d.ts.map +1 -0
- package/dist/runtime/core/resolvers.js +128 -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 +20 -13
- package/dist/runtime/core/values.d.ts.map +1 -1
- package/dist/runtime/core/values.js +17 -8
- 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 +53 -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 +9 -6
- 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 +7 -6
- package/dist/value-types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -5,14 +5,15 @@
|
|
|
5
5
|
* @internal
|
|
6
6
|
*/
|
|
7
7
|
import { TOKEN_TYPES, ParseError, } from '../types.js';
|
|
8
|
-
import { check, advance, expect, current } from './state.js';
|
|
8
|
+
import { check, advance, expect, current, peek, } from './state.js';
|
|
9
9
|
import { VALID_TYPE_NAMES, parseTypeName } from './helpers.js';
|
|
10
10
|
/**
|
|
11
11
|
* Parse a type reference from the current position in the token stream.
|
|
12
12
|
*
|
|
13
13
|
* Grammar:
|
|
14
14
|
* ```
|
|
15
|
-
* type-ref = type
|
|
15
|
+
* type-ref = single-type { "|" single-type }
|
|
16
|
+
* single-type = "$" identifier | type-name [ "(" type-ref-arg-list ")" ]
|
|
16
17
|
* type-ref-arg-list = type-ref-arg { "," type-ref-arg } [ "," ]
|
|
17
18
|
* type-ref-arg = identifier ":" type-ref | type-ref
|
|
18
19
|
* ```
|
|
@@ -20,15 +21,83 @@ import { VALID_TYPE_NAMES, parseTypeName } from './helpers.js';
|
|
|
20
21
|
* - `$identifier` → `{ kind: 'dynamic', varName: identifier }`
|
|
21
22
|
* - `type-name` → `{ kind: 'static', typeName }`
|
|
22
23
|
* - `type-name(arg, ...)` → `{ kind: 'static', typeName, args: [...] }`
|
|
24
|
+
* - `A | B | ...` → `{ kind: 'union', members: [A, B, ...] }`
|
|
23
25
|
*
|
|
24
26
|
* Dynamic refs do not accept parameterization — `$T(...)` is not valid.
|
|
27
|
+
* Union members are flattened: nested unions are spread into the member list.
|
|
25
28
|
*
|
|
26
29
|
* Throws ParseError (EC-13) if neither a `$identifier` nor a valid type name
|
|
27
30
|
* is found. Throws ParseError (EC-14) if the arg list is malformed.
|
|
31
|
+
* Throws ParseError (RILL-P011) if `|` is not followed by a valid type start.
|
|
28
32
|
*
|
|
29
33
|
* @internal
|
|
30
34
|
*/
|
|
31
|
-
export function parseTypeRef(state) {
|
|
35
|
+
export function parseTypeRef(state, opts) {
|
|
36
|
+
const first = parseSingleType(state);
|
|
37
|
+
// Union accumulation: collect additional members after each "|"
|
|
38
|
+
if (!check(state, TOKEN_TYPES.PIPE_BAR)) {
|
|
39
|
+
return first;
|
|
40
|
+
}
|
|
41
|
+
const members = [];
|
|
42
|
+
// Flatten: if the first member is itself a union, spread its members
|
|
43
|
+
if (first.kind === 'union') {
|
|
44
|
+
members.push(...first.members);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
members.push(first);
|
|
48
|
+
}
|
|
49
|
+
while (check(state, TOKEN_TYPES.PIPE_BAR)) {
|
|
50
|
+
// Peek at what follows "|" without consuming it.
|
|
51
|
+
// Only treat "|" as a union separator when the next token is a valid type
|
|
52
|
+
// start ($identifier or a valid type name IDENTIFIER). If the next token is
|
|
53
|
+
// neither, the "|" belongs to the outer context (e.g. the closing delimiter
|
|
54
|
+
// of an anonymous typed closure param like |string|) and we stop without
|
|
55
|
+
// consuming it. RILL-P011 applies when the "|" is clearly a dangling union
|
|
56
|
+
// pipe: the next token is an IDENTIFIER but not a valid type name.
|
|
57
|
+
const afterPipe = peek(state, 1);
|
|
58
|
+
const afterPipeIsDollar = afterPipe.type === TOKEN_TYPES.DOLLAR;
|
|
59
|
+
const afterPipeIsTypeName = afterPipe.type === TOKEN_TYPES.IDENTIFIER &&
|
|
60
|
+
VALID_TYPE_NAMES.includes(afterPipe.value);
|
|
61
|
+
const afterPipeIsUnknownIdent = afterPipe.type === TOKEN_TYPES.IDENTIFIER && !afterPipeIsTypeName;
|
|
62
|
+
if (afterPipeIsUnknownIdent) {
|
|
63
|
+
// Dangling pipe followed by an unrecognized identifier: RILL-P011.
|
|
64
|
+
advance(state); // consume "|"
|
|
65
|
+
throw new ParseError('RILL-P011', "Expected type name after '|'", current(state).span.start);
|
|
66
|
+
}
|
|
67
|
+
if (!afterPipeIsDollar && !afterPipeIsTypeName) {
|
|
68
|
+
// "|" is followed by a non-identifier token (e.g. "{", EOF, newline).
|
|
69
|
+
if (opts?.allowTrailingPipe) {
|
|
70
|
+
// Closure contexts own the trailing "|" as a delimiter — leave it unconsumed.
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
// In non-closure contexts, a dangling "|" with no following type is an error.
|
|
74
|
+
advance(state); // consume "|"
|
|
75
|
+
throw new ParseError('RILL-P011', "Expected type name after '|'", current(state).span.start);
|
|
76
|
+
}
|
|
77
|
+
advance(state); // consume "|"
|
|
78
|
+
const next = parseSingleType(state);
|
|
79
|
+
// Flatten nested unions
|
|
80
|
+
if (next.kind === 'union') {
|
|
81
|
+
members.push(...next.members);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
members.push(next);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// If only one member accumulated (e.g. a "|" was present but belonged to the
|
|
88
|
+
// outer context such as an anonymous typed closure closing delimiter), return
|
|
89
|
+
// the single member as-is rather than wrapping in a union.
|
|
90
|
+
if (members.length === 1) {
|
|
91
|
+
return members[0];
|
|
92
|
+
}
|
|
93
|
+
return { kind: 'union', members };
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Parse a single type (one member of a union, or the sole type-ref).
|
|
97
|
+
* Grammar: `single-type = "$" identifier | type-name [ "(" type-ref-arg-list ")" ]`
|
|
98
|
+
* @internal
|
|
99
|
+
*/
|
|
100
|
+
function parseSingleType(state) {
|
|
32
101
|
if (check(state, TOKEN_TYPES.DOLLAR)) {
|
|
33
102
|
advance(state); // consume $
|
|
34
103
|
const nameToken = expect(state, TOKEN_TYPES.IDENTIFIER, 'Expected variable name after $');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser-types.js","sourceRoot":"","sources":["../../src/parser/parser-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAGL,WAAW,EACX,UAAU,GACX,MAAM,aAAa,CAAC;AACrB,OAAO,
|
|
1
|
+
{"version":3,"file":"parser-types.js","sourceRoot":"","sources":["../../src/parser/parser-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser Extension: Use Expression Parsing
|
|
3
|
+
* Parses use<> expressions for module/resource resolution.
|
|
4
|
+
*/
|
|
5
|
+
import type { UseExprNode } from '../types.js';
|
|
6
|
+
declare module './parser.js' {
|
|
7
|
+
interface Parser {
|
|
8
|
+
parseUseExpr(): UseExprNode;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=parser-use.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser-use.d.ts","sourceRoot":"","sources":["../../src/parser/parser-use.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAA0B,MAAM,aAAa,CAAC;AAMvE,OAAO,QAAQ,aAAa,CAAC;IAC3B,UAAU,MAAM;QACd,YAAY,IAAI,WAAW,CAAC;KAC7B;CACF"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser Extension: Use Expression Parsing
|
|
3
|
+
* Parses use<> expressions for module/resource resolution.
|
|
4
|
+
*/
|
|
5
|
+
import { Parser } from './parser.js';
|
|
6
|
+
import { ParseError, TOKEN_TYPES } from '../types.js';
|
|
7
|
+
import { check, advance, expect, current, makeSpan, peek } from './state.js';
|
|
8
|
+
import { parseTypeRef } from './parser-types.js';
|
|
9
|
+
// ============================================================
|
|
10
|
+
// USE EXPRESSION
|
|
11
|
+
// ============================================================
|
|
12
|
+
/**
|
|
13
|
+
* Parse a use<> expression.
|
|
14
|
+
* Consumes USE_LANGLE, identifier form, >, optional :typeRef.
|
|
15
|
+
* Compound keyword: no whitespace between 'use' and '<'.
|
|
16
|
+
*/
|
|
17
|
+
Parser.prototype.parseUseExpr = function () {
|
|
18
|
+
const start = current(this.state).span.start;
|
|
19
|
+
expect(this.state, TOKEN_TYPES.USE_LANGLE, 'Expected use<');
|
|
20
|
+
let identifier;
|
|
21
|
+
if (check(this.state, TOKEN_TYPES.DOLLAR)) {
|
|
22
|
+
// Variable form: $varName
|
|
23
|
+
advance(this.state); // consume $
|
|
24
|
+
const nameToken = expect(this.state, TOKEN_TYPES.IDENTIFIER, 'Expected variable name after $');
|
|
25
|
+
identifier = { kind: 'variable', name: nameToken.value };
|
|
26
|
+
}
|
|
27
|
+
else if (check(this.state, TOKEN_TYPES.LPAREN)) {
|
|
28
|
+
// Computed form: (expression)
|
|
29
|
+
advance(this.state); // consume (
|
|
30
|
+
const expression = this.parseExpression();
|
|
31
|
+
expect(this.state, TOKEN_TYPES.RPAREN, 'Expected ) to close computed use<>');
|
|
32
|
+
identifier = { kind: 'computed', expression };
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
// Static form: scheme:seg1.seg2...
|
|
36
|
+
// Lexer emits IDENTIFIER(scheme) COLON IDENTIFIER(seg1) [DOT IDENTIFIER(seg2)]*
|
|
37
|
+
const schemeToken = expect(this.state, TOKEN_TYPES.IDENTIFIER, 'Expected identifier in use<>');
|
|
38
|
+
const scheme = schemeToken.value;
|
|
39
|
+
if (!check(this.state, TOKEN_TYPES.COLON)) {
|
|
40
|
+
throw new ParseError('RILL-P020', "Expected ':' after scheme in use<>", current(this.state).span.start);
|
|
41
|
+
}
|
|
42
|
+
advance(this.state); // consume COLON
|
|
43
|
+
if (!check(this.state, TOKEN_TYPES.IDENTIFIER)) {
|
|
44
|
+
throw new ParseError('RILL-P021', "Expected resource identifier after ':' in use<>", current(this.state).span.start);
|
|
45
|
+
}
|
|
46
|
+
const firstSegToken = advance(this.state);
|
|
47
|
+
const segments = [firstSegToken.value];
|
|
48
|
+
while (check(this.state, TOKEN_TYPES.DOT)) {
|
|
49
|
+
advance(this.state); // consume DOT
|
|
50
|
+
const segToken = expect(this.state, TOKEN_TYPES.IDENTIFIER, 'Expected identifier after . in use<>');
|
|
51
|
+
segments.push(segToken.value);
|
|
52
|
+
}
|
|
53
|
+
identifier = { kind: 'static', scheme, segments };
|
|
54
|
+
}
|
|
55
|
+
expect(this.state, TOKEN_TYPES.GT, "Expected '>' to close use<>", 'RILL-P022');
|
|
56
|
+
let typeRef = null;
|
|
57
|
+
let closureAnnotation = null;
|
|
58
|
+
if (check(this.state, TOKEN_TYPES.COLON)) {
|
|
59
|
+
if (peek(this.state, 1).type === TOKEN_TYPES.PIPE_BAR) {
|
|
60
|
+
// Closure annotation: :|param: type, ...|
|
|
61
|
+
advance(this.state); // consume :
|
|
62
|
+
advance(this.state); // consume opening |
|
|
63
|
+
closureAnnotation = [];
|
|
64
|
+
while (!check(this.state, TOKEN_TYPES.PIPE_BAR)) {
|
|
65
|
+
const nameToken = expect(this.state, TOKEN_TYPES.IDENTIFIER, 'Expected parameter name in closure annotation');
|
|
66
|
+
expect(this.state, TOKEN_TYPES.COLON, 'Expected : after parameter name in closure annotation');
|
|
67
|
+
const paramTypeRef = parseTypeRef(this.state, {
|
|
68
|
+
allowTrailingPipe: true,
|
|
69
|
+
});
|
|
70
|
+
closureAnnotation.push({
|
|
71
|
+
name: nameToken.value,
|
|
72
|
+
typeRef: paramTypeRef,
|
|
73
|
+
});
|
|
74
|
+
if (check(this.state, TOKEN_TYPES.COMMA)) {
|
|
75
|
+
advance(this.state); // consume ,
|
|
76
|
+
}
|
|
77
|
+
else if (!check(this.state, TOKEN_TYPES.PIPE_BAR)) {
|
|
78
|
+
throw new ParseError('RILL-P001', 'Expected , or | after parameter type in closure annotation', current(this.state).span.start);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
advance(this.state); // consume closing |
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
advance(this.state); // consume :
|
|
85
|
+
typeRef = parseTypeRef(this.state);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
type: 'UseExpr',
|
|
90
|
+
identifier,
|
|
91
|
+
typeRef,
|
|
92
|
+
closureAnnotation,
|
|
93
|
+
span: makeSpan(start, current(this.state).span.end),
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=parser-use.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser-use.js","sourceRoot":"","sources":["../../src/parser/parser-use.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser-variables.d.ts","sourceRoot":"","sources":["../../src/parser/parser-variables.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,cAAc,EACd,QAAQ,EACR,cAAc,EACd,YAAY,EACb,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"parser-variables.d.ts","sourceRoot":"","sources":["../../src/parser/parser-variables.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,cAAc,EACd,QAAQ,EACR,cAAc,EACd,YAAY,EACb,MAAM,aAAa,CAAC;AAcrB,OAAO,QAAQ,aAAa,CAAC;IAC3B,UAAU,MAAM;QACd,aAAa,IAAI,YAAY,CAAC;QAC9B,sBAAsB,CACpB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,cAAc,GACpB,YAAY,CAAC;QAChB,gBAAgB,IAAI;YAClB,WAAW,EAAE,cAAc,EAAE,CAAC;YAC9B,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;SACvC,CAAC;QACF,uBAAuB,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAAC;QACxE,2BAA2B,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;QACrE,oBAAoB,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC;QACxC,iBAAiB,IAAI,QAAQ,CAAC;KAC/B;CACF"}
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
import { Parser } from './parser.js';
|
|
6
6
|
import { TOKEN_TYPES, ParseError } from '../types.js';
|
|
7
7
|
import { check, advance, expect, makeSpan, current, skipNewlinesIfFollowedBy, } from './state.js';
|
|
8
|
-
import { isMethodCallWithArgs
|
|
8
|
+
import { isMethodCallWithArgs } from './helpers.js';
|
|
9
|
+
import { parseTypeRef } from './parser-types.js';
|
|
9
10
|
// ============================================================
|
|
10
11
|
// VARIABLE PARSING
|
|
11
12
|
// ============================================================
|
|
@@ -77,12 +78,12 @@ Parser.prototype.parseAccessChain = function () {
|
|
|
77
78
|
if (!finalAccess) {
|
|
78
79
|
break;
|
|
79
80
|
}
|
|
80
|
-
let
|
|
81
|
+
let typeRef = null;
|
|
81
82
|
if (check(this.state, TOKEN_TYPES.AMPERSAND)) {
|
|
82
83
|
advance(this.state);
|
|
83
|
-
|
|
84
|
+
typeRef = parseTypeRef(this.state);
|
|
84
85
|
}
|
|
85
|
-
existenceCheck = { finalAccess,
|
|
86
|
+
existenceCheck = { finalAccess, typeRef };
|
|
86
87
|
break;
|
|
87
88
|
}
|
|
88
89
|
advance(this.state);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser-variables.js","sourceRoot":"","sources":["../../src/parser/parser-variables.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AASrC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EACL,KAAK,EACL,OAAO,EACP,MAAM,EACN,QAAQ,EACR,OAAO,EACP,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,OAAO,
|
|
1
|
+
{"version":3,"file":"parser-variables.js","sourceRoot":"","sources":["../../src/parser/parser-variables.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,16 +17,11 @@
|
|
|
17
17
|
*
|
|
18
18
|
* [ASSUMPTION] validateDefaultValueType _functionName Parameter
|
|
19
19
|
* - Parameter accepted but unused (prefixed with _ to satisfy eslint)
|
|
20
|
-
* - Kept for API consistency with
|
|
21
|
-
*
|
|
22
|
-
* [ASSUMPTION] validateHostFunctionArgs Args Array Mutation
|
|
23
|
-
* - args array mutated in-place when substituting default values
|
|
24
|
-
* - Per spec algorithm: "Apply default values for missing arguments before validation"
|
|
25
|
-
* - Mutation occurs before host function receives args, maintaining immutability contract
|
|
20
|
+
* - Kept for API consistency with validateCallableArgs signature
|
|
26
21
|
*/
|
|
27
|
-
import type { BodyNode,
|
|
28
|
-
|
|
29
|
-
import type {
|
|
22
|
+
import type { BodyNode, SourceLocation } from '../../types.js';
|
|
23
|
+
import type { RillMethod } from './types.js';
|
|
24
|
+
import type { RillType, RillTypeValue, RillValue } from './values.js';
|
|
30
25
|
interface RuntimeContextLike {
|
|
31
26
|
readonly parent?: RuntimeContextLike | undefined;
|
|
32
27
|
readonly variables: Map<string, RillValue>;
|
|
@@ -39,52 +34,52 @@ interface RuntimeContextLike {
|
|
|
39
34
|
*/
|
|
40
35
|
export type CallableFn = (args: RillValue[], ctx: RuntimeContextLike, location?: SourceLocation) => RillValue | Promise<RillValue>;
|
|
41
36
|
/**
|
|
42
|
-
*
|
|
37
|
+
* Unified parameter definition for all callable types (script closures and host functions).
|
|
43
38
|
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
39
|
+
* - type: undefined means the parameter accepts any type (any-typed).
|
|
40
|
+
* - defaultValue: undefined means the parameter is required.
|
|
41
|
+
* - annotations: evaluated key-value pairs; empty object ({}) when no annotations present.
|
|
42
|
+
* - Description lives at annotations.description — no separate description field.
|
|
46
43
|
*/
|
|
47
|
-
export interface
|
|
44
|
+
export interface RillParam {
|
|
48
45
|
readonly name: string;
|
|
49
|
-
readonly
|
|
50
|
-
|
|
51
|
-
readonly typeStructure?: RillStructuralType;
|
|
52
|
-
readonly defaultValue: RillValue | null;
|
|
53
|
-
/** Evaluated parameter-level annotations (e.g., ^(cache: true)) */
|
|
46
|
+
readonly type: RillType | undefined;
|
|
47
|
+
readonly defaultValue: RillValue | undefined;
|
|
54
48
|
readonly annotations: Record<string, RillValue>;
|
|
55
|
-
/** Human-readable parameter description (optional, from host functions) */
|
|
56
|
-
readonly description?: string;
|
|
57
49
|
}
|
|
58
50
|
/**
|
|
59
|
-
*
|
|
51
|
+
* Unified host function definition using RillParam for parameter declarations.
|
|
60
52
|
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
53
|
+
* Replaces HostFunctionDefinition. Runtime does NOT validate return values
|
|
54
|
+
* against returnType at call time.
|
|
63
55
|
*/
|
|
64
|
-
export interface
|
|
65
|
-
|
|
66
|
-
readonly
|
|
67
|
-
/** Expected type: 6 primitive types plus 'any' */
|
|
68
|
-
readonly type: 'string' | 'number' | 'bool' | 'list' | 'dict' | 'vector' | 'any';
|
|
69
|
-
/** Default value if argument omitted. Makes parameter optional. */
|
|
70
|
-
readonly defaultValue?: RillValue;
|
|
71
|
-
/** Human-readable parameter description (optional) */
|
|
56
|
+
export interface RillFunction {
|
|
57
|
+
readonly params: readonly RillParam[];
|
|
58
|
+
readonly fn: CallableFn;
|
|
72
59
|
readonly description?: string;
|
|
60
|
+
readonly returnType?: RillType;
|
|
73
61
|
}
|
|
74
62
|
/**
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
* Runtime validates arguments before invocation.
|
|
63
|
+
* Base interface for all callable signatures.
|
|
64
|
+
* signature is an annotated rill closure type signature string.
|
|
78
65
|
*/
|
|
79
|
-
export interface
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
66
|
+
export interface RillCallableSignature {
|
|
67
|
+
readonly signature: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Signature for a host-provided function.
|
|
71
|
+
* Discriminated from RillFunction by presence of signature field.
|
|
72
|
+
*/
|
|
73
|
+
export interface RillFunctionSignature extends RillCallableSignature {
|
|
83
74
|
readonly fn: CallableFn;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Signature for a built-in method with receiver type constraints.
|
|
78
|
+
* receiverTypes contains valid RillTypeName strings (e.g., ["string", "list"]).
|
|
79
|
+
*/
|
|
80
|
+
export interface RillMethodSignature extends RillCallableSignature {
|
|
81
|
+
readonly method: RillMethod;
|
|
82
|
+
readonly receiverTypes: readonly string[];
|
|
88
83
|
}
|
|
89
84
|
/** Common fields for all callable types */
|
|
90
85
|
interface CallableBase {
|
|
@@ -106,7 +101,7 @@ interface CallableBase {
|
|
|
106
101
|
*/
|
|
107
102
|
export interface ScriptCallable extends CallableBase {
|
|
108
103
|
readonly kind: 'script';
|
|
109
|
-
readonly params:
|
|
104
|
+
readonly params: readonly RillParam[];
|
|
110
105
|
readonly body: BodyNode;
|
|
111
106
|
/** Reference to the scope where this closure was defined (late binding) */
|
|
112
107
|
readonly definingScope: RuntimeContextLike;
|
|
@@ -115,7 +110,7 @@ export interface ScriptCallable extends CallableBase {
|
|
|
115
110
|
/** Evaluated parameter annotations keyed by parameter name */
|
|
116
111
|
readonly paramAnnotations: Record<string, Record<string, RillValue>>;
|
|
117
112
|
/** Cached input structural type built from params at creation time — used by `$fn.^input` */
|
|
118
|
-
readonly inputShape:
|
|
113
|
+
readonly inputShape: RillType;
|
|
119
114
|
/** Return type target from `:type-target` syntax — set in Phase 2, undefined until then */
|
|
120
115
|
readonly returnShape?: RillTypeValue | undefined;
|
|
121
116
|
}
|
|
@@ -127,12 +122,14 @@ export interface RuntimeCallable extends CallableBase {
|
|
|
127
122
|
/** Application callable - host application-provided functions */
|
|
128
123
|
export interface ApplicationCallable extends CallableBase {
|
|
129
124
|
readonly kind: 'application';
|
|
130
|
-
readonly params:
|
|
125
|
+
readonly params: RillParam[] | undefined;
|
|
131
126
|
readonly fn: CallableFn;
|
|
132
127
|
/** Human-readable function description (optional, from host functions) */
|
|
133
128
|
readonly description?: string;
|
|
134
129
|
/** Return type declaration (optional, from host functions) */
|
|
135
|
-
readonly returnType?:
|
|
130
|
+
readonly returnType?: RillType | undefined;
|
|
131
|
+
/** Original signature string as provided by host (only set for RillFunctionSignature registrations) */
|
|
132
|
+
readonly originalSignature?: string | undefined;
|
|
136
133
|
}
|
|
137
134
|
/** Union of all callable types */
|
|
138
135
|
export type RillCallable = ScriptCallable | RuntimeCallable | ApplicationCallable;
|
|
@@ -168,19 +165,19 @@ export declare function formatCallable(callable: RillCallable): string;
|
|
|
168
165
|
*/
|
|
169
166
|
export declare function callableEquals(a: ScriptCallable, b: ScriptCallable, valueEquals?: (a: RillValue, b: RillValue) => boolean): boolean;
|
|
170
167
|
/**
|
|
171
|
-
* Build a
|
|
168
|
+
* Build a RillType closure variant from a closure's parameter list.
|
|
172
169
|
*
|
|
173
170
|
* Called at closure creation time to build the structural type for `$fn.^input`.
|
|
174
|
-
* - Typed params
|
|
175
|
-
* - Untyped params (
|
|
171
|
+
* - Typed params use param.type directly when present
|
|
172
|
+
* - Untyped params (type: undefined) map to { type: 'any' }
|
|
176
173
|
* - Return type is always { type: 'any' }
|
|
177
174
|
*
|
|
178
175
|
* No validation: parser already validates type names.
|
|
179
176
|
*
|
|
180
|
-
* @param params - Closure parameter definitions
|
|
181
|
-
* @returns Frozen
|
|
177
|
+
* @param params - Closure parameter definitions (RillParam[])
|
|
178
|
+
* @returns Frozen RillType with closure variant
|
|
182
179
|
*/
|
|
183
|
-
export declare function paramsToStructuralType(params:
|
|
180
|
+
export declare function paramsToStructuralType(params: readonly RillParam[]): RillType;
|
|
184
181
|
/**
|
|
185
182
|
* Validate defaultValue type matches declared parameter type.
|
|
186
183
|
*
|
|
@@ -191,25 +188,14 @@ export declare function paramsToStructuralType(params: CallableParam[]): RillStr
|
|
|
191
188
|
* @param _functionName - Function name (unused, kept for API consistency)
|
|
192
189
|
* @throws Error if defaultValue type doesn't match param.type
|
|
193
190
|
*/
|
|
194
|
-
export declare function validateDefaultValueType(param:
|
|
195
|
-
/**
|
|
196
|
-
* Validate host function arguments against parameter declarations.
|
|
197
|
-
*
|
|
198
|
-
* Called before function invocation to enforce type contracts.
|
|
199
|
-
* Throws RuntimeError on validation failure.
|
|
200
|
-
*
|
|
201
|
-
* @param args - Evaluated arguments from call site
|
|
202
|
-
* @param params - Parameter declarations from function definition
|
|
203
|
-
* @param functionName - Function name for error messages
|
|
204
|
-
* @param location - Source location for error reporting
|
|
205
|
-
* @throws RuntimeError with RILL-R001 on validation failure
|
|
206
|
-
*/
|
|
207
|
-
export declare function validateHostFunctionArgs(args: RillValue[], params: readonly HostFunctionParam[], functionName: string, location?: SourceLocation): void;
|
|
191
|
+
export declare function validateDefaultValueType(param: RillParam, _functionName: string): void;
|
|
208
192
|
/**
|
|
209
|
-
* Validate arguments against
|
|
193
|
+
* Validate arguments against RillParam[] using structural type matching.
|
|
210
194
|
*
|
|
211
|
-
*
|
|
212
|
-
*
|
|
195
|
+
* Single validation path for all callable kinds (host, built-in, script).
|
|
196
|
+
* Uses structuralTypeMatches for type checking when param.type is defined.
|
|
197
|
+
* Skips type check when param.type is undefined (any-typed).
|
|
198
|
+
* Applies defaultValue in-place on the args array before validation.
|
|
213
199
|
*
|
|
214
200
|
* @param args - Arguments array (mutated in-place when defaults applied)
|
|
215
201
|
* @param params - Parameter definitions
|
|
@@ -217,5 +203,6 @@ export declare function validateHostFunctionArgs(args: RillValue[], params: read
|
|
|
217
203
|
* @param location - Source location for error reporting
|
|
218
204
|
* @throws RuntimeError with RILL-R001 on validation failure
|
|
219
205
|
*/
|
|
220
|
-
export declare function validateCallableArgs(args: RillValue[], params: readonly
|
|
206
|
+
export declare function validateCallableArgs(args: RillValue[], params: readonly RillParam[], functionName: string, location?: SourceLocation): void;
|
|
207
|
+
export {};
|
|
221
208
|
//# sourceMappingURL=callable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callable.d.ts","sourceRoot":"","sources":["../../../src/runtime/core/callable.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"callable.d.ts","sourceRoot":"","sources":["../../../src/runtime/core/callable.ts"],"names":[],"mappings":"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"}
|