diff --git a/docs/r3-program-plan.md b/docs/r3-program-plan.md index cbf5f14d142..acd2cc4f7a3 100644 --- a/docs/r3-program-plan.md +++ b/docs/r3-program-plan.md @@ -257,8 +257,8 @@ This principle is NOT a separate lane; it's a per-lane gate-shape requirement ap | 31 | `bridge_source_span_file_participation_retired` | state-check | T-Bridge-Retirement | DECLARED | typed-identity-surface authority | | 32 | `bridge_mark_bootstrap_secret_nominal_opacity_retired` | state-check | T-Bridge-Retirement | **PASSING** | `dsl/std/types.dag` `type Secret nominal_opaque = String` + `src/v3/std/bridge_ledger.dag` row `Retired` + unit ratchet `dag.rs::bridge_mark_bootstrap_secret_nominal_opacity_retired` (bootstrap snapshots carry `Declaration.nominal_opacity` on `Secret`); historical name-keyed bootstrap bridge removed (#1272 / #937 lineage) | | 33 | `bridge_canonical_lens_name_dispatch_retired` | state-check | T-Bridge-Retirement | DECLARED | DeclarationRef/typed identity | -| 34 | `bridge_include_str_side_channels_retired` | state-check | T-Bridge-Retirement | DECLARED | substrate query surface | -| 35 | `bridge_exact_string_patching_residual_retired` | state-check | T-Bridge-Retirement | DECLARED | umbrella for exact-string scaffolds | +| 34 | `bridge_include_str_side_channels_retired` | state-check | T-Bridge-Retirement | PASSING | pipeline-authority source-text side channel retired; stage order reads structural `PipelineStageBinding` | +| 35 | `bridge_exact_string_patching_residual_retired` | state-check | T-Bridge-Retirement | PASSING | exact-string scaffolds retired; Bool-inhabits is source-authored and lower-helper patch remains zero-ratcheted | | 36 | `bridge_retirement_ledger_zero` | ledger-count | T-Bridge-Retirement | DECLARED | unified ledger reports 0 | | 37 | `cost_lens_reads_target_realization` | structural-fold | T-CostLens-Composition | **INTEGRATION_RECEIPT (partial — ε-slice)** — PR #2181 ε path: `lens_cost_target_realization_test.rs` proves (i) **TypeRealization** slice: Rust-side `symbolic_cost_of` on a tiny program × `rust_int` row `cost` composed via `Semiring` `sequential`; (ii) **CallableRealization** slice: bootstrap `rust_is_empty_callable` row `cost` readable as a lowered structural field (same row-shape discipline as (i), **without** a second `sequential` composition pin in that subtest). **Not** full emit-time / `LanguageSpec`-indexed cost-lens consumer (that closure remains with gates **#40** / **#70** / follow-on slices per program plan). Historical gate id; lens output stays abstract `SymbolicCost`. | ε-slice receipt; emit-time fold follow-on | | 38 | `coercion_cost_equals_complexity_by_construction` | structural-fold | T-CostLens-Composition | **SATISFIED-BY-CONSTRUCTION** (α-narrow PR #2171; `Semiring` `sequential`/`iterate` at `src/v3/std/algebra.dag:181-188` is sole composition authority — no parallel "complexity-vs-cost" reconciliation surface exists) | thesis unification holds structurally | diff --git a/docs/r3-structure.md b/docs/r3-structure.md index 484f1eb3ae3..a4ddd9fdb10 100644 --- a/docs/r3-structure.md +++ b/docs/r3-structure.md @@ -116,8 +116,8 @@ L6 (`l6_structural_form_coverage`) was moved out of this lane during the engine- - `bridge_source_span_file_participation_retired` — **Green predicate:** no production code path consults `SourceSpan.file` for participation/inclusion logic; participation is structural per declared facts. **Current state (R3-deferred; Director acceptance #1130 / dispatch #1139, 2026-04-29):** the gate is not satisfied; partial string-check retirement was rejected because parallel participation rules would remain. Production inclusion (distinct from diagnostics-only span use) is still keyed on path / `span.file` at: `src/v3/compiler/src/lens_apply.rs` (`behavior_source_file`, `reflect_program_dag_nodes_in_file` / `fold_lens_over_reflected_program`); `src/v3/compiler/src/lower.rs` (`lower_type_alias_refinements_phase` `dsl/std/types.dag` gate; `declaration_name_preference_rank` duplicate merge; `Dimension` + `DIMENSION_STD_AUTHORITY_FILE`); `src/v3/compiler/src/emit.rs` (`source_filtering.excludes` on declaration/bind spans). **Structural prerequisites:** module/compilation-unit identity for lens reflection; typed authority/emit-scope carriers for lower/emit; fold-shape / carrier work for remaining fold-path source-path semantics ([ROADMAP: *Lens fold execution: undeclared fallback structure + file-path semantics*](../ROADMAP.md#lens-fold-file-path-semantics)). - `bridge_mark_bootstrap_secret_nominal_opacity_retired` — name-keyed bootstrap bridge from #937 deleted; nominal-opacity authority lives in source-level declaration (PR A landed in R2) - `bridge_canonical_lens_name_dispatch_retired` — lens dispatch routes via `DeclarationRef`/typed identity, not canonical name strings - - `bridge_include_str_side_channels_retired` — no `include_str!` macro reads source-substrate identity; substrate query surface used instead. **Open disposition (`pipeline_authority`, PR #1171, 2026-04-29):** `compile` remains `ArrowBody::Unparsed`, so compile-body stage order is not yet a structural Dag fact; runtime ordering reads `PipelineStageBinding` only — full gate for this site awaits derivation / lowered compile witness, not file IO. - - `bridge_exact_string_patching_residual_retired` — umbrella row for exact-string patching scaffolds. **PB lower-helper slice (Tier-2 / #1014 lineage) is pinned at zero** in v3-compiler Rust: no `patch_lower_helpers*` code paths remain, and `bridge_lower_helpers_patch_zero_residual_test` ratchets reintroduction. **Other** exact-string patching classes (outside this retired lower-helper post-process bridge) remain **out of scope for this receipt** and keep their own dissolution triggers. + - `bridge_include_str_side_channels_retired` — pipeline-authority source-text side channel retired. Stage order reads structural `PipelineStageBinding`, and the integration ratchet forbids reintroducing a compiler-crate `include_str!` of `pipeline.dag`; `compile` still lowers as `ArrowBody::Unparsed`, so this retirement means no source-text side channel remains for the authority path, not that compile-body drift is structurally checkable. + - `bridge_exact_string_patching_residual_retired` — exact-string patching scaffolds retired. **PB lower-helper slice (Tier-2 / #1014 lineage) is pinned at zero** in v3-compiler Rust: no `patch_lower_helpers*` code paths remain, and `bridge_lower_helpers_patch_zero_residual_test` ratchets reintroduction. The BR-19 Bool-inhabits post-parse patch is retired by authoring `Bool inhabits BooleanAlgebra` directly in `dsl/std/types.dag`; bootstrap no longer mutates `Declaration.inhabits` for kernel `Bool`. - `bridge_retirement_ledger_zero` — unified ledger reports 0 named identity bridges remaining - **T-V2-Retirement** (NEW 2026-04-30; pulled into R3 per user directive *"nothing can be deferred past R3"*). - `v2_oracle_no_remaining_test_consumers` — no `.rs` test file under the workspace consumes anything from `src/v2/`; v2-oracle and v2-using test scaffolds retired diff --git a/dsl/std/types.dag b/dsl/std/types.dag index 1171eea02b0..9e5e2a928e9 100644 --- a/dsl/std/types.dag +++ b/dsl/std/types.dag @@ -164,13 +164,9 @@ fn canonical_container_names() -> List { // require v3 to resolve aliases in Branch input type-checking // (currently pins Bool as a direct Disj for if/else). Deferred until // that compiler work lands; keeps intent-signaling via distinct names. -// v3 Path A (Lane 1e-2b): `Bool` still parses here for v2 (`dsl/` is v2-scanned; -// see `v2-compiler-tests` `gist_transitive_closure_parse` and stage0 self-host -// fixtures). `Declaration.inhabits` → `BooleanAlgebra` is applied in v3 -// bootstrap after std fixtures lower (`bootstrap::patch_kernel_bool_boolean_algebra_inhabits`). -// Surface `type … inhabits … =` is v3-only under `src/v3/compiler/` (generated -// parser) and cannot appear in this file until v2 gains a compatible parse path. -type Bool = True | False +// v3 Path A (Lane 1e-2b): the `Bool` -> `BooleanAlgebra` relation is +// authored here, not patched after parse. +type Bool inhabits BooleanAlgebra = True | False // Unit: terminal object (zero-field product, single inhabitant). type Unit diff --git a/src/v2/02_parse.dag b/src/v2/02_parse.dag index da86248ea7f..d85ec790176 100644 --- a/src/v2/02_parse.dag +++ b/src/v2/02_parse.dag @@ -204,6 +204,7 @@ fn parse_recovery_placeholder() -> Node { type OptRetResult { inferred: InferredNode?, tokens: List, ctx: ParseContext, err: ErrorNode? } type GuardResult { guard: Node?, tokens: List, ctx: ParseContext, err: ErrorNode? } type FromKeyResult { from_key: String?, tokens: List, ctx: ParseContext, err: ErrorNode? } +type TypeInhabitsResult { type_expr: Node?, tokens: List, ctx: ParseContext, err: ErrorNode? } // Multi-field results type PostfixResult { expr: Node, changed: Bool, tokens: List, ctx: ParseContext, err: ErrorNode? } @@ -399,6 +400,28 @@ fn drop_leading_type_modifier(tokens: List, modifier: String) -> List) -> List { drop_leading_type_modifier(tokens: tokens, modifier: "nominal_opaque") } +fn parse_optional_type_inhabits_clause(tokens: List, ctx: ParseContext) -> TypeInhabitsResult { + if tok_is_ident_text(tok: tokens |> first, text: "inhabits") { + let r = parse_type_expr(tokens: tokens |> skip(1), ctx: ctx) + let after_type = skip_newlines(tokens: r.tokens) + if has_err(err: r.err) || type_inhabits_clause_follow(tokens: after_type) { + TypeInhabitsResult { type_expr: Some { value: r.type_expr }, tokens: after_type, ctx: r.ctx, err: r.err } + } else { + TypeInhabitsResult { type_expr: none, tokens: tokens, ctx: ctx, err: none } + } + } else { + TypeInhabitsResult { type_expr: none, tokens: tokens, ctx: ctx, err: none } + } +} +fn type_inhabits_clause_follow(tokens: List) -> Bool { + tok_is_eq(tok: tokens |> first) || tok_is_lbrace(tok: tokens |> first) || tok_is_eof(tok: tokens |> first) +} +fn type_inhabits_properties(type_expr: Node?) -> List { + match type_expr { + Some { value: t } => [make_field_init_node(name: "inhabits", value: t, span: t.span, name_span: no_span())] + None => [] + } +} fn tok_is_newline(tok: Token?) -> Bool { match tok { Some { value: t } => is_newline_shape(shape: t.shape) None => false } } @@ -1279,19 +1302,24 @@ fn parse_type_after_kw(tokens: List, ctx: ParseContext, start_span: Sourc let tokens = skip_newlines(tokens: type_params_result.tokens) let ctx = type_params_result.ctx let tokens = type_body_tokens_after_modifiers(tokens: tokens) + let inhabits_result = parse_optional_type_inhabits_clause(tokens: tokens, ctx: ctx) + if has_err(err: inhabits_result.err) { return ItemResult { item: dummy, tokens: inhabits_result.tokens, ctx: inhabits_result.ctx, err: inhabits_result.err } } + let tokens = inhabits_result.tokens + let ctx = inhabits_result.ctx + let type_properties = type_inhabits_properties(type_expr: inhabits_result.type_expr) // Record type: type Name { fields } match eat(tokens: tokens, expected: ExpectLBrace) { EatConsumed { token: _, tokens: __ec } => let r = parse_field_list(tokens: skip_newlines(tokens: __ec), ctx: ctx) - let named_dummy = Node { name: name, span: start_span, ident_span: Some { value: name_span }, children: [], params: type_params, inferred: none, return_cardinality: Required, uses: [], body: none, connective: NoConnective, transport: none, properties: [], type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } + let named_dummy = Node { name: name, span: start_span, ident_span: Some { value: name_span }, children: [], params: type_params, inferred: none, return_cardinality: Required, uses: [], body: none, connective: NoConnective, transport: none, properties: type_properties, type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } if has_err(err: r.err) { return ItemResult { item: named_dummy, tokens: r.tokens, ctx: r.ctx, err: r.err } } let tokens = skip_newlines(tokens: r.tokens) let ctx = r.ctx let r2 = expect(tokens: tokens, expected: ExpectRBrace) if has_err(err: r2.err) { return ItemResult { item: named_dummy, tokens: r2.tokens, ctx: ctx, err: r2.err } } let type_children = r.fields |> map(f => field_to_child_node(field: f, source_indices: ctx.source_indices)) - let item = Node { name: name, span: start_span, ident_span: Some { value: name_span }, children: type_children, connective: Conj, params: type_params, inferred: none, return_cardinality: Required, uses: [], body: none, transport: none, properties: [], type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } + let item = Node { name: name, span: start_span, ident_span: Some { value: name_span }, children: type_children, connective: Conj, params: type_params, inferred: none, return_cardinality: Required, uses: [], body: none, transport: none, properties: type_properties, type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } ItemResult { item: item, tokens: skip_newlines(tokens: r2.tokens), ctx: ctx, err: none } EatUnchanged { tokens: __eu } => // Sum type or alias: type Name = ... @@ -1299,10 +1327,10 @@ fn parse_type_after_kw(tokens: List, ctx: ParseContext, start_span: Sourc match eat(tokens: tokens, expected: ExpectEq) { EatConsumed { token: _, tokens: __ec } => let tokens = skip_newlines(tokens: __ec) - parse_type_body_after_eq(tokens: tokens, ctx: ctx, name: name, name_span: name_span, start_span: start_span, type_params: type_params) + parse_type_body_after_eq(tokens: tokens, ctx: ctx, name: name, name_span: name_span, start_span: start_span, type_params: type_params, type_properties: type_properties) EatUnchanged { tokens: __eu } => // Bare type declaration -- primitive type with no structural expansion - let item = Node { name: name, span: start_span, ident_span: Some { value: name_span }, children: [], connective: NoConnective, params: type_params, inferred: Some { value: Resolved { node: leaf_type_node(name: name, span: name_span) } }, return_cardinality: Required, uses: [], body: none, transport: none, properties: [], type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } + let item = Node { name: name, span: start_span, ident_span: Some { value: name_span }, children: [], connective: NoConnective, params: type_params, inferred: Some { value: Resolved { node: leaf_type_node(name: name, span: name_span) } }, return_cardinality: Required, uses: [], body: none, transport: none, properties: type_properties, type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } ItemResult { item: item, tokens: __eu, ctx: ctx, err: none } } } @@ -1317,6 +1345,11 @@ fn parse_type_body_from_prefix(prefix: ItemPrefixResult, start_span: SourceSpan) let ctx = prefix.ctx let named_dummy = Node { name: name, span: start_span, ident_span: Some { value: name_span }, children: [], params: type_params, inferred: none, return_cardinality: Required, uses: [], body: none, connective: NoConnective, transport: none, properties: [], type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } let tokens = type_body_tokens_after_modifiers(tokens: skip_newlines(tokens: prefix.tokens)) + let inhabits_result = parse_optional_type_inhabits_clause(tokens: tokens, ctx: ctx) + if has_err(err: inhabits_result.err) { return ItemResult { item: named_dummy, tokens: inhabits_result.tokens, ctx: inhabits_result.ctx, err: inhabits_result.err } } + let tokens = inhabits_result.tokens + let ctx = inhabits_result.ctx + let type_properties = type_inhabits_properties(type_expr: inhabits_result.type_expr) // Record type: type Name { fields } match eat(tokens: tokens, expected: ExpectLBrace) { @@ -1328,7 +1361,7 @@ fn parse_type_body_from_prefix(prefix: ItemPrefixResult, start_span: SourceSpan) let r2 = expect(tokens: tokens, expected: ExpectRBrace) if has_err(err: r2.err) { return ItemResult { item: named_dummy, tokens: r2.tokens, ctx: ctx, err: r2.err } } let type_children = r.fields |> map(f => field_to_child_node(field: f, source_indices: ctx.source_indices)) - let item = Node { name: name, span: start_span, ident_span: Some { value: name_span }, children: type_children, connective: Conj, params: type_params, inferred: none, return_cardinality: Required, uses: [], body: none, transport: none, properties: [], type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } + let item = Node { name: name, span: start_span, ident_span: Some { value: name_span }, children: type_children, connective: Conj, params: type_params, inferred: none, return_cardinality: Required, uses: [], body: none, transport: none, properties: type_properties, type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } ItemResult { item: item, tokens: skip_newlines(tokens: r2.tokens), ctx: ctx, err: none } EatUnchanged { tokens: __eu } => // Sum type or alias: type Name = ... @@ -1336,18 +1369,18 @@ fn parse_type_body_from_prefix(prefix: ItemPrefixResult, start_span: SourceSpan) match eat(tokens: tokens, expected: ExpectEq) { EatConsumed { token: _, tokens: __ec } => let tokens = skip_newlines(tokens: __ec) - parse_type_body_after_eq(tokens: tokens, ctx: ctx, name: name, name_span: name_span, start_span: start_span, type_params: type_params) + parse_type_body_after_eq(tokens: tokens, ctx: ctx, name: name, name_span: name_span, start_span: start_span, type_params: type_params, type_properties: type_properties) EatUnchanged { tokens: __eu } => // Bare type declaration -- primitive type with no structural expansion - let item = Node { name: name, span: start_span, ident_span: Some { value: name_span }, children: [], connective: NoConnective, params: type_params, inferred: Some { value: Resolved { node: leaf_type_node(name: name, span: name_span) } }, return_cardinality: Required, uses: [], body: none, transport: none, properties: [], type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } + let item = Node { name: name, span: start_span, ident_span: Some { value: name_span }, children: [], connective: NoConnective, params: type_params, inferred: Some { value: Resolved { node: leaf_type_node(name: name, span: name_span) } }, return_cardinality: Required, uses: [], body: none, transport: none, properties: type_properties, type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } ItemResult { item: item, tokens: __eu, ctx: ctx, err: none } } } } // After `type Name =`, determine if this is a sum type or alias. -fn parse_type_body_after_eq(tokens: List, ctx: ParseContext, name: String, name_span: SourceSpan, start_span: SourceSpan, type_params: List) -> ItemResult { - let dummy = Node { name: name, span: start_span, ident_span: Some { value: name_span }, children: [], params: type_params, inferred: none, return_cardinality: Required, uses: [], body: none, connective: NoConnective, transport: none, properties: [], type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } +fn parse_type_body_after_eq(tokens: List, ctx: ParseContext, name: String, name_span: SourceSpan, start_span: SourceSpan, type_params: List, type_properties: List) -> ItemResult { + let dummy = Node { name: name, span: start_span, ident_span: Some { value: name_span }, children: [], params: type_params, inferred: none, return_cardinality: Required, uses: [], body: none, connective: NoConnective, transport: none, properties: type_properties, type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } // Check if the first token is an identifier (potential variant name) // followed by LBrace or Pipe (sum type indicators). // If it's an identifier, try to parse as a sum type. @@ -1367,7 +1400,7 @@ fn parse_type_body_after_eq(tokens: List, ctx: ParseContext, name: String if has_err(err: rest.err) { return ItemResult { item: dummy, tokens: rest.tokens, ctx: rest.ctx, err: rest.err } } let variants = rest.variants let type_children = variants |> map(v => variant_to_child_node(variant: v, source_indices: ctx.source_indices)) - let item = Node { name: name, span: start_span, ident_span: Some { value: name_span }, children: type_children, connective: Disj, params: type_params, inferred: none, return_cardinality: Required, uses: [], body: none, transport: none, properties: [], type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } + let item = Node { name: name, span: start_span, ident_span: Some { value: name_span }, children: type_children, connective: Disj, params: type_params, inferred: none, return_cardinality: Required, uses: [], body: none, transport: none, properties: type_properties, type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } ItemResult { item: item, tokens: skip_newlines(tokens: rest.tokens), ctx: rest.ctx, err: none } } else { // It's an alias: type Name = SomeType @@ -1376,7 +1409,7 @@ fn parse_type_body_after_eq(tokens: List, ctx: ParseContext, name: String // Check for where clause: type Name = BaseType where predicate(...) let wr = try_where_clause(tokens: r.tokens, ctx: r.ctx, base_te: r.type_expr, start_span: start_span) if has_err(err: wr.err) { return ItemResult { item: dummy, tokens: wr.tokens, ctx: wr.ctx, err: wr.err } } - let item = Node { name: name, span: start_span, ident_span: Some { value: name_span }, children: [], connective: NoConnective, params: type_params, inferred: Some { value: Resolved { node: wr.type_expr } }, return_cardinality: Required, uses: [], body: none, transport: none, properties: [], type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } + let item = Node { name: name, span: start_span, ident_span: Some { value: name_span }, children: [], connective: NoConnective, params: type_params, inferred: Some { value: Resolved { node: wr.type_expr } }, return_cardinality: Required, uses: [], body: none, transport: none, properties: type_properties, type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } ItemResult { item: item, tokens: skip_newlines(tokens: wr.tokens), ctx: wr.ctx, err: none } } } else { @@ -1386,7 +1419,7 @@ fn parse_type_body_after_eq(tokens: List, ctx: ParseContext, name: String // Check for where clause let wr = try_where_clause(tokens: r.tokens, ctx: r.ctx, base_te: r.type_expr, start_span: start_span) if has_err(err: wr.err) { return ItemResult { item: dummy, tokens: wr.tokens, ctx: wr.ctx, err: wr.err } } - let item = Node { name: name, span: start_span, ident_span: Some { value: name_span }, children: [], connective: NoConnective, params: type_params, inferred: Some { value: Resolved { node: wr.type_expr } }, return_cardinality: Required, uses: [], body: none, transport: none, properties: [], type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } + let item = Node { name: name, span: start_span, ident_span: Some { value: name_span }, children: [], connective: NoConnective, params: type_params, inferred: Some { value: Resolved { node: wr.type_expr } }, return_cardinality: Required, uses: [], body: none, transport: none, properties: type_properties, type_annotation: none, is_self_recursive: false, has_non_tail_self_call: false, match_pattern: none, expr_data: NoExprData } ItemResult { item: item, tokens: skip_newlines(tokens: wr.tokens), ctx: wr.ctx, err: none } } } diff --git a/src/v2/stage0/src/extdeps_languages_rust_emit.rs b/src/v2/stage0/src/extdeps_languages_rust_emit.rs index 5e4c2f0bd8a..d06875c7c09 100644 --- a/src/v2/stage0/src/extdeps_languages_rust_emit.rs +++ b/src/v2/stage0/src/extdeps_languages_rust_emit.rs @@ -422,7 +422,7 @@ pub struct RuntimeFunction { pub fn rt_function_registry() -> Rc>> { thread_local! { static CACHED: Rc>> = { - serde_json::from_value(serde_json::json!([{"name": "concat", "bridge_name": "concat", "passes_by_ref": false, "wraps_result": false}, {"name": "char_at", "bridge_name": "char_at", "passes_by_ref": true, "wraps_result": false}, {"name": "string_length", "bridge_name": "string_length", "passes_by_ref": true, "wraps_result": false}, {"name": "substring", "bridge_name": "substring", "passes_by_ref": true, "wraps_result": false}, {"name": "string_contains", "bridge_name": "string_contains", "passes_by_ref": true, "wraps_result": false}, {"name": "scan_while", "bridge_name": "scan_while", "passes_by_ref": true, "wraps_result": false}, {"name": "skip_horizontal_ws", "bridge_name": "skip_horizontal_ws", "passes_by_ref": true, "wraps_result": false}, {"name": "scan_to_eol", "bridge_name": "scan_to_eol", "passes_by_ref": true, "wraps_result": false}, {"name": "scan_string_end", "bridge_name": "scan_string_end", "passes_by_ref": true, "wraps_result": false}, {"name": "code_point", "bridge_name": "code_point", "passes_by_ref": false, "wraps_result": false}, {"name": "from_code_point", "bridge_name": "from_code_point", "passes_by_ref": false, "wraps_result": false}, {"name": "lookup", "bridge_name": "lookup", "passes_by_ref": true, "wraps_result": false}, {"name": "index_by", "bridge_name": "rc_index_by", "passes_by_ref": false, "wraps_result": false}, {"name": "empty_map", "bridge_name": "rc_empty_map", "passes_by_ref": false, "wraps_result": false}, {"name": "map_insert", "bridge_name": "rc_map_insert", "passes_by_ref": false, "wraps_result": false}, {"name": "map_merge", "bridge_name": "rc_map_merge", "passes_by_ref": false, "wraps_result": false}, {"name": "list_concat", "bridge_name": "rc_list_concat", "passes_by_ref": false, "wraps_result": false}, {"name": "str_eq", "bridge_name": "str_eq", "passes_by_ref": false, "wraps_result": false}, {"name": "filesystem_read", "bridge_name": "filesystem_read", "passes_by_ref": false, "wraps_result": false}, {"name": "list_push", "bridge_name": "rc_list_push", "passes_by_ref": false, "wraps_result": false}, {"name": "map_get", "bridge_name": "map_get", "passes_by_ref": true, "wraps_result": false}, {"name": "map_keys", "bridge_name": "map_keys", "passes_by_ref": true, "wraps_result": true}, {"name": "map_values", "bridge_name": "map_values", "passes_by_ref": true, "wraps_result": true}, {"name": "parse_int", "bridge_name": "parse_int", "passes_by_ref": false, "wraps_result": false}, {"name": "map_contains_key", "bridge_name": "map_contains_key", "passes_by_ref": true, "wraps_result": false}, {"name": "map_has", "bridge_name": "map_has", "passes_by_ref": true, "wraps_result": false}, {"name": "reverse", "bridge_name": "reverse", "passes_by_ref": false, "wraps_result": false}, {"name": "replace", "bridge_name": "replace", "passes_by_ref": false, "wraps_result": false}, {"name": "chars_to_string", "bridge_name": "chars_to_string", "passes_by_ref": true, "wraps_result": false}, {"name": "append", "bridge_name": "append", "passes_by_ref": false, "wraps_result": true}, {"name": "contains", "bridge_name": "contains", "passes_by_ref": false, "wraps_result": false}, {"name": "count", "bridge_name": "count", "passes_by_ref": false, "wraps_result": false}, {"name": "clamp", "bridge_name": "clamp", "passes_by_ref": false, "wraps_result": false}])) + serde_json::from_value(serde_json::json!([{"name": "concat", "bridge_name": "concat", "passes_by_ref": false, "wraps_result": false}, {"name": "char_at", "bridge_name": "char_at", "passes_by_ref": true, "wraps_result": false}, {"name": "string_length", "bridge_name": "string_length", "passes_by_ref": true, "wraps_result": false}, {"name": "substring", "bridge_name": "substring", "passes_by_ref": true, "wraps_result": false}, {"name": "string_contains", "bridge_name": "string_contains", "passes_by_ref": true, "wraps_result": false}, {"name": "scan_while", "bridge_name": "scan_while", "passes_by_ref": true, "wraps_result": false}, {"name": "skip_horizontal_ws", "bridge_name": "skip_horizontal_ws", "passes_by_ref": true, "wraps_result": false}, {"name": "scan_to_eol", "bridge_name": "scan_to_eol", "passes_by_ref": true, "wraps_result": false}, {"name": "scan_string_end", "bridge_name": "scan_string_end", "passes_by_ref": true, "wraps_result": false}, {"name": "code_point", "bridge_name": "code_point", "passes_by_ref": false, "wraps_result": false}, {"name": "from_code_point", "bridge_name": "from_code_point", "passes_by_ref": false, "wraps_result": false}, {"name": "lookup", "bridge_name": "lookup", "passes_by_ref": true, "wraps_result": false}, {"name": "index_by", "bridge_name": "rc_index_by", "passes_by_ref": false, "wraps_result": false}, {"name": "empty_map", "bridge_name": "rc_empty_map", "passes_by_ref": false, "wraps_result": false}, {"name": "empty_set", "bridge_name": "rc_empty_set", "passes_by_ref": false, "wraps_result": false}, {"name": "set_insert", "bridge_name": "rc_set_insert", "passes_by_ref": false, "wraps_result": false}, {"name": "set_union", "bridge_name": "rc_set_union", "passes_by_ref": false, "wraps_result": false}, {"name": "set_contains", "bridge_name": "set_contains", "passes_by_ref": true, "wraps_result": false}, {"name": "map_insert", "bridge_name": "rc_map_insert", "passes_by_ref": false, "wraps_result": false}, {"name": "map_merge", "bridge_name": "rc_map_merge", "passes_by_ref": false, "wraps_result": false}, {"name": "list_concat", "bridge_name": "rc_list_concat", "passes_by_ref": false, "wraps_result": false}, {"name": "str_eq", "bridge_name": "str_eq", "passes_by_ref": false, "wraps_result": false}, {"name": "filesystem_read", "bridge_name": "filesystem_read", "passes_by_ref": false, "wraps_result": false}, {"name": "list_push", "bridge_name": "rc_list_push", "passes_by_ref": false, "wraps_result": false}, {"name": "map_get", "bridge_name": "map_get", "passes_by_ref": true, "wraps_result": false}, {"name": "map_keys", "bridge_name": "map_keys", "passes_by_ref": true, "wraps_result": true}, {"name": "map_values", "bridge_name": "map_values", "passes_by_ref": true, "wraps_result": true}, {"name": "parse_int", "bridge_name": "parse_int", "passes_by_ref": false, "wraps_result": false}, {"name": "map_contains_key", "bridge_name": "map_contains_key", "passes_by_ref": true, "wraps_result": false}, {"name": "map_has", "bridge_name": "map_has", "passes_by_ref": true, "wraps_result": false}, {"name": "reverse", "bridge_name": "reverse", "passes_by_ref": false, "wraps_result": false}, {"name": "replace", "bridge_name": "replace", "passes_by_ref": false, "wraps_result": false}, {"name": "chars_to_string", "bridge_name": "chars_to_string", "passes_by_ref": true, "wraps_result": false}, {"name": "append", "bridge_name": "append", "passes_by_ref": false, "wraps_result": true}, {"name": "contains", "bridge_name": "contains", "passes_by_ref": false, "wraps_result": false}, {"name": "count", "bridge_name": "count", "passes_by_ref": false, "wraps_result": false}, {"name": "clamp", "bridge_name": "clamp", "passes_by_ref": false, "wraps_result": false}])) .expect("valid data definition") }; } diff --git a/src/v2/stage0/src/std_effects.rs b/src/v2/stage0/src/std_effects.rs index d194f9b2508..7cc03551c01 100644 --- a/src/v2/stage0/src/std_effects.rs +++ b/src/v2/stage0/src/std_effects.rs @@ -100,9 +100,7 @@ pub enum CompositionVerdict { impl CompositionVerdict { pub fn first_breaker(&self) -> Rc { match self { - CompositionVerdict::IdempotentComposition => { - panic!("no first_breaker on unit variant") - } + CompositionVerdict::IdempotentComposition => panic!("no first_breaker on unit variant"), CompositionVerdict::BrokenBy { first_breaker: __val, .. @@ -222,18 +220,20 @@ pub fn derive_effect_shape(method: HttpMethod, path: Rc) -> Rc, + method: &HttpMethod, + path: &Rc, ) -> Rc { - let shape = derive_effect_shape(method.clone(), path.clone()); - Rc::new(DeriveOpEffectResult::DerivedEffect { - effect: Rc::new(DerivedOpEffect { - operation_name: operation_name, - method: method.clone(), - path_template: path.clone(), - shape: shape, - }), - }) + { + let shape = derive_effect_shape(method.clone(), path.clone()); + Rc::new(DeriveOpEffectResult::DerivedEffect { + effect: Rc::new(DerivedOpEffect { + operation_name: operation_name, + method: method.clone(), + path_template: path.clone(), + shape: shape, + }), + }) + } } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] diff --git a/src/v2/stage0/src/v2_compiler_effect_derivation.rs b/src/v2/stage0/src/v2_compiler_effect_derivation.rs index b41f181c2e5..f074e442541 100644 --- a/src/v2/stage0/src/v2_compiler_effect_derivation.rs +++ b/src/v2/stage0/src/v2_compiler_effect_derivation.rs @@ -1,6 +1,7 @@ // Generated by v2 compiler -- do not edit. // Source module: v2.compiler.effect_derivation +use crate::std_effects::CompositionVerdict::{BrokenBy, IdempotentComposition}; use crate::std_effects::DeriveOpEffectResult::{ DerivedEffect, MalformedPathInput, UnknownHttpMethodInput, }; @@ -36,7 +37,7 @@ pub fn re_export_derive_op_effect( method: HttpMethod, path: Rc, ) -> Rc { - derive_op_effect(operation_name, method, path) + derive_op_effect(operation_name, &method, &path) } pub fn re_export_check_modifier( diff --git a/src/v2/stage0/src/v2_compiler_emit.rs b/src/v2/stage0/src/v2_compiler_emit.rs index df72c0995f7..2d7e1f824b9 100644 --- a/src/v2/stage0/src/v2_compiler_emit.rs +++ b/src/v2/stage0/src/v2_compiler_emit.rs @@ -49,6 +49,9 @@ pub use crate::v2_compiler_languages::{ TcoSyntax, TestConventions, TestNameStyle, VariantPatternSyntax, VisibilitySpec, }; use crate::v2_rt; +use crate::v2_rt::{ + rc_empty_set as empty_set, rc_set_insert as set_insert, rc_set_union as set_union, set_contains, +}; use crate::v2_std_core::AlgebraFieldKind::*; use crate::v2_std_core::BinOp::NullCoalesce; use crate::v2_std_core::Cardinality::CardOptional; @@ -1781,18 +1784,13 @@ pub fn emit_node_type( target: RenderTarget, source_indices: Rc>>, ) -> String { - render_node_type( - &n, - &target, - &v2_rt::rc_empty_map::(), - &source_indices, - ) + render_node_type(&n, &target, &empty_set(), &source_indices) } pub fn render_node_type( n: &Rc, target: &RenderTarget, - shared_types: &Rc>, + shared_types: &Rc>, source_indices: &Rc>>, ) -> String { stacker::maybe_grow(512 * 1024, 2 * 1024 * 1024, || { @@ -1896,7 +1894,7 @@ pub fn render_node_type( } let is_conj = (n.connective.clone() == Connective::Conj); let is_disj = (n.connective.clone() == Connective::Disj); - let shared = emit_map_has(shared_types.clone(), tn.clone()); + let shared = set_contains(shared_types.clone(), tn.clone()); if is_disj { { let base = if (n.ident_span.clone() != None) { diff --git a/src/v2/stage0/src/v2_compiler_emit_rust.rs b/src/v2/stage0/src/v2_compiler_emit_rust.rs index f8beb7fa92b..a225f3d6956 100644 --- a/src/v2/stage0/src/v2_compiler_emit_rust.rs +++ b/src/v2/stage0/src/v2_compiler_emit_rust.rs @@ -67,6 +67,9 @@ pub use crate::v2_compiler_ownership::{ }; pub use crate::v2_compiler_runtime_rust::rust_runtime_source; use crate::v2_rt; +use crate::v2_rt::{ + rc_empty_set as empty_set, rc_set_insert as set_insert, rc_set_union as set_union, set_contains, +}; use crate::v2_std_core::AlgebraFieldKind::*; use crate::v2_std_core::BinOp::*; use crate::v2_std_core::CallSemantics::{LookupCallSemantics, PlainCallSemantics}; @@ -123,7 +126,7 @@ use std::rc::Rc; pub fn render_rust_type( n: Rc, - shared_types: Rc>, + shared_types: Rc>, source_indices: Rc>>, ) -> String { render_node_type(&n, &RenderTarget::Rust, &shared_types, &source_indices) @@ -1300,7 +1303,7 @@ pub fn emit_rust_block_stmts( mut scope: Rc, mut registry: Rc>>, mut depth: i64, - mut shared_types: Rc>, + mut shared_types: Rc>, mut emit_info: Rc, ) -> Rc { loop { @@ -1348,7 +1351,7 @@ pub fn emit_rust_init_block_stmts( mut scope: Rc, mut registry: Rc>>, mut depth: i64, - mut shared_types: Rc>, + mut shared_types: Rc>, mut emit_info: Rc, ) -> Rc { loop { @@ -1452,10 +1455,10 @@ pub fn is_dag_value_type_name(name: String) -> bool { pub fn is_type_constant( summary: &Rc, - recursive_type_set: Rc>, + recursive_type_set: Rc>, ) -> bool { { - let is_recursive = v2_rt::map_contains_key(&recursive_type_set, summary.name.clone()); + let is_recursive = set_contains(recursive_type_set, summary.name.clone()); let has_generics = ((summary.generic_param_names.clone().len() as i64) > 0); match (*summary.repr.clone()).clone() { TypeRepr::EnumRepr { unit_only, .. } => { @@ -1498,11 +1501,11 @@ pub fn is_type_constant( } pub fn maybe_mark_shared_type( - acc: Rc>, + acc: Rc>, summary: &Rc, - recursive_type_set: Rc>, + recursive_type_set: Rc>, target_needs_sharing: bool, -) -> Rc> { +) -> Rc> { { let needs_sharing = (target_needs_sharing && match (*summary.repr.clone()).clone() { @@ -1510,7 +1513,7 @@ pub fn maybe_mark_shared_type( TypeRepr::EnumRepr { unit_only, .. } => (unit_only.clone() == false), }); if (needs_sharing && !is_type_constant(&summary, recursive_type_set)) { - v2_rt::rc_map_insert(acc, summary.name.clone(), true) + set_insert(acc, summary.name.clone()) } else { acc } @@ -1519,17 +1522,17 @@ pub fn maybe_mark_shared_type( pub fn build_shared_types( type_summaries: Rc>>, - recursive_type_set: Rc>, + recursive_type_set: Rc>, target: RenderTarget, -) -> Rc> { +) -> Rc> { { let sharing = sharing_for_target(target); let user_shared = Rc::new(v2_rt::map_values(&type_summaries)) .iter() .cloned() .fold( - v2_rt::rc_empty_map::(), - |acc: Rc>, summary: Rc| { + empty_set(), + |acc: Rc>, summary: Rc| { maybe_mark_shared_type( acc, &summary, @@ -1555,9 +1558,9 @@ pub fn build_shared_types( }); collection_keys.iter().cloned().fold( user_shared.clone(), - |acc: Rc>, key: String| { + |acc: Rc>, key: String| { let pascal = to_pascal(key.clone()); - v2_rt::rc_map_insert(acc, pascal.clone(), true) + set_insert(acc, pascal.clone()) }, ) } @@ -1567,20 +1570,20 @@ pub fn build_shared_types( pub struct OwnershipProofEntry { pub name: String, pub proof: Rc, - pub param_names: Rc>, + pub param_names: Rc>, } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] pub struct OwnershipBuildResult { - pub ownership_index: Rc>>>, - pub read_only_params_index: Rc>>>, + pub ownership_index: Rc>>>, + pub read_only_params_index: Rc>>>, } pub fn build_ownership_results(modules: &Rc>>) -> Rc { { let callable_set = modules.clone().iter().cloned().fold( - v2_rt::rc_empty_map::(), - |acc: Rc>, m: Rc| { + empty_set(), + |acc: Rc>, m: Rc| { Rc::new({ let mut __result = Vec::new(); for item in m.items.clone().iter().cloned() { @@ -1592,15 +1595,18 @@ pub fn build_ownership_results(modules: &Rc>>) -> Rc>, item: Rc| { - v2_rt::rc_map_merge( - inner, - collect_callable_refs( - &item.body.clone().clone().unwrap(), - &m.type_env.clone().source_indices.clone(), - ), - ) - }) + .fold( + acc, + |inner: Rc>, item: Rc| { + set_union( + inner, + collect_callable_refs( + &item.body.clone().clone().unwrap(), + &m.type_env.clone().source_indices.clone(), + ), + ) + }, + ) }, ); let proofs = Rc::new({ @@ -1623,15 +1629,14 @@ pub fn build_ownership_results(modules: &Rc>>) -> Rc(), - |acc: Rc>, p: Rc| { - v2_rt::rc_map_insert( + empty_set(), + |acc: Rc>, p: Rc| { + set_insert( acc, param_node_name_at( p.clone(), m.type_env.clone().source_indices.clone(), ), - true, ) }, ); @@ -1665,17 +1670,23 @@ pub fn build_ownership_results(modules: &Rc>>) -> Rc>>(), - read_only_params_index: v2_rt::rc_empty_map::>>(), + ownership_index: v2_rt::rc_empty_map::< + String, + Rc>, + >(), + read_only_params_index: v2_rt::rc_empty_map::< + String, + Rc>, + >(), }), |acc: Rc, entry: Rc| { let acc = Rc::try_unwrap(acc).unwrap_or_else(|rc| (*rc).clone()); { - let read_only = if v2_rt::map_contains_key( - &callable_set, + let read_only = if set_contains( + callable_set.clone(), entry.proof.clone().func_name.clone(), ) { - v2_rt::rc_empty_map::() + empty_set() } else { build_read_only_params(entry.proof.clone(), entry.param_names.clone()) }; @@ -1713,11 +1724,11 @@ pub fn emit_rust(typed: &Rc) -> Rc { fielded_variants: base_info.fielded_variants.clone(), shared_types: shared, ownership_index: ownership.ownership_index.clone(), - movable: v2_rt::rc_empty_map::(), + movable: empty_set(), variant_to_enum: base_info.variant_to_enum.clone(), - owned_bindings: v2_rt::rc_empty_map::(), + owned_bindings: empty_set(), read_only_params_index: ownership.read_only_params_index.clone(), - read_only_params: v2_rt::rc_empty_map::(), + read_only_params: empty_set(), }); let shared_types = emit_info.shared_types.clone(); let registry = typed.item_registry.clone(); @@ -1970,9 +1981,9 @@ pub fn emit_module( ownership_index: base_info.ownership_index.clone(), movable: base_info.movable.clone(), variant_to_enum: base_info.variant_to_enum.clone(), - owned_bindings: v2_rt::rc_empty_map::(), + owned_bindings: empty_set(), read_only_params_index: base_info.read_only_params_index.clone(), - read_only_params: v2_rt::rc_empty_map::(), + read_only_params: empty_set(), }); let shared_types = emit_info.shared_types.clone(); emit_module_full( @@ -1990,7 +2001,7 @@ pub fn emit_module_full( typed_module: &Rc, registry: &Rc>>, emit_info: &Rc, - shared_types: Rc>, + shared_types: Rc>, svc_module_map: Rc>, data_items: Rc>>, ) -> Rc { @@ -2610,7 +2621,7 @@ pub fn emit_typed_item( module_name: String, registry: &Rc>>, scope: &Rc, - shared_types: Rc>, + shared_types: Rc>, emit_info: &Rc, wire_contract_item: Option>, data_items: Rc>>>>, @@ -2672,7 +2683,7 @@ pub fn emit_typed_item( qualified_name.clone(), ) { Some(m) => m.clone(), - None => v2_rt::rc_empty_map::(), + None => empty_set(), }; let item_is_tco = is_tco_eligible( &authored_name(env.clone(), item.clone()), @@ -2681,14 +2692,14 @@ pub fn emit_typed_item( &env.source_indices.clone(), ); let fn_read_only = if item_is_tco { - v2_rt::rc_empty_map::() + empty_set() } else { match v2_rt::map_get( &emit_info.read_only_params_index.clone(), qualified_name.clone(), ) { Some(m) => m.clone(), - None => v2_rt::rc_empty_map::(), + None => empty_set(), } }; let fn_emit_info = Rc::new(EmitGraphInfo { @@ -2699,7 +2710,7 @@ pub fn emit_typed_item( ownership_index: emit_info.ownership_index.clone(), movable: fn_movable, variant_to_enum: emit_info.variant_to_enum.clone(), - owned_bindings: v2_rt::rc_empty_map::(), + owned_bindings: empty_set(), read_only_params_index: emit_info.read_only_params_index.clone(), read_only_params: fn_read_only, }); @@ -2776,17 +2787,17 @@ pub fn emit_typed_item( pub fn needs_box_wrapping( mut n: Rc, - mut recursive_types: Rc>, - mut shared_types: Rc>, + mut recursive_types: Rc>, + mut shared_types: Rc>, mut source_indices: Rc>>, ) -> bool { loop { if ((n.children.clone().len() as i64) == 0) { let name = authored_name_at(source_indices, &n); - if emit_map_has(shared_types, name.clone()) { + if set_contains(shared_types, name.clone()) { break false; } else { - break emit_map_has(recursive_types, name.clone()); + break set_contains(recursive_types, name.clone()); } } else { let is_optional = (n.return_cardinality.clone() == Cardinality::CardOptional); @@ -2877,8 +2888,8 @@ pub fn function_type_params_have_collision(type_params: Rc>>) -> bo pub fn emit_type_def_from_connective( item: &Rc, - recursive_types: Rc>, - shared_types: Rc>, + recursive_types: Rc>, + shared_types: Rc>, env: &Rc, emit_info: Rc, wire_contract_item: &Option>, @@ -2983,8 +2994,8 @@ pub fn emit_struct_from_children( name: &String, type_params: String, children: &Rc>>, - recursive_types: Rc>, - shared_types: &Rc>, + recursive_types: Rc>, + shared_types: &Rc>, env: Rc, emit_info: Rc, ) -> String { @@ -2996,7 +3007,7 @@ pub fn emit_struct_from_children( let derives = if has_fn_fields { "#[derive(Clone)]".to_string() } else { - if emit_map_has(shared_types.clone(), name.clone()) { + if set_contains(shared_types.clone(), name.clone()) { rust_struct_derives_text() } else { rust_struct_derives_copy_text() @@ -3069,8 +3080,8 @@ pub fn emit_struct_from_children( pub fn emit_struct_field_from_child( child: &Rc, - recursive_types: Rc>, - shared_types: &Rc>, + recursive_types: Rc>, + shared_types: &Rc>, env: &Rc, ) -> String { { @@ -3105,7 +3116,7 @@ pub fn emit_struct_field_from_child( ), ">".to_string(), ); - if emit_map_has(shared_types.clone(), rt_child_name.clone()) { + if set_contains(shared_types.clone(), rt_child_name.clone()) { v2_rt::concat( v2_rt::concat("Rc<".to_string(), with_params), ">".to_string(), @@ -3247,8 +3258,8 @@ pub fn emit_enum_from_children( name: &String, type_params: &String, children: &Rc>>, - recursive_types: &Rc>, - shared_types: &Rc>, + recursive_types: &Rc>, + shared_types: &Rc>, env: &Rc, serde_policy: &Rc, ) -> String { @@ -3380,8 +3391,8 @@ pub fn emit_enum_shared_accessors( name: &String, type_params: &String, children: &Rc>>, - recursive_types: Rc>, - shared_types: Rc>, + recursive_types: Rc>, + shared_types: Rc>, env: &Rc, ) -> String { { @@ -3755,8 +3766,8 @@ pub fn variant_rename_validations_for_policy( pub fn emit_variant_from_child( child: &Rc, - recursive_types: Rc>, - shared_types: Rc>, + recursive_types: Rc>, + shared_types: Rc>, env: &Rc, serde_policy: Rc, ) -> String { @@ -3842,7 +3853,7 @@ pub fn emit_fn_def( body: &Rc, registry: &Rc>>, scope: &Rc, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { { @@ -3948,7 +3959,7 @@ pub fn emit_fn_def_non_tco( registry: Rc>>, scope: Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, needs_stacker: bool, ) -> String { @@ -4077,7 +4088,7 @@ pub fn emit_func_def( body: Rc, registry: &Rc>>, scope: &Rc, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { { @@ -4169,7 +4180,7 @@ pub fn emit_func_body( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { stacker::maybe_grow(512 * 1024, 2 * 1024 * 1024, || { @@ -4311,7 +4322,7 @@ pub fn emit_func_body( pub fn emit_tco_params( params: Rc>>, - shared_types: Rc>, + shared_types: Rc>, source_indices: Rc>>, ) -> String { { @@ -4328,7 +4339,7 @@ pub fn emit_tco_params( pub fn emit_tco_param( param: &Rc, - shared_types: Rc>, + shared_types: Rc>, source_indices: &Rc>>, ) -> String { { @@ -4354,9 +4365,9 @@ pub fn emit_func_params( params: Rc>>, uses: Rc>>, service_names: Rc>, - shared_types: Rc>, + shared_types: Rc>, source_indices: Rc>>, - read_only_params: Rc>, + read_only_params: Rc>, ) -> String { { let param_strs = Rc::new({ @@ -4408,7 +4419,7 @@ pub fn emit_func_params( pub fn emit_func_inferred( inferred: Rc, - shared_types: Rc>, + shared_types: Rc>, source_indices: Rc>>, ) -> String { v2_rt::concat( @@ -4422,9 +4433,9 @@ pub fn emit_func_inferred( pub fn emit_params( params: Rc>>, - shared_types: Rc>, + shared_types: Rc>, source_indices: Rc>>, - read_only_params: Rc>, + read_only_params: Rc>, ) -> String { { let strs = Rc::new({ @@ -4445,7 +4456,7 @@ pub fn emit_params( pub fn emit_rust_param_type( n: &Rc, - shared_types: &Rc>, + shared_types: &Rc>, source_indices: &Rc>>, ) -> String { if ((n.params.clone().len() as i64) > 0) { @@ -4486,16 +4497,16 @@ pub fn emit_rust_param_type( pub fn emit_param( param: &Rc, - shared_types: Rc>, + shared_types: Rc>, source_indices: &Rc>>, - read_only_params: Rc>, + read_only_params: Rc>, ) -> String { { let n = param_node_type_expr(¶m); let ty = emit_rust_param_type(&n, &shared_types, &source_indices); let pname = param_node_name_at(param.clone(), source_indices.clone()); let is_callable_param = ((n.params.clone().len() as i64) > 0); - let is_borrowable = ((v2_rt::map_contains_key(&read_only_params, pname.clone()) + let is_borrowable = ((set_contains(read_only_params, pname.clone()) && (is_callable_param == false)) && needs_reference_node(&n, source_indices.clone())); let final_ty = if is_borrowable { @@ -4520,7 +4531,7 @@ pub fn emit_param( pub fn emit_inferred( inferred: Rc, - shared_types: Rc>, + shared_types: Rc>, source_indices: Rc>>, ) -> String { v2_rt::concat( @@ -4706,7 +4717,7 @@ pub fn has_string_lit_with_bind(arms: &Rc>>) -> bool { pub fn emit_pattern( pattern: Rc, - shared_types: Rc>, + shared_types: Rc>, scrut_type: String, source_indices: Rc>>, emit_info: Rc, @@ -4759,7 +4770,7 @@ pub fn emit_variant_pattern( name: &String, parent_enum: Option, field_bindings: &Rc>>, - shared_types: Rc>, + shared_types: Rc>, scrut_type: &String, source_indices: Rc>>, emit_info: &Rc, @@ -4820,17 +4831,8 @@ pub fn emit_variant_pattern( ), None => name.clone(), }; - let is_fielded = - match v2_rt::map_get(&emit_info.fielded_variants.clone(), fielded_key) { - Some(true) => true, - _ => match v2_rt::map_get( - &emit_info.fielded_variants.clone(), - qualified.clone(), - ) { - Some(true) => true, - _ => false, - }, - }; + let is_fielded = set_contains(emit_info.fielded_variants.clone(), fielded_key) + || set_contains(emit_info.fielded_variants.clone(), qualified.clone()); if is_fielded { v2_rt::concat(qualified.clone(), " { .. }".to_string()) } else { @@ -4860,19 +4862,12 @@ pub fn emit_variant_pattern( ), None => name.clone(), }; - let is_fielded2 = match v2_rt::map_get( - &emit_info.fielded_variants.clone(), - fielded_key2, - ) { - Some(true) => true, - _ => match v2_rt::map_get( - &emit_info.fielded_variants.clone(), - qualified.clone(), - ) { - Some(true) => true, - _ => false, - }, - }; + let is_fielded2 = + set_contains(emit_info.fielded_variants.clone(), fielded_key2) + || set_contains( + emit_info.fielded_variants.clone(), + qualified.clone(), + ); if is_fielded2 { v2_rt::concat(qualified.clone(), " { .. }".to_string()) } else { @@ -4988,7 +4983,7 @@ pub fn field_needs_rc_ref(field_name: String, rc_analysis: Rc pub fn analyze_rc_pattern( pattern: Rc, scrut_type: String, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, source_indices: Rc>>, ) -> Rc { @@ -5034,7 +5029,7 @@ pub fn analyze_rc_pattern( &scrut_type, emit_info.type_summaries.clone(), ) { - Some(enum_name) => emit_map_has(shared_types.clone(), enum_name.clone()), + Some(enum_name) => set_contains(shared_types.clone(), enum_name.clone()), None => false, }; let ref_bound_fields = Rc::new({ @@ -5081,7 +5076,7 @@ pub fn analyze_rc_match( scrutinee: &Rc, arms: Rc>>, scrut_type: String, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: Rc, source_indices: &Rc>>, ) -> RcMatchAnalysis { @@ -5108,7 +5103,7 @@ pub fn analyze_rc_match( let scrutinee_is_rc_wrapped = match scrutinee.inferred.clone().as_deref().cloned() { Some(InferredNode::Resolved { node: rt, .. }) => { if (((rt.children.clone().len() as i64) == 0) && (rt.ident_span.clone() != None)) { - emit_map_has( + set_contains( shared_types.clone(), authored_name_at(source_indices.clone(), &rt), ) @@ -5152,7 +5147,7 @@ pub fn analyze_rc_match( pub fn emit_pattern_rc_aware( pattern: Rc, rc_analysis: Rc, - shared_types: Rc>, + shared_types: Rc>, scrut_type: String, source_indices: Rc>>, emit_info: Rc, @@ -5184,7 +5179,7 @@ pub fn emit_variant_pattern_rc_aware( parent_enum: Option, field_bindings: &Rc>>, rc_analysis: Rc, - shared_types: &Rc>, + shared_types: &Rc>, scrut_type: &String, source_indices: &Rc>>, emit_info: &Rc, @@ -5253,17 +5248,8 @@ pub fn emit_variant_pattern_rc_aware( ), None => name.clone(), }; - let is_fielded = - match v2_rt::map_get(&emit_info.fielded_variants.clone(), fielded_key) { - Some(true) => true, - _ => match v2_rt::map_get( - &emit_info.fielded_variants.clone(), - qualified.clone(), - ) { - Some(true) => true, - _ => false, - }, - }; + let is_fielded = set_contains(emit_info.fielded_variants.clone(), fielded_key) + || set_contains(emit_info.fielded_variants.clone(), qualified.clone()); if is_fielded { v2_rt::concat(qualified.clone(), " { .. }".to_string()) } else { @@ -5293,19 +5279,12 @@ pub fn emit_variant_pattern_rc_aware( ), None => name.clone(), }; - let is_fielded2 = match v2_rt::map_get( - &emit_info.fielded_variants.clone(), - fielded_key2, - ) { - Some(true) => true, - _ => match v2_rt::map_get( - &emit_info.fielded_variants.clone(), - qualified.clone(), - ) { - Some(true) => true, - _ => false, - }, - }; + let is_fielded2 = + set_contains(emit_info.fielded_variants.clone(), fielded_key2) + || set_contains( + emit_info.fielded_variants.clone(), + qualified.clone(), + ); if is_fielded2 { v2_rt::concat(qualified.clone(), " { .. }".to_string()) } else { @@ -5408,7 +5387,7 @@ pub fn emit_variant_pattern_rc_aware( pub fn rc_pattern_preludes( mut pattern: Rc, mut rc_analysis: Rc, - mut shared_types: Rc>, + mut shared_types: Rc>, mut source_indices: Rc>>, mut emit_info: Rc, ) -> String { @@ -5504,7 +5483,7 @@ pub fn rc_pattern_preludes( pub fn explicit_record_struct_name( type_name: Option, inferred_node: &Rc, - shared_types: Rc>, + shared_types: Rc>, source_indices: Rc>>, ) -> Option { { @@ -5650,7 +5629,7 @@ pub fn emit_var_ref( name: &String, binding_kind: &Option>, resolved_type: &Option>, - shared_types: Rc>, + shared_types: Rc>, registry: Rc>>, emit_info: &Rc, source_indices: Rc>>, @@ -5666,7 +5645,7 @@ pub fn emit_var_ref( emit_keyword(name.clone(), RenderTarget::Rust) } else { { - let moves_by_value = emit_map_has(emit_info.movable.clone(), name.clone()); + let moves_by_value = set_contains(emit_info.movable.clone(), name.clone()); let sharing = language_spec(RenderTarget::Rust).sharing.clone(); let variant_parent = effective_variant_parent( &name, @@ -5681,7 +5660,7 @@ pub fn emit_var_ref( v2_rt::concat(enum_name.clone(), "::".to_string()), name.clone(), ); - if emit_map_has(shared_types, enum_name.clone()) { + if set_contains(shared_types, enum_name.clone()) { v2_rt::concat( v2_rt::concat("Rc::new(".to_string(), qualified), ")".to_string(), @@ -5749,7 +5728,7 @@ pub fn emit_typed_expr_base( registry: Rc>>, scope: &Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { { @@ -5781,7 +5760,7 @@ pub fn emit_typed_expr_base( v2_rt::concat(enum_name.clone(), "::".to_string()), n.clone(), ); - if emit_map_has(shared_types, enum_name.clone()) { + if set_contains(shared_types, enum_name.clone()) { v2_rt::concat( v2_rt::concat("Rc::new(".to_string(), qualified), ")".to_string(), @@ -5826,7 +5805,7 @@ pub fn emit_typed_field_access( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { { @@ -5944,7 +5923,7 @@ pub fn emit_typed_field_access( base.clone(), scope.type_env.clone().source_indices.clone(), ); - emit_map_has(emit_info.owned_bindings.clone(), base_name) + set_contains(emit_info.owned_bindings.clone(), base_name) } _ => false, }; @@ -6070,7 +6049,7 @@ pub fn rust_runtime_bridge_name(function_name: String) -> String { pub fn rust_empty_map_value_type_str( map_type: Rc, - shared_types: Rc>, + shared_types: Rc>, source_indices: Rc>>, ) -> String { match map_type.children.clone().get(1 as usize).cloned() { @@ -6089,7 +6068,7 @@ pub fn rust_empty_map_value_type_str( pub fn rust_empty_map_kv_type_str( map_type: &Rc, - shared_types: &Rc>, + shared_types: &Rc>, source_indices: &Rc>>, ) -> String { { @@ -6159,7 +6138,7 @@ pub fn rust_wrap_runtime_collection_result( pub fn emit_rust_expr_var( expr: &Rc, registry: Rc>>, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, source_indices: &Rc>>, ) -> String { @@ -6188,7 +6167,7 @@ pub fn emit_rust_expr_field_access( registry: Rc>>, scope: &Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { { @@ -6243,7 +6222,7 @@ pub fn emit_rust_expr_call( registry: Rc>>, scope: &Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { match (*expr.expr_data.clone()).clone() { @@ -6272,7 +6251,7 @@ pub fn emit_rust_expr_method_call( registry: Rc>>, scope: &Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { match (*expr.expr_data.clone()).clone() { @@ -6309,7 +6288,7 @@ pub fn emit_rust_expr_match( registry: Rc>>, scope: Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { match (*expr.expr_data.clone()).clone() { @@ -6338,7 +6317,7 @@ pub fn emit_rust_expr_if( registry: Rc>>, scope: Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { match (*expr.expr_data.clone()).clone() { @@ -6360,7 +6339,7 @@ pub fn emit_rust_expr_let( registry: Rc>>, scope: &Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { match (*expr.expr_data.clone()).clone() { @@ -6392,7 +6371,7 @@ pub fn emit_rust_expr_record_lit( registry: Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: Rc, ) -> String { match (*expr.expr_data.clone()).clone() { @@ -6421,7 +6400,7 @@ pub fn emit_rust_expr_record_lit( }, }; if ((rc_name.clone().as_str() != "".to_string().as_str()) - && emit_map_has(shared_types.clone(), rc_name.clone())) + && set_contains(shared_types.clone(), rc_name.clone())) { v2_rt::concat(v2_rt::concat("Rc::new(".to_string(), raw), ")".to_string()) } else { @@ -6440,7 +6419,7 @@ pub fn emit_rust_expr_string_interp( registry: Rc>>, scope: Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { match (*expr.expr_data.clone()).clone() { @@ -6478,7 +6457,7 @@ pub fn emit_rust_expr_block( registry: Rc>>, scope: Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { match (*expr.expr_data.clone()).clone() { @@ -6502,7 +6481,7 @@ pub fn emit_rust_expr_cast( registry: Rc>>, scope: &Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { match (*expr.expr_data.clone()).clone() { @@ -6535,7 +6514,7 @@ pub fn emit_rust_expr_for_each( registry: Rc>>, scope: &Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { match (*expr.expr_data.clone()).clone() { @@ -6567,7 +6546,7 @@ pub fn emit_rust_expr_index( registry: Rc>>, scope: Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { match (*expr.expr_data.clone()).clone() { @@ -6588,7 +6567,7 @@ pub fn emit_rust_expr_slice( registry: Rc>>, scope: Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { match (*expr.expr_data.clone()).clone() { @@ -6619,7 +6598,7 @@ pub fn emit_rust_expr_bin_op( registry: Rc>>, scope: Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { match (*expr.expr_data.clone()).clone() { @@ -6650,7 +6629,7 @@ pub fn emit_typed_expr( registry: Rc>>, scope: &Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, fuel: i64, ) -> String { @@ -6829,7 +6808,7 @@ pub fn emit_cloned_arg( registry: Rc>>, scope: Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { emit_typed_expr( @@ -6906,7 +6885,7 @@ pub fn emit_typed_call_expr( registry: Rc>>, scope: Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { { @@ -6962,7 +6941,7 @@ pub fn emit_typed_call( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { { @@ -7078,7 +7057,7 @@ pub fn emit_typed_call( )]), }; let fields_str = field_strs.join(&", ".to_string()); - let needs_rc = emit_map_has(shared_types.clone(), type_name.clone()); + let needs_rc = set_contains(shared_types.clone(), type_name.clone()); let sharing = language_spec(RenderTarget::Rust).sharing.clone(); let spread = if needs_rc.clone() { apply_type_template1(sharing.deref_clone.clone(), base_str) @@ -7191,7 +7170,7 @@ pub fn emit_typed_call( let callee_read_only = match v2_rt::map_get(&emit_info.read_only_params_index.clone(), callee_qualified) { Some(m) => m.clone(), - None => v2_rt::rc_empty_map::(), + None => empty_set(), }; let callee_is_tco = match callee.clone() { Some(info) => { @@ -7224,7 +7203,7 @@ pub fn emit_typed_call( let n = param_node_type_expr(&pair.1.clone()); let is_callable = ((n.params.clone().len() as i64) > 0); let is_borrowable = - ((v2_rt::map_contains_key(&callee_read_only, pname.clone()) + ((set_contains(callee_read_only.clone(), pname.clone()) && (is_callable.clone() == false)) && needs_reference_node( &n, @@ -7378,7 +7357,7 @@ pub fn fill_default_args( registry: Rc>>, scope: Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> Rc>> { match callee { @@ -7454,7 +7433,7 @@ pub fn fill_op_default_args( registry: Rc>>, scope: Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> Rc>> { { @@ -7513,7 +7492,7 @@ pub fn fill_op_default_args( pub fn emit_nested_rt_concat( mut remaining: Rc>, mut acc: String, - mut shared_types: Rc>, + mut shared_types: Rc>, ) -> String { loop { match remaining.clone().first().cloned() { @@ -7560,7 +7539,7 @@ pub fn emit_typed_for_each( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { { @@ -7607,7 +7586,7 @@ pub fn emit_typed_index( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { { @@ -7663,7 +7642,7 @@ pub fn emit_typed_slice( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { { @@ -7718,7 +7697,7 @@ pub fn emit_typed_slice( pub fn collection_element_type( receiver_type: Option>, - shared_types: Rc>, + shared_types: Rc>, source_indices: &Rc>>, ) -> String { match receiver_type.as_deref().cloned() { @@ -7799,7 +7778,7 @@ pub fn lambda_param_type_strs( params: Rc>, param_nodes: Rc>>, fallback_types: Rc>, - shared_types: Rc>, + shared_types: Rc>, source_indices: Rc>>, ) -> Rc> { Rc::new({ @@ -7878,7 +7857,7 @@ pub fn emit_typed_collection_lambda( registry: Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: Rc, ) -> String { match (*lambda_expr.expr_data.clone()).clone() { @@ -7939,7 +7918,7 @@ pub fn emit_typed_fold_lambda( registry: Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { match (*lambda_expr.expr_data.clone()).clone() { @@ -8011,7 +7990,7 @@ pub fn emit_typed_fold_lambda( None => "".to_string(), }; let needs_unwrap = ((acc_name.clone().as_str() != "".to_string().as_str()) - && emit_map_has(emit_info.owned_bindings.clone(), acc_name.clone())); + && set_contains(emit_info.owned_bindings.clone(), acc_name.clone())); if needs_unwrap { { let acc_ident = emit_ident(acc_name.clone(), RenderTarget::Rust); @@ -8066,7 +8045,7 @@ pub fn emit_rust_fold_method_call( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { { @@ -8197,7 +8176,7 @@ pub fn emit_rust_fold_method_call( let structural_move = (fold_proof.eligible.clone() && fold_proof.whole_acc_single_use.clone()); let acc_unwrap = - (structural_unwrap && emit_map_has(shared_types.clone(), acc_type_name.clone())); + (structural_unwrap && set_contains(shared_types.clone(), acc_type_name.clone())); let fold_emit_info = if acc_unwrap { match (*fold_lambda_node.expr_data.clone()).clone() { ExprData::ExprLambda => { @@ -8214,10 +8193,9 @@ pub fn emit_rust_fold_method_call( ownership_index: emit_info.ownership_index.clone(), movable: emit_info.movable.clone(), variant_to_enum: emit_info.variant_to_enum.clone(), - owned_bindings: v2_rt::rc_map_insert( + owned_bindings: set_insert( emit_info.owned_bindings.clone(), acc_name.clone(), - true, ), read_only_params_index: emit_info.read_only_params_index.clone(), read_only_params: emit_info.read_only_params.clone(), @@ -8242,11 +8220,7 @@ pub fn emit_rust_fold_method_call( fielded_variants: emit_info.fielded_variants.clone(), shared_types: emit_info.shared_types.clone(), ownership_index: emit_info.ownership_index.clone(), - movable: v2_rt::rc_map_insert( - emit_info.movable.clone(), - acc_name.clone(), - true, - ), + movable: set_insert(emit_info.movable.clone(), acc_name.clone()), variant_to_enum: emit_info.variant_to_enum.clone(), owned_bindings: emit_info.owned_bindings.clone(), read_only_params_index: emit_info.read_only_params_index.clone(), @@ -8398,7 +8372,7 @@ pub fn emit_rust_sort_by_method_call( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { { @@ -8465,7 +8439,7 @@ pub fn emit_rust_map_method_call( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { { @@ -8632,7 +8606,7 @@ pub fn emit_rust_higher_order_method( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { { @@ -8757,7 +8731,7 @@ pub fn emit_rust_get_method_call( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { { @@ -8822,7 +8796,7 @@ pub fn emit_rust_with_method_call( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { { @@ -8893,7 +8867,7 @@ pub fn emit_rust_with_method_call( )]), }; let fields_str = field_strs.join(&", ".to_string()); - let needs_rc = emit_map_has(shared_types.clone(), type_name.clone()); + let needs_rc = set_contains(shared_types.clone(), type_name.clone()); let sharing = language_spec(RenderTarget::Rust).sharing.clone(); let spread = if needs_rc.clone() { apply_type_template1(sharing.deref_clone.clone(), base_str) @@ -8926,7 +8900,7 @@ pub fn emit_rust_first_method_call( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { match (*receiver.expr_data.clone()).clone() { @@ -9001,7 +8975,7 @@ pub fn emit_rust_generic_method_call( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { { @@ -9078,7 +9052,7 @@ pub fn emit_typed_method_call( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { if (method_semantics.clone() != None) { @@ -9493,7 +9467,7 @@ pub fn emit_typed_first_arg( registry: Rc>>, scope: Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { match args.first().cloned() { @@ -9516,7 +9490,7 @@ pub fn emit_typed_match( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { { @@ -9677,7 +9651,7 @@ pub fn emit_typed_match_arm( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, scrut_type: &String, match_result_type: Rc, @@ -9860,7 +9834,7 @@ pub fn emit_typed_if( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { { @@ -9903,7 +9877,7 @@ pub fn emit_typed_let( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { { @@ -10144,7 +10118,7 @@ pub fn emit_field_value_with_context( registry: Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { match (*field_value.expr_data.clone()).clone() { @@ -10216,7 +10190,7 @@ pub fn emit_field_value_with_context( None => variant_name.clone(), }; if ((rc_name.clone().as_str() != "".to_string().as_str()) - && emit_map_has(shared_types.clone(), rc_name.clone())) + && set_contains(shared_types.clone(), rc_name.clone())) { v2_rt::concat(v2_rt::concat("Rc::new(".to_string(), raw), ")".to_string()) } else { @@ -10301,7 +10275,7 @@ pub fn emit_typed_record_lit( registry: Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { { @@ -10408,7 +10382,7 @@ pub fn emit_typed_record_lit( ), "\n}".to_string(), ); - if emit_map_has(shared_types.clone(), resolved_sn.clone()) { + if set_contains(shared_types.clone(), resolved_sn.clone()) { v2_rt::concat( v2_rt::concat("Rc::new(".to_string(), struct_lit), ")".to_string(), @@ -10705,7 +10679,7 @@ pub fn emit_typed_bin_op( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { { @@ -10869,7 +10843,7 @@ pub fn emit_typed_string_interp( registry: Rc>>, scope: Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { { @@ -10955,7 +10929,7 @@ pub fn typed_interp_format_part( registry: Rc>>, scope: Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, has_interpolations: bool, ) -> Rc { @@ -10991,7 +10965,7 @@ pub fn emit_typed_block( registry: Rc>>, scope: Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { { @@ -11020,7 +10994,7 @@ pub fn emit_tco_init_block_stmts( mut scope: Rc, mut registry: Rc>>, mut depth: i64, - mut shared_types: Rc>, + mut shared_types: Rc>, mut emit_info: Rc, mut params: Rc>>, ) -> Rc { @@ -11081,7 +11055,7 @@ pub fn emit_tco_init_stmt( registry: Rc>>, scope: &Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { match (*stmt.expr_data.clone()).clone() { @@ -11138,7 +11112,7 @@ pub fn emit_typed_tco_body( registry: Rc>>, scope: Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { { @@ -11165,7 +11139,7 @@ pub fn emit_typed_tco_body( pub fn emit_rust_tco_non_self_call( frame: &Rc, registry: Rc>>, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { match (*frame.expr.clone().expr_data.clone()).clone() { @@ -11200,7 +11174,7 @@ pub fn emit_rust_tco_if( fn_name: &String, params: &Rc>>, registry: &Rc>>, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { match (*frame.expr.clone().expr_data.clone()).clone() { @@ -11289,7 +11263,7 @@ pub fn emit_rust_tco_match( fn_name: String, params: Rc>>, registry: &Rc>>, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { match (*frame.expr.clone().expr_data.clone()).clone() { @@ -11427,7 +11401,7 @@ pub fn emit_rust_tco_let( fn_name: String, params: &Rc>>, registry: &Rc>>, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { match (*frame.expr.clone().expr_data.clone()).clone() { @@ -11521,7 +11495,7 @@ pub fn emit_rust_tco_block( fn_name: String, params: &Rc>>, registry: &Rc>>, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, ) -> String { match (*frame.expr.clone().expr_data.clone()).clone() { @@ -11578,7 +11552,7 @@ pub fn emit_rust_tco_block( pub fn emit_rust_tco_default_return( frame: &Rc, registry: Rc>>, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { { @@ -11605,7 +11579,7 @@ pub fn emit_typed_tco_expr( registry: Rc>>, scope: Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, ) -> String { emit_shared_tco_expr( @@ -11692,7 +11666,7 @@ pub fn emit_typed_tco_match_arm( registry: &Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: &Rc, scrut_type: &String, ) -> String { @@ -11845,7 +11819,7 @@ pub fn emit_typed_tco_reassign( registry: Rc>>, scope: &Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: &Rc, ) -> String { { @@ -11939,7 +11913,7 @@ pub fn emit_typed_tco_reassign( let tco_movable = filtered_params.clone().iter().cloned().fold( emit_info.movable.clone(), - |m: Rc>, p: Rc| { + |m: Rc>, p: Rc| { let pname = param_node_name_at(p.clone(), si.clone()); let ref_count = filtered_arg_values.clone().iter().cloned().fold( 0, @@ -11952,7 +11926,7 @@ pub fn emit_typed_tco_reassign( }, ); if (ref_count.clone() <= 1) { - v2_rt::rc_map_insert(m.clone(), pname.clone(), true) + set_insert(m.clone(), pname.clone()) } else { m.clone() } @@ -12010,7 +11984,7 @@ pub fn emit_typed_tco_reassign( pub fn emit_service_def( item: &Rc, registry: Rc>>, - shared_types: Rc>, + shared_types: Rc>, env: &Rc, ) -> String { { @@ -12108,7 +12082,7 @@ pub fn emit_service_impl( transport: &Rc, op_children: &Rc>>, registry: Rc>>, - shared_types: Rc>, + shared_types: Rc>, env: &Rc, service_item: &Rc, ) -> String { @@ -12328,7 +12302,7 @@ pub fn emit_operation_method( op_node: &Rc, registry: &Rc>>, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, env: &Rc, service_item: Rc, ) -> String { @@ -12480,7 +12454,7 @@ pub fn emit_dry_run_branch_from_props( source_indices: &Rc>>, op_node: &Rc, env: Rc, - shared_types: Rc>, + shared_types: Rc>, ) -> String { { let log_line = v2_rt::concat( @@ -12584,7 +12558,7 @@ pub fn emit_transport_call( service_item: Rc, op_node: Rc, source_indices: &Rc>>, - shared_types: Rc>, + shared_types: Rc>, env: Rc, ) -> String { if is_rest_transport(transport.clone(), source_indices.clone()) { @@ -12628,7 +12602,7 @@ pub fn emit_rest_call( service_item: Rc, op_node: Rc, source_indices: &Rc>>, - shared_types: Rc>, + shared_types: Rc>, env: Rc, ) -> String { { @@ -13457,7 +13431,7 @@ pub fn emit_json_value_extract( pub fn emit_from_key_extraction( op_node: &Rc, source_indices: &Rc>>, - shared_types: Rc>, + shared_types: Rc>, env: Rc, ) -> String { { @@ -13595,7 +13569,7 @@ pub fn emit_response_code_handling( op_node: &Rc, transport: Rc, source_indices: &Rc>>, - shared_types: Rc>, + shared_types: Rc>, env: Rc, ) -> String { { @@ -13663,7 +13637,7 @@ pub fn emit_response_arm( use_from_key: bool, transport: Rc, source_indices: &Rc>>, - shared_types: Rc>, + shared_types: Rc>, env: Rc, ) -> String { { @@ -14279,7 +14253,7 @@ pub fn emit_local_call(op_name: String) -> String { pub fn emit_resource_def( item: &Rc, - shared_types: Rc>, + shared_types: Rc>, env: &Rc, ) -> String { { @@ -14327,7 +14301,7 @@ pub fn emit_resource_def( pub fn emit_capability_method( cap_node: &Rc, - shared_types: &Rc>, + shared_types: &Rc>, env: &Rc, ) -> String { { @@ -14430,7 +14404,7 @@ pub fn emit_data_def( registry: Rc>>, scope: &Rc, depth: i64, - shared_types: &Rc>, + shared_types: &Rc>, emit_info: Rc, ) -> String { { @@ -14440,8 +14414,8 @@ pub fn emit_data_def( scope.type_env.clone().source_indices.clone(), ); let fn_name = to_snake(name); - let needs_rc = v2_rt::map_contains_key( - &shared_types, + let needs_rc = set_contains( + shared_types.clone(), authored_name_at(scope.type_env.clone().source_indices.clone(), &type_node), ); if is_simple_type_node( @@ -14507,7 +14481,7 @@ pub fn emit_data_def_body( registry: Rc>>, scope: &Rc, depth: i64, - shared_types: Rc>, + shared_types: Rc>, emit_info: Rc, needs_rc: &bool, ) -> String { @@ -14710,7 +14684,7 @@ pub fn rust_test_signature_comment(projection: &Rc) -> String { ), emit_rust_param_type( ¶m_node_type_expr(&p), - &v2_rt::rc_empty_map::(), + &empty_set(), &projection.source_indices.clone(), ), )); @@ -14929,7 +14903,7 @@ pub struct WorkflowFunc { pub uses: Rc>>, pub service_names: Rc>, pub resolved_defaults: Rc>, - pub read_only_params: Rc>, + pub read_only_params: Rc>, pub source_indices: Rc>>, } @@ -14997,7 +14971,7 @@ pub fn to_workflow_func( registry: &Rc>>, module_items: Rc>>, source_indices: &Rc>>, - read_only_params_index: Rc>>>, + read_only_params_index: Rc>>>, ) -> Rc { { let item_name = authored_name_at(source_indices.clone(), &item); @@ -15027,7 +15001,7 @@ pub fn to_workflow_func( ); let ro_params = match v2_rt::map_get(&read_only_params_index, qualified) { Some(m) => m.clone(), - None => v2_rt::rc_empty_map::(), + None => empty_set(), }; Rc::new(WorkflowFunc { name: item_name.clone(), @@ -15068,7 +15042,7 @@ pub fn is_workflow_item( pub fn collect_workflow_funcs( modules: Rc>>, registry: Rc>>, - read_only_params_index: Rc>>>, + read_only_params_index: Rc>>>, ) -> Rc>> { Rc::new({ let mut __result = Vec::new(); @@ -15890,7 +15864,7 @@ pub fn emit_main_call_args(wf: &Rc, has_services: bool) -> String let ident = emit_ident(pname.clone(), RenderTarget::Rust); let n = param_node_type_expr(&p); let is_borrowable = - ((v2_rt::map_contains_key(&wf.read_only_params.clone(), pname.clone()) + ((set_contains(wf.read_only_params.clone(), pname.clone()) && ((n.params.clone().len() as i64) == 0)) && needs_reference_node(&n, wf.source_indices.clone())); if is_borrowable.clone() { diff --git a/src/v2/stage0/src/v2_compiler_infer.rs b/src/v2/stage0/src/v2_compiler_infer.rs index 8a2797bae99..f3882a7d5bf 100644 --- a/src/v2/stage0/src/v2_compiler_infer.rs +++ b/src/v2/stage0/src/v2_compiler_infer.rs @@ -48,7 +48,8 @@ pub use crate::v2_compiler_infer_items::{ pub use crate::v2_compiler_infer_lookup::{ field_summary_for_type, lookup_coproduct_common_field_node, lookup_field_type_node, lookup_func_sig, lookup_in_scope, map_key_type_in_env, map_value_type_in_env, - resolve_known_method_node, resolve_scrutinee_type_node, KnownMethodResolution, + resolve_known_method_node, resolve_scrutinee_type_node, set_element_type_in_env, + KnownMethodResolution, }; pub use crate::v2_compiler_infer_method::{ builtin_kernel_seed_diagnostics, infer_builtin_call_type, resolve_builtin_call_type, @@ -71,16 +72,20 @@ pub use crate::v2_compiler_infer_sigs::{ resolve_func_sigs, ResolveFuncSigsResult, ResolvedFuncEnv, ResolvedFuncSig, }; pub use crate::v2_compiler_infer_types::{ - bare_map_node, callable_inferred, child_type_node, emit_map_has, extract_optional_inner_node, - for_each_element_type_node, infer_binop_type_node, infer_literal_node, is_fully_resolved, - make_callable_type, make_container_type, method_receiver_element_node, node_is_collection, - node_is_element_collection, node_is_keyed_collection, node_type_compatible, node_type_deps, + bare_map_node, bare_set_node, callable_inferred, child_type_node, emit_map_has, + extract_optional_inner_node, for_each_element_type_node, infer_binop_type_node, + infer_literal_node, is_fully_resolved, make_callable_type, make_container_type, + method_receiver_element_node, node_is_collection, node_is_element_collection, + node_is_keyed_collection, node_is_set_collection, node_type_compatible, node_type_deps, node_type_equals, node_type_shape, nominal_type_ref, normalize_access_type_node, prefer_specific_type, resolve_type_variables_from_template, resolved_type, template_return_has_variables, template_return_is_receiver_self, KernelTypeBuild, }; pub use crate::v2_compiler_resolve::{ModuleGraph, ResolvedImport, ResolvedModule}; use crate::v2_rt; +use crate::v2_rt::{ + rc_empty_set as empty_set, rc_set_insert as set_insert, rc_set_union as set_union, set_contains, +}; use crate::v2_std_core::BinOp::{ Add, And, Div, Eq, Ge, Gt, Le, Lt, Mod, Mul, Ne, NullCoalesce, Or, Sub, }; @@ -494,13 +499,6 @@ pub fn nominal_type_binding(name: &String) -> Rc { }) } -pub fn set_has(m: Rc>, key: String) -> bool { - match v2_rt::map_get(&m, key) { - Some(_) => true, - None => false, - } -} - #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] pub struct FieldRecursionResult { pub shape: RecursionShape, @@ -510,7 +508,7 @@ pub struct FieldRecursionResult { pub fn classify_field_recursion( field_node: &Rc, parent_name: &String, - recursive_type_set: Rc>, + recursive_type_set: Rc>, source_indices: &Rc>>, ) -> Option> { { @@ -549,7 +547,7 @@ pub fn classify_field_recursion( }; let is_recursive_element = ((value_type.clone().as_str() == parent_name.clone().as_str()) - || set_has(recursive_type_set, value_type.clone())); + || set_contains(recursive_type_set, value_type.clone())); if is_recursive_element { { let elem = @@ -579,7 +577,7 @@ pub fn classify_field_recursion( } } } else { - if set_has(recursive_type_set, field_type_name.clone()) { + if set_contains(recursive_type_set, field_type_name.clone()) { match field_node.return_cardinality.clone() { Cardinality::CardOptional => Some(Rc::new(FieldRecursionResult { shape: RecursionShape::OptionalRecursion, @@ -602,7 +600,7 @@ pub fn collect_fields_inductive( fields: Rc>>, parent_name: String, variant_name: String, - recursive_type_set: Rc>, + recursive_type_set: Rc>, acc: Rc>>>>, source_indices: Rc>>, ) -> Rc>>>> { @@ -631,7 +629,7 @@ pub fn collect_fields_inductive( pub fn collect_item_inductive_fields( item: &Rc, - recursive_type_set: Rc>, + recursive_type_set: Rc>, source_indices: &Rc>>, ) -> Rc>>>> { { @@ -666,7 +664,7 @@ pub fn collect_item_inductive_fields( pub fn build_item_inductive_fields( items: Rc>>, - recursive_type_set: Rc>, + recursive_type_set: Rc>, source_indices: Rc>>, ) -> Rc>>>> { items.iter().cloned().fold( @@ -1029,10 +1027,33 @@ pub fn infer_tier2b_builtin_with_kernel_diags( }), } } else { - Rc::new(Tier2bBt { - bt: resolve_builtin_call_type(func_name.clone()), - kernel_diags: Rc::new(vec![]), - }) + if ((func_name.clone().as_str() == "set_insert".to_string().as_str()) + || (func_name.clone().as_str() == "set_union".to_string().as_str())) + { + Rc::new(Tier2bBt { + bt: match typed_args.first().cloned() { + Some(receiver_arg) => match arg_value(&receiver_arg) + .inferred + .clone() + .as_deref() + .cloned() + { + Some(InferredNode::Resolved { + node: receiver_type, + .. + }) => receiver_type.clone(), + _ => resolve_builtin_call_type(func_name.clone()), + }, + None => resolve_builtin_call_type(func_name.clone()), + }, + kernel_diags: Rc::new(vec![]), + }) + } else { + Rc::new(Tier2bBt { + bt: resolve_builtin_call_type(func_name.clone()), + kernel_diags: Rc::new(vec![]), + }) + } } } } @@ -2680,129 +2701,183 @@ match bare_m { } } } else { - if (infer_builtin_call_type(func_name.clone()) != None) { + if (func_name.clone().as_str() == "empty_set".to_string().as_str()) + { { - let tier2b = infer_tier2b_builtin_with_kernel_diags( - &func_name, - typed_args.clone(), - scope.clone(), - span.clone(), - ); - let bt = tier2b.bt.clone(); - let call_semantics = if (func_name.clone().as_str() - == "lookup".to_string().as_str()) - { - Some(CallSemantics::LookupCallSemantics) - } else { - Some(CallSemantics::PlainCallSemantics) - }; + let bare_s = bare_set_node(); + match expected.clone() { + Some(exp) => if node_is_set_collection(&exp, &scope.type_env.clone().source_indices.clone()) { Rc::new(InferResult { - typed: make_named_expr_node( - &func_name, - Rc::new(ExprData::ExprCall { - call_semantics: call_semantics, - descent_evidence: None, - }), - typed_arg_nodes, - Some(Rc::new(InferredNode::Resolved { node: bt })), - span.clone(), - node_name_span(&texpr), - ), - diagnostics: v2_rt::concat( - arg_diags, - tier2b.kernel_diags.clone(), - ), - }) + typed: make_named_expr_node(&func_name, Rc::new(ExprData::ExprCall { + call_semantics: Some(CallSemantics::PlainCallSemantics), + descent_evidence: None, +}), typed_arg_nodes, Some(Rc::new(InferredNode::Resolved { + node: exp.clone(), +})), span.clone(), node_name_span(&texpr)), + diagnostics: arg_diags, +}) + } else { + { + let empty_set_diags = v2_rt::concat(arg_diags, Rc::new(vec![inference_error("empty_set(): expected type is not Set<...>".to_string(), span.clone(), scope.module_name.clone())])); +match bare_s { + Some(set_t) => Rc::new(InferResult { + typed: make_named_expr_node(&func_name, Rc::new(ExprData::ExprCall { + call_semantics: Some(CallSemantics::PlainCallSemantics), + descent_evidence: None, +}), typed_arg_nodes, Some(Rc::new(InferredNode::Resolved { + node: set_t.clone(), +})), span.clone(), node_name_span(&texpr)), + diagnostics: empty_set_diags, +}), + None => Rc::new(InferResult { + typed: make_named_expr_node(&func_name, Rc::new(ExprData::ExprCall { + call_semantics: Some(CallSemantics::PlainCallSemantics), + descent_evidence: None, +}), typed_arg_nodes, Some(Rc::new(InferredNode::CompilerError { + message: "empty_set(): Set kernel container profile missing (compiler misconfigured)".to_string(), + span: span.clone(), +})), span.clone(), node_name_span(&texpr)), + diagnostics: v2_rt::concat(empty_set_diags, Rc::new(vec![inference_error("empty_set(): Set kernel container profile missing".to_string(), span.clone(), scope.module_name.clone())])), +}), +} +} + }, + None => match bare_s { + Some(set_t) => Rc::new(InferResult { + typed: make_named_expr_node(&func_name, Rc::new(ExprData::ExprCall { + call_semantics: Some(CallSemantics::PlainCallSemantics), + descent_evidence: None, +}), typed_arg_nodes, Some(Rc::new(InferredNode::Resolved { + node: set_t.clone(), +})), span.clone(), node_name_span(&texpr)), + diagnostics: arg_diags, +}), + None => Rc::new(InferResult { + typed: make_named_expr_node(&func_name, Rc::new(ExprData::ExprCall { + call_semantics: Some(CallSemantics::PlainCallSemantics), + descent_evidence: None, +}), typed_arg_nodes, Some(Rc::new(InferredNode::CompilerError { + message: "empty_set(): Set kernel container profile missing (compiler misconfigured)".to_string(), + span: span.clone(), +})), span.clone(), node_name_span(&texpr)), + diagnostics: v2_rt::concat(arg_diags, Rc::new(vec![inference_error("empty_set(): Set kernel container profile missing".to_string(), span.clone(), scope.module_name.clone())])), +}), +}, +} } } else { - { - let callable_local = match v2_rt::map_get( - &scope.locals.clone(), - func_name.clone(), - ) { - Some(binding) => { - if ((binding.resolved.clone().params.clone().len() - as i64) - > 0) + if (infer_builtin_call_type(func_name.clone()) != None) { + { + let tier2b = infer_tier2b_builtin_with_kernel_diags( + &func_name, + typed_args.clone(), + scope.clone(), + span.clone(), + ); + let bt = tier2b.bt.clone(); + let call_semantics = if (func_name.clone().as_str() + == "lookup".to_string().as_str()) + { + Some(CallSemantics::LookupCallSemantics) + } else { + Some(CallSemantics::PlainCallSemantics) + }; + Rc::new(InferResult { + typed: make_named_expr_node( + &func_name, + Rc::new(ExprData::ExprCall { + call_semantics: call_semantics, + descent_evidence: None, + }), + typed_arg_nodes, + Some(Rc::new(InferredNode::Resolved { + node: bt, + })), + span.clone(), + node_name_span(&texpr), + ), + diagnostics: v2_rt::concat( + arg_diags, + tier2b.kernel_diags.clone(), + ), + }) + } + } else { + { + let callable_local = match v2_rt::map_get( + &scope.locals.clone(), + func_name.clone(), + ) { + Some(binding) => { + if ((binding + .resolved + .clone() + .params + .clone() + .len() + as i64) + > 0) + { + Some(binding.resolved.clone()) + } else { + None + } + } + None => None, + }; + if (callable_local.clone() != None) { { - Some(binding.resolved.clone()) - } else { - None + let callable_type = match callable_local.clone() + { + Some(ct) => ct.clone(), + None => error_type(), + }; + let resolved_type = + callable_inferred(&callable_type); + Rc::new(InferResult { + typed: make_named_expr_node(&func_name, Rc::new(ExprData::ExprCall { + call_semantics: Some(CallSemantics::PlainCallSemantics), + descent_evidence: None, +}), typed_arg_nodes, Some(Rc::new(InferredNode::Resolved { + node: resolved_type, +})), span.clone(), node_name_span(&texpr)), + diagnostics: arg_diags, +}) } - } - None => None, - }; - if (callable_local.clone() != None) { - { - let callable_type = match callable_local.clone() { - Some(ct) => ct.clone(), - None => error_type(), - }; - let resolved_type = - callable_inferred(&callable_type); - Rc::new(InferResult { - typed: make_named_expr_node( - &func_name, - Rc::new(ExprData::ExprCall { - call_semantics: Some( - CallSemantics::PlainCallSemantics, - ), - descent_evidence: None, - }), - typed_arg_nodes, - Some(Rc::new(InferredNode::Resolved { - node: resolved_type, - })), - span.clone(), - node_name_span(&texpr), - ), - diagnostics: arg_diags, - }) - } - } else { - { - let type_match = lookup_type_by_name( - &scope.type_env.clone(), - func_name.clone(), - ); - let resolved_type = match type_match.clone() { - Some(tn) => tn.clone(), - None => error_type(), - }; - let call_diags = match type_match.clone() { - Some(_) => Rc::new(vec![]), - None => Rc::new(vec![inference_error( - v2_rt::concat( + } else { + { + let type_match = lookup_type_by_name( + &scope.type_env.clone(), + func_name.clone(), + ); + let resolved_type = match type_match.clone() { + Some(tn) => tn.clone(), + None => error_type(), + }; + let call_diags = match type_match.clone() { + Some(_) => Rc::new(vec![]), + None => Rc::new(vec![inference_error( v2_rt::concat( - "function '".to_string(), - func_name.clone(), - ), - "' not found in scope".to_string(), - ), - span.clone(), - scope.module_name.clone(), - )]), - }; - Rc::new(InferResult { - typed: make_named_expr_node( - &func_name, - Rc::new(ExprData::ExprCall { - call_semantics: Some( - CallSemantics::PlainCallSemantics, + v2_rt::concat( + "function '".to_string(), + func_name.clone(), + ), + "' not found in scope".to_string(), ), - descent_evidence: None, - }), - typed_arg_nodes, - Some(Rc::new(InferredNode::Resolved { - node: resolved_type, - })), - span.clone(), - node_name_span(&texpr), - ), - diagnostics: v2_rt::concat( - arg_diags, call_diags, - ), - }) + span.clone(), + scope.module_name.clone(), + )]), + }; + Rc::new(InferResult { + typed: make_named_expr_node(&func_name, Rc::new(ExprData::ExprCall { + call_semantics: Some(CallSemantics::PlainCallSemantics), + descent_evidence: None, +}), typed_arg_nodes, Some(Rc::new(InferredNode::Resolved { + node: resolved_type, +})), span.clone(), node_name_span(&texpr)), + diagnostics: v2_rt::concat(arg_diags, call_diags), +}) + } } } } @@ -10156,25 +10231,25 @@ pub fn build_type_env( } __result }); - let cycle_map = cycle_set_str.clone().iter().cloned().fold( - v2_rt::rc_empty_map::(), - |acc: Rc>, name: String| { - v2_rt::rc_map_insert(acc, name.clone(), true) + let cross_type_all_names = v2_rt::concat( + cycle_set_str.clone(), + Rc::new(v2_rt::map_keys(&compiler_recursive_types())), + ); + let cross_type_set_str = cross_type_all_names.clone().iter().cloned().fold( + empty_set(), + |acc: Rc>, name: String| { + set_insert(acc, name.clone()) + }, + ); + let cross_type_set = cross_type_all_names.clone().iter().cloned().fold( + v2_rt::rc_empty_map::(), + |acc: Rc>, name: String| { + v2_rt::rc_map_insert(acc, intern(&intern_table, &name).id.clone(), true) }, ); - let cross_type_set_str = v2_rt::rc_map_merge(cycle_map, compiler_recursive_types()); - let cross_type_set = Rc::new(v2_rt::map_keys(&cross_type_set_str)) - .iter() - .cloned() - .fold( - v2_rt::rc_empty_map::(), - |acc: Rc>, name: String| { - v2_rt::rc_map_insert(acc, intern(&intern_table, &name).id.clone(), true) - }, - ); let local_inductive_fields = build_item_inductive_fields( module_items(module.module.clone()), - cross_type_set_str.clone(), + cross_type_set_str, source_indices.clone(), ); let merged_inductive_fields = @@ -10617,25 +10692,25 @@ pub fn build_type_env_unresolved( } __result }); - let cycle_map = cycle_set_str.clone().iter().cloned().fold( - v2_rt::rc_empty_map::(), - |acc: Rc>, name: String| { - v2_rt::rc_map_insert(acc, name.clone(), true) + let cross_type_all_names = v2_rt::concat( + cycle_set_str.clone(), + Rc::new(v2_rt::map_keys(&compiler_recursive_types())), + ); + let cross_type_set_str = cross_type_all_names.clone().iter().cloned().fold( + empty_set(), + |acc: Rc>, name: String| { + set_insert(acc, name.clone()) + }, + ); + let cross_type_set = cross_type_all_names.clone().iter().cloned().fold( + v2_rt::rc_empty_map::(), + |acc: Rc>, name: String| { + v2_rt::rc_map_insert(acc, intern(&intern_table, &name).id.clone(), true) }, ); - let cross_type_set_str = v2_rt::rc_map_merge(cycle_map, compiler_recursive_types()); - let cross_type_set = Rc::new(v2_rt::map_keys(&cross_type_set_str)) - .iter() - .cloned() - .fold( - v2_rt::rc_empty_map::(), - |acc: Rc>, name: String| { - v2_rt::rc_map_insert(acc, intern(&intern_table, &name).id.clone(), true) - }, - ); let local_inductive_fields = build_item_inductive_fields( module_items(module.module.clone()), - cross_type_set_str.clone(), + cross_type_set_str, source_indices.clone(), ); let merged_inductive_fields = @@ -11275,9 +11350,9 @@ pub fn topo_resolve_types( }); } let remaining_set = remaining.clone().iter().cloned().fold( - v2_rt::rc_empty_map::(), - |acc: Rc>, name: String| { - v2_rt::rc_map_insert(acc, name.clone(), true) + empty_set(), + |acc: Rc>, name: String| { + set_insert(acc, name.clone()) }, ); let ready = Rc::new({ @@ -11291,7 +11366,7 @@ pub fn topo_resolve_types( || (dep.clone().as_str() == "None".to_string().as_str())) || (dep.clone().as_str() == "".to_string().as_str())) || is_recursive_type_by_name(&env, dep.clone())) - || (emit_map_has(remaining_set.clone(), dep.clone()) == false)) + || (set_contains(remaining_set.clone(), dep.clone()) == false)) { __all = false; break; @@ -11492,16 +11567,16 @@ pub fn collect_parent_envs( pub fn build_fielded_variants( modules: Rc>>, type_summaries: Rc>>, -) -> Rc> { +) -> Rc> { { let result = modules.iter().cloned().fold( - v2_rt::rc_empty_map::(), - |acc: Rc>, m: Rc| { + empty_set(), + |acc: Rc>, m: Rc| { let items = m.items.clone(); let si = m.type_env.clone().source_indices.clone(); items.clone().iter().cloned().fold( acc, - |inner: Rc>, item: Rc| { + |inner: Rc>, item: Rc| { let is_enum = match v2_rt::map_get( &type_summaries, authored_name_at(si.clone(), &item), @@ -11518,11 +11593,12 @@ pub fn build_fielded_variants( let variants = item.children.clone(); variants.clone().iter().cloned().fold( inner.clone(), - |vacc: Rc>, variant: Rc| { + |vacc: Rc>, + variant: Rc| { let has_fields = ((variant.children.clone().len() as i64) > 0); if has_fields.clone() { - v2_rt::rc_map_insert( + set_insert( vacc.clone(), v2_rt::concat( v2_rt::concat( @@ -11531,7 +11607,6 @@ pub fn build_fielded_variants( ), authored_name_at(si.clone(), &variant), ), - true, ) } else { vacc.clone() @@ -11571,20 +11646,22 @@ pub fn build_emit_graph_info(modules: &Rc>>) -> Rc(), - |acc: Rc>, m: Rc| { + empty_set(), + |acc: Rc>, m: Rc| { Rc::new(v2_rt::map_keys( &m.type_env.clone().recursive_type_set.clone(), )) .iter() .cloned() - .fold(acc, |inner: Rc>, ident: i64| { - v2_rt::rc_map_insert( - inner, - intern_str(m.type_env.clone().intern_table.clone(), ident.clone()), - true, - ) - }) + .fold( + acc, + |inner: Rc>, ident: i64| { + set_insert( + inner, + intern_str(m.type_env.clone().intern_table.clone(), ident.clone()), + ) + }, + ) }, ); let fielded = build_fielded_variants(modules.clone(), built.type_summaries.clone()); @@ -11593,13 +11670,17 @@ pub fn build_emit_graph_info(modules: &Rc>>) -> Rc(), - ownership_index: v2_rt::rc_empty_map::>>(), - movable: v2_rt::rc_empty_map::(), + shared_types: empty_set(), + ownership_index: v2_rt::rc_empty_map::>>( + ), + movable: empty_set(), variant_to_enum: vtoe, - owned_bindings: v2_rt::rc_empty_map::(), - read_only_params_index: v2_rt::rc_empty_map::>>(), - read_only_params: v2_rt::rc_empty_map::(), + owned_bindings: empty_set(), + read_only_params_index: v2_rt::rc_empty_map::< + String, + Rc>, + >(), + read_only_params: empty_set(), }) } } diff --git a/src/v2/stage0/src/v2_compiler_infer_cycle.rs b/src/v2/stage0/src/v2_compiler_infer_cycle.rs index f174744c84e..ef66a78b013 100644 --- a/src/v2/stage0/src/v2_compiler_infer_cycle.rs +++ b/src/v2/stage0/src/v2_compiler_infer_cycle.rs @@ -3,25 +3,18 @@ pub use crate::v2_compiler_infer_env::TypeBinding; use crate::v2_rt; +use crate::v2_rt::{ + rc_empty_set as empty_set, rc_set_insert as set_insert, rc_set_union as set_union, set_contains, +}; use crate::NonEmptyBTreeSet; use crate::NonEmptyVec; use std::collections::HashMap; use std::rc::Rc; -pub fn set_has(m: Rc>, key: String) -> bool { - { - let result = match v2_rt::map_get(&m, key) { - Some(_) => true, - None => false, - }; - result - } -} - pub fn compute_in_graph_deps( all_names: Rc>, deps_map: Rc>>>, - name_set: Rc>, + name_set: Rc>, ) -> Rc>>> { { let result = all_names.iter().cloned().fold( @@ -35,7 +28,7 @@ pub fn compute_in_graph_deps( let mut __result = Vec::new(); for d in deps.clone().iter().cloned() { if ((d.clone().as_str() != name.clone().as_str()) - && set_has(name_set.clone(), d.clone())) + && set_contains(name_set.clone(), d.clone())) { __result.push(d); } @@ -243,8 +236,8 @@ pub fn detect_type_cycles_kahn( __result }); let name_set = all_names.clone().iter().cloned().fold( - v2_rt::rc_empty_map::(), - |acc: Rc>, n: String| v2_rt::rc_map_insert(acc, n.clone(), true), + empty_set(), + |acc: Rc>, n: String| set_insert(acc, n.clone()), ); let local_deps = compute_in_graph_deps(all_names.clone(), deps_map.clone(), name_set); let self_refs = Rc::new({ @@ -270,19 +263,17 @@ pub fn detect_type_cycles_kahn( }); let cycle_members = kahn_remove_loop(&all_names, &local_deps); let sr_set = self_refs.iter().cloned().fold( - v2_rt::rc_empty_map::(), - |acc: Rc>, n: String| v2_rt::rc_map_insert(acc, n.clone(), true), + empty_set(), + |acc: Rc>, n: String| set_insert(acc, n.clone()), + ); + let cm_set = cycle_members.iter().cloned().fold( + sr_set, + |acc: Rc>, n: String| set_insert(acc, n.clone()), ); - let cm_set = cycle_members - .iter() - .cloned() - .fold(sr_set, |acc: Rc>, n: String| { - v2_rt::rc_map_insert(acc, n.clone(), true) - }); let result = Rc::new({ let mut __result = Vec::new(); for n in all_names.clone().iter().cloned() { - if set_has(cm_set.clone(), n.clone()) { + if set_contains(cm_set.clone(), n.clone()) { __result.push(n); } } diff --git a/src/v2/stage0/src/v2_compiler_infer_emit_info.rs b/src/v2/stage0/src/v2_compiler_infer_emit_info.rs index 67d890b8ea6..a7a0e40aaaa 100644 --- a/src/v2/stage0/src/v2_compiler_infer_emit_info.rs +++ b/src/v2/stage0/src/v2_compiler_infer_emit_info.rs @@ -6,6 +6,9 @@ pub use crate::v2_compiler_infer_types::{ child_type_node, emit_map_has, node_type_equals, normalize_access_type_node, }; use crate::v2_rt; +use crate::v2_rt::{ + rc_empty_set as empty_set, rc_set_insert as set_insert, rc_set_union as set_union, set_contains, +}; use crate::v2_std_core::Cardinality::CardOptional; use crate::v2_std_core::Connective::{Arrow, Conj, NoConnective}; use crate::v2_std_core::FieldAccessStyle::{EnumAccessor, StoredField, TupleFirst, TupleSecond}; @@ -59,15 +62,15 @@ pub struct TypeSummary { #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] pub struct EmitGraphInfo { pub type_summaries: Rc>>, - pub recursive_type_set: Rc>, - pub fielded_variants: Rc>, - pub shared_types: Rc>, - pub ownership_index: Rc>>>, - pub movable: Rc>, + pub recursive_type_set: Rc>, + pub fielded_variants: Rc>, + pub shared_types: Rc>, + pub ownership_index: Rc>>>, + pub movable: Rc>, pub variant_to_enum: Rc>, - pub owned_bindings: Rc>, - pub read_only_params_index: Rc>>>, - pub read_only_params: Rc>, + pub owned_bindings: Rc>, + pub read_only_params_index: Rc>>>, + pub read_only_params: Rc>, } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] @@ -78,15 +81,16 @@ pub struct EmitInfoBuildState { pub fn empty_emit_graph_info() -> Rc { Rc::new(EmitGraphInfo { type_summaries: v2_rt::rc_empty_map::>(), - recursive_type_set: v2_rt::rc_empty_map::(), - fielded_variants: v2_rt::rc_empty_map::(), - shared_types: v2_rt::rc_empty_map::(), - ownership_index: v2_rt::rc_empty_map::>>(), - movable: v2_rt::rc_empty_map::(), + recursive_type_set: empty_set(), + fielded_variants: empty_set(), + shared_types: empty_set(), + ownership_index: v2_rt::rc_empty_map::>>(), + movable: empty_set(), variant_to_enum: v2_rt::rc_empty_map::(), - owned_bindings: v2_rt::rc_empty_map::(), - read_only_params_index: v2_rt::rc_empty_map::>>(), - read_only_params: v2_rt::rc_empty_map::(), + owned_bindings: empty_set(), + read_only_params_index: v2_rt::rc_empty_map::>>( + ), + read_only_params: empty_set(), }) } @@ -97,10 +101,7 @@ pub fn variant_has_fields( ) -> bool { { let key = v2_rt::concat(v2_rt::concat(enum_name, "::".to_string()), variant_name); - match v2_rt::map_get(&emit_info.fielded_variants.clone(), key) { - Some(v) => v.clone(), - None => false, - } + set_contains(emit_info.fielded_variants.clone(), key) } } diff --git a/src/v2/stage0/src/v2_compiler_infer_lookup.rs b/src/v2/stage0/src/v2_compiler_infer_lookup.rs index 9b5cdb6a1fc..1ae7310ce2b 100644 --- a/src/v2/stage0/src/v2_compiler_infer_lookup.rs +++ b/src/v2/stage0/src/v2_compiler_infer_lookup.rs @@ -21,7 +21,7 @@ pub use crate::v2_compiler_infer_service::{ pub use crate::v2_compiler_infer_sigs::{ResolvedFuncEnv, ResolvedFuncSig}; pub use crate::v2_compiler_infer_types::{ child_type_node, emit_map_has, enrich_kernel_type, method_receiver_element_node, - node_is_keyed_collection, nominal_type_ref, normalize_access_type_node, + node_is_keyed_collection, node_is_set_collection, nominal_type_ref, normalize_access_type_node, }; use crate::v2_rt; use crate::v2_std_core::Cardinality::{CardOptional, Required}; @@ -291,6 +291,24 @@ pub fn map_key_type_in_env(type_node: Rc, env: &Rc) -> Option, env: &Rc) -> Option> { + { + let normed = normalize_access_type_node(type_node); + let resolved = resolve_scrutinee_type_node(env.clone(), normed); + let set_type = normalize_access_type_node(resolved); + if (node_is_set_collection(&set_type, &env.source_indices.clone()) + && ((set_type.children.clone().len() as i64) >= 1)) + { + match set_type.children.clone().first().cloned() { + Some(elem_type) => Some(elem_type.clone()), + None => None, + } + } else { + None + } + } +} + pub fn field_summary_for_type( base_type: Rc, env: &Rc, diff --git a/src/v2/stage0/src/v2_compiler_infer_method.rs b/src/v2/stage0/src/v2_compiler_infer_method.rs index a81cb662c63..9aec4db2d4d 100644 --- a/src/v2/stage0/src/v2_compiler_infer_method.rs +++ b/src/v2/stage0/src/v2_compiler_infer_method.rs @@ -120,7 +120,7 @@ pub fn builtin_function_registry() -> Rc>> { .clone(); let m = v2_rt::rc_map_insert(m.clone(), "empty_set".to_string(), set_ty.clone()); let m = v2_rt::rc_map_insert(m.clone(), "set_insert".to_string(), set_ty.clone()); - let m = v2_rt::rc_map_insert(m.clone(), "set_union".to_string(), set_ty); + let m = v2_rt::rc_map_insert(m.clone(), "set_union".to_string(), set_ty.clone()); let m = v2_rt::rc_map_insert(m.clone(), "map_contains_key".to_string(), bool_type()); let m = v2_rt::rc_map_insert(m.clone(), "map_has".to_string(), bool_type()); let m = v2_rt::rc_map_insert(m.clone(), "emit_map_has".to_string(), bool_type()); diff --git a/src/v2/stage0/src/v2_compiler_infer_types.rs b/src/v2/stage0/src/v2_compiler_infer_types.rs index 139b9825b17..19cf48a7f80 100644 --- a/src/v2/stage0/src/v2_compiler_infer_types.rs +++ b/src/v2/stage0/src/v2_compiler_infer_types.rs @@ -118,6 +118,14 @@ pub fn node_is_element_collection( (node_is_collection(&n, source_indices) && ((n.children.clone().len() as i64) == 1)) } +pub fn node_is_set_collection( + n: &Rc, + source_indices: &Rc>>, +) -> bool { + (node_is_element_collection(&n, source_indices.clone()) + && (authored_name_at(source_indices.clone(), &n).as_str() == "Set".to_string().as_str())) +} + pub fn is_product_type(n: Rc) -> bool { (n.connective.clone() == Connective::Conj) } @@ -245,6 +253,53 @@ pub fn bare_map_node() -> Option> { } } +pub fn bare_set_node() -> Option> { + match container_param_name("Set".to_string(), 0) { + Some(elem_id) => Some(Rc::new(Node { + name: "Set".to_string(), + span: make_span(0, 0), + ident_span: Some(make_span(0, 0)), + children: Rc::new(vec![Rc::new(Node { + name: elem_id.clone(), + span: make_span(0, 0), + ident_span: Some(make_span(0, 0)), + children: Rc::new(vec![]), + connective: Connective::NoConnective, + params: Rc::new(vec![]), + inferred: Some(Rc::new(InferredNode::Resolved { + node: type_variable_node(elem_id.clone()), + })), + return_cardinality: Cardinality::Required, + uses: Rc::new(vec![]), + body: None, + transport: None, + properties: Rc::new(vec![]), + type_annotation: None, + is_self_recursive: false, + has_non_tail_self_call: false, + match_pattern: None, + expr_data: Rc::new(ExprData::NoExprData), + ident: None, + })]), + connective: Connective::NoConnective, + params: Rc::new(vec![]), + inferred: None, + return_cardinality: Cardinality::Required, + uses: Rc::new(vec![]), + body: None, + transport: None, + properties: Rc::new(vec![]), + type_annotation: None, + is_self_recursive: false, + has_non_tail_self_call: false, + match_pattern: None, + expr_data: Rc::new(ExprData::NoExprData), + ident: None, + })), + None => None, + } +} + pub fn kernel_container_profile_miss_diagnostic(kind_name: String) -> Rc { { let msg = v2_rt::concat("missing kernel container profile: ".to_string(), kind_name); diff --git a/src/v2/stage0/src/v2_compiler_ownership.rs b/src/v2/stage0/src/v2_compiler_ownership.rs index 2abaab65c4d..921f510b79a 100644 --- a/src/v2/stage0/src/v2_compiler_ownership.rs +++ b/src/v2/stage0/src/v2_compiler_ownership.rs @@ -5,6 +5,9 @@ use self::EdgeKind::*; use self::OwnershipDecision::*; pub use crate::v2_compiler_emit::to_string; use crate::v2_rt; +use crate::v2_rt::{ + rc_empty_set as empty_set, rc_set_insert as set_insert, rc_set_union as set_union, set_contains, +}; use crate::v2_std_core::Cardinality::Required; use crate::v2_std_core::ExprData::{ ExprBlock, ExprCall, ExprError, ExprFieldAccess, ExprForEach, ExprIf, ExprLambda, ExprLet, @@ -692,7 +695,7 @@ pub fn is_owned_local(kind: Option>) -> bool { } } -pub fn build_movable_set(proof: Rc) -> Rc> { +pub fn build_movable_set(proof: Rc) -> Rc> { Rc::new({ let mut __result = Vec::new(); for usage in Rc::new(v2_rt::map_values(&proof.bindings.clone())) @@ -709,24 +712,24 @@ pub fn build_movable_set(proof: Rc) -> Rc> .iter() .cloned() .fold( - v2_rt::rc_empty_map::(), - |acc: Rc>, usage: Rc| { - v2_rt::rc_map_insert(acc, usage.name.clone(), true) + empty_set(), + |acc: Rc>, usage: Rc| { + set_insert(acc, usage.name.clone()) }, ) } pub fn build_read_only_params( proof: Rc, - param_names: Rc>, -) -> Rc> { + param_names: Rc>, +) -> Rc> { Rc::new({ let mut __result = Vec::new(); for usage in Rc::new(v2_rt::map_values(&proof.bindings.clone())) .iter() .cloned() { - if (((v2_rt::map_contains_key(¶m_names, usage.name.clone()) + if (((set_contains(param_names.clone(), usage.name.clone()) && is_owned_local(usage.binding_kind.clone())) && (binding_fan_out(usage.clone()) > 1)) && { @@ -753,9 +756,9 @@ pub fn build_read_only_params( .iter() .cloned() .fold( - v2_rt::rc_empty_map::(), - |acc: Rc>, usage: Rc| { - v2_rt::rc_map_insert(acc, usage.name.clone(), true) + empty_set(), + |acc: Rc>, usage: Rc| { + set_insert(acc, usage.name.clone()) }, ) } @@ -763,7 +766,7 @@ pub fn build_read_only_params( pub fn collect_callable_refs( texpr: &Rc, si: &Rc>>, -) -> Rc> { +) -> Rc> { stacker::maybe_grow(512 * 1024, 2 * 1024 * 1024, || { match (*texpr.expr_data.clone()).clone() { ExprData::ExprVar { @@ -771,26 +774,26 @@ pub fn collect_callable_refs( } => match bk.clone().as_deref().cloned() { Some(VarBindingKind::FunctionValueBinding) => { let n = expr_var_name_at(texpr.clone(), si.clone()); - v2_rt::rc_map_insert(v2_rt::rc_empty_map::(), n, true) + set_insert(empty_set(), n) } - _ => v2_rt::rc_empty_map::(), + _ => empty_set(), }, - ExprData::ExprLiteral { .. } => v2_rt::rc_empty_map::(), + ExprData::ExprLiteral { .. } => empty_set(), ExprData::ExprFieldAccess { .. } => { collect_callable_refs(&field_access_base(texpr.clone()), &si) } ExprData::ExprCall { .. } => texpr.children.clone().iter().cloned().fold( - v2_rt::rc_empty_map::(), - |acc: Rc>, a: Rc| { - v2_rt::rc_map_merge(acc, collect_callable_refs(&arg_value(&a), &si)) + empty_set(), + |acc: Rc>, a: Rc| { + set_union(acc, collect_callable_refs(&arg_value(&a), &si)) }, ), ExprData::ExprMethodCall { .. } => { let recv = collect_callable_refs(&method_receiver(texpr.clone()), &si); method_arg_nodes(texpr.clone()).iter().cloned().fold( recv.clone(), - |acc: Rc>, a: Rc| { - v2_rt::rc_map_merge(acc, collect_callable_refs(&arg_value(&a), &si)) + |acc: Rc>, a: Rc| { + set_union(acc, collect_callable_refs(&arg_value(&a), &si)) }, ) } @@ -799,51 +802,51 @@ pub fn collect_callable_refs( let then_br = collect_callable_refs(&if_then_branch(texpr.clone()), &si); let else_br = match if_else_branch(texpr.clone()) { Some(eb) => collect_callable_refs(&eb, &si), - None => v2_rt::rc_empty_map::(), + None => empty_set(), }; - v2_rt::rc_map_merge(v2_rt::rc_map_merge(cond, then_br), else_br) + set_union(set_union(cond, then_br), else_br) } ExprData::ExprMatch => { let scrut = collect_callable_refs(&match_scrutinee(texpr.clone()), &si); match_arm_nodes(texpr.clone()).iter().cloned().fold( scrut.clone(), - |acc: Rc>, arm: Rc| { - v2_rt::rc_map_merge(acc, collect_callable_refs(&arm_body(&arm), &si)) + |acc: Rc>, arm: Rc| { + set_union(acc, collect_callable_refs(&arm_body(&arm), &si)) }, ) } ExprData::ExprLet => { let val = collect_callable_refs(&let_value(texpr.clone()), &si); match let_body(texpr.clone()) { - Some(lb) => v2_rt::rc_map_merge(val, collect_callable_refs(&lb, &si)), + Some(lb) => set_union(val, collect_callable_refs(&lb, &si)), None => val, } } ExprData::ExprBlock => texpr.children.clone().iter().cloned().fold( - v2_rt::rc_empty_map::(), - |acc: Rc>, child: Rc| { - v2_rt::rc_map_merge(acc, collect_callable_refs(&child, &si)) + empty_set(), + |acc: Rc>, child: Rc| { + set_union(acc, collect_callable_refs(&child, &si)) }, ), ExprData::ExprReturn => match texpr.children.clone().first().cloned() { Some(child) => collect_callable_refs(&child, &si), - None => v2_rt::rc_empty_map::(), + None => empty_set(), }, ExprData::ExprLambda => collect_callable_refs(&lambda_body(texpr.clone()), &si), ExprData::ExprForEach => { let col = collect_callable_refs(&foreach_collection(texpr.clone()), &si); - v2_rt::rc_map_merge( + set_union( col, collect_callable_refs(&foreach_body(texpr.clone()), &si), ) } ExprData::ExprRecordLit { .. } => texpr.children.clone().iter().cloned().fold( - v2_rt::rc_empty_map::(), - |acc: Rc>, field: Rc| { - v2_rt::rc_map_merge(acc, collect_callable_refs(&arg_value(&field), &si)) + empty_set(), + |acc: Rc>, field: Rc| { + set_union(acc, collect_callable_refs(&arg_value(&field), &si)) }, ), - _ => v2_rt::rc_empty_map::(), + _ => empty_set(), } }) } diff --git a/src/v2/stage0/src/v2_compiler_parse.rs b/src/v2/stage0/src/v2_compiler_parse.rs index f70bb1e0fd1..4624a1e20bf 100644 --- a/src/v2/stage0/src/v2_compiler_parse.rs +++ b/src/v2/stage0/src/v2_compiler_parse.rs @@ -511,6 +511,14 @@ pub struct FromKeyResult { pub err: Option>, } +#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] +pub struct TypeInhabitsResult { + pub type_expr: Option>, + pub tokens: Rc>>, + pub ctx: Rc, + pub err: Option>, +} + #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] pub struct PostfixResult { pub expr: Rc, @@ -1193,6 +1201,67 @@ pub fn type_body_tokens_after_modifiers(tokens: Rc>>) -> Rc>>, + ctx: Rc, +) -> Rc { + if tok_is_ident_text(tokens.clone().first().cloned(), "inhabits".to_string()) { + { + let r = parse_type_expr( + &Rc::new( + tokens + .clone() + .iter() + .cloned() + .skip(1 as usize) + .collect::>(), + ), + &ctx, + ); + let after_type = skip_newlines(r.tokens.clone()); + if (has_err(r.err.clone()) || type_inhabits_clause_follow(after_type.clone())) { + Rc::new(TypeInhabitsResult { + type_expr: Some(r.type_expr.clone()), + tokens: after_type, + ctx: r.ctx.clone(), + err: r.err.clone(), + }) + } else { + Rc::new(TypeInhabitsResult { + type_expr: None, + tokens: tokens.clone(), + ctx: ctx, + err: None, + }) + } + } + } else { + Rc::new(TypeInhabitsResult { + type_expr: None, + tokens: tokens.clone(), + ctx: ctx, + err: None, + }) + } +} + +pub fn type_inhabits_clause_follow(tokens: Rc>>) -> bool { + ((tok_is_eq(tokens.clone().first().cloned()) || tok_is_lbrace(tokens.clone().first().cloned())) + || tok_is_eof(tokens.clone().first().cloned())) +} + +pub fn type_inhabits_properties(type_expr: Option>) -> Rc>> { + match type_expr { + Some(t) => Rc::new(vec![make_field_init_node( + &"inhabits".to_string(), + t.clone(), + t.span.clone(), + no_span(), + )]), + None => Rc::new(vec![]), + } +} + pub fn tok_is_newline(tok: Option>) -> bool { match tok { Some(t) => is_newline_shape(t.shape.clone()), @@ -2982,7 +3051,7 @@ pub fn parse_type_after_kw( let r = expect_ident(&tokens); if has_err(r.err.clone()) { return Rc::new(ItemResult { - item: dummy, + item: dummy.clone(), tokens: r.tokens.clone(), ctx: ctx.clone(), err: r.err.clone(), @@ -2996,6 +3065,18 @@ pub fn parse_type_after_kw( let tokens = skip_newlines(type_params_result.tokens.clone()); let ctx = type_params_result.ctx.clone(); let tokens = type_body_tokens_after_modifiers(tokens.clone()); + let inhabits_result = parse_optional_type_inhabits_clause(&tokens, ctx.clone()); + if has_err(inhabits_result.err.clone()) { + return Rc::new(ItemResult { + item: dummy.clone(), + tokens: inhabits_result.tokens.clone(), + ctx: inhabits_result.ctx.clone(), + err: inhabits_result.err.clone(), + }); + } + let tokens = inhabits_result.tokens.clone(); + let ctx = inhabits_result.ctx.clone(); + let type_properties = type_inhabits_properties(inhabits_result.type_expr.clone()); match (*eat(&tokens, Rc::new(ExpectedToken::ExpectLBrace))).clone() { EatResult::EatConsumed { tokens: __ec, .. } => { let r = parse_field_list(skip_newlines(__ec.clone()), ctx.clone()); @@ -3011,7 +3092,7 @@ pub fn parse_type_after_kw( body: None, connective: Connective::NoConnective, transport: None, - properties: Rc::new(vec![]), + properties: type_properties.clone(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -3057,7 +3138,7 @@ pub fn parse_type_after_kw( uses: Rc::new(vec![]), body: None, transport: None, - properties: Rc::new(vec![]), + properties: type_properties.clone(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -3083,6 +3164,7 @@ pub fn parse_type_after_kw( &name_span, &start_span, &type_params, + &type_properties, ) } EatResult::EatUnchanged { tokens: __eu, .. } => { @@ -3100,7 +3182,7 @@ pub fn parse_type_after_kw( uses: Rc::new(vec![]), body: None, transport: None, - properties: Rc::new(vec![]), + properties: type_properties.clone(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -3151,6 +3233,18 @@ pub fn parse_type_body_from_prefix( ident: None, }); let tokens = type_body_tokens_after_modifiers(skip_newlines(prefix.tokens.clone())); + let inhabits_result = parse_optional_type_inhabits_clause(&tokens, ctx.clone()); + if has_err(inhabits_result.err.clone()) { + return Rc::new(ItemResult { + item: named_dummy.clone(), + tokens: inhabits_result.tokens.clone(), + ctx: inhabits_result.ctx.clone(), + err: inhabits_result.err.clone(), + }); + } + let tokens = inhabits_result.tokens.clone(); + let ctx = inhabits_result.ctx.clone(); + let type_properties = type_inhabits_properties(inhabits_result.type_expr.clone()); match (*eat(&tokens, Rc::new(ExpectedToken::ExpectLBrace))).clone() { EatResult::EatConsumed { tokens: __ec, .. } => { let r = parse_field_list(skip_newlines(__ec.clone()), ctx.clone()); @@ -3192,7 +3286,7 @@ pub fn parse_type_body_from_prefix( uses: Rc::new(vec![]), body: None, transport: None, - properties: Rc::new(vec![]), + properties: type_properties, type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -3218,6 +3312,7 @@ pub fn parse_type_body_from_prefix( &name_span, &start_span, &type_params, + &type_properties, ) } EatResult::EatUnchanged { tokens: __eu, .. } => { @@ -3235,7 +3330,7 @@ pub fn parse_type_body_from_prefix( uses: Rc::new(vec![]), body: None, transport: None, - properties: Rc::new(vec![]), + properties: type_properties, type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -3263,6 +3358,7 @@ pub fn parse_type_body_after_eq( name_span: &Rc, start_span: &Rc, type_params: &Rc>>, + type_properties: &Rc>>, ) -> Rc { { let dummy = Rc::new(Node { @@ -3277,7 +3373,7 @@ pub fn parse_type_body_after_eq( body: None, connective: Connective::NoConnective, transport: None, - properties: Rc::new(vec![]), + properties: type_properties.clone(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -3352,7 +3448,7 @@ pub fn parse_type_body_after_eq( uses: Rc::new(vec![]), body: None, transport: None, - properties: Rc::new(vec![]), + properties: type_properties.clone(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -3411,7 +3507,7 @@ pub fn parse_type_body_after_eq( uses: Rc::new(vec![]), body: None, transport: None, - properties: Rc::new(vec![]), + properties: type_properties.clone(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -3467,7 +3563,7 @@ pub fn parse_type_body_after_eq( uses: Rc::new(vec![]), body: None, transport: None, - properties: Rc::new(vec![]), + properties: type_properties.clone(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, diff --git a/src/v2/stage0/src/v2_compiler_runtime_rust.rs b/src/v2/stage0/src/v2_compiler_runtime_rust.rs index 5c7fbc9d8fd..7ba22dc0c9e 100644 --- a/src/v2/stage0/src/v2_compiler_runtime_rust.rs +++ b/src/v2/stage0/src/v2_compiler_runtime_rust.rs @@ -12,10 +12,13 @@ pub fn rt_header() -> String { v2_rt::concat( v2_rt::concat( v2_rt::concat( - "//! Runtime shims for v2 compiler intrinsic operations.\n".to_string(), - "//! Generated by the v2 compiler -- do not edit.\n\n".to_string(), + v2_rt::concat( + "//! Runtime shims for v2 compiler intrinsic operations.\n".to_string(), + "//! Generated by the v2 compiler -- do not edit.\n\n".to_string(), + ), + "#![allow(unused_variables, dead_code)]\n\n".to_string(), ), - "#![allow(unused_variables, dead_code)]\n\n".to_string(), + "use std::collections::BTreeSet;\n".to_string(), ), "use std::collections::HashMap;\n".to_string(), ), @@ -32,7 +35,7 @@ pub fn rt_string_ops() -> String { } pub fn rt_collection_ops() -> String { - v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat("pub fn lookup(table: &HashMap, key: String) -> Option {\n".to_string(), " table.get(&key).cloned()\n".to_string()), "}\n\n".to_string()), "pub fn index_by String>(list: Vec, key_fn: F) -> HashMap {\n".to_string()), " let mut map = HashMap::new();\n".to_string()), " for item in list { let key = key_fn(&item); map.insert(key, item); }\n".to_string()), " map\n".to_string()), "}\n\n".to_string()), "pub fn empty_map() -> HashMap { HashMap::new() }\n\n".to_string()), "pub fn map_insert(mut map: HashMap, key: K, value: V) -> HashMap {\n".to_string()), " map.insert(key, value); map\n".to_string()), "}\n\n".to_string()), "pub fn map_merge(mut base: HashMap, overlay: HashMap) -> HashMap {\n".to_string()), " base.extend(overlay); base\n".to_string()), "}\n\n".to_string()), "pub fn map_get(m: &HashMap, key: K) -> Option {\n".to_string()), " m.get(&key).cloned()\n".to_string()), "}\n\n".to_string()), "pub fn map_keys(m: &HashMap) -> Vec { m.keys().cloned().collect() }\n\n".to_string()), "pub fn map_values(m: &HashMap) -> Vec { m.values().cloned().collect() }\n\n".to_string()), "pub fn list_concat(mut a: Vec, b: Vec) -> Vec { a.extend(b); a }\n\n".to_string()), "pub fn list_push(mut list: Vec, item: T) -> Vec { list.push(item); list }\n\n".to_string()), "pub fn append(list: Rc>, item: T) -> Vec {\n".to_string()), " let mut v = (*list).clone();\n".to_string()), " v.push(item);\n".to_string()), " v\n".to_string()), "}\n\n".to_string()), "pub fn chars_to_string(chars: &Rc>, start: i64, end: i64) -> String {\n".to_string()), " let len = chars.len();\n".to_string()), " let start = (start.max(0) as usize).min(len);\n".to_string()), " let end = (end.max(0) as usize).min(len).max(start);\n".to_string()), " chars[start..end]\n".to_string()), " .iter()\n".to_string()), " .filter_map(|&cp| char::from_u32(cp as u32))\n".to_string()), " .collect()\n".to_string()), "}\n\n".to_string()), "pub fn parse_int(s: String) -> Option { s.parse::().ok() }\n\n".to_string()), "pub fn map_contains_key(m: &HashMap, key: K) -> bool {\n".to_string()), " m.contains_key(&key)\n".to_string()), "}\n\n".to_string()), "pub fn map_has(m: &HashMap, key: K) -> bool {\n".to_string()), " m.contains_key(&key)\n".to_string()), "}\n\n".to_string()), "pub fn reverse(list: Rc>) -> Rc> {\n".to_string()), " let mut v = (*list).clone(); v.reverse(); Rc::new(v)\n".to_string()), "}\n\n".to_string()), "pub fn replace(s: String, from: String, to: String) -> String {\n".to_string()), " s.replace(&from, &to)\n".to_string()), "}\n\n".to_string()) + v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat(v2_rt::concat("pub fn lookup(table: &HashMap, key: String) -> Option {\n".to_string(), " table.get(&key).cloned()\n".to_string()), "}\n\n".to_string()), "pub fn index_by String>(list: Vec, key_fn: F) -> HashMap {\n".to_string()), " let mut map = HashMap::new();\n".to_string()), " for item in list { let key = key_fn(&item); map.insert(key, item); }\n".to_string()), " map\n".to_string()), "}\n\n".to_string()), "pub fn empty_map() -> HashMap { HashMap::new() }\n\n".to_string()), "pub fn map_insert(mut map: HashMap, key: K, value: V) -> HashMap {\n".to_string()), " map.insert(key, value); map\n".to_string()), "}\n\n".to_string()), "pub fn map_merge(mut base: HashMap, overlay: HashMap) -> HashMap {\n".to_string()), " base.extend(overlay); base\n".to_string()), "}\n\n".to_string()), "pub fn map_get(m: &HashMap, key: K) -> Option {\n".to_string()), " m.get(&key).cloned()\n".to_string()), "}\n\n".to_string()), "pub fn map_keys(m: &HashMap) -> Vec { m.keys().cloned().collect() }\n\n".to_string()), "pub fn map_values(m: &HashMap) -> Vec { m.values().cloned().collect() }\n\n".to_string()), "pub fn list_concat(mut a: Vec, b: Vec) -> Vec { a.extend(b); a }\n\n".to_string()), "pub fn list_push(mut list: Vec, item: T) -> Vec { list.push(item); list }\n\n".to_string()), "pub fn append(list: Rc>, item: T) -> Vec {\n".to_string()), " let mut v = (*list).clone();\n".to_string()), " v.push(item);\n".to_string()), " v\n".to_string()), "}\n\n".to_string()), "pub fn chars_to_string(chars: &Rc>, start: i64, end: i64) -> String {\n".to_string()), " let len = chars.len();\n".to_string()), " let start = (start.max(0) as usize).min(len);\n".to_string()), " let end = (end.max(0) as usize).min(len).max(start);\n".to_string()), " chars[start..end]\n".to_string()), " .iter()\n".to_string()), " .filter_map(|&cp| char::from_u32(cp as u32))\n".to_string()), " .collect()\n".to_string()), "}\n\n".to_string()), "pub fn parse_int(s: String) -> Option { s.parse::().ok() }\n\n".to_string()), "pub fn map_contains_key(m: &HashMap, key: K) -> bool {\n".to_string()), " m.contains_key(&key)\n".to_string()), "}\n\n".to_string()), "pub fn map_has(m: &HashMap, key: K) -> bool {\n".to_string()), " m.contains_key(&key)\n".to_string()), "}\n\n".to_string()), "pub fn rc_empty_set() -> Rc> {\n".to_string()), " Rc::new(BTreeSet::new())\n".to_string()), "}\n\n".to_string()), "pub fn rc_set_insert(mut s: Rc>, x: T) -> Rc> {\n".to_string()), " Rc::make_mut(&mut s).insert(x);\n".to_string()), " s\n".to_string()), "}\n\n".to_string()), "pub fn rc_set_union(a: Rc>, b: Rc>) -> Rc> {\n".to_string()), " let mut out = a;\n".to_string()), " for x in b.iter().cloned() {\n".to_string()), " Rc::make_mut(&mut out).insert(x);\n".to_string()), " }\n".to_string()), " out\n".to_string()), "}\n\n".to_string()), "pub fn set_contains(s: &BTreeSet, x: T) -> bool {\n".to_string()), " s.contains(&x)\n".to_string()), "}\n\n".to_string()), "pub fn reverse(list: Rc>) -> Rc> {\n".to_string()), " let mut v = (*list).clone(); v.reverse(); Rc::new(v)\n".to_string()), "}\n\n".to_string()), "pub fn replace(s: String, from: String, to: String) -> String {\n".to_string()), " s.replace(&from, &to)\n".to_string()), "}\n\n".to_string()) } pub fn rt_scanner_ops() -> String { diff --git a/src/v2/stage0/src/v2_rt.rs b/src/v2/stage0/src/v2_rt.rs index ffaae8d00d3..42846e62203 100644 --- a/src/v2/stage0/src/v2_rt.rs +++ b/src/v2/stage0/src/v2_rt.rs @@ -3,7 +3,7 @@ #![allow(unused_variables, dead_code)] -use std::collections::HashMap; +use std::collections::{BTreeSet, HashMap}; use std::rc::Rc; pub trait V2Concat { @@ -242,6 +242,29 @@ pub fn rc_empty_map() -> Rc> Rc::new(HashMap::new()) } +pub fn rc_empty_set() -> Rc> { + Rc::new(BTreeSet::new()) +} + +pub fn rc_set_insert(set: Rc>, value: T) -> Rc> { + let mut result = set; + Rc::make_mut(&mut result).insert(value); + result +} + +pub fn rc_set_union( + left: Rc>, + right: Rc>, +) -> Rc> { + let mut result = left; + Rc::make_mut(&mut result).extend(right.iter().cloned()); + result +} + +pub fn set_contains(set: Rc>, value: T) -> bool { + set.contains(&value) +} + impl V2Concat for Rc> { fn v2_concat(self, other: Rc>) -> Rc> { rc_list_concat(self, other) diff --git a/src/v2/tests/src/effects.rs b/src/v2/tests/src/effects.rs index 8eaa0744071..5f07a7f5126 100644 --- a/src/v2/tests/src/effects.rs +++ b/src/v2/tests/src/effects.rs @@ -25,7 +25,7 @@ fn parse_method_ok(method: &str) -> HttpMethod { } fn derive_result(name: &str, method: &str, path: &str) -> Rc { - derive_op_effect(name.to_string(), parse_method_ok(method), parse_ok(path)) + derive_op_effect(name.to_string(), &parse_method_ok(method), &parse_ok(path)) } fn derive(name: &str, method: &str, path: &str) -> Rc { @@ -186,7 +186,7 @@ fn delete_without_path_key_fails_closed() { #[test] fn derivation_consumes_typed_method_and_path_template_without_parsing_strings() { let path = parse_ok("/repos/{owner}/{repo}"); - let result = derive_op_effect("TypedBoundary".to_string(), HttpMethod::PUT, path); + let result = derive_op_effect("TypedBoundary".to_string(), &HttpMethod::PUT, &path); assert!(matches!( &*result, DeriveOpEffectResult::DerivedEffect { .. } diff --git a/src/v2/tests/src/parse.rs b/src/v2/tests/src/parse.rs index 3c75887550c..c132d079690 100644 --- a/src/v2/tests/src/parse.rs +++ b/src/v2/tests/src/parse.rs @@ -699,6 +699,51 @@ fn gist_transitive_closure_parse() { } } +#[test] +fn shared_std_types_accepts_type_inhabits_clause() { + assert_parses_strict("dsl/std/types.dag"); + let source = "module test\ntype Bool inhabits BooleanAlgebra = True | False\n"; + let result = parse_source(source); + assert!( + result.error.is_none(), + "v2 parser should accept shared type inhabits clauses: {:?}", + result.error + ); + let module = result.module.clone().expect("module"); + let type_item = module.children[0].clone(); + let inhabits = type_item + .properties + .iter() + .find(|property| property.name == "inhabits") + .expect("type inhabits clause should be carried as a structural property"); + let inhabits_expr = inhabits + .children + .first() + .expect("inhabits property should contain the parsed relation type"); + assert_eq!(inhabits_expr.name, "BooleanAlgebra"); +} + +#[test] +fn type_body_keeps_inhabits_as_identifier() { + let source = "module test\ntype X = inhabits | Other\n"; + let result = parse_source(source); + assert!( + result.error.is_none(), + "inhabits should remain a valid type-body identifier: {:?}", + result.error + ); + let module = result.module.clone().expect("module"); + let type_item = module.children[0].clone(); + assert!( + type_item + .properties + .iter() + .all(|property| property.name != "inhabits"), + "identifier-form type body must not become an inhabits property" + ); + assert_eq!(type_item.children[0].name, "inhabits"); +} + // ── keyword-as-name regression (dag_non_name_keywords authority) ─────── /// Keywords that ARE valid as field/type names should parse. diff --git a/src/v2/tests/src/pipeline.rs b/src/v2/tests/src/pipeline.rs index 943ebf594a0..f11f4633334 100644 --- a/src/v2/tests/src/pipeline.rs +++ b/src/v2/tests/src/pipeline.rs @@ -4505,7 +4505,7 @@ fn type_rendering_bare_list_not_map() { use v2_compiler::v2_compiler_emit::render_node_type; let list_node = test_leaf_node("List"); - let shared_types = Rc::new(HashMap::from([("List".to_string(), true)])); + let shared_types = Rc::new(std::collections::BTreeSet::from(["List".to_string()])); let rendered = render_node_type( &list_node, @@ -4531,7 +4531,7 @@ fn type_rendering_bare_map_stays_hashmap() { use v2_compiler::v2_compiler_emit::render_node_type; let map_node = test_leaf_node("Map"); - let shared_types = Rc::new(HashMap::from([("Map".to_string(), true)])); + let shared_types = Rc::new(std::collections::BTreeSet::from(["Map".to_string()])); let rendered = render_node_type( &map_node, @@ -4562,7 +4562,7 @@ fn type_rendering_named_conj_with_container_template() { })), ..(*test_leaf_node("")).clone() }); - let shared_types = Rc::new(HashMap::from([("FreeMonoid".to_string(), true)])); + let shared_types = Rc::new(std::collections::BTreeSet::from(["FreeMonoid".to_string()])); let rendered = render_node_type( &free_monoid_conj, @@ -10001,7 +10001,7 @@ fn count_ownership_violations( for proof in result.ownership.iter() { let movable = build_movable_set(proof.clone()); - for (name, _) in movable.iter() { + for name in movable.iter() { // The proof says this binding should move. // Check if the emitted code clones it instead. let clone_pattern = format!("{}.clone()", name); diff --git a/src/v3/compiler/src/bootstrap.rs b/src/v3/compiler/src/bootstrap.rs index f143f1657cc..7808769b179 100644 --- a/src/v3/compiler/src/bootstrap.rs +++ b/src/v3/compiler/src/bootstrap.rs @@ -67,14 +67,14 @@ // go through. A failed bootstrap is visible to callers without a // side channel. // -// **PB-1-e split — what stays here:** `patch_kernel_bool_boolean_algebra_inhabits`, -// `materialize_pipeline_realizations`, and `report_pipeline_authority_error` remain -// in this file because the `#[cfg(test)]` module below exercises them on -// `Dag::new()` snapshots. The regen-only fresh tokenize/parse/lower loop lives in +// **PB-1-e split — what stays here:** `materialize_pipeline_realizations` and +// `report_pipeline_authority_error` remain in this file because the +// `#[cfg(test)]` module below exercises them on `Dag::new()` snapshots. +// The regen-only fresh tokenize/parse/lower loop lives in // `bootstrap_regen_fresh.rs` (feature `bootstrap-regen-fresh`); do not duplicate // pipeline materialization there without relocating or rewriting these unit tests. -use crate::dag::{ArrowBody, Dag, Declaration, TemplateArgument, TypeConnective}; +use crate::dag::{ArrowBody, Dag, TypeConnective}; use crate::diagnostics::{Diagnostic, SourceSpan}; use crate::pipeline_authority::ordered_pipeline_stages; @@ -103,113 +103,6 @@ pub const BOOTSTRAP_FIXTURE_PATH_KEYS: &[&str] = &[ "src/v3/std/cross_target_coverage.dag", ]; -/// v3-only inhabitance for kernel `Bool` (Class 5 / Lane 1e-2b Path A). -/// -/// `dsl/std/types.dag` must stay free of `type … inhabits … =` so v2 can parse -/// every `dsl/` file on the stage0 / gist dependency surfaces (see -/// `v2-compiler-tests::parse::gist_transitive_closure_parse`). After the std -/// fixtures lower, wire `Bool` to `BooleanAlgebra` the same way surface -/// `inhabits` lowering would, without shadowing `Bool` (which would reallocate -/// sum variants and break `src/v3/std/algebra.dag` pattern wiring). -/// -/// Preconditions are checked: any failure attaches a bootstrap -/// `Diagnostic::ResolveError` via `Dag::attach_diagnostic` so compilation -/// fails closed instead of silently omitting `inhabits`. -/// -/// **Dissolution:** remove this patch once v2 accepts `inhabits` on sum types in -/// `dsl/` (then express `type Bool inhabits BooleanAlgebra = True | False` -/// in `dsl/std/types.dag` and delete this helper). -#[cfg_attr(not(feature = "bootstrap-regen-fresh"), allow(dead_code))] -pub(crate) fn patch_kernel_bool_boolean_algebra_inhabits(dag: &mut Dag) { - // Audit row #2 retirement (bootstrap.rs slice 1 of 2): - // The path-string `dsl/std/types.dag` is encapsulated behind - // `BootstrapAuthorityKey::for_kernel_bool()` and is no longer named - // in this file outside doc-comments. The participation gate is - // retained — `declaration_by_name` still rank-biases on `span.file` - // (audit row #14, separate owner) so a bare lookup could surface a - // non-kernel duplicate; we walk the declarations directly and gate - // by the authority's `path()` egress so the witness, not a free - // constant, is the structural source. Full dissolution (delete the - // gate; rely on a structural kernel-`Bool` `DeclarationId` accessor) - // lands when row #14 retires. - let bool_authority = crate::diagnostics::BootstrapAuthorityKey::for_kernel_bool(); - let Some(bool_decl) = dag - .declarations() - .iter() - .find(|d| d.name.as_deref() == Some("Bool") && d.span.file == bool_authority.path()) - else { - let authority_span = SourceSpan::new(bool_authority.path(), 0, 0); - dag.attach_bootstrap_diagnostic( - bool_authority, - Diagnostic::ResolveError { - name: "bootstrap: Lane 1e-2b Path A — kernel `Bool` not found in bootstrap Dag; \ - cannot set `Declaration.inhabits` for `BooleanAlgebra`" - .to_string(), - span: authority_span, - fixes: Vec::new(), - }, - ); - return; - }; - let bool_id = bool_decl.id; - let span_for_inst = bool_decl.span.clone(); - if dag.declaration(bool_id).inhabits.is_some() { - return; - } - let (ba_template, param_id) = { - let Some(ba) = dag.declaration_by_name("BooleanAlgebra") else { - dag.attach_bootstrap_diagnostic( - bool_authority, - Diagnostic::ResolveError { - name: "bootstrap: Lane 1e-2b Path A — `BooleanAlgebra` not present in the \ - bootstrap Dag; cannot wire kernel `Bool` `inhabits`" - .to_string(), - span: span_for_inst.clone(), - fixes: Vec::new(), - }, - ); - return; - }; - let Some(¶m_id) = ba.type_params.first() else { - dag.attach_bootstrap_diagnostic( - bool_authority, - Diagnostic::ResolveError { - name: - "bootstrap: Lane 1e-2b Path A — `BooleanAlgebra` has no type parameters; \ - cannot instantiate `BooleanAlgebra` for kernel `Bool` `inhabits`" - .to_string(), - span: span_for_inst.clone(), - fixes: Vec::new(), - }, - ); - return; - }; - (ba.id, param_id) - }; - let inst_id = dag.alloc_declaration_id(); - dag.push_declaration(Declaration { - id: inst_id, - name: None, - connective: TypeConnective::Instantiation { - template: ba_template, - arguments: vec![TemplateArgument { - parameter: param_id, - value: bool_id, - }], - }, - type_params: Vec::new(), - phantom_params: Vec::new(), - meta_tag: None, - specialization_parent: None, - inhabits: None, - value_body: None, - refinement: None, - nominal_opacity: None, - span: span_for_inst, - }); - dag.declaration_mut(bool_id).inhabits = Some(inst_id); -} - // DB-14 substrate accessors (`port` / `node` / `resolve_producer`) are // deliberately NOT materialized at bootstrap. Their Arrow bodies stay // `Unparsed` (the `{ host }` stub) because the accessor → realization @@ -523,103 +416,4 @@ mod tests { "expected exactly one bootstrap-attributed pipeline-stage diagnostic, got {matched}" ); } - - #[test] - fn kernel_bool_path_a_attaches_diagnostic_when_boolean_algebra_unresolvable() { - let mut dag = Dag::new(); - assert!( - dag.diagnostics().is_empty(), - "production bootstrap should satisfy Path A preconditions: {:?}", - dag.diagnostics().iter().collect::>() - ); - - let bool_id = dag - .declaration_by_name("Bool") - .expect("kernel Bool from std") - .id; - dag.declaration_mut(bool_id).inhabits = None; - - let ba_id = dag - .declaration_by_name("BooleanAlgebra") - .expect("BooleanAlgebra from std") - .id; - dag.declaration_mut(ba_id).name = Some("__test_hidden_BooleanAlgebra".to_string()); - - super::patch_kernel_bool_boolean_algebra_inhabits(&mut dag); - - assert!( - dag.declaration(bool_id).inhabits.is_none(), - "inhabits must stay unset when the patch cannot complete" - ); - assert!( - dag.diagnostics().iter().any(|(_, diag)| { - matches!( - diag, - Diagnostic::ResolveError { name, .. } - if name.contains("Lane 1e-2b Path A") && name.contains("BooleanAlgebra") - ) - }), - "expected bootstrap Path A diagnostic, got {:?}", - dag.diagnostics().iter().collect::>() - ); - } - - /// PB row 82 surface: detached phantom-port bootstrap diagnostics - /// must carry [`DiagnosticAttribution::BootstrapAuthority`] so - /// Verification can recover bootstrap origin without comparing - /// `SourceSpan.file` against a known authority path. Drives the - /// same Path A failure as the sibling test above and asserts the - /// attribution surface; consumer-side dispatch uses - /// `attribution.is_bootstrap()` and witness identity. - #[test] - fn kernel_bool_path_a_diagnostic_carries_bootstrap_authority_attribution() { - use crate::diagnostics::{BootstrapAuthorityKey, DiagnosticAttribution}; - - let mut dag = Dag::new(); - let bool_id = dag.declaration_by_name("Bool").expect("kernel Bool").id; - dag.declaration_mut(bool_id).inhabits = None; - let ba_id = dag - .declaration_by_name("BooleanAlgebra") - .expect("BooleanAlgebra") - .id; - dag.declaration_mut(ba_id).name = Some("__test_hidden_BooleanAlgebra".to_string()); - - super::patch_kernel_bool_boolean_algebra_inhabits(&mut dag); - - let expected_key = BootstrapAuthorityKey::for_kernel_bool(); - let mut bootstrap_attributed = 0usize; - for (port, diag, attribution) in dag.diagnostics().iter_attributed() { - // Sanity-check: the message we expect from this scenario. - let Diagnostic::ResolveError { name, .. } = diag else { - continue; - }; - if !(name.contains("Lane 1e-2b Path A") && name.contains("BooleanAlgebra")) { - continue; - } - // Consumer-side dispatch: no `span.file ==` compare here. - assert!( - attribution.is_bootstrap(), - "Path A diagnostic at port {port:?} must be DiagnosticAttribution::BootstrapAuthority(_), got {attribution:?}" - ); - assert_eq!( - attribution.as_bootstrap_authority(), - Some(&expected_key), - "attribution witness must match dsl/std/types.dag bootstrap-authority key" - ); - // Same answer through the per-port accessor. - assert_eq!( - dag.diagnostics().attribution(port), - Some(&DiagnosticAttribution::BootstrapAuthority( - expected_key.clone() - )) - ); - bootstrap_attributed += 1; - } - assert_eq!( - bootstrap_attributed, 1, - "expected exactly one bootstrap-attributed Path A diagnostic, got {bootstrap_attributed} \ - (table: {:?})", - dag.diagnostics().iter_attributed().collect::>() - ); - } } diff --git a/src/v3/compiler/src/bootstrap_generated.rs b/src/v3/compiler/src/bootstrap_generated.rs index 2de7ca6c8a9..a4876ac0cc4 100644 --- a/src/v3/compiler/src/bootstrap_generated.rs +++ b/src/v3/compiler/src/bootstrap_generated.rs @@ -59,7 +59,7 @@ fn bootstrapped_fixture_dag_nodes() -> Vec { id: NodeId(3), data: LiteralBits::Int("1".to_string()), output: PortId(4), - span: SourceSpan::new("dsl/std/types.dag", 10914, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10557, 10578), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -67,13 +67,13 @@ fn bootstrapped_fixture_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(3), PortId(4)], output: PortId(5), - span: SourceSpan::new("dsl/std/types.dag", 10914, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10557, 10578), })); nodes.push(Behavior::Value(ValueNode { id: NodeId(5), data: LiteralBits::Int("5".to_string()), output: PortId(6), - span: SourceSpan::new("dsl/std/types.dag", 10914, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10557, 10578), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -81,21 +81,21 @@ fn bootstrapped_fixture_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Le)), inputs: vec![PortId(3), PortId(6)], output: PortId(7), - span: SourceSpan::new("dsl/std/types.dag", 10914, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10557, 10578), })); nodes.push(Behavior::Transform(TransformNode { id: NodeId(7), target: TransformTarget::Operator(OperatorKind::Logical(LogicalOp::And)), inputs: vec![PortId(5), PortId(7)], output: PortId(8), - span: SourceSpan::new("dsl/std/types.dag", 10914, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10557, 10578), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(8), name: "".to_string(), value: PortId(8), params: vec![PortId(3)], - span: SourceSpan::new("dsl/std/types.dag", 10914, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10557, 10578), lane2_workflow: None, emit_participation: None, })); @@ -103,7 +103,7 @@ fn bootstrapped_fixture_dag_nodes() -> Vec { id: NodeId(9), data: LiteralBits::Int("100".to_string()), output: PortId(10), - span: SourceSpan::new("dsl/std/types.dag", 10966, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10609, 10634), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -111,13 +111,13 @@ fn bootstrapped_fixture_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(9), PortId(10)], output: PortId(11), - span: SourceSpan::new("dsl/std/types.dag", 10966, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10609, 10634), })); nodes.push(Behavior::Value(ValueNode { id: NodeId(11), data: LiteralBits::Int("599".to_string()), output: PortId(12), - span: SourceSpan::new("dsl/std/types.dag", 10966, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10609, 10634), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -125,21 +125,21 @@ fn bootstrapped_fixture_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Le)), inputs: vec![PortId(9), PortId(12)], output: PortId(13), - span: SourceSpan::new("dsl/std/types.dag", 10966, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10609, 10634), })); nodes.push(Behavior::Transform(TransformNode { id: NodeId(13), target: TransformTarget::Operator(OperatorKind::Logical(LogicalOp::And)), inputs: vec![PortId(11), PortId(13)], output: PortId(14), - span: SourceSpan::new("dsl/std/types.dag", 10966, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10609, 10634), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(14), name: "".to_string(), value: PortId(14), params: vec![PortId(9)], - span: SourceSpan::new("dsl/std/types.dag", 10966, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10609, 10634), lane2_workflow: None, emit_participation: None, })); @@ -147,7 +147,7 @@ fn bootstrapped_fixture_dag_nodes() -> Vec { id: NodeId(15), data: LiteralBits::Int("1".to_string()), output: PortId(16), - span: SourceSpan::new("dsl/std/types.dag", 11122, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10765, 10790), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -155,13 +155,13 @@ fn bootstrapped_fixture_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(15), PortId(16)], output: PortId(17), - span: SourceSpan::new("dsl/std/types.dag", 11122, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10765, 10790), })); nodes.push(Behavior::Value(ValueNode { id: NodeId(17), data: LiteralBits::Int("65535".to_string()), output: PortId(18), - span: SourceSpan::new("dsl/std/types.dag", 11122, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10765, 10790), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -169,21 +169,21 @@ fn bootstrapped_fixture_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Le)), inputs: vec![PortId(15), PortId(18)], output: PortId(19), - span: SourceSpan::new("dsl/std/types.dag", 11122, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10765, 10790), })); nodes.push(Behavior::Transform(TransformNode { id: NodeId(19), target: TransformTarget::Operator(OperatorKind::Logical(LogicalOp::And)), inputs: vec![PortId(17), PortId(19)], output: PortId(20), - span: SourceSpan::new("dsl/std/types.dag", 11122, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10765, 10790), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(20), name: "".to_string(), value: PortId(20), params: vec![PortId(15)], - span: SourceSpan::new("dsl/std/types.dag", 11122, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10765, 10790), lane2_workflow: None, emit_participation: None, })); @@ -191,7 +191,7 @@ fn bootstrapped_fixture_dag_nodes() -> Vec { id: NodeId(21), data: LiteralBits::Int("0".to_string()), output: PortId(22), - span: SourceSpan::new("dsl/std/types.dag", 13409, 13422), + span: SourceSpan::new("dsl/std/types.dag", 13052, 13065), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -199,14 +199,14 @@ fn bootstrapped_fixture_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(21), PortId(22)], output: PortId(23), - span: SourceSpan::new("dsl/std/types.dag", 13409, 13422), + span: SourceSpan::new("dsl/std/types.dag", 13052, 13065), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(23), name: "".to_string(), value: PortId(23), params: vec![PortId(21)], - span: SourceSpan::new("dsl/std/types.dag", 13409, 13422), + span: SourceSpan::new("dsl/std/types.dag", 13052, 13065), lane2_workflow: None, emit_participation: None, })); @@ -214,7 +214,7 @@ fn bootstrapped_fixture_dag_nodes() -> Vec { id: NodeId(24), data: LiteralBits::Int("0".to_string()), output: PortId(25), - span: SourceSpan::new("dsl/std/types.dag", 13454, 13467), + span: SourceSpan::new("dsl/std/types.dag", 13097, 13110), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -222,14 +222,14 @@ fn bootstrapped_fixture_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(24), PortId(25)], output: PortId(26), - span: SourceSpan::new("dsl/std/types.dag", 13454, 13467), + span: SourceSpan::new("dsl/std/types.dag", 13097, 13110), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(26), name: "".to_string(), value: PortId(26), params: vec![PortId(24)], - span: SourceSpan::new("dsl/std/types.dag", 13454, 13467), + span: SourceSpan::new("dsl/std/types.dag", 13097, 13110), lane2_workflow: None, emit_participation: None, })); @@ -237,7 +237,7 @@ fn bootstrapped_fixture_dag_nodes() -> Vec { id: NodeId(27), data: LiteralBits::Int("0".to_string()), output: PortId(28), - span: SourceSpan::new("dsl/std/types.dag", 13980, 13993), + span: SourceSpan::new("dsl/std/types.dag", 13623, 13636), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -245,14 +245,14 @@ fn bootstrapped_fixture_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(27), PortId(28)], output: PortId(29), - span: SourceSpan::new("dsl/std/types.dag", 13980, 13993), + span: SourceSpan::new("dsl/std/types.dag", 13623, 13636), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(29), name: "".to_string(), value: PortId(29), params: vec![PortId(27)], - span: SourceSpan::new("dsl/std/types.dag", 13980, 13993), + span: SourceSpan::new("dsl/std/types.dag", 13623, 13636), lane2_workflow: None, emit_participation: None, })); @@ -260,7 +260,7 @@ fn bootstrapped_fixture_dag_nodes() -> Vec { id: NodeId(30), data: LiteralBits::Int("0".to_string()), output: PortId(31), - span: SourceSpan::new("dsl/std/types.dag", 14025, 14038), + span: SourceSpan::new("dsl/std/types.dag", 13668, 13681), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -268,14 +268,14 @@ fn bootstrapped_fixture_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(30), PortId(31)], output: PortId(32), - span: SourceSpan::new("dsl/std/types.dag", 14025, 14038), + span: SourceSpan::new("dsl/std/types.dag", 13668, 13681), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(32), name: "".to_string(), value: PortId(32), params: vec![PortId(30)], - span: SourceSpan::new("dsl/std/types.dag", 14025, 14038), + span: SourceSpan::new("dsl/std/types.dag", 13668, 13681), lane2_workflow: None, emit_participation: None, })); @@ -10299,7 +10299,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { }, type_params: vec![], phantom_params: Vec::new(), - meta_tag: Some(DeclarationId(618)), + meta_tag: Some(DeclarationId(619)), specialization_parent: None, inhabits: None, value_body: Some(ValueBody::Map( @@ -10379,7 +10379,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { }, type_params: vec![], phantom_params: Vec::new(), - meta_tag: Some(DeclarationId(619)), + meta_tag: Some(DeclarationId(620)), specialization_parent: None, inhabits: None, value_body: Some(ValueBody::Map( @@ -10493,7 +10493,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { }, type_params: vec![], phantom_params: Vec::new(), - meta_tag: Some(DeclarationId(620)), + meta_tag: Some(DeclarationId(621)), specialization_parent: None, inhabits: None, value_body: Some(ValueBody::Map( @@ -10543,7 +10543,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { }, type_params: vec![], phantom_params: Vec::new(), - meta_tag: Some(DeclarationId(621)), + meta_tag: Some(DeclarationId(622)), specialization_parent: None, inhabits: None, value_body: Some(ValueBody::Map( @@ -10658,11 +10658,11 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { phantom_params: Vec::new(), meta_tag: None, specialization_parent: None, - inhabits: Some(DeclarationId(664)), + inhabits: Some(DeclarationId(512)), value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 7574, 7598), + span: SourceSpan::new("dsl/std/types.dag", 7187, 7241), }); declarations.push(Declaration { id: DeclarationId(127), @@ -10676,7 +10676,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 7666, 7675), + span: SourceSpan::new("dsl/std/types.dag", 7309, 7318), }); declarations.push(Declaration { id: DeclarationId(128), @@ -10690,7 +10690,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 7792, 7801), + span: SourceSpan::new("dsl/std/types.dag", 7435, 7444), }); declarations.push(Declaration { id: DeclarationId(129), @@ -10704,7 +10704,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 7802, 7812), + span: SourceSpan::new("dsl/std/types.dag", 7445, 7455), }); declarations.push(Declaration { id: DeclarationId(130), @@ -10721,7 +10721,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 8503, 8518), + span: SourceSpan::new("dsl/std/types.dag", 8146, 8161), }); declarations.push(Declaration { id: DeclarationId(131), @@ -10741,7 +10741,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 9282, 9322), + span: SourceSpan::new("dsl/std/types.dag", 8925, 8965), }); declarations.push(Declaration { id: DeclarationId(132), @@ -10755,7 +10755,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 9282, 9322), + span: SourceSpan::new("dsl/std/types.dag", 8925, 8965), }); declarations.push(Declaration { id: DeclarationId(133), @@ -10775,7 +10775,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 9323, 9366), + span: SourceSpan::new("dsl/std/types.dag", 8966, 9009), }); declarations.push(Declaration { id: DeclarationId(134), @@ -10789,7 +10789,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 9323, 9366), + span: SourceSpan::new("dsl/std/types.dag", 8966, 9009), }); declarations.push(Declaration { id: DeclarationId(135), @@ -10815,7 +10815,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 9367, 9417), + span: SourceSpan::new("dsl/std/types.dag", 9010, 9060), }); declarations.push(Declaration { id: DeclarationId(136), @@ -10829,7 +10829,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 9367, 9417), + span: SourceSpan::new("dsl/std/types.dag", 9010, 9060), }); declarations.push(Declaration { id: DeclarationId(137), @@ -10843,7 +10843,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 9367, 9417), + span: SourceSpan::new("dsl/std/types.dag", 9010, 9060), }); declarations.push(Declaration { id: DeclarationId(138), @@ -10860,7 +10860,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 10763, 10789), + span: SourceSpan::new("dsl/std/types.dag", 10406, 10432), }); declarations.push(Declaration { id: DeclarationId(139), @@ -10877,7 +10877,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 10857, 10883), + span: SourceSpan::new("dsl/std/types.dag", 10500, 10526), }); declarations.push(Declaration { id: DeclarationId(140), @@ -10889,9 +10889,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(622)), + refinement: Some(DeclarationId(623)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 10884, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10527, 10578), }); declarations.push(Declaration { id: DeclarationId(141), @@ -10903,9 +10903,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(623)), + refinement: Some(DeclarationId(624)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 10936, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10579, 10634), }); declarations.push(Declaration { id: DeclarationId(142), @@ -10922,7 +10922,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11065, 11091), + span: SourceSpan::new("dsl/std/types.dag", 10708, 10734), }); declarations.push(Declaration { id: DeclarationId(143), @@ -10934,9 +10934,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(624)), + refinement: Some(DeclarationId(625)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11092, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10735, 10790), }); declarations.push(Declaration { id: DeclarationId(144), @@ -10953,7 +10953,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11236, 11262), + span: SourceSpan::new("dsl/std/types.dag", 10879, 10905), }); declarations.push(Declaration { id: DeclarationId(145), @@ -10972,7 +10972,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { nominal_opacity: Some(NominalOpacity { permitted_accessors: vec![], }), - span: SourceSpan::new("dsl/std/types.dag", 11263, 11304), + span: SourceSpan::new("dsl/std/types.dag", 10906, 10947), }); declarations.push(Declaration { id: DeclarationId(146), @@ -10984,9 +10984,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(625)), + refinement: Some(DeclarationId(626)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11305, 11347), + span: SourceSpan::new("dsl/std/types.dag", 10948, 10990), }); declarations.push(Declaration { id: DeclarationId(147), @@ -11003,7 +11003,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11408, 11434), + span: SourceSpan::new("dsl/std/types.dag", 11051, 11077), }); declarations.push(Declaration { id: DeclarationId(148), @@ -11020,7 +11020,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11507, 11533), + span: SourceSpan::new("dsl/std/types.dag", 11150, 11176), }); declarations.push(Declaration { id: DeclarationId(149), @@ -11032,9 +11032,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(626)), + refinement: Some(DeclarationId(627)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11534, 11579), + span: SourceSpan::new("dsl/std/types.dag", 11177, 11222), }); declarations.push(Declaration { id: DeclarationId(150), @@ -11046,9 +11046,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(627)), + refinement: Some(DeclarationId(628)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11580, 11625), + span: SourceSpan::new("dsl/std/types.dag", 11223, 11268), }); declarations.push(Declaration { id: DeclarationId(151), @@ -11060,9 +11060,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(628)), + refinement: Some(DeclarationId(629)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11626, 11671), + span: SourceSpan::new("dsl/std/types.dag", 11269, 11314), }); declarations.push(Declaration { id: DeclarationId(152), @@ -11074,9 +11074,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(629)), + refinement: Some(DeclarationId(630)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 12306, 12365), + span: SourceSpan::new("dsl/std/types.dag", 11949, 12008), }); declarations.push(Declaration { id: DeclarationId(153), @@ -11088,9 +11088,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(630)), + refinement: Some(DeclarationId(631)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 12366, 12425), + span: SourceSpan::new("dsl/std/types.dag", 12009, 12068), }); declarations.push(Declaration { id: DeclarationId(154), @@ -11098,7 +11098,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { connective: TypeConnective::Conj { children: vec![Field { label: "segments".to_string(), - ty: DeclarationId(512), + ty: DeclarationId(513), }], }, type_params: vec![], @@ -11109,7 +11109,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 12426, 12478), + span: SourceSpan::new("dsl/std/types.dag", 12069, 12121), }); declarations.push(Declaration { id: DeclarationId(155), @@ -11117,7 +11117,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { connective: TypeConnective::Conj { children: vec![Field { label: "segments".to_string(), - ty: DeclarationId(513), + ty: DeclarationId(514), }], }, type_params: vec![], @@ -11128,7 +11128,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 12479, 12529), + span: SourceSpan::new("dsl/std/types.dag", 12122, 12172), }); declarations.push(Declaration { id: DeclarationId(156), @@ -11140,9 +11140,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(631)), + refinement: Some(DeclarationId(632)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 12530, 12573), + span: SourceSpan::new("dsl/std/types.dag", 12173, 12216), }); declarations.push(Declaration { id: DeclarationId(157), @@ -11171,7 +11171,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 13191, 13251), + span: SourceSpan::new("dsl/std/types.dag", 12834, 12894), }); declarations.push(Declaration { id: DeclarationId(158), @@ -11188,7 +11188,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 13351, 13377), + span: SourceSpan::new("dsl/std/types.dag", 12994, 13020), }); declarations.push(Declaration { id: DeclarationId(159), @@ -11200,9 +11200,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(632)), + refinement: Some(DeclarationId(633)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 13378, 13422), + span: SourceSpan::new("dsl/std/types.dag", 13021, 13065), }); declarations.push(Declaration { id: DeclarationId(160), @@ -11214,9 +11214,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(633)), + refinement: Some(DeclarationId(634)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 13423, 13467), + span: SourceSpan::new("dsl/std/types.dag", 13066, 13110), }); declarations.push(Declaration { id: DeclarationId(161), @@ -11228,9 +11228,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(634)), + refinement: Some(DeclarationId(635)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 13949, 13993), + span: SourceSpan::new("dsl/std/types.dag", 13592, 13636), }); declarations.push(Declaration { id: DeclarationId(162), @@ -11242,9 +11242,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(635)), + refinement: Some(DeclarationId(636)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 13994, 14038), + span: SourceSpan::new("dsl/std/types.dag", 13637, 13681), }); declarations.push(Declaration { id: DeclarationId(163), @@ -11256,9 +11256,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(636)), + refinement: Some(DeclarationId(637)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14562, 14617), + span: SourceSpan::new("dsl/std/types.dag", 14205, 14260), }); declarations.push(Declaration { id: DeclarationId(164), @@ -11270,9 +11270,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(637)), + refinement: Some(DeclarationId(638)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14618, 14672), + span: SourceSpan::new("dsl/std/types.dag", 14261, 14315), }); declarations.push(Declaration { id: DeclarationId(165), @@ -11284,9 +11284,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(638)), + refinement: Some(DeclarationId(639)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14673, 14726), + span: SourceSpan::new("dsl/std/types.dag", 14316, 14369), }); declarations.push(Declaration { id: DeclarationId(166), @@ -11298,9 +11298,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(639)), + refinement: Some(DeclarationId(640)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14727, 14784), + span: SourceSpan::new("dsl/std/types.dag", 14370, 14427), }); declarations.push(Declaration { id: DeclarationId(167), @@ -11312,9 +11312,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(640)), + refinement: Some(DeclarationId(641)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14785, 14842), + span: SourceSpan::new("dsl/std/types.dag", 14428, 14485), }); declarations.push(Declaration { id: DeclarationId(168), @@ -11326,9 +11326,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(641)), + refinement: Some(DeclarationId(642)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14843, 14898), + span: SourceSpan::new("dsl/std/types.dag", 14486, 14541), }); declarations.push(Declaration { id: DeclarationId(169), @@ -11340,9 +11340,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(642)), + refinement: Some(DeclarationId(643)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14899, 14955), + span: SourceSpan::new("dsl/std/types.dag", 14542, 14598), }); declarations.push(Declaration { id: DeclarationId(170), @@ -11354,9 +11354,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(643)), + refinement: Some(DeclarationId(644)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14956, 15012), + span: SourceSpan::new("dsl/std/types.dag", 14599, 14655), }); declarations.push(Declaration { id: DeclarationId(171), @@ -11368,9 +11368,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(644)), + refinement: Some(DeclarationId(645)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15013, 15071), + span: SourceSpan::new("dsl/std/types.dag", 14656, 14714), }); declarations.push(Declaration { id: DeclarationId(172), @@ -11382,9 +11382,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(645)), + refinement: Some(DeclarationId(646)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15302, 15373), + span: SourceSpan::new("dsl/std/types.dag", 14945, 15016), }); declarations.push(Declaration { id: DeclarationId(173), @@ -11396,9 +11396,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(646)), + refinement: Some(DeclarationId(647)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15374, 15445), + span: SourceSpan::new("dsl/std/types.dag", 15017, 15088), }); declarations.push(Declaration { id: DeclarationId(174), @@ -11410,9 +11410,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(647)), + refinement: Some(DeclarationId(648)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15446, 15513), + span: SourceSpan::new("dsl/std/types.dag", 15089, 15156), }); declarations.push(Declaration { id: DeclarationId(175), @@ -11424,9 +11424,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(648)), + refinement: Some(DeclarationId(649)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15514, 15575), + span: SourceSpan::new("dsl/std/types.dag", 15157, 15218), }); declarations.push(Declaration { id: DeclarationId(176), @@ -11438,9 +11438,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(649)), + refinement: Some(DeclarationId(650)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15655, 15697), + span: SourceSpan::new("dsl/std/types.dag", 15298, 15340), }); declarations.push(Declaration { id: DeclarationId(177), @@ -11452,9 +11452,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(650)), + refinement: Some(DeclarationId(651)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16082, 16124), + span: SourceSpan::new("dsl/std/types.dag", 15725, 15767), }); declarations.push(Declaration { id: DeclarationId(178), @@ -11471,7 +11471,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16249, 16282), + span: SourceSpan::new("dsl/std/types.dag", 15892, 15925), }); declarations.push(Declaration { id: DeclarationId(179), @@ -11480,15 +11480,15 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "Linux".to_string(), - ty: DeclarationId(514), + ty: DeclarationId(515), }, Field { label: "Macos".to_string(), - ty: DeclarationId(515), + ty: DeclarationId(516), }, Field { label: "Windows".to_string(), - ty: DeclarationId(516), + ty: DeclarationId(517), }, ], }, @@ -11500,7 +11500,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16668, 16711), + span: SourceSpan::new("dsl/std/types.dag", 16311, 16354), }); declarations.push(Declaration { id: DeclarationId(180), @@ -11509,19 +11509,19 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "Pure".to_string(), - ty: DeclarationId(517), + ty: DeclarationId(518), }, Field { label: "Transport".to_string(), - ty: DeclarationId(518), + ty: DeclarationId(519), }, Field { label: "SubDag".to_string(), - ty: DeclarationId(519), + ty: DeclarationId(520), }, Field { label: "Env".to_string(), - ty: DeclarationId(520), + ty: DeclarationId(521), }, ], }, @@ -11533,7 +11533,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16839, 16894), + span: SourceSpan::new("dsl/std/types.dag", 16482, 16537), }); declarations.push(Declaration { id: DeclarationId(181), @@ -11542,15 +11542,15 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "Template".to_string(), - ty: DeclarationId(521), + ty: DeclarationId(522), }, Field { label: "Generated".to_string(), - ty: DeclarationId(522), + ty: DeclarationId(523), }, Field { label: "Static".to_string(), - ty: DeclarationId(523), + ty: DeclarationId(524), }, ], }, @@ -11562,7 +11562,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16895, 16948), + span: SourceSpan::new("dsl/std/types.dag", 16538, 16591), }); declarations.push(Declaration { id: DeclarationId(182), @@ -11571,23 +11571,23 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "Xs".to_string(), - ty: DeclarationId(524), + ty: DeclarationId(525), }, Field { label: "S".to_string(), - ty: DeclarationId(525), + ty: DeclarationId(526), }, Field { label: "M".to_string(), - ty: DeclarationId(526), + ty: DeclarationId(527), }, Field { label: "L".to_string(), - ty: DeclarationId(527), + ty: DeclarationId(528), }, Field { label: "Xl".to_string(), - ty: DeclarationId(528), + ty: DeclarationId(529), }, ], }, @@ -11599,7 +11599,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16950, 16987), + span: SourceSpan::new("dsl/std/types.dag", 16593, 16630), }); declarations.push(Declaration { id: DeclarationId(183), @@ -11608,23 +11608,23 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "Stored".to_string(), - ty: DeclarationId(529), + ty: DeclarationId(530), }, Field { label: "PlatformInjected".to_string(), - ty: DeclarationId(530), + ty: DeclarationId(531), }, Field { label: "WorkloadIdentity".to_string(), - ty: DeclarationId(533), + ty: DeclarationId(534), }, Field { label: "InteractiveAuth".to_string(), - ty: DeclarationId(535), + ty: DeclarationId(536), }, Field { label: "Chained".to_string(), - ty: DeclarationId(537), + ty: DeclarationId(538), }, ], }, @@ -11636,7 +11636,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17235, 17557), + span: SourceSpan::new("dsl/std/types.dag", 16878, 17200), }); declarations.push(Declaration { id: DeclarationId(184), @@ -11645,47 +11645,47 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "X86_64".to_string(), - ty: DeclarationId(538), + ty: DeclarationId(539), }, Field { label: "X86".to_string(), - ty: DeclarationId(539), + ty: DeclarationId(540), }, Field { label: "Aarch64".to_string(), - ty: DeclarationId(540), + ty: DeclarationId(541), }, Field { label: "Arm".to_string(), - ty: DeclarationId(541), + ty: DeclarationId(542), }, Field { label: "Armv7".to_string(), - ty: DeclarationId(542), + ty: DeclarationId(543), }, Field { label: "Mips".to_string(), - ty: DeclarationId(543), + ty: DeclarationId(544), }, Field { label: "Mipsel".to_string(), - ty: DeclarationId(544), + ty: DeclarationId(545), }, Field { label: "Mips64".to_string(), - ty: DeclarationId(545), + ty: DeclarationId(546), }, Field { label: "Mips64el".to_string(), - ty: DeclarationId(546), + ty: DeclarationId(547), }, Field { label: "Riscv64".to_string(), - ty: DeclarationId(547), + ty: DeclarationId(548), }, Field { label: "Wasm32".to_string(), - ty: DeclarationId(548), + ty: DeclarationId(549), }, ], }, @@ -11697,7 +11697,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17632, 17735), + span: SourceSpan::new("dsl/std/types.dag", 17275, 17378), }); declarations.push(Declaration { id: DeclarationId(185), @@ -11706,19 +11706,19 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "UnknownVendor".to_string(), - ty: DeclarationId(549), + ty: DeclarationId(550), }, Field { label: "Pc".to_string(), - ty: DeclarationId(550), + ty: DeclarationId(551), }, Field { label: "Apple".to_string(), - ty: DeclarationId(551), + ty: DeclarationId(552), }, Field { label: "W64".to_string(), - ty: DeclarationId(552), + ty: DeclarationId(553), }, ], }, @@ -11730,7 +11730,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17736, 17782), + span: SourceSpan::new("dsl/std/types.dag", 17379, 17425), }); declarations.push(Declaration { id: DeclarationId(186), @@ -11739,31 +11739,31 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "Linux".to_string(), - ty: DeclarationId(553), + ty: DeclarationId(554), }, Field { label: "Macos".to_string(), - ty: DeclarationId(554), + ty: DeclarationId(555), }, Field { label: "Windows".to_string(), - ty: DeclarationId(555), + ty: DeclarationId(556), }, Field { label: "Freebsd".to_string(), - ty: DeclarationId(556), + ty: DeclarationId(557), }, Field { label: "Android".to_string(), - ty: DeclarationId(557), + ty: DeclarationId(558), }, Field { label: "Ios".to_string(), - ty: DeclarationId(558), + ty: DeclarationId(559), }, Field { label: "Wasi".to_string(), - ty: DeclarationId(559), + ty: DeclarationId(560), }, ], }, @@ -11775,7 +11775,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17783, 17849), + span: SourceSpan::new("dsl/std/types.dag", 17426, 17492), }); declarations.push(Declaration { id: DeclarationId(187), @@ -11784,39 +11784,39 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "NoneAbi".to_string(), - ty: DeclarationId(560), + ty: DeclarationId(561), }, Field { label: "Gnu".to_string(), - ty: DeclarationId(561), + ty: DeclarationId(562), }, Field { label: "GnuEabi".to_string(), - ty: DeclarationId(562), + ty: DeclarationId(563), }, Field { label: "GnuEabihf".to_string(), - ty: DeclarationId(563), + ty: DeclarationId(564), }, Field { label: "Musl".to_string(), - ty: DeclarationId(564), + ty: DeclarationId(565), }, Field { label: "Msvc".to_string(), - ty: DeclarationId(565), + ty: DeclarationId(566), }, Field { label: "AndroidAbi".to_string(), - ty: DeclarationId(566), + ty: DeclarationId(567), }, Field { label: "Eabi".to_string(), - ty: DeclarationId(567), + ty: DeclarationId(568), }, Field { label: "Eabihf".to_string(), - ty: DeclarationId(568), + ty: DeclarationId(569), }, ], }, @@ -11828,7 +11828,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17850, 17942), + span: SourceSpan::new("dsl/std/types.dag", 17493, 17585), }); declarations.push(Declaration { id: DeclarationId(188), @@ -11837,23 +11837,23 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "Native".to_string(), - ty: DeclarationId(569), + ty: DeclarationId(570), }, Field { label: "Wsl".to_string(), - ty: DeclarationId(570), + ty: DeclarationId(571), }, Field { label: "Container".to_string(), - ty: DeclarationId(571), + ty: DeclarationId(572), }, Field { label: "Ci".to_string(), - ty: DeclarationId(572), + ty: DeclarationId(573), }, Field { label: "Emulator".to_string(), - ty: DeclarationId(573), + ty: DeclarationId(574), }, ], }, @@ -11865,7 +11865,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17943, 18003), + span: SourceSpan::new("dsl/std/types.dag", 17586, 17646), }); declarations.push(Declaration { id: DeclarationId(189), @@ -11886,7 +11886,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { }, Field { label: "env".to_string(), - ty: DeclarationId(574), + ty: DeclarationId(575), }, ], }, @@ -11898,7 +11898,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18005, 18080), + span: SourceSpan::new("dsl/std/types.dag", 17648, 17723), }); declarations.push(Declaration { id: DeclarationId(190), @@ -11923,7 +11923,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18082, 18147), + span: SourceSpan::new("dsl/std/types.dag", 17725, 17790), }); declarations.push(Declaration { id: DeclarationId(191), @@ -11932,23 +11932,23 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "RegularFile".to_string(), - ty: DeclarationId(575), + ty: DeclarationId(576), }, Field { label: "Directory".to_string(), - ty: DeclarationId(576), + ty: DeclarationId(577), }, Field { label: "Symlink".to_string(), - ty: DeclarationId(577), + ty: DeclarationId(578), }, Field { label: "Missing".to_string(), - ty: DeclarationId(578), + ty: DeclarationId(579), }, Field { label: "Other".to_string(), - ty: DeclarationId(579), + ty: DeclarationId(580), }, ], }, @@ -11960,7 +11960,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18456, 18534), + span: SourceSpan::new("dsl/std/types.dag", 18099, 18177), }); declarations.push(Declaration { id: DeclarationId(192), @@ -11969,15 +11969,15 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "TargetFile".to_string(), - ty: DeclarationId(580), + ty: DeclarationId(581), }, Field { label: "TargetDir".to_string(), - ty: DeclarationId(581), + ty: DeclarationId(582), }, Field { label: "Broken".to_string(), - ty: DeclarationId(582), + ty: DeclarationId(583), }, ], }, @@ -11989,7 +11989,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18664, 18722), + span: SourceSpan::new("dsl/std/types.dag", 18307, 18365), }); declarations.push(Declaration { id: DeclarationId(193), @@ -12006,7 +12006,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 19883, 19913), + span: SourceSpan::new("dsl/std/types.dag", 19526, 19556), }); declarations.push(Declaration { id: DeclarationId(194), @@ -12023,7 +12023,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 19994, 20024), + span: SourceSpan::new("dsl/std/types.dag", 19637, 19667), }); declarations.push(Declaration { id: DeclarationId(195), @@ -12040,7 +12040,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 20241, 20263), + span: SourceSpan::new("dsl/std/types.dag", 19884, 19906), }); declarations.push(Declaration { id: DeclarationId(196), @@ -12049,31 +12049,31 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "GET".to_string(), - ty: DeclarationId(583), + ty: DeclarationId(584), }, Field { label: "POST".to_string(), - ty: DeclarationId(584), + ty: DeclarationId(585), }, Field { label: "PUT".to_string(), - ty: DeclarationId(585), + ty: DeclarationId(586), }, Field { label: "PATCH".to_string(), - ty: DeclarationId(586), + ty: DeclarationId(587), }, Field { label: "DELETE".to_string(), - ty: DeclarationId(587), + ty: DeclarationId(588), }, Field { label: "HEAD".to_string(), - ty: DeclarationId(588), + ty: DeclarationId(589), }, Field { label: "OPTIONS".to_string(), - ty: DeclarationId(589), + ty: DeclarationId(590), }, ], }, @@ -12085,7 +12085,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21007, 21075), + span: SourceSpan::new("dsl/std/types.dag", 20650, 20718), }); declarations.push(Declaration { id: DeclarationId(197), @@ -12094,19 +12094,19 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "Bearer".to_string(), - ty: DeclarationId(590), + ty: DeclarationId(591), }, Field { label: "Header".to_string(), - ty: DeclarationId(591), + ty: DeclarationId(592), }, Field { label: "Basic".to_string(), - ty: DeclarationId(592), + ty: DeclarationId(593), }, Field { label: "ApiKey".to_string(), - ty: DeclarationId(593), + ty: DeclarationId(594), }, ], }, @@ -12118,7 +12118,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21543, 21639), + span: SourceSpan::new("dsl/std/types.dag", 21186, 21282), }); declarations.push(Declaration { id: DeclarationId(198), @@ -12135,7 +12135,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { }, Field { label: "expires_at".to_string(), - ty: DeclarationId(594), + ty: DeclarationId(595), }, ], }, @@ -12147,7 +12147,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21761, 21894), + span: SourceSpan::new("dsl/std/types.dag", 21404, 21537), }); declarations.push(Declaration { id: DeclarationId(199), @@ -12164,7 +12164,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { }, Field { label: "header_name".to_string(), - ty: DeclarationId(595), + ty: DeclarationId(596), }, Field { label: "source_id".to_string(), @@ -12172,11 +12172,11 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { }, Field { label: "required_scopes".to_string(), - ty: DeclarationId(596), + ty: DeclarationId(597), }, Field { label: "expires_in".to_string(), - ty: DeclarationId(597), + ty: DeclarationId(598), }, ], }, @@ -12188,7 +12188,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21896, 22046), + span: SourceSpan::new("dsl/std/types.dag", 21539, 21689), }); declarations.push(Declaration { id: DeclarationId(200), @@ -12200,9 +12200,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(651)), + refinement: Some(DeclarationId(652)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22123, 22187), + span: SourceSpan::new("dsl/std/types.dag", 21766, 21830), }); declarations.push(Declaration { id: DeclarationId(201), @@ -12214,9 +12214,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(652)), + refinement: Some(DeclarationId(653)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22188, 22245), + span: SourceSpan::new("dsl/std/types.dag", 21831, 21888), }); declarations.push(Declaration { id: DeclarationId(202), @@ -12228,9 +12228,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(653)), + refinement: Some(DeclarationId(654)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22246, 22302), + span: SourceSpan::new("dsl/std/types.dag", 21889, 21945), }); declarations.push(Declaration { id: DeclarationId(203), @@ -12263,7 +12263,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22379, 22470), + span: SourceSpan::new("dsl/std/types.dag", 22022, 22113), }); declarations.push(Declaration { id: DeclarationId(204), @@ -12292,7 +12292,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22472, 22543), + span: SourceSpan::new("dsl/std/types.dag", 22115, 22186), }); declarations.push(Declaration { id: DeclarationId(205), @@ -12321,7 +12321,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22545, 22615), + span: SourceSpan::new("dsl/std/types.dag", 22188, 22258), }); declarations.push(Declaration { id: DeclarationId(206), @@ -12350,7 +12350,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22617, 22690), + span: SourceSpan::new("dsl/std/types.dag", 22260, 22333), }); declarations.push(Declaration { id: DeclarationId(207), @@ -12379,7 +12379,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22692, 22756), + span: SourceSpan::new("dsl/std/types.dag", 22335, 22399), }); declarations.push(Declaration { id: DeclarationId(208), @@ -12416,7 +12416,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22833, 22940), + span: SourceSpan::new("dsl/std/types.dag", 22476, 22583), }); declarations.push(Declaration { id: DeclarationId(209), @@ -12445,7 +12445,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22942, 22999), + span: SourceSpan::new("dsl/std/types.dag", 22585, 22642), }); declarations.push(Declaration { id: DeclarationId(210), @@ -12482,7 +12482,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23001, 23102), + span: SourceSpan::new("dsl/std/types.dag", 22644, 22745), }); declarations.push(Declaration { id: DeclarationId(211), @@ -12511,7 +12511,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23255, 23327), + span: SourceSpan::new("dsl/std/types.dag", 22898, 22970), }); declarations.push(Declaration { id: DeclarationId(212), @@ -12528,7 +12528,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { }, Field { label: "lines".to_string(), - ty: DeclarationId(598), + ty: DeclarationId(599), }, ], }, @@ -12540,7 +12540,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23329, 23415), + span: SourceSpan::new("dsl/std/types.dag", 22972, 23058), }); declarations.push(Declaration { id: DeclarationId(213), @@ -12561,7 +12561,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { }, Field { label: "sections".to_string(), - ty: DeclarationId(599), + ty: DeclarationId(600), }, Field { label: "trailing_newline".to_string(), @@ -12577,7 +12577,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23417, 23554), + span: SourceSpan::new("dsl/std/types.dag", 23060, 23197), }); declarations.push(Declaration { id: DeclarationId(214), @@ -12602,7 +12602,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23556, 23609), + span: SourceSpan::new("dsl/std/types.dag", 23199, 23252), }); declarations.push(Declaration { id: DeclarationId(215), @@ -12627,7 +12627,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23611, 23669), + span: SourceSpan::new("dsl/std/types.dag", 23254, 23312), }); declarations.push(Declaration { id: DeclarationId(216), @@ -12644,7 +12644,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { }, Field { label: "description".to_string(), - ty: DeclarationId(600), + ty: DeclarationId(601), }, ], }, @@ -12656,7 +12656,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23746, 23820), + span: SourceSpan::new("dsl/std/types.dag", 23389, 23463), }); declarations.push(Declaration { id: DeclarationId(217), @@ -12664,7 +12664,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { connective: TypeConnective::Conj { children: vec![Field { label: "tools".to_string(), - ty: DeclarationId(601), + ty: DeclarationId(602), }], }, type_params: vec![], @@ -12675,7 +12675,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23822, 23868), + span: SourceSpan::new("dsl/std/types.dag", 23465, 23511), }); declarations.push(Declaration { id: DeclarationId(218), @@ -12684,15 +12684,15 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { children: vec![ Field { label: "nodes".to_string(), - ty: DeclarationId(602), + ty: DeclarationId(603), }, Field { label: "edges".to_string(), - ty: DeclarationId(603), + ty: DeclarationId(604), }, Field { label: "subdag_boundaries".to_string(), - ty: DeclarationId(604), + ty: DeclarationId(605), }, ], }, @@ -12704,7 +12704,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24127, 24237), + span: SourceSpan::new("dsl/std/types.dag", 23770, 23880), }); declarations.push(Declaration { id: DeclarationId(219), @@ -12725,7 +12725,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { }, Field { label: "parent".to_string(), - ty: DeclarationId(605), + ty: DeclarationId(606), }, ], }, @@ -12737,7 +12737,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24239, 24359), + span: SourceSpan::new("dsl/std/types.dag", 23882, 24002), }); declarations.push(Declaration { id: DeclarationId(220), @@ -12754,7 +12754,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { }, Field { label: "port".to_string(), - ty: DeclarationId(606), + ty: DeclarationId(607), }, ], }, @@ -12766,7 +12766,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24361, 24426), + span: SourceSpan::new("dsl/std/types.dag", 24004, 24069), }); declarations.push(Declaration { id: DeclarationId(221), @@ -12775,15 +12775,15 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { children: vec![ Field { label: "added".to_string(), - ty: DeclarationId(607), + ty: DeclarationId(608), }, Field { label: "removed".to_string(), - ty: DeclarationId(608), + ty: DeclarationId(609), }, Field { label: "changed".to_string(), - ty: DeclarationId(609), + ty: DeclarationId(610), }, ], }, @@ -12795,7 +12795,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24428, 24514), + span: SourceSpan::new("dsl/std/types.dag", 24071, 24157), }); declarations.push(Declaration { id: DeclarationId(222), @@ -12812,15 +12812,15 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { }, Field { label: "backend".to_string(), - ty: DeclarationId(610), + ty: DeclarationId(611), }, Field { label: "target".to_string(), - ty: DeclarationId(611), + ty: DeclarationId(612), }, Field { label: "runtime_env".to_string(), - ty: DeclarationId(612), + ty: DeclarationId(613), }, ], }, @@ -12832,7 +12832,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24583, 24717), + span: SourceSpan::new("dsl/std/types.dag", 24226, 24360), }); declarations.push(Declaration { id: DeclarationId(223), @@ -12841,19 +12841,19 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "Rust".to_string(), - ty: DeclarationId(613), + ty: DeclarationId(614), }, Field { label: "Go".to_string(), - ty: DeclarationId(614), + ty: DeclarationId(615), }, Field { label: "C".to_string(), - ty: DeclarationId(615), + ty: DeclarationId(616), }, Field { label: "Mips".to_string(), - ty: DeclarationId(616), + ty: DeclarationId(617), }, ], }, @@ -12865,7 +12865,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24719, 24761), + span: SourceSpan::new("dsl/std/types.dag", 24362, 24404), }); declarations.push(Declaration { id: DeclarationId(224), @@ -12882,7 +12882,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { }, Field { label: "scope".to_string(), - ty: DeclarationId(617), + ty: DeclarationId(618), }, ], }, @@ -12894,7 +12894,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24763, 24834), + span: SourceSpan::new("dsl/std/types.dag", 24406, 24477), }); declarations.push(Declaration { id: DeclarationId(225), @@ -12919,7 +12919,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24975, 25032), + span: SourceSpan::new("dsl/std/types.dag", 24618, 24675), }); declarations.push(Declaration { id: DeclarationId(226), @@ -12933,7 +12933,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 26966, 26985), + span: SourceSpan::new("dsl/std/types.dag", 26609, 26628), }); declarations.push(Declaration { id: DeclarationId(227), @@ -12947,7 +12947,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 26966, 26985), + span: SourceSpan::new("dsl/std/types.dag", 26609, 26628), }); declarations.push(Declaration { id: DeclarationId(228), @@ -12976,19 +12976,19 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "Whitespace".to_string(), - ty: DeclarationId(654), + ty: DeclarationId(655), }, Field { label: "Digit".to_string(), - ty: DeclarationId(655), + ty: DeclarationId(656), }, Field { label: "IdentStart".to_string(), - ty: DeclarationId(656), + ty: DeclarationId(657), }, Field { label: "IdentContinue".to_string(), - ty: DeclarationId(657), + ty: DeclarationId(658), }, ], }, @@ -13027,15 +13027,15 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "ZeroWidth".to_string(), - ty: DeclarationId(658), + ty: DeclarationId(659), }, Field { label: "Narrow".to_string(), - ty: DeclarationId(659), + ty: DeclarationId(660), }, Field { label: "Wide".to_string(), - ty: DeclarationId(660), + ty: DeclarationId(661), }, ], }, @@ -13112,7 +13112,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { }, type_params: vec![], phantom_params: Vec::new(), - meta_tag: Some(DeclarationId(661)), + meta_tag: Some(DeclarationId(662)), specialization_parent: None, inhabits: None, value_body: Some(ValueBody::List(vec![ @@ -13134,7 +13134,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(658), + constructor: DeclarationId(659), payload: vec![], }, ), @@ -13157,7 +13157,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(658), + constructor: DeclarationId(659), payload: vec![], }, ), @@ -13180,7 +13180,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(658), + constructor: DeclarationId(659), payload: vec![], }, ), @@ -13203,7 +13203,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(658), + constructor: DeclarationId(659), payload: vec![], }, ), @@ -13224,7 +13224,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(658), + constructor: DeclarationId(659), payload: vec![], }, ), @@ -13247,7 +13247,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(658), + constructor: DeclarationId(659), payload: vec![], }, ), @@ -13269,7 +13269,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { }, type_params: vec![], phantom_params: Vec::new(), - meta_tag: Some(DeclarationId(662)), + meta_tag: Some(DeclarationId(663)), specialization_parent: None, inhabits: None, value_body: Some(ValueBody::List(vec![ @@ -13294,7 +13294,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { }, type_params: vec![], phantom_params: Vec::new(), - meta_tag: Some(DeclarationId(663)), + meta_tag: Some(DeclarationId(664)), specialization_parent: None, inhabits: None, value_body: Some(ValueBody::List(vec![ @@ -13314,7 +13314,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -13337,7 +13337,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -13360,7 +13360,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -13381,7 +13381,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -13404,7 +13404,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -13427,7 +13427,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -13448,7 +13448,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -13471,7 +13471,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -13494,7 +13494,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -13515,7 +13515,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -13536,7 +13536,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -13557,7 +13557,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -13578,7 +13578,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -13601,7 +13601,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -13624,7 +13624,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -13645,7 +13645,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -18874,7 +18874,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 7586, 7590), + span: SourceSpan::new("dsl/std/types.dag", 7229, 7233), }); declarations.push(Declaration { id: DeclarationId(511), @@ -18888,16 +18888,16 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 7593, 7598), + span: SourceSpan::new("dsl/std/types.dag", 7236, 7241), }); declarations.push(Declaration { id: DeclarationId(512), name: None, connective: TypeConnective::Instantiation { - template: DeclarationId(131), + template: DeclarationId(45), arguments: vec![TemplateArgument { - parameter: DeclarationId(132), - value: DeclarationId(152), + parameter: DeclarationId(46), + value: DeclarationId(126), }], }, type_params: vec![], @@ -18908,7 +18908,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 12459, 12476), + span: SourceSpan::new("dsl/std/types.dag", 7206, 7226), }); declarations.push(Declaration { id: DeclarationId(513), @@ -18917,7 +18917,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { template: DeclarationId(131), arguments: vec![TemplateArgument { parameter: DeclarationId(132), - value: DeclarationId(153), + value: DeclarationId(152), }], }, type_params: vec![], @@ -18928,12 +18928,18 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 12510, 12527), + span: SourceSpan::new("dsl/std/types.dag", 12102, 12119), }); declarations.push(Declaration { id: DeclarationId(514), name: None, - connective: TypeConnective::Conj { children: vec![] }, + connective: TypeConnective::Instantiation { + template: DeclarationId(131), + arguments: vec![TemplateArgument { + parameter: DeclarationId(132), + value: DeclarationId(153), + }], + }, type_params: vec![], phantom_params: Vec::new(), meta_tag: None, @@ -18942,7 +18948,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16688, 16693), + span: SourceSpan::new("dsl/std/types.dag", 12153, 12170), }); declarations.push(Declaration { id: DeclarationId(515), @@ -18956,7 +18962,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16696, 16701), + span: SourceSpan::new("dsl/std/types.dag", 16331, 16336), }); declarations.push(Declaration { id: DeclarationId(516), @@ -18970,7 +18976,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16704, 16711), + span: SourceSpan::new("dsl/std/types.dag", 16339, 16344), }); declarations.push(Declaration { id: DeclarationId(517), @@ -18984,7 +18990,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16863, 16867), + span: SourceSpan::new("dsl/std/types.dag", 16347, 16354), }); declarations.push(Declaration { id: DeclarationId(518), @@ -18998,7 +19004,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16870, 16879), + span: SourceSpan::new("dsl/std/types.dag", 16506, 16510), }); declarations.push(Declaration { id: DeclarationId(519), @@ -19012,7 +19018,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16882, 16888), + span: SourceSpan::new("dsl/std/types.dag", 16513, 16522), }); declarations.push(Declaration { id: DeclarationId(520), @@ -19026,7 +19032,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16891, 16894), + span: SourceSpan::new("dsl/std/types.dag", 16525, 16531), }); declarations.push(Declaration { id: DeclarationId(521), @@ -19040,7 +19046,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16919, 16927), + span: SourceSpan::new("dsl/std/types.dag", 16534, 16537), }); declarations.push(Declaration { id: DeclarationId(522), @@ -19054,7 +19060,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16930, 16939), + span: SourceSpan::new("dsl/std/types.dag", 16562, 16570), }); declarations.push(Declaration { id: DeclarationId(523), @@ -19068,7 +19074,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16942, 16948), + span: SourceSpan::new("dsl/std/types.dag", 16573, 16582), }); declarations.push(Declaration { id: DeclarationId(524), @@ -19082,7 +19088,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16968, 16970), + span: SourceSpan::new("dsl/std/types.dag", 16585, 16591), }); declarations.push(Declaration { id: DeclarationId(525), @@ -19096,7 +19102,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16973, 16974), + span: SourceSpan::new("dsl/std/types.dag", 16611, 16613), }); declarations.push(Declaration { id: DeclarationId(526), @@ -19110,7 +19116,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16977, 16978), + span: SourceSpan::new("dsl/std/types.dag", 16616, 16617), }); declarations.push(Declaration { id: DeclarationId(527), @@ -19124,7 +19130,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16981, 16982), + span: SourceSpan::new("dsl/std/types.dag", 16620, 16621), }); declarations.push(Declaration { id: DeclarationId(528), @@ -19138,11 +19144,25 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16985, 16987), + span: SourceSpan::new("dsl/std/types.dag", 16624, 16625), }); declarations.push(Declaration { id: DeclarationId(529), name: None, + connective: TypeConnective::Conj { children: vec![] }, + type_params: vec![], + phantom_params: Vec::new(), + meta_tag: None, + specialization_parent: None, + inhabits: None, + value_body: None, + refinement: None, + nominal_opacity: None, + span: SourceSpan::new("dsl/std/types.dag", 16628, 16630), + }); + declarations.push(Declaration { + id: DeclarationId(530), + name: None, connective: TypeConnective::Conj { children: vec![Field { label: "secret_name".to_string(), @@ -19157,10 +19177,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17259, 17294), + span: SourceSpan::new("dsl/std/types.dag", 16902, 16937), }); declarations.push(Declaration { - id: DeclarationId(530), + id: DeclarationId(531), name: None, connective: TypeConnective::Conj { children: vec![Field { @@ -19176,10 +19196,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17299, 17340), + span: SourceSpan::new("dsl/std/types.dag", 16942, 16983), }); declarations.push(Declaration { - id: DeclarationId(531), + id: DeclarationId(532), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -19195,10 +19215,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17415, 17435), + span: SourceSpan::new("dsl/std/types.dag", 17058, 17078), }); declarations.push(Declaration { - id: DeclarationId(532), + id: DeclarationId(533), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -19215,10 +19235,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17450, 17462), + span: SourceSpan::new("dsl/std/types.dag", 17093, 17105), }); declarations.push(Declaration { - id: DeclarationId(533), + id: DeclarationId(534), name: None, connective: TypeConnective::Conj { children: vec![ @@ -19228,11 +19248,11 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { }, Field { label: "service_account".to_string(), - ty: DeclarationId(531), + ty: DeclarationId(532), }, Field { label: "scopes".to_string(), - ty: DeclarationId(532), + ty: DeclarationId(533), }, ], }, @@ -19244,10 +19264,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17345, 17468), + span: SourceSpan::new("dsl/std/types.dag", 16988, 17111), }); declarations.push(Declaration { - id: DeclarationId(534), + id: DeclarationId(535), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -19264,15 +19284,15 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17499, 17511), + span: SourceSpan::new("dsl/std/types.dag", 17142, 17154), }); declarations.push(Declaration { - id: DeclarationId(535), + id: DeclarationId(536), name: None, connective: TypeConnective::Conj { children: vec![Field { label: "scopes".to_string(), - ty: DeclarationId(534), + ty: DeclarationId(535), }], }, type_params: vec![], @@ -19283,10 +19303,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17473, 17513), + span: SourceSpan::new("dsl/std/types.dag", 17116, 17156), }); declarations.push(Declaration { - id: DeclarationId(536), + id: DeclarationId(537), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -19303,15 +19323,15 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17535, 17555), + span: SourceSpan::new("dsl/std/types.dag", 17178, 17198), }); declarations.push(Declaration { - id: DeclarationId(537), + id: DeclarationId(538), name: None, connective: TypeConnective::Conj { children: vec![Field { label: "steps".to_string(), - ty: DeclarationId(536), + ty: DeclarationId(537), }], }, type_params: vec![], @@ -19322,21 +19342,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17518, 17557), - }); - declarations.push(Declaration { - id: DeclarationId(538), - name: None, - connective: TypeConnective::Conj { children: vec![] }, - type_params: vec![], - phantom_params: Vec::new(), - meta_tag: None, - specialization_parent: None, - inhabits: None, - value_body: None, - refinement: None, - nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17644, 17650), + span: SourceSpan::new("dsl/std/types.dag", 17161, 17200), }); declarations.push(Declaration { id: DeclarationId(539), @@ -19350,7 +19356,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17653, 17656), + span: SourceSpan::new("dsl/std/types.dag", 17287, 17293), }); declarations.push(Declaration { id: DeclarationId(540), @@ -19364,7 +19370,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17659, 17666), + span: SourceSpan::new("dsl/std/types.dag", 17296, 17299), }); declarations.push(Declaration { id: DeclarationId(541), @@ -19378,7 +19384,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17669, 17672), + span: SourceSpan::new("dsl/std/types.dag", 17302, 17309), }); declarations.push(Declaration { id: DeclarationId(542), @@ -19392,7 +19398,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17675, 17680), + span: SourceSpan::new("dsl/std/types.dag", 17312, 17315), }); declarations.push(Declaration { id: DeclarationId(543), @@ -19406,7 +19412,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17683, 17687), + span: SourceSpan::new("dsl/std/types.dag", 17318, 17323), }); declarations.push(Declaration { id: DeclarationId(544), @@ -19420,7 +19426,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17690, 17696), + span: SourceSpan::new("dsl/std/types.dag", 17326, 17330), }); declarations.push(Declaration { id: DeclarationId(545), @@ -19434,7 +19440,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17699, 17705), + span: SourceSpan::new("dsl/std/types.dag", 17333, 17339), }); declarations.push(Declaration { id: DeclarationId(546), @@ -19448,7 +19454,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17708, 17716), + span: SourceSpan::new("dsl/std/types.dag", 17342, 17348), }); declarations.push(Declaration { id: DeclarationId(547), @@ -19462,7 +19468,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17719, 17726), + span: SourceSpan::new("dsl/std/types.dag", 17351, 17359), }); declarations.push(Declaration { id: DeclarationId(548), @@ -19476,7 +19482,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17729, 17735), + span: SourceSpan::new("dsl/std/types.dag", 17362, 17369), }); declarations.push(Declaration { id: DeclarationId(549), @@ -19490,7 +19496,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17750, 17763), + span: SourceSpan::new("dsl/std/types.dag", 17372, 17378), }); declarations.push(Declaration { id: DeclarationId(550), @@ -19504,7 +19510,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17766, 17768), + span: SourceSpan::new("dsl/std/types.dag", 17393, 17406), }); declarations.push(Declaration { id: DeclarationId(551), @@ -19518,7 +19524,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17771, 17776), + span: SourceSpan::new("dsl/std/types.dag", 17409, 17411), }); declarations.push(Declaration { id: DeclarationId(552), @@ -19532,7 +19538,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17779, 17782), + span: SourceSpan::new("dsl/std/types.dag", 17414, 17419), }); declarations.push(Declaration { id: DeclarationId(553), @@ -19546,7 +19552,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17793, 17798), + span: SourceSpan::new("dsl/std/types.dag", 17422, 17425), }); declarations.push(Declaration { id: DeclarationId(554), @@ -19560,7 +19566,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17801, 17806), + span: SourceSpan::new("dsl/std/types.dag", 17436, 17441), }); declarations.push(Declaration { id: DeclarationId(555), @@ -19574,7 +19580,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17809, 17816), + span: SourceSpan::new("dsl/std/types.dag", 17444, 17449), }); declarations.push(Declaration { id: DeclarationId(556), @@ -19588,7 +19594,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17819, 17826), + span: SourceSpan::new("dsl/std/types.dag", 17452, 17459), }); declarations.push(Declaration { id: DeclarationId(557), @@ -19602,7 +19608,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17829, 17836), + span: SourceSpan::new("dsl/std/types.dag", 17462, 17469), }); declarations.push(Declaration { id: DeclarationId(558), @@ -19616,7 +19622,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17839, 17842), + span: SourceSpan::new("dsl/std/types.dag", 17472, 17479), }); declarations.push(Declaration { id: DeclarationId(559), @@ -19630,7 +19636,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17845, 17849), + span: SourceSpan::new("dsl/std/types.dag", 17482, 17485), }); declarations.push(Declaration { id: DeclarationId(560), @@ -19644,7 +19650,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17864, 17871), + span: SourceSpan::new("dsl/std/types.dag", 17488, 17492), }); declarations.push(Declaration { id: DeclarationId(561), @@ -19658,7 +19664,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17874, 17877), + span: SourceSpan::new("dsl/std/types.dag", 17507, 17514), }); declarations.push(Declaration { id: DeclarationId(562), @@ -19672,7 +19678,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17880, 17887), + span: SourceSpan::new("dsl/std/types.dag", 17517, 17520), }); declarations.push(Declaration { id: DeclarationId(563), @@ -19686,7 +19692,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17890, 17899), + span: SourceSpan::new("dsl/std/types.dag", 17523, 17530), }); declarations.push(Declaration { id: DeclarationId(564), @@ -19700,7 +19706,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17902, 17906), + span: SourceSpan::new("dsl/std/types.dag", 17533, 17542), }); declarations.push(Declaration { id: DeclarationId(565), @@ -19714,7 +19720,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17909, 17913), + span: SourceSpan::new("dsl/std/types.dag", 17545, 17549), }); declarations.push(Declaration { id: DeclarationId(566), @@ -19728,7 +19734,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17916, 17926), + span: SourceSpan::new("dsl/std/types.dag", 17552, 17556), }); declarations.push(Declaration { id: DeclarationId(567), @@ -19742,7 +19748,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17929, 17933), + span: SourceSpan::new("dsl/std/types.dag", 17559, 17569), }); declarations.push(Declaration { id: DeclarationId(568), @@ -19756,7 +19762,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17936, 17942), + span: SourceSpan::new("dsl/std/types.dag", 17572, 17576), }); declarations.push(Declaration { id: DeclarationId(569), @@ -19770,7 +19776,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17963, 17969), + span: SourceSpan::new("dsl/std/types.dag", 17579, 17585), }); declarations.push(Declaration { id: DeclarationId(570), @@ -19784,7 +19790,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17972, 17975), + span: SourceSpan::new("dsl/std/types.dag", 17606, 17612), }); declarations.push(Declaration { id: DeclarationId(571), @@ -19798,7 +19804,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17978, 17987), + span: SourceSpan::new("dsl/std/types.dag", 17615, 17618), }); declarations.push(Declaration { id: DeclarationId(572), @@ -19812,7 +19818,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17990, 17992), + span: SourceSpan::new("dsl/std/types.dag", 17621, 17630), }); declarations.push(Declaration { id: DeclarationId(573), @@ -19826,17 +19832,12 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17995, 18003), + span: SourceSpan::new("dsl/std/types.dag", 17633, 17635), }); declarations.push(Declaration { id: DeclarationId(574), name: None, - connective: TypeConnective::Cardinality( - CardinalityPayload::new_unchecked_bypassing_idempotence( - DeclarationId(187), - CardinalityBound::AtMostOne, - ), - ), + connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], phantom_params: Vec::new(), meta_tag: None, @@ -19845,12 +19846,17 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18071, 18078), + span: SourceSpan::new("dsl/std/types.dag", 17638, 17646), }); declarations.push(Declaration { id: DeclarationId(575), name: None, - connective: TypeConnective::Conj { children: vec![] }, + connective: TypeConnective::Cardinality( + CardinalityPayload::new_unchecked_bypassing_idempotence( + DeclarationId(187), + CardinalityBound::AtMostOne, + ), + ), type_params: vec![], phantom_params: Vec::new(), meta_tag: None, @@ -19859,7 +19865,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18475, 18486), + span: SourceSpan::new("dsl/std/types.dag", 17714, 17721), }); declarations.push(Declaration { id: DeclarationId(576), @@ -19873,7 +19879,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18491, 18500), + span: SourceSpan::new("dsl/std/types.dag", 18118, 18129), }); declarations.push(Declaration { id: DeclarationId(577), @@ -19887,7 +19893,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18505, 18512), + span: SourceSpan::new("dsl/std/types.dag", 18134, 18143), }); declarations.push(Declaration { id: DeclarationId(578), @@ -19901,7 +19907,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18517, 18524), + span: SourceSpan::new("dsl/std/types.dag", 18148, 18155), }); declarations.push(Declaration { id: DeclarationId(579), @@ -19915,7 +19921,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18529, 18534), + span: SourceSpan::new("dsl/std/types.dag", 18160, 18167), }); declarations.push(Declaration { id: DeclarationId(580), @@ -19929,7 +19935,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18687, 18697), + span: SourceSpan::new("dsl/std/types.dag", 18172, 18177), }); declarations.push(Declaration { id: DeclarationId(581), @@ -19943,7 +19949,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18702, 18711), + span: SourceSpan::new("dsl/std/types.dag", 18330, 18340), }); declarations.push(Declaration { id: DeclarationId(582), @@ -19957,7 +19963,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18716, 18722), + span: SourceSpan::new("dsl/std/types.dag", 18345, 18354), }); declarations.push(Declaration { id: DeclarationId(583), @@ -19971,7 +19977,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21025, 21028), + span: SourceSpan::new("dsl/std/types.dag", 18359, 18365), }); declarations.push(Declaration { id: DeclarationId(584), @@ -19985,7 +19991,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21031, 21035), + span: SourceSpan::new("dsl/std/types.dag", 20668, 20671), }); declarations.push(Declaration { id: DeclarationId(585), @@ -19999,7 +20005,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21038, 21041), + span: SourceSpan::new("dsl/std/types.dag", 20674, 20678), }); declarations.push(Declaration { id: DeclarationId(586), @@ -20013,7 +20019,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21044, 21049), + span: SourceSpan::new("dsl/std/types.dag", 20681, 20684), }); declarations.push(Declaration { id: DeclarationId(587), @@ -20027,7 +20033,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21052, 21058), + span: SourceSpan::new("dsl/std/types.dag", 20687, 20692), }); declarations.push(Declaration { id: DeclarationId(588), @@ -20041,7 +20047,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21061, 21065), + span: SourceSpan::new("dsl/std/types.dag", 20695, 20701), }); declarations.push(Declaration { id: DeclarationId(589), @@ -20055,7 +20061,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21068, 21075), + span: SourceSpan::new("dsl/std/types.dag", 20704, 20708), }); declarations.push(Declaration { id: DeclarationId(590), @@ -20069,11 +20075,25 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21563, 21569), + span: SourceSpan::new("dsl/std/types.dag", 20711, 20718), }); declarations.push(Declaration { id: DeclarationId(591), name: None, + connective: TypeConnective::Conj { children: vec![] }, + type_params: vec![], + phantom_params: Vec::new(), + meta_tag: None, + specialization_parent: None, + inhabits: None, + value_body: None, + refinement: None, + nominal_opacity: None, + span: SourceSpan::new("dsl/std/types.dag", 21206, 21212), + }); + declarations.push(Declaration { + id: DeclarationId(592), + name: None, connective: TypeConnective::Conj { children: vec![Field { label: "name".to_string(), @@ -20088,10 +20108,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21574, 21597), + span: SourceSpan::new("dsl/std/types.dag", 21217, 21240), }); declarations.push(Declaration { - id: DeclarationId(592), + id: DeclarationId(593), name: None, connective: TypeConnective::Conj { children: vec![Field { @@ -20107,10 +20127,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21602, 21628), + span: SourceSpan::new("dsl/std/types.dag", 21245, 21271), }); declarations.push(Declaration { - id: DeclarationId(593), + id: DeclarationId(594), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20121,10 +20141,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21633, 21639), + span: SourceSpan::new("dsl/std/types.dag", 21276, 21282), }); declarations.push(Declaration { - id: DeclarationId(594), + id: DeclarationId(595), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -20140,10 +20160,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21831, 21841), + span: SourceSpan::new("dsl/std/types.dag", 21474, 21484), }); declarations.push(Declaration { - id: DeclarationId(595), + id: DeclarationId(596), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -20159,10 +20179,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21966, 21973), + span: SourceSpan::new("dsl/std/types.dag", 21609, 21616), }); declarations.push(Declaration { - id: DeclarationId(596), + id: DeclarationId(597), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -20179,10 +20199,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22013, 22025), + span: SourceSpan::new("dsl/std/types.dag", 21656, 21668), }); declarations.push(Declaration { - id: DeclarationId(597), + id: DeclarationId(598), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -20198,10 +20218,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22040, 22044), + span: SourceSpan::new("dsl/std/types.dag", 21683, 21687), }); declarations.push(Declaration { - id: DeclarationId(598), + id: DeclarationId(599), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -20218,10 +20238,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23395, 23413), + span: SourceSpan::new("dsl/std/types.dag", 23038, 23056), }); declarations.push(Declaration { - id: DeclarationId(599), + id: DeclarationId(600), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -20238,10 +20258,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23506, 23527), + span: SourceSpan::new("dsl/std/types.dag", 23149, 23170), }); declarations.push(Declaration { - id: DeclarationId(600), + id: DeclarationId(601), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -20257,10 +20277,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23811, 23818), + span: SourceSpan::new("dsl/std/types.dag", 23454, 23461), }); declarations.push(Declaration { - id: DeclarationId(601), + id: DeclarationId(602), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -20277,10 +20297,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23851, 23866), + span: SourceSpan::new("dsl/std/types.dag", 23494, 23509), }); declarations.push(Declaration { - id: DeclarationId(602), + id: DeclarationId(603), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -20297,10 +20317,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24155, 24173), + span: SourceSpan::new("dsl/std/types.dag", 23798, 23816), }); declarations.push(Declaration { - id: DeclarationId(603), + id: DeclarationId(604), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -20317,10 +20337,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24183, 24201), + span: SourceSpan::new("dsl/std/types.dag", 23826, 23844), }); declarations.push(Declaration { - id: DeclarationId(604), + id: DeclarationId(605), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -20337,10 +20357,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24223, 24235), + span: SourceSpan::new("dsl/std/types.dag", 23866, 23878), }); declarations.push(Declaration { - id: DeclarationId(605), + id: DeclarationId(606), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -20356,10 +20376,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24323, 24330), + span: SourceSpan::new("dsl/std/types.dag", 23966, 23973), }); declarations.push(Declaration { - id: DeclarationId(606), + id: DeclarationId(607), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -20375,10 +20395,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24417, 24424), + span: SourceSpan::new("dsl/std/types.dag", 24060, 24067), }); declarations.push(Declaration { - id: DeclarationId(607), + id: DeclarationId(608), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -20395,10 +20415,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24452, 24464), + span: SourceSpan::new("dsl/std/types.dag", 24095, 24107), }); declarations.push(Declaration { - id: DeclarationId(608), + id: DeclarationId(609), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -20415,10 +20435,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24476, 24488), + span: SourceSpan::new("dsl/std/types.dag", 24119, 24131), }); declarations.push(Declaration { - id: DeclarationId(609), + id: DeclarationId(610), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -20435,10 +20455,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24500, 24512), + span: SourceSpan::new("dsl/std/types.dag", 24143, 24155), }); declarations.push(Declaration { - id: DeclarationId(610), + id: DeclarationId(611), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -20454,10 +20474,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24647, 24662), + span: SourceSpan::new("dsl/std/types.dag", 24290, 24305), }); declarations.push(Declaration { - id: DeclarationId(611), + id: DeclarationId(612), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -20473,10 +20493,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24673, 24686), + span: SourceSpan::new("dsl/std/types.dag", 24316, 24329), }); declarations.push(Declaration { - id: DeclarationId(612), + id: DeclarationId(613), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -20492,10 +20512,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24702, 24715), + span: SourceSpan::new("dsl/std/types.dag", 24345, 24358), }); declarations.push(Declaration { - id: DeclarationId(613), + id: DeclarationId(614), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20506,10 +20526,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24741, 24745), + span: SourceSpan::new("dsl/std/types.dag", 24384, 24388), }); declarations.push(Declaration { - id: DeclarationId(614), + id: DeclarationId(615), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20520,10 +20540,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24748, 24750), + span: SourceSpan::new("dsl/std/types.dag", 24391, 24393), }); declarations.push(Declaration { - id: DeclarationId(615), + id: DeclarationId(616), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20534,10 +20554,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24753, 24754), + span: SourceSpan::new("dsl/std/types.dag", 24396, 24397), }); declarations.push(Declaration { - id: DeclarationId(616), + id: DeclarationId(617), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20548,10 +20568,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24757, 24761), + span: SourceSpan::new("dsl/std/types.dag", 24400, 24404), }); declarations.push(Declaration { - id: DeclarationId(617), + id: DeclarationId(618), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -20567,10 +20587,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24825, 24832), + span: SourceSpan::new("dsl/std/types.dag", 24468, 24475), }); declarations.push(Declaration { - id: DeclarationId(618), + id: DeclarationId(619), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(135), @@ -20596,7 +20616,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/types.dag", 3063, 3080), }); declarations.push(Declaration { - id: DeclarationId(619), + id: DeclarationId(620), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(135), @@ -20622,7 +20642,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/types.dag", 3533, 3549), }); declarations.push(Declaration { - id: DeclarationId(620), + id: DeclarationId(621), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(135), @@ -20648,7 +20668,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/types.dag", 4740, 4757), }); declarations.push(Declaration { - id: DeclarationId(621), + id: DeclarationId(622), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(135), @@ -20674,7 +20694,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/types.dag", 5722, 5741), }); declarations.push(Declaration { - id: DeclarationId(622), + id: DeclarationId(623), name: None, connective: TypeConnective::Arrow { inputs: vec![DeclarationId(93)], @@ -20689,10 +20709,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 10914, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10557, 10578), }); declarations.push(Declaration { - id: DeclarationId(623), + id: DeclarationId(624), name: None, connective: TypeConnective::Arrow { inputs: vec![DeclarationId(93)], @@ -20707,10 +20727,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 10966, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10609, 10634), }); declarations.push(Declaration { - id: DeclarationId(624), + id: DeclarationId(625), name: None, connective: TypeConnective::Arrow { inputs: vec![DeclarationId(93)], @@ -20725,10 +20745,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11122, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10765, 10790), }); declarations.push(Declaration { - id: DeclarationId(625), + id: DeclarationId(626), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20739,10 +20759,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11305, 11347), + span: SourceSpan::new("dsl/std/types.dag", 10948, 10990), }); declarations.push(Declaration { - id: DeclarationId(626), + id: DeclarationId(627), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20753,10 +20773,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11534, 11579), + span: SourceSpan::new("dsl/std/types.dag", 11177, 11222), }); declarations.push(Declaration { - id: DeclarationId(627), + id: DeclarationId(628), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20767,10 +20787,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11580, 11625), + span: SourceSpan::new("dsl/std/types.dag", 11223, 11268), }); declarations.push(Declaration { - id: DeclarationId(628), + id: DeclarationId(629), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20781,10 +20801,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11626, 11671), + span: SourceSpan::new("dsl/std/types.dag", 11269, 11314), }); declarations.push(Declaration { - id: DeclarationId(629), + id: DeclarationId(630), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20795,10 +20815,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 12306, 12365), + span: SourceSpan::new("dsl/std/types.dag", 11949, 12008), }); declarations.push(Declaration { - id: DeclarationId(630), + id: DeclarationId(631), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20809,10 +20829,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 12366, 12425), + span: SourceSpan::new("dsl/std/types.dag", 12009, 12068), }); declarations.push(Declaration { - id: DeclarationId(631), + id: DeclarationId(632), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20823,10 +20843,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 12530, 12573), + span: SourceSpan::new("dsl/std/types.dag", 12173, 12216), }); declarations.push(Declaration { - id: DeclarationId(632), + id: DeclarationId(633), name: None, connective: TypeConnective::Arrow { inputs: vec![DeclarationId(93)], @@ -20841,10 +20861,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 13409, 13422), + span: SourceSpan::new("dsl/std/types.dag", 13052, 13065), }); declarations.push(Declaration { - id: DeclarationId(633), + id: DeclarationId(634), name: None, connective: TypeConnective::Arrow { inputs: vec![DeclarationId(93)], @@ -20859,10 +20879,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 13454, 13467), + span: SourceSpan::new("dsl/std/types.dag", 13097, 13110), }); declarations.push(Declaration { - id: DeclarationId(634), + id: DeclarationId(635), name: None, connective: TypeConnective::Arrow { inputs: vec![DeclarationId(93)], @@ -20877,10 +20897,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 13980, 13993), + span: SourceSpan::new("dsl/std/types.dag", 13623, 13636), }); declarations.push(Declaration { - id: DeclarationId(635), + id: DeclarationId(636), name: None, connective: TypeConnective::Arrow { inputs: vec![DeclarationId(93)], @@ -20895,10 +20915,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14025, 14038), + span: SourceSpan::new("dsl/std/types.dag", 13668, 13681), }); declarations.push(Declaration { - id: DeclarationId(636), + id: DeclarationId(637), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20909,10 +20929,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14562, 14617), + span: SourceSpan::new("dsl/std/types.dag", 14205, 14260), }); declarations.push(Declaration { - id: DeclarationId(637), + id: DeclarationId(638), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20923,10 +20943,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14618, 14672), + span: SourceSpan::new("dsl/std/types.dag", 14261, 14315), }); declarations.push(Declaration { - id: DeclarationId(638), + id: DeclarationId(639), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20937,10 +20957,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14673, 14726), + span: SourceSpan::new("dsl/std/types.dag", 14316, 14369), }); declarations.push(Declaration { - id: DeclarationId(639), + id: DeclarationId(640), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20951,10 +20971,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14727, 14784), + span: SourceSpan::new("dsl/std/types.dag", 14370, 14427), }); declarations.push(Declaration { - id: DeclarationId(640), + id: DeclarationId(641), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20965,10 +20985,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14785, 14842), + span: SourceSpan::new("dsl/std/types.dag", 14428, 14485), }); declarations.push(Declaration { - id: DeclarationId(641), + id: DeclarationId(642), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20979,10 +20999,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14843, 14898), + span: SourceSpan::new("dsl/std/types.dag", 14486, 14541), }); declarations.push(Declaration { - id: DeclarationId(642), + id: DeclarationId(643), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20993,10 +21013,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14899, 14955), + span: SourceSpan::new("dsl/std/types.dag", 14542, 14598), }); declarations.push(Declaration { - id: DeclarationId(643), + id: DeclarationId(644), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21007,10 +21027,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14956, 15012), + span: SourceSpan::new("dsl/std/types.dag", 14599, 14655), }); declarations.push(Declaration { - id: DeclarationId(644), + id: DeclarationId(645), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21021,10 +21041,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15013, 15071), + span: SourceSpan::new("dsl/std/types.dag", 14656, 14714), }); declarations.push(Declaration { - id: DeclarationId(645), + id: DeclarationId(646), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21035,10 +21055,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15302, 15373), + span: SourceSpan::new("dsl/std/types.dag", 14945, 15016), }); declarations.push(Declaration { - id: DeclarationId(646), + id: DeclarationId(647), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21049,10 +21069,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15374, 15445), + span: SourceSpan::new("dsl/std/types.dag", 15017, 15088), }); declarations.push(Declaration { - id: DeclarationId(647), + id: DeclarationId(648), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21063,10 +21083,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15446, 15513), + span: SourceSpan::new("dsl/std/types.dag", 15089, 15156), }); declarations.push(Declaration { - id: DeclarationId(648), + id: DeclarationId(649), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21077,10 +21097,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15514, 15575), + span: SourceSpan::new("dsl/std/types.dag", 15157, 15218), }); declarations.push(Declaration { - id: DeclarationId(649), + id: DeclarationId(650), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21091,10 +21111,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15655, 15697), + span: SourceSpan::new("dsl/std/types.dag", 15298, 15340), }); declarations.push(Declaration { - id: DeclarationId(650), + id: DeclarationId(651), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21105,10 +21125,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16082, 16124), + span: SourceSpan::new("dsl/std/types.dag", 15725, 15767), }); declarations.push(Declaration { - id: DeclarationId(651), + id: DeclarationId(652), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21119,10 +21139,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22123, 22187), + span: SourceSpan::new("dsl/std/types.dag", 21766, 21830), }); declarations.push(Declaration { - id: DeclarationId(652), + id: DeclarationId(653), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21133,10 +21153,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22188, 22245), + span: SourceSpan::new("dsl/std/types.dag", 21831, 21888), }); declarations.push(Declaration { - id: DeclarationId(653), + id: DeclarationId(654), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21147,10 +21167,10 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22246, 22302), + span: SourceSpan::new("dsl/std/types.dag", 21889, 21945), }); declarations.push(Declaration { - id: DeclarationId(654), + id: DeclarationId(655), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21164,7 +21184,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/unicode.dag", 3679, 3689), }); declarations.push(Declaration { - id: DeclarationId(655), + id: DeclarationId(656), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21178,7 +21198,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/unicode.dag", 3692, 3697), }); declarations.push(Declaration { - id: DeclarationId(656), + id: DeclarationId(657), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21192,7 +21212,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/unicode.dag", 3700, 3710), }); declarations.push(Declaration { - id: DeclarationId(657), + id: DeclarationId(658), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21206,7 +21226,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/unicode.dag", 3713, 3726), }); declarations.push(Declaration { - id: DeclarationId(658), + id: DeclarationId(659), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21220,7 +21240,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/unicode.dag", 4762, 4771), }); declarations.push(Declaration { - id: DeclarationId(659), + id: DeclarationId(660), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21234,7 +21254,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/unicode.dag", 4774, 4780), }); declarations.push(Declaration { - id: DeclarationId(660), + id: DeclarationId(661), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21248,7 +21268,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/unicode.dag", 4783, 4787), }); declarations.push(Declaration { - id: DeclarationId(661), + id: DeclarationId(662), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -21268,7 +21288,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/unicode.dag", 5335, 5353), }); declarations.push(Declaration { - id: DeclarationId(662), + id: DeclarationId(663), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -21288,7 +21308,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/unicode.dag", 6155, 6164), }); declarations.push(Declaration { - id: DeclarationId(663), + id: DeclarationId(664), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -21307,26 +21327,6 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { nominal_opacity: None, span: SourceSpan::new("dsl/std/unicode.dag", 6404, 6422), }); - declarations.push(Declaration { - id: DeclarationId(664), - name: None, - connective: TypeConnective::Instantiation { - template: DeclarationId(45), - arguments: vec![TemplateArgument { - parameter: DeclarationId(46), - value: DeclarationId(126), - }], - }, - type_params: vec![], - phantom_params: Vec::new(), - meta_tag: None, - specialization_parent: None, - inhabits: None, - value_body: None, - refinement: None, - nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 7574, 7598), - }); declarations.push(Declaration { id: DeclarationId(665), name: Some("List".to_string()), @@ -26951,7 +26951,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("src/v3/std/bridge_ledger.dag", 4559, 4597), + span: SourceSpan::new("src/v3/std/bridge_ledger.dag", 4498, 4536), }); declarations.push(Declaration { id: DeclarationId(890), @@ -26970,7 +26970,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("src/v3/std/bridge_ledger.dag", 5561, 5608), + span: SourceSpan::new("src/v3/std/bridge_ledger.dag", 5500, 5547), }); declarations.push(Declaration { id: DeclarationId(891), @@ -27003,9 +27003,9 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("src/v3/std/bridge_ledger.dag", 6251, 6361), + span: SourceSpan::new("src/v3/std/bridge_ledger.dag", 6190, 6300), }); - declarations.push(Declaration { id: DeclarationId(892), name: Some("bridge_ledger".to_string()), connective: TypeConnective::Instantiation { template: DeclarationId(665), arguments: vec![TemplateArgument { parameter: DeclarationId(666), value: DeclarationId(891) }] }, type_params: vec![], phantom_params: Vec::new(), meta_tag: Some(DeclarationId(2032)), specialization_parent: None, inhabits: None, value_body: Some(ValueBody::List(vec![FieldValue::Record(vec![("name".to_string(), FieldValue::Literal(LiteralBits::String("bridge_source_span_file_participation_retired".to_string()))), ("owner".to_string(), FieldValue::Literal(LiteralBits::String("R3".to_string()))), ("status".to_string(), FieldValue::Variant { constructor: DeclarationId(2031), payload: vec![] }), ("authority".to_string(), FieldValue::Literal(LiteralBits::String("ROADMAP.md#lens-fold-file-path-semantics".to_string())))]), FieldValue::Record(vec![("name".to_string(), FieldValue::Literal(LiteralBits::String("bridge_mark_bootstrap_secret_nominal_opacity_retired".to_string()))), ("owner".to_string(), FieldValue::Literal(LiteralBits::String("R2-Substrate".to_string()))), ("status".to_string(), FieldValue::Variant { constructor: DeclarationId(2030), payload: vec![] }), ("authority".to_string(), FieldValue::Literal(LiteralBits::String("PR #937".to_string())))]), FieldValue::Record(vec![("name".to_string(), FieldValue::Literal(LiteralBits::String("bridge_canonical_lens_name_dispatch_pr1183_slice_retired".to_string()))), ("owner".to_string(), FieldValue::Literal(LiteralBits::String("R2-Substrate".to_string()))), ("status".to_string(), FieldValue::Variant { constructor: DeclarationId(2030), payload: vec![] }), ("authority".to_string(), FieldValue::Literal(LiteralBits::String("src/v3/compiler/tests/integration/canonical_lens_bridge_ratchet_test.rs".to_string())))]), FieldValue::Record(vec![("name".to_string(), FieldValue::Literal(LiteralBits::String("bridge_canonical_lens_name_patching_residual".to_string()))), ("owner".to_string(), FieldValue::Literal(LiteralBits::String("PB-Runtime".to_string()))), ("status".to_string(), FieldValue::Variant { constructor: DeclarationId(2030), payload: vec![] }), ("authority".to_string(), FieldValue::Literal(LiteralBits::String("docs/briefs/r3-pb-bridge-canonical-lens-name-dispatch-closure.md".to_string())))]), FieldValue::Record(vec![("name".to_string(), FieldValue::Literal(LiteralBits::String("bridge_include_str_side_channels_retired".to_string()))), ("owner".to_string(), FieldValue::Literal(LiteralBits::String("pipeline_authority".to_string()))), ("status".to_string(), FieldValue::Variant { constructor: DeclarationId(2030), payload: vec![] }), ("authority".to_string(), FieldValue::Literal(LiteralBits::String("src/v3/compiler/tests/integration/l1_5_fixed_point_test.rs".to_string())))]), FieldValue::Record(vec![("name".to_string(), FieldValue::Literal(LiteralBits::String("bridge_exact_string_patching_residual_retired".to_string()))), ("owner".to_string(), FieldValue::Literal(LiteralBits::String("PB-Tier-2".to_string()))), ("status".to_string(), FieldValue::Variant { constructor: DeclarationId(2031), payload: vec![] }), ("authority".to_string(), FieldValue::Literal(LiteralBits::String("docs/r3-structure.md:83".to_string())))])])), refinement: None, nominal_opacity: None, span: SourceSpan::new("src/v3/std/bridge_ledger.dag", 6825, 8648) }); + declarations.push(Declaration { id: DeclarationId(892), name: Some("bridge_ledger".to_string()), connective: TypeConnective::Instantiation { template: DeclarationId(665), arguments: vec![TemplateArgument { parameter: DeclarationId(666), value: DeclarationId(891) }] }, type_params: vec![], phantom_params: Vec::new(), meta_tag: Some(DeclarationId(2032)), specialization_parent: None, inhabits: None, value_body: Some(ValueBody::List(vec![FieldValue::Record(vec![("name".to_string(), FieldValue::Literal(LiteralBits::String("bridge_source_span_file_participation_retired".to_string()))), ("owner".to_string(), FieldValue::Literal(LiteralBits::String("R3".to_string()))), ("status".to_string(), FieldValue::Variant { constructor: DeclarationId(2031), payload: vec![] }), ("authority".to_string(), FieldValue::Literal(LiteralBits::String("ROADMAP.md#lens-fold-file-path-semantics".to_string())))]), FieldValue::Record(vec![("name".to_string(), FieldValue::Literal(LiteralBits::String("bridge_mark_bootstrap_secret_nominal_opacity_retired".to_string()))), ("owner".to_string(), FieldValue::Literal(LiteralBits::String("R2-Substrate".to_string()))), ("status".to_string(), FieldValue::Variant { constructor: DeclarationId(2030), payload: vec![] }), ("authority".to_string(), FieldValue::Literal(LiteralBits::String("PR #937".to_string())))]), FieldValue::Record(vec![("name".to_string(), FieldValue::Literal(LiteralBits::String("bridge_canonical_lens_name_dispatch_pr1183_slice_retired".to_string()))), ("owner".to_string(), FieldValue::Literal(LiteralBits::String("R2-Substrate".to_string()))), ("status".to_string(), FieldValue::Variant { constructor: DeclarationId(2030), payload: vec![] }), ("authority".to_string(), FieldValue::Literal(LiteralBits::String("src/v3/compiler/tests/integration/canonical_lens_bridge_ratchet_test.rs".to_string())))]), FieldValue::Record(vec![("name".to_string(), FieldValue::Literal(LiteralBits::String("bridge_canonical_lens_name_patching_residual".to_string()))), ("owner".to_string(), FieldValue::Literal(LiteralBits::String("PB-Runtime".to_string()))), ("status".to_string(), FieldValue::Variant { constructor: DeclarationId(2030), payload: vec![] }), ("authority".to_string(), FieldValue::Literal(LiteralBits::String("docs/briefs/r3-pb-bridge-canonical-lens-name-dispatch-closure.md".to_string())))]), FieldValue::Record(vec![("name".to_string(), FieldValue::Literal(LiteralBits::String("bridge_include_str_side_channels_retired".to_string()))), ("owner".to_string(), FieldValue::Literal(LiteralBits::String("pipeline_authority".to_string()))), ("status".to_string(), FieldValue::Variant { constructor: DeclarationId(2030), payload: vec![] }), ("authority".to_string(), FieldValue::Literal(LiteralBits::String("src/v3/compiler/tests/integration/l1_5_fixed_point_test.rs".to_string())))]), FieldValue::Record(vec![("name".to_string(), FieldValue::Literal(LiteralBits::String("bridge_exact_string_patching_residual_retired".to_string()))), ("owner".to_string(), FieldValue::Literal(LiteralBits::String("PB-Tier-2".to_string()))), ("status".to_string(), FieldValue::Variant { constructor: DeclarationId(2030), payload: vec![] }), ("authority".to_string(), FieldValue::Literal(LiteralBits::String("dsl/std/types.dag Bool inhabits BooleanAlgebra + src/v3/compiler/tests/integration/bridge_lower_helpers_patch_zero_residual_test.rs".to_string())))])])), refinement: None, nominal_opacity: None, span: SourceSpan::new("src/v3/std/bridge_ledger.dag", 6764, 8063) }); declarations.push(Declaration { id: DeclarationId(893), name: Some("CleanEmissionContract".to_string()), @@ -67676,7 +67676,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("src/v3/std/bridge_ledger.dag", 4581, 4588), + span: SourceSpan::new("src/v3/std/bridge_ledger.dag", 4520, 4527), }); declarations.push(Declaration { id: DeclarationId(2031), @@ -67690,7 +67690,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("src/v3/std/bridge_ledger.dag", 4593, 4597), + span: SourceSpan::new("src/v3/std/bridge_ledger.dag", 4532, 4536), }); declarations.push(Declaration { id: DeclarationId(2032), @@ -67710,7 +67710,7 @@ fn bootstrapped_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("src/v3/std/bridge_ledger.dag", 6845, 6866), + span: SourceSpan::new("src/v3/std/bridge_ledger.dag", 6784, 6805), }); declarations.push(Declaration { id: DeclarationId(2033), diff --git a/src/v3/compiler/src/bootstrap_generated_without_parse_surface.rs b/src/v3/compiler/src/bootstrap_generated_without_parse_surface.rs index a6b7697b06f..55131d1efcb 100644 --- a/src/v3/compiler/src/bootstrap_generated_without_parse_surface.rs +++ b/src/v3/compiler/src/bootstrap_generated_without_parse_surface.rs @@ -59,7 +59,7 @@ fn bootstrapped_fixture_without_parse_surface_dag_nodes() -> Vec { id: NodeId(3), data: LiteralBits::Int("1".to_string()), output: PortId(4), - span: SourceSpan::new("dsl/std/types.dag", 10914, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10557, 10578), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -67,13 +67,13 @@ fn bootstrapped_fixture_without_parse_surface_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(3), PortId(4)], output: PortId(5), - span: SourceSpan::new("dsl/std/types.dag", 10914, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10557, 10578), })); nodes.push(Behavior::Value(ValueNode { id: NodeId(5), data: LiteralBits::Int("5".to_string()), output: PortId(6), - span: SourceSpan::new("dsl/std/types.dag", 10914, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10557, 10578), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -81,21 +81,21 @@ fn bootstrapped_fixture_without_parse_surface_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Le)), inputs: vec![PortId(3), PortId(6)], output: PortId(7), - span: SourceSpan::new("dsl/std/types.dag", 10914, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10557, 10578), })); nodes.push(Behavior::Transform(TransformNode { id: NodeId(7), target: TransformTarget::Operator(OperatorKind::Logical(LogicalOp::And)), inputs: vec![PortId(5), PortId(7)], output: PortId(8), - span: SourceSpan::new("dsl/std/types.dag", 10914, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10557, 10578), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(8), name: "".to_string(), value: PortId(8), params: vec![PortId(3)], - span: SourceSpan::new("dsl/std/types.dag", 10914, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10557, 10578), lane2_workflow: None, emit_participation: None, })); @@ -103,7 +103,7 @@ fn bootstrapped_fixture_without_parse_surface_dag_nodes() -> Vec { id: NodeId(9), data: LiteralBits::Int("100".to_string()), output: PortId(10), - span: SourceSpan::new("dsl/std/types.dag", 10966, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10609, 10634), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -111,13 +111,13 @@ fn bootstrapped_fixture_without_parse_surface_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(9), PortId(10)], output: PortId(11), - span: SourceSpan::new("dsl/std/types.dag", 10966, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10609, 10634), })); nodes.push(Behavior::Value(ValueNode { id: NodeId(11), data: LiteralBits::Int("599".to_string()), output: PortId(12), - span: SourceSpan::new("dsl/std/types.dag", 10966, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10609, 10634), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -125,21 +125,21 @@ fn bootstrapped_fixture_without_parse_surface_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Le)), inputs: vec![PortId(9), PortId(12)], output: PortId(13), - span: SourceSpan::new("dsl/std/types.dag", 10966, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10609, 10634), })); nodes.push(Behavior::Transform(TransformNode { id: NodeId(13), target: TransformTarget::Operator(OperatorKind::Logical(LogicalOp::And)), inputs: vec![PortId(11), PortId(13)], output: PortId(14), - span: SourceSpan::new("dsl/std/types.dag", 10966, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10609, 10634), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(14), name: "".to_string(), value: PortId(14), params: vec![PortId(9)], - span: SourceSpan::new("dsl/std/types.dag", 10966, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10609, 10634), lane2_workflow: None, emit_participation: None, })); @@ -147,7 +147,7 @@ fn bootstrapped_fixture_without_parse_surface_dag_nodes() -> Vec { id: NodeId(15), data: LiteralBits::Int("1".to_string()), output: PortId(16), - span: SourceSpan::new("dsl/std/types.dag", 11122, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10765, 10790), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -155,13 +155,13 @@ fn bootstrapped_fixture_without_parse_surface_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(15), PortId(16)], output: PortId(17), - span: SourceSpan::new("dsl/std/types.dag", 11122, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10765, 10790), })); nodes.push(Behavior::Value(ValueNode { id: NodeId(17), data: LiteralBits::Int("65535".to_string()), output: PortId(18), - span: SourceSpan::new("dsl/std/types.dag", 11122, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10765, 10790), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -169,21 +169,21 @@ fn bootstrapped_fixture_without_parse_surface_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Le)), inputs: vec![PortId(15), PortId(18)], output: PortId(19), - span: SourceSpan::new("dsl/std/types.dag", 11122, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10765, 10790), })); nodes.push(Behavior::Transform(TransformNode { id: NodeId(19), target: TransformTarget::Operator(OperatorKind::Logical(LogicalOp::And)), inputs: vec![PortId(17), PortId(19)], output: PortId(20), - span: SourceSpan::new("dsl/std/types.dag", 11122, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10765, 10790), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(20), name: "".to_string(), value: PortId(20), params: vec![PortId(15)], - span: SourceSpan::new("dsl/std/types.dag", 11122, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10765, 10790), lane2_workflow: None, emit_participation: None, })); @@ -191,7 +191,7 @@ fn bootstrapped_fixture_without_parse_surface_dag_nodes() -> Vec { id: NodeId(21), data: LiteralBits::Int("0".to_string()), output: PortId(22), - span: SourceSpan::new("dsl/std/types.dag", 13409, 13422), + span: SourceSpan::new("dsl/std/types.dag", 13052, 13065), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -199,14 +199,14 @@ fn bootstrapped_fixture_without_parse_surface_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(21), PortId(22)], output: PortId(23), - span: SourceSpan::new("dsl/std/types.dag", 13409, 13422), + span: SourceSpan::new("dsl/std/types.dag", 13052, 13065), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(23), name: "".to_string(), value: PortId(23), params: vec![PortId(21)], - span: SourceSpan::new("dsl/std/types.dag", 13409, 13422), + span: SourceSpan::new("dsl/std/types.dag", 13052, 13065), lane2_workflow: None, emit_participation: None, })); @@ -214,7 +214,7 @@ fn bootstrapped_fixture_without_parse_surface_dag_nodes() -> Vec { id: NodeId(24), data: LiteralBits::Int("0".to_string()), output: PortId(25), - span: SourceSpan::new("dsl/std/types.dag", 13454, 13467), + span: SourceSpan::new("dsl/std/types.dag", 13097, 13110), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -222,14 +222,14 @@ fn bootstrapped_fixture_without_parse_surface_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(24), PortId(25)], output: PortId(26), - span: SourceSpan::new("dsl/std/types.dag", 13454, 13467), + span: SourceSpan::new("dsl/std/types.dag", 13097, 13110), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(26), name: "".to_string(), value: PortId(26), params: vec![PortId(24)], - span: SourceSpan::new("dsl/std/types.dag", 13454, 13467), + span: SourceSpan::new("dsl/std/types.dag", 13097, 13110), lane2_workflow: None, emit_participation: None, })); @@ -237,7 +237,7 @@ fn bootstrapped_fixture_without_parse_surface_dag_nodes() -> Vec { id: NodeId(27), data: LiteralBits::Int("0".to_string()), output: PortId(28), - span: SourceSpan::new("dsl/std/types.dag", 13980, 13993), + span: SourceSpan::new("dsl/std/types.dag", 13623, 13636), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -245,14 +245,14 @@ fn bootstrapped_fixture_without_parse_surface_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(27), PortId(28)], output: PortId(29), - span: SourceSpan::new("dsl/std/types.dag", 13980, 13993), + span: SourceSpan::new("dsl/std/types.dag", 13623, 13636), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(29), name: "".to_string(), value: PortId(29), params: vec![PortId(27)], - span: SourceSpan::new("dsl/std/types.dag", 13980, 13993), + span: SourceSpan::new("dsl/std/types.dag", 13623, 13636), lane2_workflow: None, emit_participation: None, })); @@ -260,7 +260,7 @@ fn bootstrapped_fixture_without_parse_surface_dag_nodes() -> Vec { id: NodeId(30), data: LiteralBits::Int("0".to_string()), output: PortId(31), - span: SourceSpan::new("dsl/std/types.dag", 14025, 14038), + span: SourceSpan::new("dsl/std/types.dag", 13668, 13681), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -268,14 +268,14 @@ fn bootstrapped_fixture_without_parse_surface_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(30), PortId(31)], output: PortId(32), - span: SourceSpan::new("dsl/std/types.dag", 14025, 14038), + span: SourceSpan::new("dsl/std/types.dag", 13668, 13681), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(32), name: "".to_string(), value: PortId(32), params: vec![PortId(30)], - span: SourceSpan::new("dsl/std/types.dag", 14025, 14038), + span: SourceSpan::new("dsl/std/types.dag", 13668, 13681), lane2_workflow: None, emit_participation: None, })); @@ -10299,7 +10299,7 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20739,10 +20759,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20753,10 +20773,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20767,10 +20787,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20781,10 +20801,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20795,10 +20815,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20809,10 +20829,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20823,10 +20843,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec Vec Vec Vec Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20909,10 +20929,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20923,10 +20943,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20937,10 +20957,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20951,10 +20971,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20965,10 +20985,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20979,10 +20999,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -20993,10 +21013,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21007,10 +21027,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21021,10 +21041,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21035,10 +21055,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21049,10 +21069,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21063,10 +21083,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21077,10 +21097,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21091,10 +21111,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21105,10 +21125,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21119,10 +21139,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21133,10 +21153,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -21147,10 +21167,10 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec Vec + src/v3/compiler/tests/integration/bridge_lower_helpers_patch_zero_residual_test.rs".to_string())))])])), refinement: None, nominal_opacity: None, span: SourceSpan::new("src/v3/std/bridge_ledger.dag", 6764, 8063) }); declarations.push(Declaration { id: DeclarationId(893), name: Some("CleanEmissionContract".to_string()), @@ -64969,7 +64969,7 @@ fn bootstrapped_fixture_without_parse_surface_dag_declarations() -> Vec Vec Vec Option { diff --git a/src/v3/compiler/src/bootstrap_std_generated.rs b/src/v3/compiler/src/bootstrap_std_generated.rs index 45405a8754b..3c3e310c2c1 100644 --- a/src/v3/compiler/src/bootstrap_std_generated.rs +++ b/src/v3/compiler/src/bootstrap_std_generated.rs @@ -59,7 +59,7 @@ fn bootstrapped_std_fixture_dag_nodes() -> Vec { id: NodeId(3), data: LiteralBits::Int("1".to_string()), output: PortId(4), - span: SourceSpan::new("dsl/std/types.dag", 10914, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10557, 10578), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -67,13 +67,13 @@ fn bootstrapped_std_fixture_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(3), PortId(4)], output: PortId(5), - span: SourceSpan::new("dsl/std/types.dag", 10914, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10557, 10578), })); nodes.push(Behavior::Value(ValueNode { id: NodeId(5), data: LiteralBits::Int("5".to_string()), output: PortId(6), - span: SourceSpan::new("dsl/std/types.dag", 10914, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10557, 10578), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -81,21 +81,21 @@ fn bootstrapped_std_fixture_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Le)), inputs: vec![PortId(3), PortId(6)], output: PortId(7), - span: SourceSpan::new("dsl/std/types.dag", 10914, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10557, 10578), })); nodes.push(Behavior::Transform(TransformNode { id: NodeId(7), target: TransformTarget::Operator(OperatorKind::Logical(LogicalOp::And)), inputs: vec![PortId(5), PortId(7)], output: PortId(8), - span: SourceSpan::new("dsl/std/types.dag", 10914, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10557, 10578), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(8), name: "".to_string(), value: PortId(8), params: vec![PortId(3)], - span: SourceSpan::new("dsl/std/types.dag", 10914, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10557, 10578), lane2_workflow: None, emit_participation: None, })); @@ -103,7 +103,7 @@ fn bootstrapped_std_fixture_dag_nodes() -> Vec { id: NodeId(9), data: LiteralBits::Int("100".to_string()), output: PortId(10), - span: SourceSpan::new("dsl/std/types.dag", 10966, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10609, 10634), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -111,13 +111,13 @@ fn bootstrapped_std_fixture_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(9), PortId(10)], output: PortId(11), - span: SourceSpan::new("dsl/std/types.dag", 10966, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10609, 10634), })); nodes.push(Behavior::Value(ValueNode { id: NodeId(11), data: LiteralBits::Int("599".to_string()), output: PortId(12), - span: SourceSpan::new("dsl/std/types.dag", 10966, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10609, 10634), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -125,21 +125,21 @@ fn bootstrapped_std_fixture_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Le)), inputs: vec![PortId(9), PortId(12)], output: PortId(13), - span: SourceSpan::new("dsl/std/types.dag", 10966, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10609, 10634), })); nodes.push(Behavior::Transform(TransformNode { id: NodeId(13), target: TransformTarget::Operator(OperatorKind::Logical(LogicalOp::And)), inputs: vec![PortId(11), PortId(13)], output: PortId(14), - span: SourceSpan::new("dsl/std/types.dag", 10966, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10609, 10634), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(14), name: "".to_string(), value: PortId(14), params: vec![PortId(9)], - span: SourceSpan::new("dsl/std/types.dag", 10966, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10609, 10634), lane2_workflow: None, emit_participation: None, })); @@ -147,7 +147,7 @@ fn bootstrapped_std_fixture_dag_nodes() -> Vec { id: NodeId(15), data: LiteralBits::Int("1".to_string()), output: PortId(16), - span: SourceSpan::new("dsl/std/types.dag", 11122, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10765, 10790), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -155,13 +155,13 @@ fn bootstrapped_std_fixture_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(15), PortId(16)], output: PortId(17), - span: SourceSpan::new("dsl/std/types.dag", 11122, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10765, 10790), })); nodes.push(Behavior::Value(ValueNode { id: NodeId(17), data: LiteralBits::Int("65535".to_string()), output: PortId(18), - span: SourceSpan::new("dsl/std/types.dag", 11122, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10765, 10790), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -169,21 +169,21 @@ fn bootstrapped_std_fixture_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Le)), inputs: vec![PortId(15), PortId(18)], output: PortId(19), - span: SourceSpan::new("dsl/std/types.dag", 11122, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10765, 10790), })); nodes.push(Behavior::Transform(TransformNode { id: NodeId(19), target: TransformTarget::Operator(OperatorKind::Logical(LogicalOp::And)), inputs: vec![PortId(17), PortId(19)], output: PortId(20), - span: SourceSpan::new("dsl/std/types.dag", 11122, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10765, 10790), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(20), name: "".to_string(), value: PortId(20), params: vec![PortId(15)], - span: SourceSpan::new("dsl/std/types.dag", 11122, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10765, 10790), lane2_workflow: None, emit_participation: None, })); @@ -191,7 +191,7 @@ fn bootstrapped_std_fixture_dag_nodes() -> Vec { id: NodeId(21), data: LiteralBits::Int("0".to_string()), output: PortId(22), - span: SourceSpan::new("dsl/std/types.dag", 13409, 13422), + span: SourceSpan::new("dsl/std/types.dag", 13052, 13065), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -199,14 +199,14 @@ fn bootstrapped_std_fixture_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(21), PortId(22)], output: PortId(23), - span: SourceSpan::new("dsl/std/types.dag", 13409, 13422), + span: SourceSpan::new("dsl/std/types.dag", 13052, 13065), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(23), name: "".to_string(), value: PortId(23), params: vec![PortId(21)], - span: SourceSpan::new("dsl/std/types.dag", 13409, 13422), + span: SourceSpan::new("dsl/std/types.dag", 13052, 13065), lane2_workflow: None, emit_participation: None, })); @@ -214,7 +214,7 @@ fn bootstrapped_std_fixture_dag_nodes() -> Vec { id: NodeId(24), data: LiteralBits::Int("0".to_string()), output: PortId(25), - span: SourceSpan::new("dsl/std/types.dag", 13454, 13467), + span: SourceSpan::new("dsl/std/types.dag", 13097, 13110), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -222,14 +222,14 @@ fn bootstrapped_std_fixture_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(24), PortId(25)], output: PortId(26), - span: SourceSpan::new("dsl/std/types.dag", 13454, 13467), + span: SourceSpan::new("dsl/std/types.dag", 13097, 13110), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(26), name: "".to_string(), value: PortId(26), params: vec![PortId(24)], - span: SourceSpan::new("dsl/std/types.dag", 13454, 13467), + span: SourceSpan::new("dsl/std/types.dag", 13097, 13110), lane2_workflow: None, emit_participation: None, })); @@ -237,7 +237,7 @@ fn bootstrapped_std_fixture_dag_nodes() -> Vec { id: NodeId(27), data: LiteralBits::Int("0".to_string()), output: PortId(28), - span: SourceSpan::new("dsl/std/types.dag", 13980, 13993), + span: SourceSpan::new("dsl/std/types.dag", 13623, 13636), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -245,14 +245,14 @@ fn bootstrapped_std_fixture_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(27), PortId(28)], output: PortId(29), - span: SourceSpan::new("dsl/std/types.dag", 13980, 13993), + span: SourceSpan::new("dsl/std/types.dag", 13623, 13636), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(29), name: "".to_string(), value: PortId(29), params: vec![PortId(27)], - span: SourceSpan::new("dsl/std/types.dag", 13980, 13993), + span: SourceSpan::new("dsl/std/types.dag", 13623, 13636), lane2_workflow: None, emit_participation: None, })); @@ -260,7 +260,7 @@ fn bootstrapped_std_fixture_dag_nodes() -> Vec { id: NodeId(30), data: LiteralBits::Int("0".to_string()), output: PortId(31), - span: SourceSpan::new("dsl/std/types.dag", 14025, 14038), + span: SourceSpan::new("dsl/std/types.dag", 13668, 13681), lane2_workflow: None, })); nodes.push(Behavior::Transform(TransformNode { @@ -268,14 +268,14 @@ fn bootstrapped_std_fixture_dag_nodes() -> Vec { target: TransformTarget::Operator(OperatorKind::Comparison(ComparisonOp::Ge)), inputs: vec![PortId(30), PortId(31)], output: PortId(32), - span: SourceSpan::new("dsl/std/types.dag", 14025, 14038), + span: SourceSpan::new("dsl/std/types.dag", 13668, 13681), })); nodes.push(Behavior::Bind(BindNode { id: NodeId(32), name: "".to_string(), value: PortId(32), params: vec![PortId(30)], - span: SourceSpan::new("dsl/std/types.dag", 14025, 14038), + span: SourceSpan::new("dsl/std/types.dag", 13668, 13681), lane2_workflow: None, emit_participation: None, })); @@ -2991,7 +2991,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { }, type_params: vec![], phantom_params: Vec::new(), - meta_tag: Some(DeclarationId(618)), + meta_tag: Some(DeclarationId(619)), specialization_parent: None, inhabits: None, value_body: Some(ValueBody::Map( @@ -3071,7 +3071,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { }, type_params: vec![], phantom_params: Vec::new(), - meta_tag: Some(DeclarationId(619)), + meta_tag: Some(DeclarationId(620)), specialization_parent: None, inhabits: None, value_body: Some(ValueBody::Map( @@ -3185,7 +3185,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { }, type_params: vec![], phantom_params: Vec::new(), - meta_tag: Some(DeclarationId(620)), + meta_tag: Some(DeclarationId(621)), specialization_parent: None, inhabits: None, value_body: Some(ValueBody::Map( @@ -3235,7 +3235,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { }, type_params: vec![], phantom_params: Vec::new(), - meta_tag: Some(DeclarationId(621)), + meta_tag: Some(DeclarationId(622)), specialization_parent: None, inhabits: None, value_body: Some(ValueBody::Map( @@ -3350,11 +3350,11 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { phantom_params: Vec::new(), meta_tag: None, specialization_parent: None, - inhabits: Some(DeclarationId(664)), + inhabits: Some(DeclarationId(512)), value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 7574, 7598), + span: SourceSpan::new("dsl/std/types.dag", 7187, 7241), }); declarations.push(Declaration { id: DeclarationId(127), @@ -3368,7 +3368,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 7666, 7675), + span: SourceSpan::new("dsl/std/types.dag", 7309, 7318), }); declarations.push(Declaration { id: DeclarationId(128), @@ -3382,7 +3382,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 7792, 7801), + span: SourceSpan::new("dsl/std/types.dag", 7435, 7444), }); declarations.push(Declaration { id: DeclarationId(129), @@ -3396,7 +3396,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 7802, 7812), + span: SourceSpan::new("dsl/std/types.dag", 7445, 7455), }); declarations.push(Declaration { id: DeclarationId(130), @@ -3413,7 +3413,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 8503, 8518), + span: SourceSpan::new("dsl/std/types.dag", 8146, 8161), }); declarations.push(Declaration { id: DeclarationId(131), @@ -3433,7 +3433,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 9282, 9322), + span: SourceSpan::new("dsl/std/types.dag", 8925, 8965), }); declarations.push(Declaration { id: DeclarationId(132), @@ -3447,7 +3447,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 9282, 9322), + span: SourceSpan::new("dsl/std/types.dag", 8925, 8965), }); declarations.push(Declaration { id: DeclarationId(133), @@ -3467,7 +3467,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 9323, 9366), + span: SourceSpan::new("dsl/std/types.dag", 8966, 9009), }); declarations.push(Declaration { id: DeclarationId(134), @@ -3481,7 +3481,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 9323, 9366), + span: SourceSpan::new("dsl/std/types.dag", 8966, 9009), }); declarations.push(Declaration { id: DeclarationId(135), @@ -3507,7 +3507,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 9367, 9417), + span: SourceSpan::new("dsl/std/types.dag", 9010, 9060), }); declarations.push(Declaration { id: DeclarationId(136), @@ -3521,7 +3521,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 9367, 9417), + span: SourceSpan::new("dsl/std/types.dag", 9010, 9060), }); declarations.push(Declaration { id: DeclarationId(137), @@ -3535,7 +3535,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 9367, 9417), + span: SourceSpan::new("dsl/std/types.dag", 9010, 9060), }); declarations.push(Declaration { id: DeclarationId(138), @@ -3552,7 +3552,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 10763, 10789), + span: SourceSpan::new("dsl/std/types.dag", 10406, 10432), }); declarations.push(Declaration { id: DeclarationId(139), @@ -3569,7 +3569,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 10857, 10883), + span: SourceSpan::new("dsl/std/types.dag", 10500, 10526), }); declarations.push(Declaration { id: DeclarationId(140), @@ -3581,9 +3581,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(622)), + refinement: Some(DeclarationId(623)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 10884, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10527, 10578), }); declarations.push(Declaration { id: DeclarationId(141), @@ -3595,9 +3595,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(623)), + refinement: Some(DeclarationId(624)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 10936, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10579, 10634), }); declarations.push(Declaration { id: DeclarationId(142), @@ -3614,7 +3614,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11065, 11091), + span: SourceSpan::new("dsl/std/types.dag", 10708, 10734), }); declarations.push(Declaration { id: DeclarationId(143), @@ -3626,9 +3626,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(624)), + refinement: Some(DeclarationId(625)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11092, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10735, 10790), }); declarations.push(Declaration { id: DeclarationId(144), @@ -3645,7 +3645,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11236, 11262), + span: SourceSpan::new("dsl/std/types.dag", 10879, 10905), }); declarations.push(Declaration { id: DeclarationId(145), @@ -3664,7 +3664,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { nominal_opacity: Some(NominalOpacity { permitted_accessors: vec![], }), - span: SourceSpan::new("dsl/std/types.dag", 11263, 11304), + span: SourceSpan::new("dsl/std/types.dag", 10906, 10947), }); declarations.push(Declaration { id: DeclarationId(146), @@ -3676,9 +3676,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(625)), + refinement: Some(DeclarationId(626)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11305, 11347), + span: SourceSpan::new("dsl/std/types.dag", 10948, 10990), }); declarations.push(Declaration { id: DeclarationId(147), @@ -3695,7 +3695,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11408, 11434), + span: SourceSpan::new("dsl/std/types.dag", 11051, 11077), }); declarations.push(Declaration { id: DeclarationId(148), @@ -3712,7 +3712,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11507, 11533), + span: SourceSpan::new("dsl/std/types.dag", 11150, 11176), }); declarations.push(Declaration { id: DeclarationId(149), @@ -3724,9 +3724,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(626)), + refinement: Some(DeclarationId(627)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11534, 11579), + span: SourceSpan::new("dsl/std/types.dag", 11177, 11222), }); declarations.push(Declaration { id: DeclarationId(150), @@ -3738,9 +3738,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(627)), + refinement: Some(DeclarationId(628)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11580, 11625), + span: SourceSpan::new("dsl/std/types.dag", 11223, 11268), }); declarations.push(Declaration { id: DeclarationId(151), @@ -3752,9 +3752,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(628)), + refinement: Some(DeclarationId(629)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11626, 11671), + span: SourceSpan::new("dsl/std/types.dag", 11269, 11314), }); declarations.push(Declaration { id: DeclarationId(152), @@ -3766,9 +3766,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(629)), + refinement: Some(DeclarationId(630)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 12306, 12365), + span: SourceSpan::new("dsl/std/types.dag", 11949, 12008), }); declarations.push(Declaration { id: DeclarationId(153), @@ -3780,9 +3780,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(630)), + refinement: Some(DeclarationId(631)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 12366, 12425), + span: SourceSpan::new("dsl/std/types.dag", 12009, 12068), }); declarations.push(Declaration { id: DeclarationId(154), @@ -3790,7 +3790,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { connective: TypeConnective::Conj { children: vec![Field { label: "segments".to_string(), - ty: DeclarationId(512), + ty: DeclarationId(513), }], }, type_params: vec![], @@ -3801,7 +3801,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 12426, 12478), + span: SourceSpan::new("dsl/std/types.dag", 12069, 12121), }); declarations.push(Declaration { id: DeclarationId(155), @@ -3809,7 +3809,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { connective: TypeConnective::Conj { children: vec![Field { label: "segments".to_string(), - ty: DeclarationId(513), + ty: DeclarationId(514), }], }, type_params: vec![], @@ -3820,7 +3820,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 12479, 12529), + span: SourceSpan::new("dsl/std/types.dag", 12122, 12172), }); declarations.push(Declaration { id: DeclarationId(156), @@ -3832,9 +3832,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(631)), + refinement: Some(DeclarationId(632)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 12530, 12573), + span: SourceSpan::new("dsl/std/types.dag", 12173, 12216), }); declarations.push(Declaration { id: DeclarationId(157), @@ -3863,7 +3863,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 13191, 13251), + span: SourceSpan::new("dsl/std/types.dag", 12834, 12894), }); declarations.push(Declaration { id: DeclarationId(158), @@ -3880,7 +3880,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 13351, 13377), + span: SourceSpan::new("dsl/std/types.dag", 12994, 13020), }); declarations.push(Declaration { id: DeclarationId(159), @@ -3892,9 +3892,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(632)), + refinement: Some(DeclarationId(633)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 13378, 13422), + span: SourceSpan::new("dsl/std/types.dag", 13021, 13065), }); declarations.push(Declaration { id: DeclarationId(160), @@ -3906,9 +3906,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(633)), + refinement: Some(DeclarationId(634)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 13423, 13467), + span: SourceSpan::new("dsl/std/types.dag", 13066, 13110), }); declarations.push(Declaration { id: DeclarationId(161), @@ -3920,9 +3920,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(634)), + refinement: Some(DeclarationId(635)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 13949, 13993), + span: SourceSpan::new("dsl/std/types.dag", 13592, 13636), }); declarations.push(Declaration { id: DeclarationId(162), @@ -3934,9 +3934,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(635)), + refinement: Some(DeclarationId(636)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 13994, 14038), + span: SourceSpan::new("dsl/std/types.dag", 13637, 13681), }); declarations.push(Declaration { id: DeclarationId(163), @@ -3948,9 +3948,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(636)), + refinement: Some(DeclarationId(637)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14562, 14617), + span: SourceSpan::new("dsl/std/types.dag", 14205, 14260), }); declarations.push(Declaration { id: DeclarationId(164), @@ -3962,9 +3962,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(637)), + refinement: Some(DeclarationId(638)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14618, 14672), + span: SourceSpan::new("dsl/std/types.dag", 14261, 14315), }); declarations.push(Declaration { id: DeclarationId(165), @@ -3976,9 +3976,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(638)), + refinement: Some(DeclarationId(639)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14673, 14726), + span: SourceSpan::new("dsl/std/types.dag", 14316, 14369), }); declarations.push(Declaration { id: DeclarationId(166), @@ -3990,9 +3990,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(639)), + refinement: Some(DeclarationId(640)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14727, 14784), + span: SourceSpan::new("dsl/std/types.dag", 14370, 14427), }); declarations.push(Declaration { id: DeclarationId(167), @@ -4004,9 +4004,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(640)), + refinement: Some(DeclarationId(641)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14785, 14842), + span: SourceSpan::new("dsl/std/types.dag", 14428, 14485), }); declarations.push(Declaration { id: DeclarationId(168), @@ -4018,9 +4018,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(641)), + refinement: Some(DeclarationId(642)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14843, 14898), + span: SourceSpan::new("dsl/std/types.dag", 14486, 14541), }); declarations.push(Declaration { id: DeclarationId(169), @@ -4032,9 +4032,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(642)), + refinement: Some(DeclarationId(643)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14899, 14955), + span: SourceSpan::new("dsl/std/types.dag", 14542, 14598), }); declarations.push(Declaration { id: DeclarationId(170), @@ -4046,9 +4046,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(643)), + refinement: Some(DeclarationId(644)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14956, 15012), + span: SourceSpan::new("dsl/std/types.dag", 14599, 14655), }); declarations.push(Declaration { id: DeclarationId(171), @@ -4060,9 +4060,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(644)), + refinement: Some(DeclarationId(645)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15013, 15071), + span: SourceSpan::new("dsl/std/types.dag", 14656, 14714), }); declarations.push(Declaration { id: DeclarationId(172), @@ -4074,9 +4074,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(645)), + refinement: Some(DeclarationId(646)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15302, 15373), + span: SourceSpan::new("dsl/std/types.dag", 14945, 15016), }); declarations.push(Declaration { id: DeclarationId(173), @@ -4088,9 +4088,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(646)), + refinement: Some(DeclarationId(647)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15374, 15445), + span: SourceSpan::new("dsl/std/types.dag", 15017, 15088), }); declarations.push(Declaration { id: DeclarationId(174), @@ -4102,9 +4102,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(647)), + refinement: Some(DeclarationId(648)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15446, 15513), + span: SourceSpan::new("dsl/std/types.dag", 15089, 15156), }); declarations.push(Declaration { id: DeclarationId(175), @@ -4116,9 +4116,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(648)), + refinement: Some(DeclarationId(649)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15514, 15575), + span: SourceSpan::new("dsl/std/types.dag", 15157, 15218), }); declarations.push(Declaration { id: DeclarationId(176), @@ -4130,9 +4130,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(649)), + refinement: Some(DeclarationId(650)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15655, 15697), + span: SourceSpan::new("dsl/std/types.dag", 15298, 15340), }); declarations.push(Declaration { id: DeclarationId(177), @@ -4144,9 +4144,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(650)), + refinement: Some(DeclarationId(651)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16082, 16124), + span: SourceSpan::new("dsl/std/types.dag", 15725, 15767), }); declarations.push(Declaration { id: DeclarationId(178), @@ -4163,7 +4163,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16249, 16282), + span: SourceSpan::new("dsl/std/types.dag", 15892, 15925), }); declarations.push(Declaration { id: DeclarationId(179), @@ -4172,15 +4172,15 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "Linux".to_string(), - ty: DeclarationId(514), + ty: DeclarationId(515), }, Field { label: "Macos".to_string(), - ty: DeclarationId(515), + ty: DeclarationId(516), }, Field { label: "Windows".to_string(), - ty: DeclarationId(516), + ty: DeclarationId(517), }, ], }, @@ -4192,7 +4192,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16668, 16711), + span: SourceSpan::new("dsl/std/types.dag", 16311, 16354), }); declarations.push(Declaration { id: DeclarationId(180), @@ -4201,19 +4201,19 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "Pure".to_string(), - ty: DeclarationId(517), + ty: DeclarationId(518), }, Field { label: "Transport".to_string(), - ty: DeclarationId(518), + ty: DeclarationId(519), }, Field { label: "SubDag".to_string(), - ty: DeclarationId(519), + ty: DeclarationId(520), }, Field { label: "Env".to_string(), - ty: DeclarationId(520), + ty: DeclarationId(521), }, ], }, @@ -4225,7 +4225,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16839, 16894), + span: SourceSpan::new("dsl/std/types.dag", 16482, 16537), }); declarations.push(Declaration { id: DeclarationId(181), @@ -4234,15 +4234,15 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "Template".to_string(), - ty: DeclarationId(521), + ty: DeclarationId(522), }, Field { label: "Generated".to_string(), - ty: DeclarationId(522), + ty: DeclarationId(523), }, Field { label: "Static".to_string(), - ty: DeclarationId(523), + ty: DeclarationId(524), }, ], }, @@ -4254,7 +4254,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16895, 16948), + span: SourceSpan::new("dsl/std/types.dag", 16538, 16591), }); declarations.push(Declaration { id: DeclarationId(182), @@ -4263,23 +4263,23 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "Xs".to_string(), - ty: DeclarationId(524), + ty: DeclarationId(525), }, Field { label: "S".to_string(), - ty: DeclarationId(525), + ty: DeclarationId(526), }, Field { label: "M".to_string(), - ty: DeclarationId(526), + ty: DeclarationId(527), }, Field { label: "L".to_string(), - ty: DeclarationId(527), + ty: DeclarationId(528), }, Field { label: "Xl".to_string(), - ty: DeclarationId(528), + ty: DeclarationId(529), }, ], }, @@ -4291,7 +4291,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16950, 16987), + span: SourceSpan::new("dsl/std/types.dag", 16593, 16630), }); declarations.push(Declaration { id: DeclarationId(183), @@ -4300,23 +4300,23 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "Stored".to_string(), - ty: DeclarationId(529), + ty: DeclarationId(530), }, Field { label: "PlatformInjected".to_string(), - ty: DeclarationId(530), + ty: DeclarationId(531), }, Field { label: "WorkloadIdentity".to_string(), - ty: DeclarationId(533), + ty: DeclarationId(534), }, Field { label: "InteractiveAuth".to_string(), - ty: DeclarationId(535), + ty: DeclarationId(536), }, Field { label: "Chained".to_string(), - ty: DeclarationId(537), + ty: DeclarationId(538), }, ], }, @@ -4328,7 +4328,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17235, 17557), + span: SourceSpan::new("dsl/std/types.dag", 16878, 17200), }); declarations.push(Declaration { id: DeclarationId(184), @@ -4337,47 +4337,47 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "X86_64".to_string(), - ty: DeclarationId(538), + ty: DeclarationId(539), }, Field { label: "X86".to_string(), - ty: DeclarationId(539), + ty: DeclarationId(540), }, Field { label: "Aarch64".to_string(), - ty: DeclarationId(540), + ty: DeclarationId(541), }, Field { label: "Arm".to_string(), - ty: DeclarationId(541), + ty: DeclarationId(542), }, Field { label: "Armv7".to_string(), - ty: DeclarationId(542), + ty: DeclarationId(543), }, Field { label: "Mips".to_string(), - ty: DeclarationId(543), + ty: DeclarationId(544), }, Field { label: "Mipsel".to_string(), - ty: DeclarationId(544), + ty: DeclarationId(545), }, Field { label: "Mips64".to_string(), - ty: DeclarationId(545), + ty: DeclarationId(546), }, Field { label: "Mips64el".to_string(), - ty: DeclarationId(546), + ty: DeclarationId(547), }, Field { label: "Riscv64".to_string(), - ty: DeclarationId(547), + ty: DeclarationId(548), }, Field { label: "Wasm32".to_string(), - ty: DeclarationId(548), + ty: DeclarationId(549), }, ], }, @@ -4389,7 +4389,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17632, 17735), + span: SourceSpan::new("dsl/std/types.dag", 17275, 17378), }); declarations.push(Declaration { id: DeclarationId(185), @@ -4398,19 +4398,19 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "UnknownVendor".to_string(), - ty: DeclarationId(549), + ty: DeclarationId(550), }, Field { label: "Pc".to_string(), - ty: DeclarationId(550), + ty: DeclarationId(551), }, Field { label: "Apple".to_string(), - ty: DeclarationId(551), + ty: DeclarationId(552), }, Field { label: "W64".to_string(), - ty: DeclarationId(552), + ty: DeclarationId(553), }, ], }, @@ -4422,7 +4422,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17736, 17782), + span: SourceSpan::new("dsl/std/types.dag", 17379, 17425), }); declarations.push(Declaration { id: DeclarationId(186), @@ -4431,31 +4431,31 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "Linux".to_string(), - ty: DeclarationId(553), + ty: DeclarationId(554), }, Field { label: "Macos".to_string(), - ty: DeclarationId(554), + ty: DeclarationId(555), }, Field { label: "Windows".to_string(), - ty: DeclarationId(555), + ty: DeclarationId(556), }, Field { label: "Freebsd".to_string(), - ty: DeclarationId(556), + ty: DeclarationId(557), }, Field { label: "Android".to_string(), - ty: DeclarationId(557), + ty: DeclarationId(558), }, Field { label: "Ios".to_string(), - ty: DeclarationId(558), + ty: DeclarationId(559), }, Field { label: "Wasi".to_string(), - ty: DeclarationId(559), + ty: DeclarationId(560), }, ], }, @@ -4467,7 +4467,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17783, 17849), + span: SourceSpan::new("dsl/std/types.dag", 17426, 17492), }); declarations.push(Declaration { id: DeclarationId(187), @@ -4476,39 +4476,39 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "NoneAbi".to_string(), - ty: DeclarationId(560), + ty: DeclarationId(561), }, Field { label: "Gnu".to_string(), - ty: DeclarationId(561), + ty: DeclarationId(562), }, Field { label: "GnuEabi".to_string(), - ty: DeclarationId(562), + ty: DeclarationId(563), }, Field { label: "GnuEabihf".to_string(), - ty: DeclarationId(563), + ty: DeclarationId(564), }, Field { label: "Musl".to_string(), - ty: DeclarationId(564), + ty: DeclarationId(565), }, Field { label: "Msvc".to_string(), - ty: DeclarationId(565), + ty: DeclarationId(566), }, Field { label: "AndroidAbi".to_string(), - ty: DeclarationId(566), + ty: DeclarationId(567), }, Field { label: "Eabi".to_string(), - ty: DeclarationId(567), + ty: DeclarationId(568), }, Field { label: "Eabihf".to_string(), - ty: DeclarationId(568), + ty: DeclarationId(569), }, ], }, @@ -4520,7 +4520,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17850, 17942), + span: SourceSpan::new("dsl/std/types.dag", 17493, 17585), }); declarations.push(Declaration { id: DeclarationId(188), @@ -4529,23 +4529,23 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "Native".to_string(), - ty: DeclarationId(569), + ty: DeclarationId(570), }, Field { label: "Wsl".to_string(), - ty: DeclarationId(570), + ty: DeclarationId(571), }, Field { label: "Container".to_string(), - ty: DeclarationId(571), + ty: DeclarationId(572), }, Field { label: "Ci".to_string(), - ty: DeclarationId(572), + ty: DeclarationId(573), }, Field { label: "Emulator".to_string(), - ty: DeclarationId(573), + ty: DeclarationId(574), }, ], }, @@ -4557,7 +4557,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17943, 18003), + span: SourceSpan::new("dsl/std/types.dag", 17586, 17646), }); declarations.push(Declaration { id: DeclarationId(189), @@ -4578,7 +4578,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { }, Field { label: "env".to_string(), - ty: DeclarationId(574), + ty: DeclarationId(575), }, ], }, @@ -4590,7 +4590,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18005, 18080), + span: SourceSpan::new("dsl/std/types.dag", 17648, 17723), }); declarations.push(Declaration { id: DeclarationId(190), @@ -4615,7 +4615,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18082, 18147), + span: SourceSpan::new("dsl/std/types.dag", 17725, 17790), }); declarations.push(Declaration { id: DeclarationId(191), @@ -4624,23 +4624,23 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "RegularFile".to_string(), - ty: DeclarationId(575), + ty: DeclarationId(576), }, Field { label: "Directory".to_string(), - ty: DeclarationId(576), + ty: DeclarationId(577), }, Field { label: "Symlink".to_string(), - ty: DeclarationId(577), + ty: DeclarationId(578), }, Field { label: "Missing".to_string(), - ty: DeclarationId(578), + ty: DeclarationId(579), }, Field { label: "Other".to_string(), - ty: DeclarationId(579), + ty: DeclarationId(580), }, ], }, @@ -4652,7 +4652,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18456, 18534), + span: SourceSpan::new("dsl/std/types.dag", 18099, 18177), }); declarations.push(Declaration { id: DeclarationId(192), @@ -4661,15 +4661,15 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "TargetFile".to_string(), - ty: DeclarationId(580), + ty: DeclarationId(581), }, Field { label: "TargetDir".to_string(), - ty: DeclarationId(581), + ty: DeclarationId(582), }, Field { label: "Broken".to_string(), - ty: DeclarationId(582), + ty: DeclarationId(583), }, ], }, @@ -4681,7 +4681,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18664, 18722), + span: SourceSpan::new("dsl/std/types.dag", 18307, 18365), }); declarations.push(Declaration { id: DeclarationId(193), @@ -4698,7 +4698,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 19883, 19913), + span: SourceSpan::new("dsl/std/types.dag", 19526, 19556), }); declarations.push(Declaration { id: DeclarationId(194), @@ -4715,7 +4715,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 19994, 20024), + span: SourceSpan::new("dsl/std/types.dag", 19637, 19667), }); declarations.push(Declaration { id: DeclarationId(195), @@ -4732,7 +4732,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 20241, 20263), + span: SourceSpan::new("dsl/std/types.dag", 19884, 19906), }); declarations.push(Declaration { id: DeclarationId(196), @@ -4741,31 +4741,31 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "GET".to_string(), - ty: DeclarationId(583), + ty: DeclarationId(584), }, Field { label: "POST".to_string(), - ty: DeclarationId(584), + ty: DeclarationId(585), }, Field { label: "PUT".to_string(), - ty: DeclarationId(585), + ty: DeclarationId(586), }, Field { label: "PATCH".to_string(), - ty: DeclarationId(586), + ty: DeclarationId(587), }, Field { label: "DELETE".to_string(), - ty: DeclarationId(587), + ty: DeclarationId(588), }, Field { label: "HEAD".to_string(), - ty: DeclarationId(588), + ty: DeclarationId(589), }, Field { label: "OPTIONS".to_string(), - ty: DeclarationId(589), + ty: DeclarationId(590), }, ], }, @@ -4777,7 +4777,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21007, 21075), + span: SourceSpan::new("dsl/std/types.dag", 20650, 20718), }); declarations.push(Declaration { id: DeclarationId(197), @@ -4786,19 +4786,19 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "Bearer".to_string(), - ty: DeclarationId(590), + ty: DeclarationId(591), }, Field { label: "Header".to_string(), - ty: DeclarationId(591), + ty: DeclarationId(592), }, Field { label: "Basic".to_string(), - ty: DeclarationId(592), + ty: DeclarationId(593), }, Field { label: "ApiKey".to_string(), - ty: DeclarationId(593), + ty: DeclarationId(594), }, ], }, @@ -4810,7 +4810,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21543, 21639), + span: SourceSpan::new("dsl/std/types.dag", 21186, 21282), }); declarations.push(Declaration { id: DeclarationId(198), @@ -4827,7 +4827,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { }, Field { label: "expires_at".to_string(), - ty: DeclarationId(594), + ty: DeclarationId(595), }, ], }, @@ -4839,7 +4839,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21761, 21894), + span: SourceSpan::new("dsl/std/types.dag", 21404, 21537), }); declarations.push(Declaration { id: DeclarationId(199), @@ -4856,7 +4856,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { }, Field { label: "header_name".to_string(), - ty: DeclarationId(595), + ty: DeclarationId(596), }, Field { label: "source_id".to_string(), @@ -4864,11 +4864,11 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { }, Field { label: "required_scopes".to_string(), - ty: DeclarationId(596), + ty: DeclarationId(597), }, Field { label: "expires_in".to_string(), - ty: DeclarationId(597), + ty: DeclarationId(598), }, ], }, @@ -4880,7 +4880,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21896, 22046), + span: SourceSpan::new("dsl/std/types.dag", 21539, 21689), }); declarations.push(Declaration { id: DeclarationId(200), @@ -4892,9 +4892,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(651)), + refinement: Some(DeclarationId(652)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22123, 22187), + span: SourceSpan::new("dsl/std/types.dag", 21766, 21830), }); declarations.push(Declaration { id: DeclarationId(201), @@ -4906,9 +4906,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(652)), + refinement: Some(DeclarationId(653)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22188, 22245), + span: SourceSpan::new("dsl/std/types.dag", 21831, 21888), }); declarations.push(Declaration { id: DeclarationId(202), @@ -4920,9 +4920,9 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { specialization_parent: None, inhabits: None, value_body: None, - refinement: Some(DeclarationId(653)), + refinement: Some(DeclarationId(654)), nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22246, 22302), + span: SourceSpan::new("dsl/std/types.dag", 21889, 21945), }); declarations.push(Declaration { id: DeclarationId(203), @@ -4955,7 +4955,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22379, 22470), + span: SourceSpan::new("dsl/std/types.dag", 22022, 22113), }); declarations.push(Declaration { id: DeclarationId(204), @@ -4984,7 +4984,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22472, 22543), + span: SourceSpan::new("dsl/std/types.dag", 22115, 22186), }); declarations.push(Declaration { id: DeclarationId(205), @@ -5013,7 +5013,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22545, 22615), + span: SourceSpan::new("dsl/std/types.dag", 22188, 22258), }); declarations.push(Declaration { id: DeclarationId(206), @@ -5042,7 +5042,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22617, 22690), + span: SourceSpan::new("dsl/std/types.dag", 22260, 22333), }); declarations.push(Declaration { id: DeclarationId(207), @@ -5071,7 +5071,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22692, 22756), + span: SourceSpan::new("dsl/std/types.dag", 22335, 22399), }); declarations.push(Declaration { id: DeclarationId(208), @@ -5108,7 +5108,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22833, 22940), + span: SourceSpan::new("dsl/std/types.dag", 22476, 22583), }); declarations.push(Declaration { id: DeclarationId(209), @@ -5137,7 +5137,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22942, 22999), + span: SourceSpan::new("dsl/std/types.dag", 22585, 22642), }); declarations.push(Declaration { id: DeclarationId(210), @@ -5174,7 +5174,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23001, 23102), + span: SourceSpan::new("dsl/std/types.dag", 22644, 22745), }); declarations.push(Declaration { id: DeclarationId(211), @@ -5203,7 +5203,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23255, 23327), + span: SourceSpan::new("dsl/std/types.dag", 22898, 22970), }); declarations.push(Declaration { id: DeclarationId(212), @@ -5220,7 +5220,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { }, Field { label: "lines".to_string(), - ty: DeclarationId(598), + ty: DeclarationId(599), }, ], }, @@ -5232,7 +5232,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23329, 23415), + span: SourceSpan::new("dsl/std/types.dag", 22972, 23058), }); declarations.push(Declaration { id: DeclarationId(213), @@ -5253,7 +5253,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { }, Field { label: "sections".to_string(), - ty: DeclarationId(599), + ty: DeclarationId(600), }, Field { label: "trailing_newline".to_string(), @@ -5269,7 +5269,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23417, 23554), + span: SourceSpan::new("dsl/std/types.dag", 23060, 23197), }); declarations.push(Declaration { id: DeclarationId(214), @@ -5294,7 +5294,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23556, 23609), + span: SourceSpan::new("dsl/std/types.dag", 23199, 23252), }); declarations.push(Declaration { id: DeclarationId(215), @@ -5319,7 +5319,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23611, 23669), + span: SourceSpan::new("dsl/std/types.dag", 23254, 23312), }); declarations.push(Declaration { id: DeclarationId(216), @@ -5336,7 +5336,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { }, Field { label: "description".to_string(), - ty: DeclarationId(600), + ty: DeclarationId(601), }, ], }, @@ -5348,7 +5348,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23746, 23820), + span: SourceSpan::new("dsl/std/types.dag", 23389, 23463), }); declarations.push(Declaration { id: DeclarationId(217), @@ -5356,7 +5356,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { connective: TypeConnective::Conj { children: vec![Field { label: "tools".to_string(), - ty: DeclarationId(601), + ty: DeclarationId(602), }], }, type_params: vec![], @@ -5367,7 +5367,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23822, 23868), + span: SourceSpan::new("dsl/std/types.dag", 23465, 23511), }); declarations.push(Declaration { id: DeclarationId(218), @@ -5376,15 +5376,15 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { children: vec![ Field { label: "nodes".to_string(), - ty: DeclarationId(602), + ty: DeclarationId(603), }, Field { label: "edges".to_string(), - ty: DeclarationId(603), + ty: DeclarationId(604), }, Field { label: "subdag_boundaries".to_string(), - ty: DeclarationId(604), + ty: DeclarationId(605), }, ], }, @@ -5396,7 +5396,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24127, 24237), + span: SourceSpan::new("dsl/std/types.dag", 23770, 23880), }); declarations.push(Declaration { id: DeclarationId(219), @@ -5417,7 +5417,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { }, Field { label: "parent".to_string(), - ty: DeclarationId(605), + ty: DeclarationId(606), }, ], }, @@ -5429,7 +5429,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24239, 24359), + span: SourceSpan::new("dsl/std/types.dag", 23882, 24002), }); declarations.push(Declaration { id: DeclarationId(220), @@ -5446,7 +5446,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { }, Field { label: "port".to_string(), - ty: DeclarationId(606), + ty: DeclarationId(607), }, ], }, @@ -5458,7 +5458,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24361, 24426), + span: SourceSpan::new("dsl/std/types.dag", 24004, 24069), }); declarations.push(Declaration { id: DeclarationId(221), @@ -5467,15 +5467,15 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { children: vec![ Field { label: "added".to_string(), - ty: DeclarationId(607), + ty: DeclarationId(608), }, Field { label: "removed".to_string(), - ty: DeclarationId(608), + ty: DeclarationId(609), }, Field { label: "changed".to_string(), - ty: DeclarationId(609), + ty: DeclarationId(610), }, ], }, @@ -5487,7 +5487,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24428, 24514), + span: SourceSpan::new("dsl/std/types.dag", 24071, 24157), }); declarations.push(Declaration { id: DeclarationId(222), @@ -5504,15 +5504,15 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { }, Field { label: "backend".to_string(), - ty: DeclarationId(610), + ty: DeclarationId(611), }, Field { label: "target".to_string(), - ty: DeclarationId(611), + ty: DeclarationId(612), }, Field { label: "runtime_env".to_string(), - ty: DeclarationId(612), + ty: DeclarationId(613), }, ], }, @@ -5524,7 +5524,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24583, 24717), + span: SourceSpan::new("dsl/std/types.dag", 24226, 24360), }); declarations.push(Declaration { id: DeclarationId(223), @@ -5533,19 +5533,19 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "Rust".to_string(), - ty: DeclarationId(613), + ty: DeclarationId(614), }, Field { label: "Go".to_string(), - ty: DeclarationId(614), + ty: DeclarationId(615), }, Field { label: "C".to_string(), - ty: DeclarationId(615), + ty: DeclarationId(616), }, Field { label: "Mips".to_string(), - ty: DeclarationId(616), + ty: DeclarationId(617), }, ], }, @@ -5557,7 +5557,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24719, 24761), + span: SourceSpan::new("dsl/std/types.dag", 24362, 24404), }); declarations.push(Declaration { id: DeclarationId(224), @@ -5574,7 +5574,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { }, Field { label: "scope".to_string(), - ty: DeclarationId(617), + ty: DeclarationId(618), }, ], }, @@ -5586,7 +5586,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24763, 24834), + span: SourceSpan::new("dsl/std/types.dag", 24406, 24477), }); declarations.push(Declaration { id: DeclarationId(225), @@ -5611,7 +5611,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24975, 25032), + span: SourceSpan::new("dsl/std/types.dag", 24618, 24675), }); declarations.push(Declaration { id: DeclarationId(226), @@ -5625,7 +5625,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 26966, 26985), + span: SourceSpan::new("dsl/std/types.dag", 26609, 26628), }); declarations.push(Declaration { id: DeclarationId(227), @@ -5639,7 +5639,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 26966, 26985), + span: SourceSpan::new("dsl/std/types.dag", 26609, 26628), }); declarations.push(Declaration { id: DeclarationId(228), @@ -5668,19 +5668,19 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "Whitespace".to_string(), - ty: DeclarationId(654), + ty: DeclarationId(655), }, Field { label: "Digit".to_string(), - ty: DeclarationId(655), + ty: DeclarationId(656), }, Field { label: "IdentStart".to_string(), - ty: DeclarationId(656), + ty: DeclarationId(657), }, Field { label: "IdentContinue".to_string(), - ty: DeclarationId(657), + ty: DeclarationId(658), }, ], }, @@ -5719,15 +5719,15 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { variants: vec![ Field { label: "ZeroWidth".to_string(), - ty: DeclarationId(658), + ty: DeclarationId(659), }, Field { label: "Narrow".to_string(), - ty: DeclarationId(659), + ty: DeclarationId(660), }, Field { label: "Wide".to_string(), - ty: DeclarationId(660), + ty: DeclarationId(661), }, ], }, @@ -5804,7 +5804,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { }, type_params: vec![], phantom_params: Vec::new(), - meta_tag: Some(DeclarationId(661)), + meta_tag: Some(DeclarationId(662)), specialization_parent: None, inhabits: None, value_body: Some(ValueBody::List(vec![ @@ -5826,7 +5826,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(658), + constructor: DeclarationId(659), payload: vec![], }, ), @@ -5849,7 +5849,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(658), + constructor: DeclarationId(659), payload: vec![], }, ), @@ -5872,7 +5872,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(658), + constructor: DeclarationId(659), payload: vec![], }, ), @@ -5895,7 +5895,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(658), + constructor: DeclarationId(659), payload: vec![], }, ), @@ -5916,7 +5916,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(658), + constructor: DeclarationId(659), payload: vec![], }, ), @@ -5939,7 +5939,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(658), + constructor: DeclarationId(659), payload: vec![], }, ), @@ -5961,7 +5961,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { }, type_params: vec![], phantom_params: Vec::new(), - meta_tag: Some(DeclarationId(662)), + meta_tag: Some(DeclarationId(663)), specialization_parent: None, inhabits: None, value_body: Some(ValueBody::List(vec![ @@ -5986,7 +5986,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { }, type_params: vec![], phantom_params: Vec::new(), - meta_tag: Some(DeclarationId(663)), + meta_tag: Some(DeclarationId(664)), specialization_parent: None, inhabits: None, value_body: Some(ValueBody::List(vec![ @@ -6006,7 +6006,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -6029,7 +6029,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -6052,7 +6052,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -6073,7 +6073,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -6096,7 +6096,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -6119,7 +6119,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -6140,7 +6140,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -6163,7 +6163,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -6186,7 +6186,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -6207,7 +6207,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -6228,7 +6228,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -6249,7 +6249,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -6270,7 +6270,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -6293,7 +6293,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -6316,7 +6316,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -6337,7 +6337,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { ( "default_width".to_string(), FieldValue::Variant { - constructor: DeclarationId(660), + constructor: DeclarationId(661), payload: vec![], }, ), @@ -11566,7 +11566,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 7586, 7590), + span: SourceSpan::new("dsl/std/types.dag", 7229, 7233), }); declarations.push(Declaration { id: DeclarationId(511), @@ -11580,16 +11580,16 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 7593, 7598), + span: SourceSpan::new("dsl/std/types.dag", 7236, 7241), }); declarations.push(Declaration { id: DeclarationId(512), name: None, connective: TypeConnective::Instantiation { - template: DeclarationId(131), + template: DeclarationId(45), arguments: vec![TemplateArgument { - parameter: DeclarationId(132), - value: DeclarationId(152), + parameter: DeclarationId(46), + value: DeclarationId(126), }], }, type_params: vec![], @@ -11600,7 +11600,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 12459, 12476), + span: SourceSpan::new("dsl/std/types.dag", 7206, 7226), }); declarations.push(Declaration { id: DeclarationId(513), @@ -11609,7 +11609,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { template: DeclarationId(131), arguments: vec![TemplateArgument { parameter: DeclarationId(132), - value: DeclarationId(153), + value: DeclarationId(152), }], }, type_params: vec![], @@ -11620,12 +11620,18 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 12510, 12527), + span: SourceSpan::new("dsl/std/types.dag", 12102, 12119), }); declarations.push(Declaration { id: DeclarationId(514), name: None, - connective: TypeConnective::Conj { children: vec![] }, + connective: TypeConnective::Instantiation { + template: DeclarationId(131), + arguments: vec![TemplateArgument { + parameter: DeclarationId(132), + value: DeclarationId(153), + }], + }, type_params: vec![], phantom_params: Vec::new(), meta_tag: None, @@ -11634,7 +11640,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16688, 16693), + span: SourceSpan::new("dsl/std/types.dag", 12153, 12170), }); declarations.push(Declaration { id: DeclarationId(515), @@ -11648,7 +11654,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16696, 16701), + span: SourceSpan::new("dsl/std/types.dag", 16331, 16336), }); declarations.push(Declaration { id: DeclarationId(516), @@ -11662,7 +11668,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16704, 16711), + span: SourceSpan::new("dsl/std/types.dag", 16339, 16344), }); declarations.push(Declaration { id: DeclarationId(517), @@ -11676,7 +11682,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16863, 16867), + span: SourceSpan::new("dsl/std/types.dag", 16347, 16354), }); declarations.push(Declaration { id: DeclarationId(518), @@ -11690,7 +11696,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16870, 16879), + span: SourceSpan::new("dsl/std/types.dag", 16506, 16510), }); declarations.push(Declaration { id: DeclarationId(519), @@ -11704,7 +11710,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16882, 16888), + span: SourceSpan::new("dsl/std/types.dag", 16513, 16522), }); declarations.push(Declaration { id: DeclarationId(520), @@ -11718,7 +11724,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16891, 16894), + span: SourceSpan::new("dsl/std/types.dag", 16525, 16531), }); declarations.push(Declaration { id: DeclarationId(521), @@ -11732,7 +11738,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16919, 16927), + span: SourceSpan::new("dsl/std/types.dag", 16534, 16537), }); declarations.push(Declaration { id: DeclarationId(522), @@ -11746,7 +11752,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16930, 16939), + span: SourceSpan::new("dsl/std/types.dag", 16562, 16570), }); declarations.push(Declaration { id: DeclarationId(523), @@ -11760,7 +11766,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16942, 16948), + span: SourceSpan::new("dsl/std/types.dag", 16573, 16582), }); declarations.push(Declaration { id: DeclarationId(524), @@ -11774,7 +11780,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16968, 16970), + span: SourceSpan::new("dsl/std/types.dag", 16585, 16591), }); declarations.push(Declaration { id: DeclarationId(525), @@ -11788,7 +11794,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16973, 16974), + span: SourceSpan::new("dsl/std/types.dag", 16611, 16613), }); declarations.push(Declaration { id: DeclarationId(526), @@ -11802,7 +11808,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16977, 16978), + span: SourceSpan::new("dsl/std/types.dag", 16616, 16617), }); declarations.push(Declaration { id: DeclarationId(527), @@ -11816,7 +11822,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16981, 16982), + span: SourceSpan::new("dsl/std/types.dag", 16620, 16621), }); declarations.push(Declaration { id: DeclarationId(528), @@ -11830,11 +11836,25 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16985, 16987), + span: SourceSpan::new("dsl/std/types.dag", 16624, 16625), }); declarations.push(Declaration { id: DeclarationId(529), name: None, + connective: TypeConnective::Conj { children: vec![] }, + type_params: vec![], + phantom_params: Vec::new(), + meta_tag: None, + specialization_parent: None, + inhabits: None, + value_body: None, + refinement: None, + nominal_opacity: None, + span: SourceSpan::new("dsl/std/types.dag", 16628, 16630), + }); + declarations.push(Declaration { + id: DeclarationId(530), + name: None, connective: TypeConnective::Conj { children: vec![Field { label: "secret_name".to_string(), @@ -11849,10 +11869,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17259, 17294), + span: SourceSpan::new("dsl/std/types.dag", 16902, 16937), }); declarations.push(Declaration { - id: DeclarationId(530), + id: DeclarationId(531), name: None, connective: TypeConnective::Conj { children: vec![Field { @@ -11868,10 +11888,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17299, 17340), + span: SourceSpan::new("dsl/std/types.dag", 16942, 16983), }); declarations.push(Declaration { - id: DeclarationId(531), + id: DeclarationId(532), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -11887,10 +11907,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17415, 17435), + span: SourceSpan::new("dsl/std/types.dag", 17058, 17078), }); declarations.push(Declaration { - id: DeclarationId(532), + id: DeclarationId(533), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -11907,10 +11927,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17450, 17462), + span: SourceSpan::new("dsl/std/types.dag", 17093, 17105), }); declarations.push(Declaration { - id: DeclarationId(533), + id: DeclarationId(534), name: None, connective: TypeConnective::Conj { children: vec![ @@ -11920,11 +11940,11 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { }, Field { label: "service_account".to_string(), - ty: DeclarationId(531), + ty: DeclarationId(532), }, Field { label: "scopes".to_string(), - ty: DeclarationId(532), + ty: DeclarationId(533), }, ], }, @@ -11936,10 +11956,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17345, 17468), + span: SourceSpan::new("dsl/std/types.dag", 16988, 17111), }); declarations.push(Declaration { - id: DeclarationId(534), + id: DeclarationId(535), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -11956,15 +11976,15 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17499, 17511), + span: SourceSpan::new("dsl/std/types.dag", 17142, 17154), }); declarations.push(Declaration { - id: DeclarationId(535), + id: DeclarationId(536), name: None, connective: TypeConnective::Conj { children: vec![Field { label: "scopes".to_string(), - ty: DeclarationId(534), + ty: DeclarationId(535), }], }, type_params: vec![], @@ -11975,10 +11995,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17473, 17513), + span: SourceSpan::new("dsl/std/types.dag", 17116, 17156), }); declarations.push(Declaration { - id: DeclarationId(536), + id: DeclarationId(537), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -11995,15 +12015,15 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17535, 17555), + span: SourceSpan::new("dsl/std/types.dag", 17178, 17198), }); declarations.push(Declaration { - id: DeclarationId(537), + id: DeclarationId(538), name: None, connective: TypeConnective::Conj { children: vec![Field { label: "steps".to_string(), - ty: DeclarationId(536), + ty: DeclarationId(537), }], }, type_params: vec![], @@ -12014,21 +12034,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17518, 17557), - }); - declarations.push(Declaration { - id: DeclarationId(538), - name: None, - connective: TypeConnective::Conj { children: vec![] }, - type_params: vec![], - phantom_params: Vec::new(), - meta_tag: None, - specialization_parent: None, - inhabits: None, - value_body: None, - refinement: None, - nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17644, 17650), + span: SourceSpan::new("dsl/std/types.dag", 17161, 17200), }); declarations.push(Declaration { id: DeclarationId(539), @@ -12042,7 +12048,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17653, 17656), + span: SourceSpan::new("dsl/std/types.dag", 17287, 17293), }); declarations.push(Declaration { id: DeclarationId(540), @@ -12056,7 +12062,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17659, 17666), + span: SourceSpan::new("dsl/std/types.dag", 17296, 17299), }); declarations.push(Declaration { id: DeclarationId(541), @@ -12070,7 +12076,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17669, 17672), + span: SourceSpan::new("dsl/std/types.dag", 17302, 17309), }); declarations.push(Declaration { id: DeclarationId(542), @@ -12084,7 +12090,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17675, 17680), + span: SourceSpan::new("dsl/std/types.dag", 17312, 17315), }); declarations.push(Declaration { id: DeclarationId(543), @@ -12098,7 +12104,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17683, 17687), + span: SourceSpan::new("dsl/std/types.dag", 17318, 17323), }); declarations.push(Declaration { id: DeclarationId(544), @@ -12112,7 +12118,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17690, 17696), + span: SourceSpan::new("dsl/std/types.dag", 17326, 17330), }); declarations.push(Declaration { id: DeclarationId(545), @@ -12126,7 +12132,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17699, 17705), + span: SourceSpan::new("dsl/std/types.dag", 17333, 17339), }); declarations.push(Declaration { id: DeclarationId(546), @@ -12140,7 +12146,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17708, 17716), + span: SourceSpan::new("dsl/std/types.dag", 17342, 17348), }); declarations.push(Declaration { id: DeclarationId(547), @@ -12154,7 +12160,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17719, 17726), + span: SourceSpan::new("dsl/std/types.dag", 17351, 17359), }); declarations.push(Declaration { id: DeclarationId(548), @@ -12168,7 +12174,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17729, 17735), + span: SourceSpan::new("dsl/std/types.dag", 17362, 17369), }); declarations.push(Declaration { id: DeclarationId(549), @@ -12182,7 +12188,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17750, 17763), + span: SourceSpan::new("dsl/std/types.dag", 17372, 17378), }); declarations.push(Declaration { id: DeclarationId(550), @@ -12196,7 +12202,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17766, 17768), + span: SourceSpan::new("dsl/std/types.dag", 17393, 17406), }); declarations.push(Declaration { id: DeclarationId(551), @@ -12210,7 +12216,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17771, 17776), + span: SourceSpan::new("dsl/std/types.dag", 17409, 17411), }); declarations.push(Declaration { id: DeclarationId(552), @@ -12224,7 +12230,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17779, 17782), + span: SourceSpan::new("dsl/std/types.dag", 17414, 17419), }); declarations.push(Declaration { id: DeclarationId(553), @@ -12238,7 +12244,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17793, 17798), + span: SourceSpan::new("dsl/std/types.dag", 17422, 17425), }); declarations.push(Declaration { id: DeclarationId(554), @@ -12252,7 +12258,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17801, 17806), + span: SourceSpan::new("dsl/std/types.dag", 17436, 17441), }); declarations.push(Declaration { id: DeclarationId(555), @@ -12266,7 +12272,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17809, 17816), + span: SourceSpan::new("dsl/std/types.dag", 17444, 17449), }); declarations.push(Declaration { id: DeclarationId(556), @@ -12280,7 +12286,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17819, 17826), + span: SourceSpan::new("dsl/std/types.dag", 17452, 17459), }); declarations.push(Declaration { id: DeclarationId(557), @@ -12294,7 +12300,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17829, 17836), + span: SourceSpan::new("dsl/std/types.dag", 17462, 17469), }); declarations.push(Declaration { id: DeclarationId(558), @@ -12308,7 +12314,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17839, 17842), + span: SourceSpan::new("dsl/std/types.dag", 17472, 17479), }); declarations.push(Declaration { id: DeclarationId(559), @@ -12322,7 +12328,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17845, 17849), + span: SourceSpan::new("dsl/std/types.dag", 17482, 17485), }); declarations.push(Declaration { id: DeclarationId(560), @@ -12336,7 +12342,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17864, 17871), + span: SourceSpan::new("dsl/std/types.dag", 17488, 17492), }); declarations.push(Declaration { id: DeclarationId(561), @@ -12350,7 +12356,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17874, 17877), + span: SourceSpan::new("dsl/std/types.dag", 17507, 17514), }); declarations.push(Declaration { id: DeclarationId(562), @@ -12364,7 +12370,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17880, 17887), + span: SourceSpan::new("dsl/std/types.dag", 17517, 17520), }); declarations.push(Declaration { id: DeclarationId(563), @@ -12378,7 +12384,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17890, 17899), + span: SourceSpan::new("dsl/std/types.dag", 17523, 17530), }); declarations.push(Declaration { id: DeclarationId(564), @@ -12392,7 +12398,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17902, 17906), + span: SourceSpan::new("dsl/std/types.dag", 17533, 17542), }); declarations.push(Declaration { id: DeclarationId(565), @@ -12406,7 +12412,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17909, 17913), + span: SourceSpan::new("dsl/std/types.dag", 17545, 17549), }); declarations.push(Declaration { id: DeclarationId(566), @@ -12420,7 +12426,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17916, 17926), + span: SourceSpan::new("dsl/std/types.dag", 17552, 17556), }); declarations.push(Declaration { id: DeclarationId(567), @@ -12434,7 +12440,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17929, 17933), + span: SourceSpan::new("dsl/std/types.dag", 17559, 17569), }); declarations.push(Declaration { id: DeclarationId(568), @@ -12448,7 +12454,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17936, 17942), + span: SourceSpan::new("dsl/std/types.dag", 17572, 17576), }); declarations.push(Declaration { id: DeclarationId(569), @@ -12462,7 +12468,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17963, 17969), + span: SourceSpan::new("dsl/std/types.dag", 17579, 17585), }); declarations.push(Declaration { id: DeclarationId(570), @@ -12476,7 +12482,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17972, 17975), + span: SourceSpan::new("dsl/std/types.dag", 17606, 17612), }); declarations.push(Declaration { id: DeclarationId(571), @@ -12490,7 +12496,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17978, 17987), + span: SourceSpan::new("dsl/std/types.dag", 17615, 17618), }); declarations.push(Declaration { id: DeclarationId(572), @@ -12504,7 +12510,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17990, 17992), + span: SourceSpan::new("dsl/std/types.dag", 17621, 17630), }); declarations.push(Declaration { id: DeclarationId(573), @@ -12518,17 +12524,12 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 17995, 18003), + span: SourceSpan::new("dsl/std/types.dag", 17633, 17635), }); declarations.push(Declaration { id: DeclarationId(574), name: None, - connective: TypeConnective::Cardinality( - CardinalityPayload::new_unchecked_bypassing_idempotence( - DeclarationId(187), - CardinalityBound::AtMostOne, - ), - ), + connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], phantom_params: Vec::new(), meta_tag: None, @@ -12537,12 +12538,17 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18071, 18078), + span: SourceSpan::new("dsl/std/types.dag", 17638, 17646), }); declarations.push(Declaration { id: DeclarationId(575), name: None, - connective: TypeConnective::Conj { children: vec![] }, + connective: TypeConnective::Cardinality( + CardinalityPayload::new_unchecked_bypassing_idempotence( + DeclarationId(187), + CardinalityBound::AtMostOne, + ), + ), type_params: vec![], phantom_params: Vec::new(), meta_tag: None, @@ -12551,7 +12557,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18475, 18486), + span: SourceSpan::new("dsl/std/types.dag", 17714, 17721), }); declarations.push(Declaration { id: DeclarationId(576), @@ -12565,7 +12571,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18491, 18500), + span: SourceSpan::new("dsl/std/types.dag", 18118, 18129), }); declarations.push(Declaration { id: DeclarationId(577), @@ -12579,7 +12585,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18505, 18512), + span: SourceSpan::new("dsl/std/types.dag", 18134, 18143), }); declarations.push(Declaration { id: DeclarationId(578), @@ -12593,7 +12599,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18517, 18524), + span: SourceSpan::new("dsl/std/types.dag", 18148, 18155), }); declarations.push(Declaration { id: DeclarationId(579), @@ -12607,7 +12613,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18529, 18534), + span: SourceSpan::new("dsl/std/types.dag", 18160, 18167), }); declarations.push(Declaration { id: DeclarationId(580), @@ -12621,7 +12627,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18687, 18697), + span: SourceSpan::new("dsl/std/types.dag", 18172, 18177), }); declarations.push(Declaration { id: DeclarationId(581), @@ -12635,7 +12641,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18702, 18711), + span: SourceSpan::new("dsl/std/types.dag", 18330, 18340), }); declarations.push(Declaration { id: DeclarationId(582), @@ -12649,7 +12655,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 18716, 18722), + span: SourceSpan::new("dsl/std/types.dag", 18345, 18354), }); declarations.push(Declaration { id: DeclarationId(583), @@ -12663,7 +12669,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21025, 21028), + span: SourceSpan::new("dsl/std/types.dag", 18359, 18365), }); declarations.push(Declaration { id: DeclarationId(584), @@ -12677,7 +12683,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21031, 21035), + span: SourceSpan::new("dsl/std/types.dag", 20668, 20671), }); declarations.push(Declaration { id: DeclarationId(585), @@ -12691,7 +12697,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21038, 21041), + span: SourceSpan::new("dsl/std/types.dag", 20674, 20678), }); declarations.push(Declaration { id: DeclarationId(586), @@ -12705,7 +12711,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21044, 21049), + span: SourceSpan::new("dsl/std/types.dag", 20681, 20684), }); declarations.push(Declaration { id: DeclarationId(587), @@ -12719,7 +12725,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21052, 21058), + span: SourceSpan::new("dsl/std/types.dag", 20687, 20692), }); declarations.push(Declaration { id: DeclarationId(588), @@ -12733,7 +12739,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21061, 21065), + span: SourceSpan::new("dsl/std/types.dag", 20695, 20701), }); declarations.push(Declaration { id: DeclarationId(589), @@ -12747,7 +12753,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21068, 21075), + span: SourceSpan::new("dsl/std/types.dag", 20704, 20708), }); declarations.push(Declaration { id: DeclarationId(590), @@ -12761,11 +12767,25 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21563, 21569), + span: SourceSpan::new("dsl/std/types.dag", 20711, 20718), }); declarations.push(Declaration { id: DeclarationId(591), name: None, + connective: TypeConnective::Conj { children: vec![] }, + type_params: vec![], + phantom_params: Vec::new(), + meta_tag: None, + specialization_parent: None, + inhabits: None, + value_body: None, + refinement: None, + nominal_opacity: None, + span: SourceSpan::new("dsl/std/types.dag", 21206, 21212), + }); + declarations.push(Declaration { + id: DeclarationId(592), + name: None, connective: TypeConnective::Conj { children: vec![Field { label: "name".to_string(), @@ -12780,10 +12800,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21574, 21597), + span: SourceSpan::new("dsl/std/types.dag", 21217, 21240), }); declarations.push(Declaration { - id: DeclarationId(592), + id: DeclarationId(593), name: None, connective: TypeConnective::Conj { children: vec![Field { @@ -12799,10 +12819,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21602, 21628), + span: SourceSpan::new("dsl/std/types.dag", 21245, 21271), }); declarations.push(Declaration { - id: DeclarationId(593), + id: DeclarationId(594), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -12813,10 +12833,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21633, 21639), + span: SourceSpan::new("dsl/std/types.dag", 21276, 21282), }); declarations.push(Declaration { - id: DeclarationId(594), + id: DeclarationId(595), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -12832,10 +12852,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21831, 21841), + span: SourceSpan::new("dsl/std/types.dag", 21474, 21484), }); declarations.push(Declaration { - id: DeclarationId(595), + id: DeclarationId(596), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -12851,10 +12871,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 21966, 21973), + span: SourceSpan::new("dsl/std/types.dag", 21609, 21616), }); declarations.push(Declaration { - id: DeclarationId(596), + id: DeclarationId(597), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -12871,10 +12891,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22013, 22025), + span: SourceSpan::new("dsl/std/types.dag", 21656, 21668), }); declarations.push(Declaration { - id: DeclarationId(597), + id: DeclarationId(598), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -12890,10 +12910,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22040, 22044), + span: SourceSpan::new("dsl/std/types.dag", 21683, 21687), }); declarations.push(Declaration { - id: DeclarationId(598), + id: DeclarationId(599), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -12910,10 +12930,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23395, 23413), + span: SourceSpan::new("dsl/std/types.dag", 23038, 23056), }); declarations.push(Declaration { - id: DeclarationId(599), + id: DeclarationId(600), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -12930,10 +12950,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23506, 23527), + span: SourceSpan::new("dsl/std/types.dag", 23149, 23170), }); declarations.push(Declaration { - id: DeclarationId(600), + id: DeclarationId(601), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -12949,10 +12969,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23811, 23818), + span: SourceSpan::new("dsl/std/types.dag", 23454, 23461), }); declarations.push(Declaration { - id: DeclarationId(601), + id: DeclarationId(602), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -12969,10 +12989,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 23851, 23866), + span: SourceSpan::new("dsl/std/types.dag", 23494, 23509), }); declarations.push(Declaration { - id: DeclarationId(602), + id: DeclarationId(603), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -12989,10 +13009,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24155, 24173), + span: SourceSpan::new("dsl/std/types.dag", 23798, 23816), }); declarations.push(Declaration { - id: DeclarationId(603), + id: DeclarationId(604), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -13009,10 +13029,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24183, 24201), + span: SourceSpan::new("dsl/std/types.dag", 23826, 23844), }); declarations.push(Declaration { - id: DeclarationId(604), + id: DeclarationId(605), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -13029,10 +13049,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24223, 24235), + span: SourceSpan::new("dsl/std/types.dag", 23866, 23878), }); declarations.push(Declaration { - id: DeclarationId(605), + id: DeclarationId(606), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -13048,10 +13068,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24323, 24330), + span: SourceSpan::new("dsl/std/types.dag", 23966, 23973), }); declarations.push(Declaration { - id: DeclarationId(606), + id: DeclarationId(607), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -13067,10 +13087,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24417, 24424), + span: SourceSpan::new("dsl/std/types.dag", 24060, 24067), }); declarations.push(Declaration { - id: DeclarationId(607), + id: DeclarationId(608), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -13087,10 +13107,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24452, 24464), + span: SourceSpan::new("dsl/std/types.dag", 24095, 24107), }); declarations.push(Declaration { - id: DeclarationId(608), + id: DeclarationId(609), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -13107,10 +13127,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24476, 24488), + span: SourceSpan::new("dsl/std/types.dag", 24119, 24131), }); declarations.push(Declaration { - id: DeclarationId(609), + id: DeclarationId(610), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -13127,10 +13147,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24500, 24512), + span: SourceSpan::new("dsl/std/types.dag", 24143, 24155), }); declarations.push(Declaration { - id: DeclarationId(610), + id: DeclarationId(611), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -13146,10 +13166,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24647, 24662), + span: SourceSpan::new("dsl/std/types.dag", 24290, 24305), }); declarations.push(Declaration { - id: DeclarationId(611), + id: DeclarationId(612), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -13165,10 +13185,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24673, 24686), + span: SourceSpan::new("dsl/std/types.dag", 24316, 24329), }); declarations.push(Declaration { - id: DeclarationId(612), + id: DeclarationId(613), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -13184,10 +13204,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24702, 24715), + span: SourceSpan::new("dsl/std/types.dag", 24345, 24358), }); declarations.push(Declaration { - id: DeclarationId(613), + id: DeclarationId(614), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13198,10 +13218,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24741, 24745), + span: SourceSpan::new("dsl/std/types.dag", 24384, 24388), }); declarations.push(Declaration { - id: DeclarationId(614), + id: DeclarationId(615), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13212,10 +13232,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24748, 24750), + span: SourceSpan::new("dsl/std/types.dag", 24391, 24393), }); declarations.push(Declaration { - id: DeclarationId(615), + id: DeclarationId(616), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13226,10 +13246,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24753, 24754), + span: SourceSpan::new("dsl/std/types.dag", 24396, 24397), }); declarations.push(Declaration { - id: DeclarationId(616), + id: DeclarationId(617), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13240,10 +13260,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24757, 24761), + span: SourceSpan::new("dsl/std/types.dag", 24400, 24404), }); declarations.push(Declaration { - id: DeclarationId(617), + id: DeclarationId(618), name: None, connective: TypeConnective::Cardinality( CardinalityPayload::new_unchecked_bypassing_idempotence( @@ -13259,10 +13279,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 24825, 24832), + span: SourceSpan::new("dsl/std/types.dag", 24468, 24475), }); declarations.push(Declaration { - id: DeclarationId(618), + id: DeclarationId(619), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(135), @@ -13288,7 +13308,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/types.dag", 3063, 3080), }); declarations.push(Declaration { - id: DeclarationId(619), + id: DeclarationId(620), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(135), @@ -13314,7 +13334,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/types.dag", 3533, 3549), }); declarations.push(Declaration { - id: DeclarationId(620), + id: DeclarationId(621), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(135), @@ -13340,7 +13360,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/types.dag", 4740, 4757), }); declarations.push(Declaration { - id: DeclarationId(621), + id: DeclarationId(622), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(135), @@ -13366,7 +13386,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/types.dag", 5722, 5741), }); declarations.push(Declaration { - id: DeclarationId(622), + id: DeclarationId(623), name: None, connective: TypeConnective::Arrow { inputs: vec![DeclarationId(93)], @@ -13381,10 +13401,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 10914, 10935), + span: SourceSpan::new("dsl/std/types.dag", 10557, 10578), }); declarations.push(Declaration { - id: DeclarationId(623), + id: DeclarationId(624), name: None, connective: TypeConnective::Arrow { inputs: vec![DeclarationId(93)], @@ -13399,10 +13419,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 10966, 10991), + span: SourceSpan::new("dsl/std/types.dag", 10609, 10634), }); declarations.push(Declaration { - id: DeclarationId(624), + id: DeclarationId(625), name: None, connective: TypeConnective::Arrow { inputs: vec![DeclarationId(93)], @@ -13417,10 +13437,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11122, 11147), + span: SourceSpan::new("dsl/std/types.dag", 10765, 10790), }); declarations.push(Declaration { - id: DeclarationId(625), + id: DeclarationId(626), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13431,10 +13451,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11305, 11347), + span: SourceSpan::new("dsl/std/types.dag", 10948, 10990), }); declarations.push(Declaration { - id: DeclarationId(626), + id: DeclarationId(627), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13445,10 +13465,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11534, 11579), + span: SourceSpan::new("dsl/std/types.dag", 11177, 11222), }); declarations.push(Declaration { - id: DeclarationId(627), + id: DeclarationId(628), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13459,10 +13479,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11580, 11625), + span: SourceSpan::new("dsl/std/types.dag", 11223, 11268), }); declarations.push(Declaration { - id: DeclarationId(628), + id: DeclarationId(629), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13473,10 +13493,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 11626, 11671), + span: SourceSpan::new("dsl/std/types.dag", 11269, 11314), }); declarations.push(Declaration { - id: DeclarationId(629), + id: DeclarationId(630), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13487,10 +13507,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 12306, 12365), + span: SourceSpan::new("dsl/std/types.dag", 11949, 12008), }); declarations.push(Declaration { - id: DeclarationId(630), + id: DeclarationId(631), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13501,10 +13521,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 12366, 12425), + span: SourceSpan::new("dsl/std/types.dag", 12009, 12068), }); declarations.push(Declaration { - id: DeclarationId(631), + id: DeclarationId(632), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13515,10 +13535,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 12530, 12573), + span: SourceSpan::new("dsl/std/types.dag", 12173, 12216), }); declarations.push(Declaration { - id: DeclarationId(632), + id: DeclarationId(633), name: None, connective: TypeConnective::Arrow { inputs: vec![DeclarationId(93)], @@ -13533,10 +13553,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 13409, 13422), + span: SourceSpan::new("dsl/std/types.dag", 13052, 13065), }); declarations.push(Declaration { - id: DeclarationId(633), + id: DeclarationId(634), name: None, connective: TypeConnective::Arrow { inputs: vec![DeclarationId(93)], @@ -13551,10 +13571,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 13454, 13467), + span: SourceSpan::new("dsl/std/types.dag", 13097, 13110), }); declarations.push(Declaration { - id: DeclarationId(634), + id: DeclarationId(635), name: None, connective: TypeConnective::Arrow { inputs: vec![DeclarationId(93)], @@ -13569,10 +13589,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 13980, 13993), + span: SourceSpan::new("dsl/std/types.dag", 13623, 13636), }); declarations.push(Declaration { - id: DeclarationId(635), + id: DeclarationId(636), name: None, connective: TypeConnective::Arrow { inputs: vec![DeclarationId(93)], @@ -13587,10 +13607,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14025, 14038), + span: SourceSpan::new("dsl/std/types.dag", 13668, 13681), }); declarations.push(Declaration { - id: DeclarationId(636), + id: DeclarationId(637), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13601,10 +13621,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14562, 14617), + span: SourceSpan::new("dsl/std/types.dag", 14205, 14260), }); declarations.push(Declaration { - id: DeclarationId(637), + id: DeclarationId(638), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13615,10 +13635,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14618, 14672), + span: SourceSpan::new("dsl/std/types.dag", 14261, 14315), }); declarations.push(Declaration { - id: DeclarationId(638), + id: DeclarationId(639), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13629,10 +13649,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14673, 14726), + span: SourceSpan::new("dsl/std/types.dag", 14316, 14369), }); declarations.push(Declaration { - id: DeclarationId(639), + id: DeclarationId(640), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13643,10 +13663,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14727, 14784), + span: SourceSpan::new("dsl/std/types.dag", 14370, 14427), }); declarations.push(Declaration { - id: DeclarationId(640), + id: DeclarationId(641), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13657,10 +13677,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14785, 14842), + span: SourceSpan::new("dsl/std/types.dag", 14428, 14485), }); declarations.push(Declaration { - id: DeclarationId(641), + id: DeclarationId(642), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13671,10 +13691,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14843, 14898), + span: SourceSpan::new("dsl/std/types.dag", 14486, 14541), }); declarations.push(Declaration { - id: DeclarationId(642), + id: DeclarationId(643), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13685,10 +13705,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14899, 14955), + span: SourceSpan::new("dsl/std/types.dag", 14542, 14598), }); declarations.push(Declaration { - id: DeclarationId(643), + id: DeclarationId(644), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13699,10 +13719,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 14956, 15012), + span: SourceSpan::new("dsl/std/types.dag", 14599, 14655), }); declarations.push(Declaration { - id: DeclarationId(644), + id: DeclarationId(645), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13713,10 +13733,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15013, 15071), + span: SourceSpan::new("dsl/std/types.dag", 14656, 14714), }); declarations.push(Declaration { - id: DeclarationId(645), + id: DeclarationId(646), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13727,10 +13747,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15302, 15373), + span: SourceSpan::new("dsl/std/types.dag", 14945, 15016), }); declarations.push(Declaration { - id: DeclarationId(646), + id: DeclarationId(647), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13741,10 +13761,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15374, 15445), + span: SourceSpan::new("dsl/std/types.dag", 15017, 15088), }); declarations.push(Declaration { - id: DeclarationId(647), + id: DeclarationId(648), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13755,10 +13775,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15446, 15513), + span: SourceSpan::new("dsl/std/types.dag", 15089, 15156), }); declarations.push(Declaration { - id: DeclarationId(648), + id: DeclarationId(649), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13769,10 +13789,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15514, 15575), + span: SourceSpan::new("dsl/std/types.dag", 15157, 15218), }); declarations.push(Declaration { - id: DeclarationId(649), + id: DeclarationId(650), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13783,10 +13803,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 15655, 15697), + span: SourceSpan::new("dsl/std/types.dag", 15298, 15340), }); declarations.push(Declaration { - id: DeclarationId(650), + id: DeclarationId(651), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13797,10 +13817,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 16082, 16124), + span: SourceSpan::new("dsl/std/types.dag", 15725, 15767), }); declarations.push(Declaration { - id: DeclarationId(651), + id: DeclarationId(652), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13811,10 +13831,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22123, 22187), + span: SourceSpan::new("dsl/std/types.dag", 21766, 21830), }); declarations.push(Declaration { - id: DeclarationId(652), + id: DeclarationId(653), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13825,10 +13845,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22188, 22245), + span: SourceSpan::new("dsl/std/types.dag", 21831, 21888), }); declarations.push(Declaration { - id: DeclarationId(653), + id: DeclarationId(654), name: Some("".to_string()), connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13839,10 +13859,10 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { value_body: None, refinement: None, nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 22246, 22302), + span: SourceSpan::new("dsl/std/types.dag", 21889, 21945), }); declarations.push(Declaration { - id: DeclarationId(654), + id: DeclarationId(655), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13856,7 +13876,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/unicode.dag", 3679, 3689), }); declarations.push(Declaration { - id: DeclarationId(655), + id: DeclarationId(656), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13870,7 +13890,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/unicode.dag", 3692, 3697), }); declarations.push(Declaration { - id: DeclarationId(656), + id: DeclarationId(657), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13884,7 +13904,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/unicode.dag", 3700, 3710), }); declarations.push(Declaration { - id: DeclarationId(657), + id: DeclarationId(658), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13898,7 +13918,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/unicode.dag", 3713, 3726), }); declarations.push(Declaration { - id: DeclarationId(658), + id: DeclarationId(659), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13912,7 +13932,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/unicode.dag", 4762, 4771), }); declarations.push(Declaration { - id: DeclarationId(659), + id: DeclarationId(660), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13926,7 +13946,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/unicode.dag", 4774, 4780), }); declarations.push(Declaration { - id: DeclarationId(660), + id: DeclarationId(661), name: None, connective: TypeConnective::Conj { children: vec![] }, type_params: vec![], @@ -13940,7 +13960,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/unicode.dag", 4783, 4787), }); declarations.push(Declaration { - id: DeclarationId(661), + id: DeclarationId(662), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -13960,7 +13980,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/unicode.dag", 5335, 5353), }); declarations.push(Declaration { - id: DeclarationId(662), + id: DeclarationId(663), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -13980,7 +14000,7 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { span: SourceSpan::new("dsl/std/unicode.dag", 6155, 6164), }); declarations.push(Declaration { - id: DeclarationId(663), + id: DeclarationId(664), name: None, connective: TypeConnective::Instantiation { template: DeclarationId(131), @@ -13999,26 +14019,6 @@ fn bootstrapped_std_fixture_dag_declarations() -> Vec { nominal_opacity: None, span: SourceSpan::new("dsl/std/unicode.dag", 6404, 6422), }); - declarations.push(Declaration { - id: DeclarationId(664), - name: None, - connective: TypeConnective::Instantiation { - template: DeclarationId(45), - arguments: vec![TemplateArgument { - parameter: DeclarationId(46), - value: DeclarationId(126), - }], - }, - type_params: vec![], - phantom_params: Vec::new(), - meta_tag: None, - specialization_parent: None, - inhabits: None, - value_body: None, - refinement: None, - nominal_opacity: None, - span: SourceSpan::new("dsl/std/types.dag", 7574, 7598), - }); declarations } } diff --git a/src/v3/compiler/src/diagnostics.rs b/src/v3/compiler/src/diagnostics.rs index 7dac307d7e3..dfa64f75106 100644 --- a/src/v3/compiler/src/diagnostics.rs +++ b/src/v3/compiler/src/diagnostics.rs @@ -723,10 +723,9 @@ pub(crate) fn witness_correction_for_decl( /// Opaque, validated witness to a path in the substrate /// `bootstrap_authority` set declared by /// `src/v3/std/bootstrap_authority.dag`. Held internally as a -/// `&'static str` because the only minters are the bootstrap loader -/// (`bootstrap_regen_fresh::parse_fixture`) and bootstrap kernel-patch -/// helpers (`bootstrap::patch_kernel_bool_boolean_algebra_inhabits`), -/// both of which iterate the `&'static`-keyed authority arrays +/// `&'static str` because the only minters are bootstrap loading paths +/// such as `bootstrap_regen_fresh::parse_fixture`, which iterate +/// the `&'static`-keyed authority arrays /// produced by `build.rs` (`STAGED_FILES`/`V3_SPECS`/`COMPILER_FILES`/ /// `EXTDEPS_FILES`) — derivations of the same substrate /// `bootstrap_authority` set. @@ -748,17 +747,6 @@ impl BootstrapAuthorityKey { Self(path) } - /// Typed witness for the kernel-`Bool` `inhabits` patch authority - /// (`dsl/std/types.dag` row of the substrate `bootstrap_authority` - /// set, classified `StdAuthority`). Encapsulates the path-string so - /// `bootstrap.rs` consumers do not name `dsl/std/types.dag` directly - /// — audit-row #2 retirement (bootstrap.rs slice 1 of 2). Reviewers - /// must treat new `for_*` accessors as additions to the witness - /// surface; each one represents a hand-Rust authority site. - pub(crate) fn for_kernel_bool() -> Self { - Self::new("dsl/std/types.dag") - } - /// Typed witness for the pipeline-authority row /// (`src/v3/compiler/pipeline.dag` of the substrate /// `bootstrap_authority` set, classified `CompilerAuthority`). diff --git a/src/v3/compiler/src/infer.rs b/src/v3/compiler/src/infer.rs index c59759e8c50..c433be964cc 100644 --- a/src/v3/compiler/src/infer.rs +++ b/src/v3/compiler/src/infer.rs @@ -4357,11 +4357,9 @@ const WALK_DEPTH_LIMIT: usize = 32; /// **Not yet covered** (tracked in DOWNSTREAM_REQUIREMENTS.md as /// class-5 gaps): /// - `Bool`: ~~no structural link~~ now uses `Declaration.inhabits` on -/// the kernel `Bool` sum in `dsl/std/types.dag`, populated at bootstrap -/// (`bootstrap::patch_kernel_bool_boolean_algebra_inhabits`) so v2 -/// keeps a plain `type Bool = True | False` surface. The walk follows -/// `Declaration.inhabits` when the connective chain hits a `Disj` -/// without an inline algebra. +/// the kernel `Bool` sum authored directly in `dsl/std/types.dag`. +/// The walk follows `Declaration.inhabits` when the connective chain +/// hits a `Disj` without an inline algebra. /// - `String` / collection-level algebras whose receiver is /// `FreeMonoid` / `Set` / `Map` (the whole /// instantiation, not just `T`): needs a refinement to the diff --git a/src/v3/compiler/tests/integration/m1_5_verification_test.rs b/src/v3/compiler/tests/integration/m1_5_verification_test.rs index 1f583ce2c51..fd943f85279 100644 --- a/src/v3/compiler/tests/integration/m1_5_verification_test.rs +++ b/src/v3/compiler/tests/integration/m1_5_verification_test.rs @@ -564,7 +564,7 @@ static BRIDGE_LEDGER_OPEN_ROW_NAMES: OnceLock> = OnceLock::new(); /// count retire bridges, and PRs that need to increase it must update /// `r3-v-bridge-ratchet-test-design.md` §Per-Bridge Gate Audit and obtain /// Verification-Mgr acknowledgment. -const EXPECTED_OPEN_BOUND: usize = 4; +const EXPECTED_OPEN_BOUND: usize = 2; fn bridge_ledger_open_row_names() -> &'static [String] { BRIDGE_LEDGER_OPEN_ROW_NAMES.get_or_init(|| { diff --git a/src/v3/compiler/tests/integration/parse_corpus_manifest.txt b/src/v3/compiler/tests/integration/parse_corpus_manifest.txt index 3a1ef168128..4efb7d4aec9 100644 --- a/src/v3/compiler/tests/integration/parse_corpus_manifest.txt +++ b/src/v3/compiler/tests/integration/parse_corpus_manifest.txt @@ -11,7 +11,7 @@ dsl/std/magnitude.dag 2 560 d1579da2ea458db8 dsl/std/nat.dag 4 1895 9c5eb0ac8d25a015 dsl/std/rational.dag 4 2379 3c3b86f7e18caf82 dsl/std/string_type.dag 4 1910 119741c6fb9de2e3 -dsl/std/types.dag 111 198793 3a2f47d17a81426d +dsl/std/types.dag 111 199485 45ad73daf932d379 src/v3/compiler/operators.dag 5 47160 b75a91c65bf8a242 src/v3/compiler/parse_tables.dag 43 92946 f6a6c0d08e3081bb src/v3/compiler/pipeline.dag 26 47032 a13b41aa379fd167 @@ -32,7 +32,7 @@ src/v3/std/anthropic_schema.dag 14 69934 58a973240ec25777 src/v3/std/approximate_field.dag 11 16864 ccbe4826dc31c636 src/v3/std/bin_shim.dag 4 2544 9ac96f1b3feafe47 src/v3/std/bootstrap_authority.dag 4 70609 e228bb8bb2449ece -src/v3/std/bridge_ledger.dag 7 31728 e199a822d969d067 +src/v3/std/bridge_ledger.dag 7 31845 e4b7260339078102 src/v3/std/clean_emission.dag 15 23867 e7bc1e6145f4781e src/v3/std/computation.dag 19 37870 25c5a33ef4d8735a src/v3/std/computation_model.dag 14 22953 20e458fe097d175a diff --git a/src/v3/std/bridge_ledger.dag b/src/v3/std/bridge_ledger.dag index 0198efb01b3..36c018d79a6 100644 --- a/src/v3/std/bridge_ledger.dag +++ b/src/v3/std/bridge_ledger.dag @@ -58,13 +58,12 @@ import v3.spec.v3_l1 { DeclarationRef } // lowers as `ArrowBody::Unparsed`; the retired row therefore means // no source-text side channel remains for this authority path, not // that compile-body drift is structurally checkable. -// - `bridge_exact_string_patching_residual_retired` — Open. Per -// `r3-structure.md:83`: PB lower-helper slice (Tier-2 / #1014 -// lineage) is pinned at zero, BUT "Other exact-string patching -// classes (outside this retired lower-helper post-process bridge) -// remain out of scope for this receipt and keep their own -// dissolution triggers" — the umbrella row stays Open until those -// other classes land their own retirement receipts. +// - `bridge_exact_string_patching_residual_retired` — Retired. +// The lower-helper exact-string patch class remains pinned at zero +// by `bridge_lower_helpers_patch_zero_residual_test.rs`, and the +// live BR-19 Bool-inhabits class now authors +// `Bool inhabits BooleanAlgebra` directly in `dsl/std/types.dag` +// instead of mutating `Declaration.inhabits` from bootstrap Rust. // 🟢 TERMINAL. Closed retirement-state coproduct for ledger rows. Two // states are sufficient at this scope: a bridge has either landed its @@ -157,17 +156,7 @@ data bridge_ledger: List = [ { name: "bridge_exact_string_patching_residual_retired", owner: "PB-Tier-2", - status: Open, - // Umbrella row — `bridge_lower_helpers_patch_zero_residual_test.rs` - // ratchets only the retired sub-slice (PR #1014 lineage); the row - // stays Open because *other* exact-string patching classes remain - // outside that receipt's scope. Point `authority` at the prose - // row where the umbrella's open-scope framing is defined, - // not at the closed sub-slice's ratchet (the residual debt the - // open status tracks is exactly the "other classes" the prose - // row names — those classes' own dissolution triggers cover the - // remaining scope, and the umbrella retires when those triggers - // all fire). - authority: "docs/r3-structure.md:83" + status: Retired, + authority: "dsl/std/types.dag Bool inhabits BooleanAlgebra + src/v3/compiler/tests/integration/bridge_lower_helpers_patch_zero_residual_test.rs" } ]