@elaraai/east 1.0.97 → 1.0.99
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/README.md +0 -1
- package/dist/src/builtins.d.ts +1 -1
- package/dist/src/builtins.d.ts.map +1 -1
- package/dist/src/builtins.js +14 -0
- package/dist/src/builtins.js.map +1 -1
- package/dist/src/codegen/spellings.d.ts.map +1 -1
- package/dist/src/codegen/spellings.js +2 -0
- package/dist/src/codegen/spellings.js.map +1 -1
- package/dist/src/comparison.d.ts +6 -5
- package/dist/src/comparison.d.ts.map +1 -1
- package/dist/src/comparison.js +6 -5
- package/dist/src/comparison.js.map +1 -1
- package/dist/src/compile/builtins/array.d.ts +4 -0
- package/dist/src/compile/builtins/array.d.ts.map +1 -1
- package/dist/src/compile/builtins/array.js +15 -1
- package/dist/src/compile/builtins/array.js.map +1 -1
- package/dist/src/compile/builtins/dict.d.ts +4 -0
- package/dist/src/compile/builtins/dict.d.ts.map +1 -1
- package/dist/src/compile/builtins/dict.js +14 -1
- package/dist/src/compile/builtins/dict.js.map +1 -1
- package/dist/src/compile/builtins/tree.d.ts +13 -0
- package/dist/src/compile/builtins/tree.d.ts.map +1 -1
- package/dist/src/compile/builtins/tree.js +27 -1
- package/dist/src/compile/builtins/tree.js.map +1 -1
- package/dist/src/compile/builtins/vector.d.ts +2 -2
- package/dist/src/compile/constructors.d.ts +6 -1
- package/dist/src/compile/constructors.d.ts.map +1 -1
- package/dist/src/compile/constructors.js +21 -11
- package/dist/src/compile/constructors.js.map +1 -1
- package/dist/src/compile/control.d.ts +7 -1
- package/dist/src/compile/control.d.ts.map +1 -1
- package/dist/src/compile/control.js +228 -146
- package/dist/src/compile/control.js.map +1 -1
- package/dist/src/compile/flow.d.ts +138 -0
- package/dist/src/compile/flow.d.ts.map +1 -0
- package/dist/src/compile/flow.js +358 -0
- package/dist/src/compile/flow.js.map +1 -0
- package/dist/src/compile/functions.d.ts +9 -1
- package/dist/src/compile/functions.d.ts.map +1 -1
- package/dist/src/compile/functions.js +62 -69
- package/dist/src/compile/functions.js.map +1 -1
- package/dist/src/compile/ir.d.ts +12 -0
- package/dist/src/compile/ir.d.ts.map +1 -1
- package/dist/src/compile/ir.js +164 -40
- package/dist/src/compile/ir.js.map +1 -1
- package/dist/src/compile/runtime.d.ts +2 -16
- package/dist/src/compile/runtime.d.ts.map +1 -1
- package/dist/src/compile/runtime.js +5 -40
- package/dist/src/compile/runtime.js.map +1 -1
- package/dist/src/compile.control_flow.spec.d.ts +6 -0
- package/dist/src/compile.control_flow.spec.d.ts.map +1 -0
- package/dist/src/compile.control_flow.spec.js +219 -0
- package/dist/src/compile.control_flow.spec.js.map +1 -0
- package/dist/src/compile.d.ts +1 -1
- package/dist/src/compile.d.ts.map +1 -1
- package/dist/src/compile.js +1 -1
- package/dist/src/compile.js.map +1 -1
- package/dist/src/eastir.d.ts.map +1 -1
- package/dist/src/eastir.js +8 -30
- package/dist/src/eastir.js.map +1 -1
- package/dist/src/expr/array.d.ts +39 -0
- package/dist/src/expr/array.d.ts.map +1 -1
- package/dist/src/expr/array.js +47 -0
- package/dist/src/expr/array.js.map +1 -1
- package/dist/src/expr/dict.d.ts +44 -1
- package/dist/src/expr/dict.d.ts.map +1 -1
- package/dist/src/expr/dict.js +54 -2
- package/dist/src/expr/dict.js.map +1 -1
- package/dist/src/expr/index.d.ts +130 -0
- package/dist/src/expr/index.d.ts.map +1 -1
- package/dist/src/expr/index.js +133 -0
- package/dist/src/expr/index.js.map +1 -1
- package/dist/src/expr/named.d.ts +100 -0
- package/dist/src/expr/named.d.ts.map +1 -0
- package/dist/src/expr/named.js +182 -0
- package/dist/src/expr/named.js.map +1 -0
- package/dist/src/functions.d.ts +21 -0
- package/dist/src/functions.d.ts.map +1 -1
- package/dist/src/functions.js +22 -41
- package/dist/src/functions.js.map +1 -1
- package/dist/src/internal.d.ts +1 -0
- package/dist/src/internal.d.ts.map +1 -1
- package/dist/src/internal.js +4 -0
- package/dist/src/internal.js.map +1 -1
- package/dist/src/ir_locations.d.ts +24 -0
- package/dist/src/ir_locations.d.ts.map +1 -0
- package/dist/src/ir_locations.js +58 -0
- package/dist/src/ir_locations.js.map +1 -0
- package/dist/src/location.d.ts +10 -0
- package/dist/src/location.d.ts.map +1 -1
- package/dist/src/location.js +19 -1
- package/dist/src/location.js.map +1 -1
- package/dist/src/query/jq/catalog.js +1 -1
- package/dist/src/query/jq/catalog.js.map +1 -1
- package/dist/src/query/jq/translate-builtins.d.ts.map +1 -1
- package/dist/src/query/jq/translate-builtins.js +11 -2
- package/dist/src/query/jq/translate-builtins.js.map +1 -1
- package/dist/src/query/jq/translate.d.ts +12 -0
- package/dist/src/query/jq/translate.d.ts.map +1 -1
- package/dist/src/query/jq/translate.js +40 -0
- package/dist/src/query/jq/translate.js.map +1 -1
- package/dist/src/runner_exec.d.ts +4 -1
- package/dist/src/runner_exec.d.ts.map +1 -1
- package/dist/src/runner_exec.js +24 -12
- package/dist/src/runner_exec.js.map +1 -1
- package/dist/src/runner_merge.d.ts +18 -0
- package/dist/src/runner_merge.d.ts.map +1 -1
- package/dist/src/runner_merge.js +36 -2
- package/dist/src/runner_merge.js.map +1 -1
- package/dist/src/serialization/beast2/decoded-function.spec.js +7 -4
- package/dist/src/serialization/beast2/decoded-function.spec.js.map +1 -1
- package/dist/src/serialization/beast2/shared.d.ts.map +1 -1
- package/dist/src/serialization/beast2/shared.js +6 -21
- package/dist/src/serialization/beast2/shared.js.map +1 -1
- package/dist/src/serialization/beast2/v4/container.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v4/container.js +3 -4
- package/dist/src/serialization/beast2/v4/container.js.map +1 -1
- package/dist/src/serialization/beast2/v4/type-table.d.ts +42 -14
- package/dist/src/serialization/beast2/v4/type-table.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v4/type-table.js +139 -53
- package/dist/src/serialization/beast2/v4/type-table.js.map +1 -1
- package/dist/src/serialization/beast2/v5/codec.d.ts +29 -2
- package/dist/src/serialization/beast2/v5/codec.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/codec.js +153 -27
- package/dist/src/serialization/beast2/v5/codec.js.map +1 -1
- package/dist/src/serialization/beast2/v5/manifest.d.ts +3 -3
- package/dist/src/serialization/beast2/v5/manifest.js +3 -3
- package/dist/src/serialization/beast2/v5/runs.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/runs.js +16 -4
- package/dist/src/serialization/beast2/v5/runs.js.map +1 -1
- package/dist/src/serialization/beast2/v5/source-maps.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/source-maps.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/source-maps.spec.js +81 -0
- package/dist/src/serialization/beast2/v5/source-maps.spec.js.map +1 -0
- package/dist/src/serialization/beast2/v5/type-section.js +1 -1
- package/dist/src/serialization/beast2/v5/type-section.js.map +1 -1
- package/dist/src/type_of_type.d.ts +12 -33
- package/dist/src/type_of_type.d.ts.map +1 -1
- package/dist/src/type_of_type.js +46 -174
- package/dist/src/type_of_type.js.map +1 -1
- package/dist/src/type_of_type.recursive_id.spec.d.ts +6 -0
- package/dist/src/type_of_type.recursive_id.spec.d.ts.map +1 -0
- package/dist/src/type_of_type.recursive_id.spec.js +86 -0
- package/dist/src/type_of_type.recursive_id.spec.js.map +1 -0
- package/dist/src/type_of_type.to_etv.spec.js +9 -9
- package/dist/src/type_of_type.to_etv.spec.js.map +1 -1
- package/dist/src/type_value_equal.d.ts +31 -0
- package/dist/src/type_value_equal.d.ts.map +1 -0
- package/dist/src/type_value_equal.js +170 -0
- package/dist/src/type_value_equal.js.map +1 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +3 -1
- package/dist/src/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
import { builtin_evaluators } from "./builtins/index.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { compile_ir } from "./ir.js";
|
|
3
|
+
import { asStatement, asValue, functionExit } from "./flow.js";
|
|
4
|
+
import { callDepthErrorAt, EAST_CAPTURES_SYMBOL, EAST_IR_SYMBOL, EAST_SOURCE_MAP_SYMBOL, getContextValue, lazyReadErrorAt } from "./runtime.js";
|
|
4
5
|
import { variant } from "../containers/variant.js";
|
|
5
6
|
import { EastError } from "../error.js";
|
|
6
|
-
/**
|
|
7
|
+
/** An argument, or the function called, compiled: a signal it gives is thrown. */
|
|
8
|
+
function argument(child, ctx, platform, asyncPlatformFns, platformDef, compilingNodes) {
|
|
9
|
+
return asValue(child, compile_ir(child, ctx, platform, asyncPlatformFns, platformDef, false, compilingNodes));
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Compiles the function definitions, calls, and builtin and platform calls.
|
|
13
|
+
*
|
|
14
|
+
* A function gives its value, never a control signal: what its body gives
|
|
15
|
+
* for a `return` is the function's value (`functionExit`), so a call, East's
|
|
16
|
+
* or a builtin's or a platform's, gets the value alone. A call, a builtin or
|
|
17
|
+
* a platform function computes a value from its arguments, so a control
|
|
18
|
+
* statement an argument leaves is thrown (`asValue`, `flow.ts`).
|
|
19
|
+
*/
|
|
7
20
|
export function compile_functions(ir, ctx, platform, asyncPlatformFns, platformDef, compilingNodes, source_map) {
|
|
8
21
|
if (ir.type === "Function") {
|
|
9
22
|
// Compile-time type context for body compilation
|
|
@@ -14,7 +27,9 @@ export function compile_functions(ir, ctx, platform, asyncPlatformFns, platformD
|
|
|
14
27
|
for (const parameter of ir.value.parameters) {
|
|
15
28
|
typeCtx[parameter.value.name] = parameter.value.type;
|
|
16
29
|
}
|
|
17
|
-
const compiled_body =
|
|
30
|
+
const compiled_body = asStatement(ir.value.body, compile_ir(ir.value.body, typeCtx, platform, asyncPlatformFns, platformDef, true, compilingNodes));
|
|
31
|
+
// A `return`'s signal the body gives is the function's value; undefined when the body can give none.
|
|
32
|
+
const exit = functionExit(ir.value.body, ir.value.loc_id);
|
|
18
33
|
const capture_names = ir.value.captures.map(v => v.value.name);
|
|
19
34
|
const parameter_names = ir.value.parameters.map(v => v.value.name);
|
|
20
35
|
// Store original IR for potential serialization
|
|
@@ -25,11 +40,17 @@ export function compile_functions(ir, ctx, platform, asyncPlatformFns, platformD
|
|
|
25
40
|
for (const name of capture_names) {
|
|
26
41
|
captureCtx[name] = getContextValue(ctx, name);
|
|
27
42
|
}
|
|
28
|
-
const fn =
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
43
|
+
const fn = exit === undefined
|
|
44
|
+
? (...args) => {
|
|
45
|
+
const fnCtx = { ...captureCtx };
|
|
46
|
+
parameter_names.forEach((name, i) => fnCtx[name] = variant("value", args[i]));
|
|
47
|
+
return compiled_body(fnCtx);
|
|
48
|
+
}
|
|
49
|
+
: (...args) => {
|
|
50
|
+
const fnCtx = { ...captureCtx };
|
|
51
|
+
parameter_names.forEach((name, i) => fnCtx[name] = variant("value", args[i]));
|
|
52
|
+
return exit(compiled_body(fnCtx));
|
|
53
|
+
};
|
|
33
54
|
// Attach IR to function for serialization support
|
|
34
55
|
Object.defineProperty(fn, EAST_IR_SYMBOL, {
|
|
35
56
|
value: originalIR,
|
|
@@ -65,7 +86,10 @@ export function compile_functions(ir, ctx, platform, asyncPlatformFns, platformD
|
|
|
65
86
|
for (const parameter of ir.value.parameters) {
|
|
66
87
|
typeCtx[parameter.value.name] = parameter.value.type;
|
|
67
88
|
}
|
|
68
|
-
const compiled_body =
|
|
89
|
+
const compiled_body = asStatement(ir.value.body, compile_ir(ir.value.body, typeCtx, platform, asyncPlatformFns, platformDef, true, compilingNodes));
|
|
90
|
+
// A `return`'s signal the body gives is the function's value; undefined when the body can give none.
|
|
91
|
+
const exit = functionExit(ir.value.body, ir.value.loc_id);
|
|
92
|
+
const body_awaits = ir.value.body.value.isAsync;
|
|
69
93
|
const capture_names = ir.value.captures.map(v => v.value.name);
|
|
70
94
|
const parameter_names = ir.value.parameters.map(v => v.value.name);
|
|
71
95
|
// Store original IR for potential serialization
|
|
@@ -76,11 +100,23 @@ export function compile_functions(ir, ctx, platform, asyncPlatformFns, platformD
|
|
|
76
100
|
for (const name of capture_names) {
|
|
77
101
|
captureCtx[name] = getContextValue(ctx, name);
|
|
78
102
|
}
|
|
79
|
-
const fn =
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
103
|
+
const fn = exit === undefined
|
|
104
|
+
? (...args) => {
|
|
105
|
+
const fnCtx = { ...captureCtx };
|
|
106
|
+
parameter_names.forEach((name, i) => fnCtx[name] = variant("value", args[i]));
|
|
107
|
+
return compiled_body(fnCtx); // Promise can pass through in tail position
|
|
108
|
+
}
|
|
109
|
+
: body_awaits
|
|
110
|
+
? async (...args) => {
|
|
111
|
+
const fnCtx = { ...captureCtx };
|
|
112
|
+
parameter_names.forEach((name, i) => fnCtx[name] = variant("value", args[i]));
|
|
113
|
+
return exit(await compiled_body(fnCtx));
|
|
114
|
+
}
|
|
115
|
+
: (...args) => {
|
|
116
|
+
const fnCtx = { ...captureCtx };
|
|
117
|
+
parameter_names.forEach((name, i) => fnCtx[name] = variant("value", args[i]));
|
|
118
|
+
return exit(compiled_body(fnCtx));
|
|
119
|
+
};
|
|
84
120
|
// Attach IR to function for serialization support
|
|
85
121
|
Object.defineProperty(fn, EAST_IR_SYMBOL, {
|
|
86
122
|
value: originalIR,
|
|
@@ -108,9 +144,11 @@ export function compile_functions(ir, ctx, platform, asyncPlatformFns, platformD
|
|
|
108
144
|
};
|
|
109
145
|
}
|
|
110
146
|
else if (ir.type === "Call") {
|
|
111
|
-
const compiled_f =
|
|
112
|
-
const compiled_args = ir.value.arguments.map(
|
|
147
|
+
const compiled_f = argument(ir.value.function, ctx, platform, asyncPlatformFns, platformDef, compilingNodes);
|
|
148
|
+
const compiled_args = ir.value.arguments.map(a => argument(a, ctx, platform, asyncPlatformFns, platformDef, compilingNodes));
|
|
113
149
|
const loc_id = ir.value.loc_id;
|
|
150
|
+
// A call nested too deeply is an East error at the call; the function
|
|
151
|
+
// gives its value, so nothing else is caught here.
|
|
114
152
|
if (ir.value.isAsync) {
|
|
115
153
|
// need to await the arguments
|
|
116
154
|
return async (ctx) => {
|
|
@@ -122,22 +160,7 @@ export function compile_functions(ir, ctx, platform, asyncPlatformFns, platformD
|
|
|
122
160
|
return compiled_f(ctx)(...args);
|
|
123
161
|
}
|
|
124
162
|
catch (e) {
|
|
125
|
-
|
|
126
|
-
return e.value;
|
|
127
|
-
}
|
|
128
|
-
else if (e instanceof EastError) {
|
|
129
|
-
// TODO: push loc_id to EastError once SourceMap resolution is wired up
|
|
130
|
-
throw (e);
|
|
131
|
-
}
|
|
132
|
-
else if (e instanceof ContinueException) {
|
|
133
|
-
throw new Error(`continue failed to find label ${e.label} at loc_id ${loc_id}`);
|
|
134
|
-
}
|
|
135
|
-
else if (e instanceof BreakException) {
|
|
136
|
-
throw new Error(`break failed to find label ${e.label} at loc_id ${loc_id}`);
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
throw callDepthErrorAt(e, loc_id, source_map);
|
|
140
|
-
}
|
|
163
|
+
throw callDepthErrorAt(e, loc_id, source_map);
|
|
141
164
|
}
|
|
142
165
|
};
|
|
143
166
|
}
|
|
@@ -147,29 +170,14 @@ export function compile_functions(ir, ctx, platform, asyncPlatformFns, platformD
|
|
|
147
170
|
return compiled_f(ctx)(...compiled_args.map(arg => arg(ctx)));
|
|
148
171
|
}
|
|
149
172
|
catch (e) {
|
|
150
|
-
|
|
151
|
-
return e.value;
|
|
152
|
-
}
|
|
153
|
-
else if (e instanceof EastError) {
|
|
154
|
-
// TODO: push loc_id to EastError once SourceMap resolution is wired up
|
|
155
|
-
throw (e);
|
|
156
|
-
}
|
|
157
|
-
else if (e instanceof ContinueException) {
|
|
158
|
-
throw new Error(`continue failed to find label ${e.label} at loc_id ${loc_id}`);
|
|
159
|
-
}
|
|
160
|
-
else if (e instanceof BreakException) {
|
|
161
|
-
throw new Error(`break failed to find label ${e.label} at loc_id ${loc_id}`);
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
throw callDepthErrorAt(e, loc_id, source_map);
|
|
165
|
-
}
|
|
173
|
+
throw callDepthErrorAt(e, loc_id, source_map);
|
|
166
174
|
}
|
|
167
175
|
};
|
|
168
176
|
}
|
|
169
177
|
}
|
|
170
178
|
else if (ir.type === "CallAsync") {
|
|
171
|
-
const compiled_f =
|
|
172
|
-
const compiled_args = ir.value.arguments.map(
|
|
179
|
+
const compiled_f = argument(ir.value.function, ctx, platform, asyncPlatformFns, platformDef, compilingNodes);
|
|
180
|
+
const compiled_args = ir.value.arguments.map(a => argument(a, ctx, platform, asyncPlatformFns, platformDef, compilingNodes));
|
|
173
181
|
const loc_id = ir.value.loc_id;
|
|
174
182
|
return async (ctx) => {
|
|
175
183
|
try {
|
|
@@ -180,22 +188,7 @@ export function compile_functions(ir, ctx, platform, asyncPlatformFns, platformD
|
|
|
180
188
|
return await compiled_f(ctx)(...args);
|
|
181
189
|
}
|
|
182
190
|
catch (e) {
|
|
183
|
-
|
|
184
|
-
return e.value;
|
|
185
|
-
}
|
|
186
|
-
else if (e instanceof EastError) {
|
|
187
|
-
// TODO: push loc_id to EastError once SourceMap resolution is wired up
|
|
188
|
-
throw (e);
|
|
189
|
-
}
|
|
190
|
-
else if (e instanceof ContinueException) {
|
|
191
|
-
throw new Error(`continue failed to find label ${e.label} at loc_id ${loc_id}`);
|
|
192
|
-
}
|
|
193
|
-
else if (e instanceof BreakException) {
|
|
194
|
-
throw new Error(`break failed to find label ${e.label} at loc_id ${loc_id}`);
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
throw callDepthErrorAt(e, loc_id, source_map);
|
|
198
|
-
}
|
|
191
|
+
throw callDepthErrorAt(e, loc_id, source_map);
|
|
199
192
|
}
|
|
200
193
|
};
|
|
201
194
|
}
|
|
@@ -205,7 +198,7 @@ export function compile_functions(ir, ctx, platform, asyncPlatformFns, platformD
|
|
|
205
198
|
if (a.value.isAsync) {
|
|
206
199
|
argsAsync = true;
|
|
207
200
|
}
|
|
208
|
-
return
|
|
201
|
+
return argument(a, ctx, platform, asyncPlatformFns, platformDef, compilingNodes);
|
|
209
202
|
});
|
|
210
203
|
// Special optimization for regex builtins with literal pattern/flags
|
|
211
204
|
const loc_id = ir.value.loc_id;
|
|
@@ -417,7 +410,7 @@ export function compile_functions(ir, ctx, platform, asyncPlatformFns, platformD
|
|
|
417
410
|
if (a.value.isAsync) {
|
|
418
411
|
argsAsync = true;
|
|
419
412
|
}
|
|
420
|
-
return
|
|
413
|
+
return argument(a, ctx, platform, asyncPlatformFns, platformDef, compilingNodes);
|
|
421
414
|
});
|
|
422
415
|
// Look up platform function definition to check if generic
|
|
423
416
|
const platformFn = platformDef.find(p => p.name === ir.value.name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/compile/functions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/compile/functions.ts"],"names":[],"mappings":"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"}
|
package/dist/src/compile/ir.d.ts
CHANGED
|
@@ -13,7 +13,19 @@ import type { EastTypeValue } from "../type_of_type.js";
|
|
|
13
13
|
* A "context" of the current variables in scope is given. For toplevel function IR, provide `{}`.
|
|
14
14
|
* A "platform" is provided with JavaScript functions to perform effects, like logging. If no effects are needed, simply provide `{}`.
|
|
15
15
|
*
|
|
16
|
+
* A `return`, `continue` or `break` gives a signal in place of a value, which
|
|
17
|
+
* the statements around it give back to the function or loop it is for
|
|
18
|
+
* (`flow.ts`): a function compiled from the IR gives its value, never a signal.
|
|
19
|
+
* What can leave each node is worked out once, as the compile starts.
|
|
20
|
+
*
|
|
16
21
|
* @internal
|
|
17
22
|
*/
|
|
18
23
|
export declare function compile_internal(ir: AnalyzedIR, ctx: Record<string, EastTypeValue>, platform: Record<string, (...args: any[]) => any>, asyncPlatformFns: Set<string>, platformDef: PlatformFunction[], fresh_ctx?: boolean, compilingNodes?: Set<IR>): (ctx: RuntimeContext) => any;
|
|
24
|
+
/** Compiles one node of the IR a {@link compile_internal} call was given — its
|
|
25
|
+
* root, or a node under it — within that call's compile, which knows what
|
|
26
|
+
* control flow can leave each node.
|
|
27
|
+
*
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
export declare function compile_ir(ir: AnalyzedIR, ctx: Record<string, EastTypeValue>, platform: Record<string, (...args: any[]) => any>, asyncPlatformFns: Set<string>, platformDef: PlatformFunction[], fresh_ctx?: boolean, compilingNodes?: Set<IR>): (ctx: RuntimeContext) => any;
|
|
19
31
|
//# sourceMappingURL=ir.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../../../src/compile/ir.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../../../src/compile/ir.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAKhD,OAAO,EAAmC,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAEpF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKxD;;;;;;;;;;;;EAYE;AACF,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,EAAE,SAAS,GAAE,OAAc,EAAE,cAAc,GAAE,GAAG,CAAC,EAAE,CAAa,GAAG,CAAC,GAAG,EAAE,cAAc,KAAK,GAAG,CAEpS;AAED;;;;;EAKE;AACF,wBAAgB,UAAU,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,EAAE,SAAS,GAAE,OAAc,EAAE,cAAc,GAAE,GAAG,CAAC,EAAE,CAAa,GAAG,CAAC,GAAG,EAAE,cAAc,KAAK,GAAG,CAsP9R"}
|
package/dist/src/compile/ir.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { compile_constructors } from "./constructors.js";
|
|
2
2
|
import { compile_control } from "./control.js";
|
|
3
|
+
import { asStatement, asValue, ControlSignal, escapesOf, NO_ESCAPES, withControlFlow } from "./flow.js";
|
|
3
4
|
import { compile_functions } from "./functions.js";
|
|
4
5
|
import { getContextValue, requiresBoxing } from "./runtime.js";
|
|
5
6
|
import { variant } from "../containers/variant.js";
|
|
@@ -12,9 +13,23 @@ let _compile_source_map = null;
|
|
|
12
13
|
* A "context" of the current variables in scope is given. For toplevel function IR, provide `{}`.
|
|
13
14
|
* A "platform" is provided with JavaScript functions to perform effects, like logging. If no effects are needed, simply provide `{}`.
|
|
14
15
|
*
|
|
16
|
+
* A `return`, `continue` or `break` gives a signal in place of a value, which
|
|
17
|
+
* the statements around it give back to the function or loop it is for
|
|
18
|
+
* (`flow.ts`): a function compiled from the IR gives its value, never a signal.
|
|
19
|
+
* What can leave each node is worked out once, as the compile starts.
|
|
20
|
+
*
|
|
15
21
|
* @internal
|
|
16
22
|
*/
|
|
17
23
|
export function compile_internal(ir, ctx, platform, asyncPlatformFns, platformDef, fresh_ctx = true, compilingNodes = new Set()) {
|
|
24
|
+
return withControlFlow(ir, () => compile_ir(ir, ctx, platform, asyncPlatformFns, platformDef, fresh_ctx, compilingNodes));
|
|
25
|
+
}
|
|
26
|
+
/** Compiles one node of the IR a {@link compile_internal} call was given — its
|
|
27
|
+
* root, or a node under it — within that call's compile, which knows what
|
|
28
|
+
* control flow can leave each node.
|
|
29
|
+
*
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
export function compile_ir(ir, ctx, platform, asyncPlatformFns, platformDef, fresh_ctx = true, compilingNodes = new Set()) {
|
|
18
33
|
// Capture source map from the active scope on first call
|
|
19
34
|
if (fresh_ctx)
|
|
20
35
|
_compile_source_map = get_current_source_map();
|
|
@@ -32,11 +47,32 @@ export function compile_internal(ir, ctx, platform, asyncPlatformFns, platformDe
|
|
|
32
47
|
return (ctx) => getContextValue(ctx, name).value;
|
|
33
48
|
}
|
|
34
49
|
else if (ir.type === "Let") {
|
|
35
|
-
const compiled_statement =
|
|
50
|
+
const compiled_statement = asStatement(ir.value.value, compile_ir(ir.value.value, ctx, platform, asyncPlatformFns, platformDef, false, compilingNodes));
|
|
36
51
|
const name = ir.value.variable.value.name;
|
|
37
52
|
ctx[name] = ir.value.variable.value.type;
|
|
38
53
|
const boxed = requiresBoxing(ir.value.variable.value);
|
|
39
|
-
if (ir.value.
|
|
54
|
+
if (escapesOf(ir.value.value) !== NO_ESCAPES) {
|
|
55
|
+
// A value a control statement leaves binds nothing: its signal is the statement's.
|
|
56
|
+
if (ir.value.isAsync) {
|
|
57
|
+
return async (ctx) => {
|
|
58
|
+
const value = await compiled_statement(ctx);
|
|
59
|
+
if (value instanceof ControlSignal)
|
|
60
|
+
return value;
|
|
61
|
+
ctx[name] = boxed ? variant("boxed", value) : variant("value", value);
|
|
62
|
+
return null;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
return (ctx) => {
|
|
67
|
+
const value = compiled_statement(ctx);
|
|
68
|
+
if (value instanceof ControlSignal)
|
|
69
|
+
return value;
|
|
70
|
+
ctx[name] = boxed ? variant("boxed", value) : variant("value", value);
|
|
71
|
+
return null;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else if (ir.value.isAsync) {
|
|
40
76
|
return async (ctx) => {
|
|
41
77
|
ctx[name] = boxed
|
|
42
78
|
? variant("boxed", await compiled_statement(ctx))
|
|
@@ -55,8 +91,35 @@ export function compile_internal(ir, ctx, platform, asyncPlatformFns, platformDe
|
|
|
55
91
|
}
|
|
56
92
|
else if (ir.type === "Assign") {
|
|
57
93
|
const name = ir.value.variable.value.name;
|
|
58
|
-
const compiled_statement =
|
|
59
|
-
|
|
94
|
+
const compiled_statement = asStatement(ir.value.value, compile_ir(ir.value.value, ctx, platform, asyncPlatformFns, platformDef, false, compilingNodes));
|
|
95
|
+
const boxed = requiresBoxing(ir.value.variable.value);
|
|
96
|
+
if (escapesOf(ir.value.value) !== NO_ESCAPES) {
|
|
97
|
+
// A value a control statement leaves assigns nothing: its signal is the statement's.
|
|
98
|
+
const assign = (ctx, value) => {
|
|
99
|
+
if (boxed) {
|
|
100
|
+
getContextValue(ctx, name).value = value;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
while (!Object.hasOwn(ctx, name))
|
|
104
|
+
ctx = Object.getPrototypeOf(ctx);
|
|
105
|
+
ctx[name] = variant("value", value);
|
|
106
|
+
}
|
|
107
|
+
return null;
|
|
108
|
+
};
|
|
109
|
+
if (ir.value.isAsync) {
|
|
110
|
+
return async (ctx) => {
|
|
111
|
+
const value = await compiled_statement(ctx);
|
|
112
|
+
return value instanceof ControlSignal ? value : assign(ctx, value);
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
return (ctx) => {
|
|
117
|
+
const value = compiled_statement(ctx);
|
|
118
|
+
return value instanceof ControlSignal ? value : assign(ctx, value);
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else if (boxed) {
|
|
60
123
|
// Boxed variables: mutate in place via .value
|
|
61
124
|
if (ir.value.isAsync) {
|
|
62
125
|
return async (ctx) => {
|
|
@@ -98,77 +161,138 @@ export function compile_internal(ir, ctx, platform, asyncPlatformFns, platformDe
|
|
|
98
161
|
else if (ir.type === "As") {
|
|
99
162
|
// in dynamically typed runtimes like Javascript, this is a no-op
|
|
100
163
|
// (for statically typed runtimes this assists in unifying types in branches)
|
|
101
|
-
return
|
|
164
|
+
return compile_ir(ir.value.value, ctx, platform, asyncPlatformFns, platformDef, fresh_ctx, compilingNodes);
|
|
102
165
|
}
|
|
103
166
|
else if (ir.type === "UnwrapRecursive") {
|
|
104
167
|
// in dynamically typed runtimes like Javascript, this is a no-op
|
|
105
168
|
// (for statically typed runtimes this assists in e.g. typing a reference or pointer)
|
|
106
|
-
return
|
|
169
|
+
return compile_ir(ir.value.value, ctx, platform, asyncPlatformFns, platformDef, fresh_ctx, compilingNodes);
|
|
107
170
|
}
|
|
108
171
|
else if (ir.type === "WrapRecursive") {
|
|
109
172
|
// in dynamically typed runtimes like Javascript, this is a no-op
|
|
110
173
|
// (for statically typed runtimes this assists in e.g. typing a heap allocation)
|
|
111
|
-
return
|
|
174
|
+
return compile_ir(ir.value.value, ctx, platform, asyncPlatformFns, platformDef, false, compilingNodes);
|
|
112
175
|
}
|
|
113
176
|
else if (ir.type === "Block") {
|
|
177
|
+
// A statement before the last that a control statement leaves ends the
|
|
178
|
+
// block: its signal is the block's, as the last statement's is anyway.
|
|
179
|
+
let leaves = false;
|
|
180
|
+
for (let i = 0; i < ir.value.statements.length - 1; i++) {
|
|
181
|
+
if (escapesOf(ir.value.statements[i]) !== NO_ESCAPES)
|
|
182
|
+
leaves = true;
|
|
183
|
+
}
|
|
114
184
|
// The pattern of creating a new context (e.g. a function) and then immediately invoking a block (e.g. as the function body) is very common.
|
|
115
185
|
// Here we avoid creating a second context when possible, as an optimization.
|
|
116
186
|
if (fresh_ctx) {
|
|
117
187
|
const compiled_statements = [];
|
|
118
188
|
for (const statement of ir.value.statements) {
|
|
119
|
-
const compiled_statement =
|
|
189
|
+
const compiled_statement = asStatement(statement, compile_ir(statement, ctx, platform, asyncPlatformFns, platformDef, true, compilingNodes));
|
|
120
190
|
compiled_statements.push(compiled_statement);
|
|
121
191
|
}
|
|
122
192
|
if (ir.value.isAsync) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
193
|
+
if (leaves) {
|
|
194
|
+
return async (ctx) => {
|
|
195
|
+
let ret = null;
|
|
196
|
+
for (const statement of compiled_statements) {
|
|
197
|
+
ret = await statement(ctx);
|
|
198
|
+
if (ret instanceof ControlSignal)
|
|
199
|
+
return ret;
|
|
200
|
+
}
|
|
201
|
+
return ret;
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
return async (ctx) => {
|
|
206
|
+
let ret = null;
|
|
207
|
+
for (const statement of compiled_statements) {
|
|
208
|
+
ret = await statement(ctx);
|
|
209
|
+
}
|
|
210
|
+
return ret;
|
|
211
|
+
};
|
|
212
|
+
}
|
|
130
213
|
}
|
|
131
214
|
else {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
215
|
+
if (leaves) {
|
|
216
|
+
return (ctx) => {
|
|
217
|
+
let ret = null;
|
|
218
|
+
for (const statement of compiled_statements) {
|
|
219
|
+
ret = statement(ctx);
|
|
220
|
+
if (ret instanceof ControlSignal)
|
|
221
|
+
return ret;
|
|
222
|
+
}
|
|
223
|
+
return ret;
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
return (ctx) => {
|
|
228
|
+
let ret = null;
|
|
229
|
+
for (const statement of compiled_statements) {
|
|
230
|
+
ret = statement(ctx);
|
|
231
|
+
}
|
|
232
|
+
return ret;
|
|
233
|
+
};
|
|
234
|
+
}
|
|
139
235
|
}
|
|
140
236
|
}
|
|
141
237
|
else {
|
|
142
238
|
const ctx2 = Object.create(ctx);
|
|
143
239
|
const compiled_statements = [];
|
|
144
240
|
for (const statement of ir.value.statements) {
|
|
145
|
-
const compiled_statement =
|
|
241
|
+
const compiled_statement = asStatement(statement, compile_ir(statement, ctx2, platform, asyncPlatformFns, platformDef, true, compilingNodes));
|
|
146
242
|
compiled_statements.push(compiled_statement);
|
|
147
243
|
}
|
|
148
244
|
if (ir.value.isAsync) {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
245
|
+
if (leaves) {
|
|
246
|
+
return async (ctx) => {
|
|
247
|
+
const ctx2 = Object.create(ctx);
|
|
248
|
+
let ret = null;
|
|
249
|
+
for (const statement of compiled_statements) {
|
|
250
|
+
ret = await statement(ctx2);
|
|
251
|
+
if (ret instanceof ControlSignal)
|
|
252
|
+
return ret;
|
|
253
|
+
}
|
|
254
|
+
return ret;
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
return async (ctx) => {
|
|
259
|
+
const ctx2 = Object.create(ctx);
|
|
260
|
+
let ret = null;
|
|
261
|
+
for (const statement of compiled_statements) {
|
|
262
|
+
ret = await statement(ctx2);
|
|
263
|
+
}
|
|
264
|
+
return ret;
|
|
265
|
+
};
|
|
266
|
+
}
|
|
157
267
|
}
|
|
158
268
|
else {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
269
|
+
if (leaves) {
|
|
270
|
+
return (ctx) => {
|
|
271
|
+
const ctx2 = Object.create(ctx);
|
|
272
|
+
let ret = null;
|
|
273
|
+
for (const statement of compiled_statements) {
|
|
274
|
+
ret = statement(ctx2);
|
|
275
|
+
if (ret instanceof ControlSignal)
|
|
276
|
+
return ret;
|
|
277
|
+
}
|
|
278
|
+
return ret;
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
return (ctx) => {
|
|
283
|
+
const ctx2 = Object.create(ctx);
|
|
284
|
+
let ret = null;
|
|
285
|
+
for (const statement of compiled_statements) {
|
|
286
|
+
ret = statement(ctx2);
|
|
287
|
+
}
|
|
288
|
+
return ret;
|
|
289
|
+
};
|
|
290
|
+
}
|
|
167
291
|
}
|
|
168
292
|
}
|
|
169
293
|
}
|
|
170
294
|
else if (ir.type === "GetField") {
|
|
171
|
-
const struct =
|
|
295
|
+
const struct = asValue(ir.value.struct, compile_ir(ir.value.struct, ctx, platform, asyncPlatformFns, platformDef, false, compilingNodes));
|
|
172
296
|
const field = ir.value.field;
|
|
173
297
|
if (ir.value.isAsync) {
|
|
174
298
|
return async (ctx) => (await struct(ctx))[field];
|