behavior-contracts 0.8.3 → 0.8.5
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/authoring.d.ts +1 -1
- package/dist/authoring.d.ts.map +1 -1
- package/dist/authoring.js +41 -2
- package/dist/authoring.js.map +1 -1
- package/dist/behavior.d.ts +0 -24
- package/dist/behavior.d.ts.map +1 -1
- package/dist/behavior.js +24 -2
- package/dist/behavior.js.map +1 -1
- package/dist/generator/emit-shared-go-typed.d.ts.map +1 -1
- package/dist/generator/emit-shared-go-typed.js +7 -7
- package/dist/generator/emit-shared-go-typed.js.map +1 -1
- package/dist/generator/emit-shared-rust-typed.d.ts +8 -0
- package/dist/generator/emit-shared-rust-typed.d.ts.map +1 -1
- package/dist/generator/emit-shared-rust-typed.js +20 -6
- package/dist/generator/emit-shared-rust-typed.js.map +1 -1
- package/dist/generator/emit-shared-typescript.d.ts.map +1 -1
- package/dist/generator/emit-shared-typescript.js +18 -2
- package/dist/generator/emit-shared-typescript.js.map +1 -1
- package/dist/generator/emit-typed-native-go.d.ts.map +1 -1
- package/dist/generator/emit-typed-native-go.js +231 -606
- package/dist/generator/emit-typed-native-go.js.map +1 -1
- package/dist/generator/emit-typed-native-rust.d.ts.map +1 -1
- package/dist/generator/emit-typed-native-rust.js +287 -648
- package/dist/generator/emit-typed-native-rust.js.map +1 -1
- package/dist/generator/native-expr.d.ts +91 -7
- package/dist/generator/native-expr.d.ts.map +1 -1
- package/dist/generator/native-expr.js +124 -19
- package/dist/generator/native-expr.js.map +1 -1
- package/dist/generator/typed.d.ts +26 -0
- package/dist/generator/typed.d.ts.map +1 -1
- package/dist/generator/typed.js +52 -0
- package/dist/generator/typed.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -2,11 +2,16 @@ import type { TypeRef } from "./typed.js";
|
|
|
2
2
|
/** The static value kind of a compiled expression. `value` = a boxed escape (NOT allowed on the
|
|
3
3
|
* covered plane — a compile that would need it fails closed). */
|
|
4
4
|
export type ExprType = TypeRef;
|
|
5
|
-
/** A compiled native expression: hoisted fallible statements + the pure final expression + its type.
|
|
5
|
+
/** A compiled native expression: hoisted fallible statements + the pure final expression + its type.
|
|
6
|
+
* `renderedType`, when present, is the EXACT native field type the backend chose for this value and
|
|
7
|
+
* OVERRIDES `renderTypeRef(ref)` — the one case is a zero-allocation static string-array port, whose rust
|
|
8
|
+
* field is `Vec<&'static str>` (not the owned `Vec<String>` its `arr<string>` ref would render). The
|
|
9
|
+
* field TYPE and the initializer VALUE are BOTH read from this one Compiled, so they cannot diverge. */
|
|
6
10
|
export interface Compiled {
|
|
7
11
|
stmts: string[];
|
|
8
12
|
expr: string;
|
|
9
13
|
ref: TypeRef;
|
|
14
|
+
renderedType?: string;
|
|
10
15
|
}
|
|
11
16
|
/**
|
|
12
17
|
* NativeExprBackend — the language-specific primitives. The traversal / type-inference / fail-closed
|
|
@@ -36,10 +41,15 @@ export interface NativeExprBackend {
|
|
|
36
41
|
ref: TypeRef;
|
|
37
42
|
};
|
|
38
43
|
/** the base expr + ref for a ref head: an input port field, an input array elem via $as, or a prior
|
|
39
|
-
* node's typed cell. Returns null if the head is unknown (compile fails closed).
|
|
44
|
+
* node's typed cell. Returns null if the head is unknown (compile fails closed). `own`, when present,
|
|
45
|
+
* renders the OWNED form of a resolved ref value at the LEAF (after the field path is walked) — a rust
|
|
46
|
+
* clone / deref appropriate to the head's storage (a `RefCell` borrow vs a by-value field) and the
|
|
47
|
+
* position (a port owns an array; a `len` borrows it). `fieldAccessed` is true when the ref walked
|
|
48
|
+
* past the head into a struct field. Go omits it (value semantics need no ownership). */
|
|
40
49
|
resolveHead(head: string): {
|
|
41
50
|
expr: string;
|
|
42
51
|
ref: TypeRef;
|
|
52
|
+
own?: (expr: string, ref: TypeRef, fieldAccessed: boolean) => string;
|
|
43
53
|
} | null;
|
|
44
54
|
/** wrap a fallible helper call `call` (returns (T,err)/Result<T,_>) as a hoisted temp of native type
|
|
45
55
|
* `ty`, early-returning the failure. Returns the temp identifier. */
|
|
@@ -60,6 +70,14 @@ export interface NativeExprBackend {
|
|
|
60
70
|
}[]): string;
|
|
61
71
|
/** a native array literal of element type `elemTy`. */
|
|
62
72
|
arrLit(elemTy: string, items: string[]): string;
|
|
73
|
+
/** a ZERO-ALLOCATION array of static string LITERALS (a projection port whose every element is a
|
|
74
|
+
* compile-time-constant string). Returns the literal `expr` and the native `type` it chose: rust
|
|
75
|
+
* `Vec<&'static str>` with bare `"a"` literals (no per-element `String` allocation); go `[]string`
|
|
76
|
+
* with bare literals (already allocation-free). A dynamic (ref-bearing) array does not reach here. */
|
|
77
|
+
staticStrArr(literals: string[]): {
|
|
78
|
+
expr: string;
|
|
79
|
+
type: string;
|
|
80
|
+
};
|
|
63
81
|
/** the NONE value of an opt type whose inner native type is `innerTy` (a literal `null` materialized
|
|
64
82
|
* against an `{opt:V}` expected type — go `nil` / rust `None`). #108 opt-null branch materialization. */
|
|
65
83
|
optNone(innerTy: string): string;
|
|
@@ -69,6 +87,24 @@ export interface NativeExprBackend {
|
|
|
69
87
|
/** a native bool: is the opt value `expr` ABSENT (null)? go `(expr == nil)` / rust `expr.is_none()`.
|
|
70
88
|
* The null-presence test for `eq(<opt-field>, null)`. */
|
|
71
89
|
optIsNone(expr: string): string;
|
|
90
|
+
/** the opt value `optExpr` (native `Option<T>` / `*T`) defaulted to a PURE `defaultExpr` when ABSENT,
|
|
91
|
+
* as a native EXPRESSION of the inner type `innerTy`. `coalesce(<opt>, <default>)` where the default
|
|
92
|
+
* hoists no statements.
|
|
93
|
+
*
|
|
94
|
+
* The default here is PURE, so whether a backend evaluates it eagerly or lazily is UNOBSERVABLE: it
|
|
95
|
+
* cannot fail and has no side effect, and the compiler routes a fallible default to
|
|
96
|
+
* {@link NativeExprBackend.optCoalesceGuard} instead. Backends are therefore free either way — rust's
|
|
97
|
+
* `unwrap_or` is eager (it evaluates its argument) while `unwrap_or_else` is lazy, and both are
|
|
98
|
+
* correct for this input. Laziness is a REQUIREMENT only on the fallible path, where it is
|
|
99
|
+
* observable; see `optCoalesceGuard`. */
|
|
100
|
+
optUnwrapOr(optExpr: string, defaultExpr: string, innerTy: string): string;
|
|
101
|
+
/** the same coalesce when the default is FALLIBLE (it hoists statements carrying early error-returns):
|
|
102
|
+
* emit STATEMENTS binding `temp` (native type `ty`) to the opt's inner value when present, else
|
|
103
|
+
* running `dStmts` and taking `dExpr`. The default's statements run ONLY on the absent branch
|
|
104
|
+
* (short-circuit ≡ evaluate). This cannot be a closure: an early error-return propagates out of a
|
|
105
|
+
* rust `match` arm / a go `if` block, but NOT out of `unwrap_or_else`'s closure. `bindTemp` is a fresh
|
|
106
|
+
* name the backend may bind the unwrapped value to. */
|
|
107
|
+
optCoalesceGuard(temp: string, ty: string, optExpr: string, bindTemp: string, dStmts: string[], dExpr: string): string[];
|
|
72
108
|
/** a ternary/if-expression producing `t` when `cond` else `e`, both of native type `ty`. */
|
|
73
109
|
ternary(cond: string, t: string, e: string, ty: string): string;
|
|
74
110
|
/** short-circuit and/or with a FALLIBLE right side: emit statements binding `temp` (native bool)
|
|
@@ -89,6 +125,20 @@ export declare class NativeExprCompiler {
|
|
|
89
125
|
constructor(be: NativeExprBackend);
|
|
90
126
|
/** compile a node to {stmts, expr, ref}. Fallible sub-exprs are hoisted into stmts. */
|
|
91
127
|
compile(node: unknown): Compiled;
|
|
128
|
+
/**
|
|
129
|
+
* compilePort — compile a node at PORT position, where an `{opt:V}` result is ADMISSIBLE (the port
|
|
130
|
+
* field is a native `Option<T>` / `*T`, so "the value is absent" has a native representation).
|
|
131
|
+
*
|
|
132
|
+
* This is the one position that differs from a cond/guard expression: there an opt must be consumed
|
|
133
|
+
* by a null-compare or a coalesce (a required scalar slot cannot hold "absent"), so `compile` rejects
|
|
134
|
+
* a bare opt. A port CAN carry it — an optional leaf port receives null exactly as run_behavior's
|
|
135
|
+
* `evalPorts` would pass it. Everything else compiles identically (one traversal, one type-inference,
|
|
136
|
+
* one fail-closed discipline).
|
|
137
|
+
*/
|
|
138
|
+
compilePort(node: unknown): Compiled;
|
|
139
|
+
/** materialize a bare `{arr:[…]}` at port position: compile each element, require a single element type,
|
|
140
|
+
* emit the native array literal. An empty array has no inferable element type → fail-closed. */
|
|
141
|
+
private arrPort;
|
|
92
142
|
/** compile a node and require it to produce a native `bool` (the cond `if` / guard `when` gate). A
|
|
93
143
|
* non-bool result is a GENERATION-TIME fail-closed reject (strict-bool, mirrors requireBool). */
|
|
94
144
|
compileBool(node: unknown): Compiled;
|
|
@@ -117,17 +167,51 @@ export declare class NativeExprCompiler {
|
|
|
117
167
|
private mod;
|
|
118
168
|
private concat;
|
|
119
169
|
private eqNe;
|
|
120
|
-
/**
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
|
|
170
|
+
/**
|
|
171
|
+
* optLeafAccess — resolve a node whose VALUE is an `{opt:V}`, WITHOUT the fail-closed opt reject that
|
|
172
|
+
* `ref()` enforces (a required scalar slot cannot hold "absent"; the opt-aware callers — the
|
|
173
|
+
* null-compare and `coalesce` — consume the opt itself). Returns the opt-typed access expr + its
|
|
174
|
+
* TypeRef, or null when the node is not one of the two covered opt shapes.
|
|
175
|
+
*
|
|
176
|
+
* The covered shapes, each byte-equal to `refCore` (expr-eval.ts):
|
|
177
|
+
* - `{ref:[head, …path]}` whose LEAF resolves to an `{opt:V}` field (an opt field on a typed input /
|
|
178
|
+
* prior-node struct).
|
|
179
|
+
* - `{refOpt:[head]}` — a SINGLE-SEGMENT `opt($.x)` (authoring.ts `opt`). With an empty rest-path
|
|
180
|
+
* `refCore` never reaches its null-intermediate branch, so `refOpt` and `ref` observe the SAME
|
|
181
|
+
* value here; the head's own `{opt:V}` type is the result.
|
|
182
|
+
*
|
|
183
|
+
* A MULTI-segment `refOpt` (`opt($.x).y`) walks intermediates with null-propagation and is NOT covered
|
|
184
|
+
* (it would need opt-nil chaining) — null, so the caller fails closed.
|
|
185
|
+
*/
|
|
186
|
+
private optLeafAccess;
|
|
125
187
|
/** is `node` a bare INTEGRAL JS number literal (the IR form of an int literal, e.g. `2`)? Used to
|
|
126
188
|
* widen an int literal to float when compared against a float operand (run_behavior value parity). */
|
|
127
189
|
private isIntegralNumberLiteral;
|
|
128
190
|
private compare;
|
|
129
191
|
private andOr;
|
|
130
192
|
private not;
|
|
193
|
+
/**
|
|
194
|
+
* coalesce — `{coalesce:[a,b]}` = `a ?? b`. run_behavior (expr-eval.ts §coalesce): evaluate `a`; if it
|
|
195
|
+
* is null evaluate and return `b`, else return `a` (the right side is LAZY).
|
|
196
|
+
*
|
|
197
|
+
* Two covered cases, each byte-equal to the interpreter:
|
|
198
|
+
* - `a` is an `{opt:U}` (an optional input port / an opt struct field) and `b` is a `U`: the native
|
|
199
|
+
* `unwrap_or` (rust `a.unwrap_or(b)` / the go twin). This is the ORM default — `coalesce(opt($.limit), 20)`.
|
|
200
|
+
* Its result type is `U`, matching the declared `coalesce-join` rule (expr-operator-types.ts).
|
|
201
|
+
* - `a` is a REQUIRED native value (never null — the type says so) and `b` has `a`'s type: the value
|
|
202
|
+
* is CONSTANT-folded to `a`, and `b` is never evaluated (exactly the interpreter's short-circuit).
|
|
203
|
+
* Mirrors the same reasoning the null-compare fold uses.
|
|
204
|
+
*
|
|
205
|
+
* The interpreter evaluates the right side LAZILY. That is only OBSERVABLE when the default can fail,
|
|
206
|
+
* so the two forms split on exactly that: a PURE default takes the expression form (its evaluation
|
|
207
|
+
* order cannot be observed — it neither fails nor has an effect), and a default that hoists statements
|
|
208
|
+
* (a fallible sub-expression carrying an early error-return) takes the STATEMENT form, which evaluates
|
|
209
|
+
* it only on the absent branch. The statement form is required because an early return propagates out
|
|
210
|
+
* of a rust `match` arm / a go `if` block, but not out of a closure.
|
|
211
|
+
* Whether a caller can host those statements is the CALLER's constraint, not this compiler's: a
|
|
212
|
+
* cond/guard position hoists them; a port built inline in a ports-struct literal cannot, and rejects
|
|
213
|
+
* there.
|
|
214
|
+
*/
|
|
131
215
|
private coalesce;
|
|
132
216
|
private cond;
|
|
133
217
|
private len;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-expr.d.ts","sourceRoot":"","sources":["../../src/generator/native-expr.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;iEACiE;AACjE,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC;AAE/B
|
|
1
|
+
{"version":3,"file":"native-expr.d.ts","sourceRoot":"","sources":["../../src/generator/native-expr.ts"],"names":[],"mappings":"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"}
|
|
@@ -129,6 +129,51 @@ export class NativeExprCompiler {
|
|
|
129
129
|
return fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: operator '${o.op}' is not in the covered closed set (fail-closed)`);
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* compilePort — compile a node at PORT position, where an `{opt:V}` result is ADMISSIBLE (the port
|
|
134
|
+
* field is a native `Option<T>` / `*T`, so "the value is absent" has a native representation).
|
|
135
|
+
*
|
|
136
|
+
* This is the one position that differs from a cond/guard expression: there an opt must be consumed
|
|
137
|
+
* by a null-compare or a coalesce (a required scalar slot cannot hold "absent"), so `compile` rejects
|
|
138
|
+
* a bare opt. A port CAN carry it — an optional leaf port receives null exactly as run_behavior's
|
|
139
|
+
* `evalPorts` would pass it. Everything else compiles identically (one traversal, one type-inference,
|
|
140
|
+
* one fail-closed discipline).
|
|
141
|
+
*/
|
|
142
|
+
compilePort(node) {
|
|
143
|
+
const o = this.optLeafAccess(node);
|
|
144
|
+
if (o !== null)
|
|
145
|
+
return o;
|
|
146
|
+
// A bare `{arr:[…]}` at port position materializes to a native array whose element type is INFERRED
|
|
147
|
+
// from its elements (the projection shape — every element compiles to the SAME TypeRef). A nested
|
|
148
|
+
// `{arr}` inside an expression still has no inferable element type (compile → arr() fails closed); the
|
|
149
|
+
// element type is knowable HERE only because a port is a boundary where the whole array is the value.
|
|
150
|
+
const op = opOf(node);
|
|
151
|
+
if (op !== null && op.op === "arr")
|
|
152
|
+
return this.arrPort(op.arg);
|
|
153
|
+
return this.compile(node);
|
|
154
|
+
}
|
|
155
|
+
/** materialize a bare `{arr:[…]}` at port position: compile each element, require a single element type,
|
|
156
|
+
* emit the native array literal. An empty array has no inferable element type → fail-closed. */
|
|
157
|
+
arrPort(arg) {
|
|
158
|
+
if (!Array.isArray(arg))
|
|
159
|
+
fail("INVALID_NODE", `${this.be.lang} native expr: {arr} expects an array`);
|
|
160
|
+
if (arg.length === 0)
|
|
161
|
+
fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: an empty {arr} port has no inferable element type on the runtime-free plane`);
|
|
162
|
+
// ZERO-ALLOCATION: when EVERY element is a static string LITERAL (no ref, no dynamic operand), the
|
|
163
|
+
// backend renders a `Vec<&'static str>` (rust) / `[]string` (go) of bare literals — no per-element
|
|
164
|
+
// heap allocation. A ref/dynamic element (below) makes it an owned `Vec<String>` of computed values.
|
|
165
|
+
if (arg.every((el) => typeof el === "string")) {
|
|
166
|
+
const r = this.be.staticStrArr(arg);
|
|
167
|
+
return { stmts: [], expr: r.expr, ref: { kind: "arr", elem: { kind: "scalar", scalar: "string" } }, renderedType: r.type };
|
|
168
|
+
}
|
|
169
|
+
const items = arg.map((el) => this.compile(el));
|
|
170
|
+
const elemRef = items[0].ref;
|
|
171
|
+
for (const it of items)
|
|
172
|
+
if (!typeRefEqual(it.ref, elemRef))
|
|
173
|
+
fail("TYPE_MISMATCH", `${this.be.lang} native expr: {arr} elements must share one type (got ${JSON.stringify(elemRef)} and ${JSON.stringify(it.ref)})`);
|
|
174
|
+
const stmts = items.flatMap((i) => i.stmts);
|
|
175
|
+
return { stmts, expr: this.be.arrLit(this.be.renderType(elemRef), items.map((i) => i.expr)), ref: { kind: "arr", elem: elemRef } };
|
|
176
|
+
}
|
|
132
177
|
/** compile a node and require it to produce a native `bool` (the cond `if` / guard `when` gate). A
|
|
133
178
|
* non-bool result is a GENERATION-TIME fail-closed reject (strict-bool, mirrors requireBool). */
|
|
134
179
|
compileBool(node) {
|
|
@@ -231,15 +276,18 @@ export class NativeExprCompiler {
|
|
|
231
276
|
const head = this.be.resolveHead(path[0]);
|
|
232
277
|
if (head === null)
|
|
233
278
|
fail("UNKNOWN_BINDING", `${this.be.lang} native expr: unknown binding: ${path[0]}`);
|
|
234
|
-
// A refOpt
|
|
235
|
-
//
|
|
236
|
-
//
|
|
279
|
+
// A refOpt WALKING an intermediate needs opt-nil propagation through the path — not covered (a
|
|
280
|
+
// single-segment refOpt has no intermediate and is resolved as the opt value itself by optLeafAccess,
|
|
281
|
+
// ahead of this).
|
|
237
282
|
if (opt)
|
|
238
|
-
fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: refOpt
|
|
283
|
+
fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: a multi-segment refOpt (null-propagating field walk) is not native-covered (fail-closed)`);
|
|
239
284
|
const { expr, ref } = this.be.fieldAccess(head.expr, head.ref, path.slice(1));
|
|
285
|
+
// This position needs a REQUIRED value; an opt has no native value to read without deciding what
|
|
286
|
+
// "absent" becomes — which is exactly the silent coercion the covered plane forbids. Consume the opt
|
|
287
|
+
// with `coalesce(x, <default>)` or test it with `eq/ne(x, null)`.
|
|
240
288
|
if (ref.kind === "opt")
|
|
241
|
-
fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: a
|
|
242
|
-
return { stmts: [], expr, ref };
|
|
289
|
+
fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: a ref resolving to an OPTIONAL value is not native-covered in a position that requires a value — consume it with coalesce(x, <default>) or test it with eq/ne(x, null) (fail-closed)`);
|
|
290
|
+
return { stmts: [], expr: head.own ? head.own(expr, ref, path.length > 1) : expr, ref };
|
|
243
291
|
}
|
|
244
292
|
// ── construction ────────────────────────────────────────────────────────────────────
|
|
245
293
|
obj(_arg) {
|
|
@@ -358,7 +406,7 @@ export class NativeExprCompiler {
|
|
|
358
406
|
// `eq/ne(null, null)` — both sides null: eq ⇒ true, ne ⇒ false (valueEquals(null,null)===true).
|
|
359
407
|
return { stmts: [], expr: this.be.boolLit(op === "eq"), ref: { kind: "scalar", scalar: "bool" } };
|
|
360
408
|
}
|
|
361
|
-
const optAcc = this.
|
|
409
|
+
const optAcc = this.optLeafAccess(refNode);
|
|
362
410
|
if (optAcc !== null) {
|
|
363
411
|
const expr = op === "ne" ? this.be.optIsSome(optAcc.expr) : this.be.optIsNone(optAcc.expr);
|
|
364
412
|
return { stmts: optAcc.stmts, expr, ref: { kind: "scalar", scalar: "bool" } };
|
|
@@ -381,18 +429,33 @@ export class NativeExprCompiler {
|
|
|
381
429
|
const cmp = this.be.binOp(op === "eq" ? "==" : "!=", a.expr, b.expr, sc);
|
|
382
430
|
return { stmts, expr: cmp, ref: { kind: "scalar", scalar: "bool" } };
|
|
383
431
|
}
|
|
384
|
-
/**
|
|
385
|
-
*
|
|
386
|
-
*
|
|
387
|
-
*
|
|
388
|
-
|
|
432
|
+
/**
|
|
433
|
+
* optLeafAccess — resolve a node whose VALUE is an `{opt:V}`, WITHOUT the fail-closed opt reject that
|
|
434
|
+
* `ref()` enforces (a required scalar slot cannot hold "absent"; the opt-aware callers — the
|
|
435
|
+
* null-compare and `coalesce` — consume the opt itself). Returns the opt-typed access expr + its
|
|
436
|
+
* TypeRef, or null when the node is not one of the two covered opt shapes.
|
|
437
|
+
*
|
|
438
|
+
* The covered shapes, each byte-equal to `refCore` (expr-eval.ts):
|
|
439
|
+
* - `{ref:[head, …path]}` whose LEAF resolves to an `{opt:V}` field (an opt field on a typed input /
|
|
440
|
+
* prior-node struct).
|
|
441
|
+
* - `{refOpt:[head]}` — a SINGLE-SEGMENT `opt($.x)` (authoring.ts `opt`). With an empty rest-path
|
|
442
|
+
* `refCore` never reaches its null-intermediate branch, so `refOpt` and `ref` observe the SAME
|
|
443
|
+
* value here; the head's own `{opt:V}` type is the result.
|
|
444
|
+
*
|
|
445
|
+
* A MULTI-segment `refOpt` (`opt($.x).y`) walks intermediates with null-propagation and is NOT covered
|
|
446
|
+
* (it would need opt-nil chaining) — null, so the caller fails closed.
|
|
447
|
+
*/
|
|
448
|
+
optLeafAccess(node) {
|
|
389
449
|
const o = opOf(node);
|
|
390
|
-
if (o === null || o.op !== "ref")
|
|
391
|
-
return null;
|
|
450
|
+
if (o === null || (o.op !== "ref" && o.op !== "refOpt"))
|
|
451
|
+
return null;
|
|
392
452
|
const arg = o.arg;
|
|
393
453
|
if (!Array.isArray(arg) || arg.length === 0 || !arg.every((p) => typeof p === "string"))
|
|
394
454
|
return null;
|
|
395
455
|
const path = arg;
|
|
456
|
+
// a refOpt only coincides with `ref` when there is no intermediate to propagate null through.
|
|
457
|
+
if (o.op === "refOpt" && path.length !== 1)
|
|
458
|
+
return null;
|
|
396
459
|
const head = this.be.resolveHead(path[0]);
|
|
397
460
|
if (head === null)
|
|
398
461
|
return null;
|
|
@@ -404,8 +467,8 @@ export class NativeExprCompiler {
|
|
|
404
467
|
return null;
|
|
405
468
|
}
|
|
406
469
|
if (acc.ref.kind !== "opt")
|
|
407
|
-
return null; //
|
|
408
|
-
return { stmts: [], expr: acc.expr };
|
|
470
|
+
return null; // not an opt value → the caller's non-opt path applies
|
|
471
|
+
return { stmts: [], expr: head.own ? head.own(acc.expr, acc.ref, path.length > 1) : acc.expr, ref: acc.ref };
|
|
409
472
|
}
|
|
410
473
|
/** is `node` a bare INTEGRAL JS number literal (the IR form of an int literal, e.g. `2`)? Used to
|
|
411
474
|
* widen an int literal to float when compared against a float operand (run_behavior value parity). */
|
|
@@ -473,10 +536,52 @@ export class NativeExprCompiler {
|
|
|
473
536
|
fail("TYPE_MISMATCH", `${this.be.lang} native expr: not requires bool (got ${scalarName(a.ref)})`);
|
|
474
537
|
return { stmts: a.stmts, expr: this.be.notOp(a.expr), ref: { kind: "scalar", scalar: "bool" } };
|
|
475
538
|
}
|
|
539
|
+
/**
|
|
540
|
+
* coalesce — `{coalesce:[a,b]}` = `a ?? b`. run_behavior (expr-eval.ts §coalesce): evaluate `a`; if it
|
|
541
|
+
* is null evaluate and return `b`, else return `a` (the right side is LAZY).
|
|
542
|
+
*
|
|
543
|
+
* Two covered cases, each byte-equal to the interpreter:
|
|
544
|
+
* - `a` is an `{opt:U}` (an optional input port / an opt struct field) and `b` is a `U`: the native
|
|
545
|
+
* `unwrap_or` (rust `a.unwrap_or(b)` / the go twin). This is the ORM default — `coalesce(opt($.limit), 20)`.
|
|
546
|
+
* Its result type is `U`, matching the declared `coalesce-join` rule (expr-operator-types.ts).
|
|
547
|
+
* - `a` is a REQUIRED native value (never null — the type says so) and `b` has `a`'s type: the value
|
|
548
|
+
* is CONSTANT-folded to `a`, and `b` is never evaluated (exactly the interpreter's short-circuit).
|
|
549
|
+
* Mirrors the same reasoning the null-compare fold uses.
|
|
550
|
+
*
|
|
551
|
+
* The interpreter evaluates the right side LAZILY. That is only OBSERVABLE when the default can fail,
|
|
552
|
+
* so the two forms split on exactly that: a PURE default takes the expression form (its evaluation
|
|
553
|
+
* order cannot be observed — it neither fails nor has an effect), and a default that hoists statements
|
|
554
|
+
* (a fallible sub-expression carrying an early error-return) takes the STATEMENT form, which evaluates
|
|
555
|
+
* it only on the absent branch. The statement form is required because an early return propagates out
|
|
556
|
+
* of a rust `match` arm / a go `if` block, but not out of a closure.
|
|
557
|
+
* Whether a caller can host those statements is the CALLER's constraint, not this compiler's: a
|
|
558
|
+
* cond/guard position hoists them; a port built inline in a ports-struct literal cannot, and rejects
|
|
559
|
+
* there.
|
|
560
|
+
*/
|
|
476
561
|
coalesce(arg) {
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
562
|
+
const [ea, eb] = this.binArgs("coalesce", arg);
|
|
563
|
+
const a = this.optLeafAccess(ea);
|
|
564
|
+
if (a === null) {
|
|
565
|
+
// a REQUIRED (non-opt) left operand can never be null ⇒ the result is always `a`, `b` unevaluated.
|
|
566
|
+
const left = this.compile(ea);
|
|
567
|
+
const right = this.compile(eb);
|
|
568
|
+
if (!typeRefEqual(left.ref, right.ref))
|
|
569
|
+
fail("TYPE_MISMATCH", `${this.be.lang} native expr: coalesce operands must agree (got ${JSON.stringify(left.ref)} ?? ${JSON.stringify(right.ref)}); a nullable left operand must be an opt-typed input port / struct field`);
|
|
570
|
+
return { stmts: left.stmts, expr: left.expr, ref: left.ref };
|
|
571
|
+
}
|
|
572
|
+
const inner = a.ref.inner;
|
|
573
|
+
const b = this.compile(eb);
|
|
574
|
+
if (!typeRefEqual(b.ref, inner))
|
|
575
|
+
fail("TYPE_MISMATCH", `${this.be.lang} native expr: coalesce default type ${JSON.stringify(b.ref)} does not match the opt operand's inner type ${JSON.stringify(inner)} (fail-closed)`);
|
|
576
|
+
const ty = this.be.renderType(inner);
|
|
577
|
+
// a PURE default is a single native expression (unwrap_or / the go twin — lazy in both backends).
|
|
578
|
+
if (b.stmts.length === 0)
|
|
579
|
+
return { stmts: a.stmts, expr: this.be.optUnwrapOr(a.expr, b.expr, ty), ref: inner };
|
|
580
|
+
// a FALLIBLE default hoists statements (its early error-returns), so the coalesce becomes a
|
|
581
|
+
// statement guard: only the absent branch evaluates the default. Same discipline as andOr / cond.
|
|
582
|
+
const temp = this.be.freshTemp();
|
|
583
|
+
const guard = this.be.optCoalesceGuard(temp, ty, a.expr, this.be.freshTemp(), b.stmts, b.expr);
|
|
584
|
+
return { stmts: [...a.stmts, ...guard], expr: temp, ref: inner };
|
|
480
585
|
}
|
|
481
586
|
cond(arg) {
|
|
482
587
|
if (!Array.isArray(arg) || arg.length !== 3)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-expr.js","sourceRoot":"","sources":["../../src/generator/native-expr.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"native-expr.js","sourceRoot":"","sources":["../../src/generator/native-expr.ts"],"names":[],"mappings":"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"}
|
|
@@ -78,6 +78,32 @@ export declare function buildTypePlan(ir: ComponentGraphIR): TypePlan;
|
|
|
78
78
|
* プラン内 decl を引く(プランに無い obj 型は渡されない前提 — buildTypePlan が全注記点を網羅する)。
|
|
79
79
|
*/
|
|
80
80
|
export declare function deriveTypeRef(t: PortableType, plan: TypePlan): TypeRef;
|
|
81
|
+
/**
|
|
82
|
+
* inputPortIsOptional — その input port が **省略可(値が「無い」= null を取り得る)**か。
|
|
83
|
+
*
|
|
84
|
+
* 可搬宣言面の `{opt: T}` は `PortSchema` へ `required:false` として降りる(authoring.ts
|
|
85
|
+
* `portSchemaFromPortable`)。`required === false` が optional の**唯一の印**であり、未指定/`true`
|
|
86
|
+
* は required(type-gate.ts `portableTypeOfInputPort` と同一規則 — 規則を二重定義しない)。
|
|
87
|
+
*/
|
|
88
|
+
export declare function inputPortIsOptional(schema: {
|
|
89
|
+
required?: boolean;
|
|
90
|
+
} | undefined): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* inputPortTypeRef — input port schema の **language-neutral な型**(go/rust の native emitter が
|
|
93
|
+
* 共通に lower する SSoT)。宣言された `type` を TypeRef へ落とし、optional(`required:false`)なら
|
|
94
|
+
* `{opt: …}` で包む(各言語は renderTypeRef が `Option<T>` / `*T` へ綴じる)。
|
|
95
|
+
*
|
|
96
|
+
* `type` 語彙は native emitter のもの(`"literal"` = 制約付き string / `"number"` = float チャネル /
|
|
97
|
+
* `array`・`map` は `elemType` 注記があるときだけ確定 — BC は推論しない・consumer-interface C3)。
|
|
98
|
+
* 確定できない `type`(`"object"` / elemType 無し array 等)は `undefined`(呼び側が fail-closed
|
|
99
|
+
* するか boxed 経路を保つ)。**optional の内側が確定しない場合も `undefined`** — 呼び側は
|
|
100
|
+
* 「optionality を表現できない port」として LOUD に fail-closed する(zero 値への黙った縮退を作らない)。
|
|
101
|
+
*/
|
|
102
|
+
export declare function inputPortTypeRef(schema: {
|
|
103
|
+
type?: string;
|
|
104
|
+
required?: boolean;
|
|
105
|
+
elemType?: PortableType;
|
|
106
|
+
} | undefined, plan?: TypePlan): TypeRef | undefined;
|
|
81
107
|
/**
|
|
82
108
|
* TypedMaterializer — per-language の typed 具体化 seam。language-neutral な {@link TypePlan} と
|
|
83
109
|
* 各注記点の {@link TypeRef} を受け取り、その言語の「型宣言(interface/struct)」と typed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typed.d.ts","sourceRoot":"","sources":["../../src/generator/typed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAa,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAIhF;;;;;;;;;GASG;AACH,MAAM,MAAM,OAAO,GACf;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpC,mEAAmE;AACnE,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CAC3C;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAmDD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,gBAAgB,GAAG,QAAQ,CAiB5D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAWtE;AAoBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACtC;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC;IAGpC;;;;OAIG;IACH,eAAe,CAAC,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzC;;;;OAIG;IACH,eAAe,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxE;;;;OAIG;IACH,gBAAgB,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;IACxH;;;OAGG;IACH,cAAc,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC1E;AAED,+DAA+D;AAC/D,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAE3E"}
|
|
1
|
+
{"version":3,"file":"typed.d.ts","sourceRoot":"","sources":["../../src/generator/typed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAa,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAIhF;;;;;;;;;GASG;AACH,MAAM,MAAM,OAAO,GACf;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpC,mEAAmE;AACnE,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CAC3C;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAmDD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,gBAAgB,GAAG,QAAQ,CAiB5D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAWtE;AAID;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,GAAG,OAAO,CAEvF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,YAAY,CAAA;CAAE,GAAG,SAAS,EAClF,IAAI,CAAC,EAAE,QAAQ,GACd,OAAO,GAAG,SAAS,CA4BrB;AAoBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACtC;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC;IAGpC;;;;OAIG;IACH,eAAe,CAAC,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzC;;;;OAIG;IACH,eAAe,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxE;;;;OAIG;IACH,gBAAgB,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;IACxH;;;OAGG;IACH,cAAc,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC1E;AAED,+DAA+D;AAC/D,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAE3E"}
|
package/dist/generator/typed.js
CHANGED
|
@@ -98,6 +98,58 @@ export function deriveTypeRef(t, plan) {
|
|
|
98
98
|
throw new Error(`typed emit: obj type not found in the type plan (structuralKey=${key}) — buildTypePlan must cover every annotation point`);
|
|
99
99
|
return { kind: "named", name: decl.name };
|
|
100
100
|
}
|
|
101
|
+
// ── input port schema → TypeRef(native emitter 共通 SSoT)────────────────────────────
|
|
102
|
+
/**
|
|
103
|
+
* inputPortIsOptional — その input port が **省略可(値が「無い」= null を取り得る)**か。
|
|
104
|
+
*
|
|
105
|
+
* 可搬宣言面の `{opt: T}` は `PortSchema` へ `required:false` として降りる(authoring.ts
|
|
106
|
+
* `portSchemaFromPortable`)。`required === false` が optional の**唯一の印**であり、未指定/`true`
|
|
107
|
+
* は required(type-gate.ts `portableTypeOfInputPort` と同一規則 — 規則を二重定義しない)。
|
|
108
|
+
*/
|
|
109
|
+
export function inputPortIsOptional(schema) {
|
|
110
|
+
return schema?.required === false;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* inputPortTypeRef — input port schema の **language-neutral な型**(go/rust の native emitter が
|
|
114
|
+
* 共通に lower する SSoT)。宣言された `type` を TypeRef へ落とし、optional(`required:false`)なら
|
|
115
|
+
* `{opt: …}` で包む(各言語は renderTypeRef が `Option<T>` / `*T` へ綴じる)。
|
|
116
|
+
*
|
|
117
|
+
* `type` 語彙は native emitter のもの(`"literal"` = 制約付き string / `"number"` = float チャネル /
|
|
118
|
+
* `array`・`map` は `elemType` 注記があるときだけ確定 — BC は推論しない・consumer-interface C3)。
|
|
119
|
+
* 確定できない `type`(`"object"` / elemType 無し array 等)は `undefined`(呼び側が fail-closed
|
|
120
|
+
* するか boxed 経路を保つ)。**optional の内側が確定しない場合も `undefined`** — 呼び側は
|
|
121
|
+
* 「optionality を表現できない port」として LOUD に fail-closed する(zero 値への黙った縮退を作らない)。
|
|
122
|
+
*/
|
|
123
|
+
export function inputPortTypeRef(schema, plan) {
|
|
124
|
+
const base = (() => {
|
|
125
|
+
switch (schema?.type) {
|
|
126
|
+
case "string":
|
|
127
|
+
case "literal": // `param.literal('a','b',…)` — 制約付き string(union 制約は検証の関心事・型ではない)。
|
|
128
|
+
return { kind: "scalar", scalar: "string" };
|
|
129
|
+
case "int":
|
|
130
|
+
return { kind: "scalar", scalar: "int" };
|
|
131
|
+
case "float":
|
|
132
|
+
case "number": // `"number"` は float チャネル(run_behavior: typeName(number) === "float")。
|
|
133
|
+
return { kind: "scalar", scalar: "float" };
|
|
134
|
+
case "bool":
|
|
135
|
+
return { kind: "scalar", scalar: "bool" };
|
|
136
|
+
case "array":
|
|
137
|
+
case "arr":
|
|
138
|
+
return schema.elemType !== undefined && plan !== undefined
|
|
139
|
+
? { kind: "arr", elem: deriveTypeRef(schema.elemType, plan) }
|
|
140
|
+
: undefined;
|
|
141
|
+
case "map":
|
|
142
|
+
return schema.elemType !== undefined && plan !== undefined
|
|
143
|
+
? { kind: "map", value: deriveTypeRef(schema.elemType, plan) }
|
|
144
|
+
: undefined;
|
|
145
|
+
default:
|
|
146
|
+
return undefined;
|
|
147
|
+
}
|
|
148
|
+
})();
|
|
149
|
+
if (base === undefined)
|
|
150
|
+
return undefined;
|
|
151
|
+
return inputPortIsOptional(schema) ? { kind: "opt", inner: base } : base;
|
|
152
|
+
}
|
|
101
153
|
/** TypeDecl を元の obj PortableType へ復元する(structuralKey 照合用・内部)。 */
|
|
102
154
|
function objTypeOf(d, plan) {
|
|
103
155
|
const obj = {};
|