diff --git a/src/v2/std/compilers/target_model.dag b/src/v2/std/compilers/target_model.dag index f4318a628c7..d07f273b5ce 100644 --- a/src/v2/std/compilers/target_model.dag +++ b/src/v2/std/compilers/target_model.dag @@ -596,7 +596,12 @@ fn produced_decl_type_tokens_at( } ) } - _ => produced_decl_type_ref_tokens(token_class: rows.type_ref_token_class, type_node: type_node, type_binding: type_binding) + TypeNode { connective: Atom { identity: _ } } => produced_decl_type_ref_tokens(token_class: rows.type_ref_token_class, type_node: type_node, type_binding: type_binding) + TypeNode { connective: Conj } => produced_decl_type_ref_tokens(token_class: rows.type_ref_token_class, type_node: type_node, type_binding: type_binding) + TypeNode { connective: Disj } => produced_decl_type_ref_tokens(token_class: rows.type_ref_token_class, type_node: type_node, type_binding: type_binding) + TypeNode { connective: Cardinality } => produced_decl_type_ref_tokens(token_class: rows.type_ref_token_class, type_node: type_node, type_binding: type_binding) + TypeNode { connective: Instantiation } => produced_decl_type_ref_tokens(token_class: rows.type_ref_token_class, type_node: type_node, type_binding: type_binding) + ComputationNode { behavior: _ } => produced_decl_type_ref_tokens(token_class: rows.type_ref_token_class, type_node: type_node, type_binding: type_binding) } } @@ -811,16 +816,24 @@ fn produced_decl_subject_from_decl(decl: Node) -> Outcome - outcome_rejected( - d: produced_decl_render_diagnostic( - reason: ^produced_decl_render_decl_not_conj, - node: decl - ) - ) + TypeNode { connective: Atom { identity: _ } } => produced_decl_subject_from_decl_otherwise(decl: decl) + TypeNode { connective: Disj } => produced_decl_subject_from_decl_otherwise(decl: decl) + TypeNode { connective: Arrow } => produced_decl_subject_from_decl_otherwise(decl: decl) + TypeNode { connective: Cardinality } => produced_decl_subject_from_decl_otherwise(decl: decl) + TypeNode { connective: Instantiation } => produced_decl_subject_from_decl_otherwise(decl: decl) + ComputationNode { behavior: _ } => produced_decl_subject_from_decl_otherwise(decl: decl) } } +fn produced_decl_subject_from_decl_otherwise(decl: Node) -> Outcome { + outcome_rejected( + d: produced_decl_render_diagnostic( + reason: ^produced_decl_render_decl_not_conj, + node: decl + ) + ) +} + fn produced_decl_signature_with_open_from_rows( rows: ProducedDeclRenderRows, decl: Node, @@ -1049,7 +1062,12 @@ fn target_optional_named_child(root: Node, name: Symbol) -> Outcome Outcome { match node.kind { TypeNode { connective: Atom { identity: id } } => outcome_accepted(id) - _ => outcome_rejected(target_concrete_token_kind_invalid_diagnostic(token: node)) + TypeNode { connective: Conj } => outcome_rejected(target_concrete_token_kind_invalid_diagnostic(token: node)) + TypeNode { connective: Disj } => outcome_rejected(target_concrete_token_kind_invalid_diagnostic(token: node)) + TypeNode { connective: Arrow } => outcome_rejected(target_concrete_token_kind_invalid_diagnostic(token: node)) + TypeNode { connective: Cardinality } => outcome_rejected(target_concrete_token_kind_invalid_diagnostic(token: node)) + TypeNode { connective: Instantiation } => outcome_rejected(target_concrete_token_kind_invalid_diagnostic(token: node)) + ComputationNode { behavior: _ } => outcome_rejected(target_concrete_token_kind_invalid_diagnostic(token: node)) } } @@ -1933,7 +1951,12 @@ fn target_model_canonical_operation_atom_field_from_wire( match edge.target.kind { TypeNode { connective: Atom { identity: id } } => optional_present(value: id) - _ => acc + TypeNode { connective: Conj } => acc + TypeNode { connective: Disj } => acc + TypeNode { connective: Arrow } => acc + TypeNode { connective: Cardinality } => acc + TypeNode { connective: Instantiation } => acc + ComputationNode { behavior: _ } => acc } } else { acc @@ -2202,7 +2225,12 @@ fn target_model_canonical_operation_wire_predicate_type(wire: Node) -> Optional< optional_absent() } } - _ => optional_absent() + TypeNode { connective: Conj } => optional_absent() + TypeNode { connective: Disj } => optional_absent() + TypeNode { connective: Arrow } => optional_absent() + TypeNode { connective: Cardinality } => optional_absent() + TypeNode { connective: Instantiation } => optional_absent() + ComputationNode { behavior: _ } => optional_absent() } } @@ -2218,7 +2246,7 @@ fn target_model_canonical_operation_wire_child_declared_type(wire: Node, edge: E } else { optional_present(value: symbol_kernel_type_node()) } - _ => optional_absent() + Positional => optional_absent() } } @@ -2460,13 +2488,21 @@ fn canonical_operation_from_wire_node(wire: Node) -> Outcome } } } - _ => - outcome_rejected( - target_canonical_operation_wire_malformed_diagnostic(wire: wire) - ) + TypeNode { connective: Conj } => canonical_operation_from_wire_node_otherwise(wire: wire) + TypeNode { connective: Disj } => canonical_operation_from_wire_node_otherwise(wire: wire) + TypeNode { connective: Arrow } => canonical_operation_from_wire_node_otherwise(wire: wire) + TypeNode { connective: Cardinality } => canonical_operation_from_wire_node_otherwise(wire: wire) + TypeNode { connective: Instantiation } => canonical_operation_from_wire_node_otherwise(wire: wire) + ComputationNode { behavior: _ } => canonical_operation_from_wire_node_otherwise(wire: wire) } } +fn canonical_operation_from_wire_node_otherwise(wire: Node) -> Outcome { + outcome_rejected( + target_canonical_operation_wire_malformed_diagnostic(wire: wire) + ) +} + fn canonical_operation_wire_matches_operation( wire: Node, operation: CanonicalOperation @@ -2575,7 +2611,17 @@ fn target_operator_shape_wire_schema_valid(wire: Node) -> Outcome { outcome_rejected(target_operator_shape_wire_malformed_diagnostic(wire: wire)) } } - _ => + TypeNode { connective: Conj } => + outcome_rejected(target_operator_shape_wire_malformed_diagnostic(wire: wire)) + TypeNode { connective: Disj } => + outcome_rejected(target_operator_shape_wire_malformed_diagnostic(wire: wire)) + TypeNode { connective: Arrow } => + outcome_rejected(target_operator_shape_wire_malformed_diagnostic(wire: wire)) + TypeNode { connective: Cardinality } => + outcome_rejected(target_operator_shape_wire_malformed_diagnostic(wire: wire)) + TypeNode { connective: Instantiation } => + outcome_rejected(target_operator_shape_wire_malformed_diagnostic(wire: wire)) + ComputationNode { behavior: _ } => outcome_rejected(target_operator_shape_wire_malformed_diagnostic(wire: wire)) } } @@ -2594,7 +2640,12 @@ fn target_operator_shape_token_from_wire(wire: Node) -> Outcome { match edge.target.kind { TypeNode { connective: Atom { identity: token } } => optional_present(value: token) - _ => acc + TypeNode { connective: Conj } => acc + TypeNode { connective: Disj } => acc + TypeNode { connective: Arrow } => acc + TypeNode { connective: Cardinality } => acc + TypeNode { connective: Instantiation } => acc + ComputationNode { behavior: _ } => acc } } else { acc @@ -2638,7 +2689,17 @@ fn target_operator_shape_from_wire_node(wire: Node) -> Outcome + TypeNode { connective: Conj } => + outcome_rejected(target_operator_shape_wire_malformed_diagnostic(wire: wire)) + TypeNode { connective: Disj } => + outcome_rejected(target_operator_shape_wire_malformed_diagnostic(wire: wire)) + TypeNode { connective: Arrow } => + outcome_rejected(target_operator_shape_wire_malformed_diagnostic(wire: wire)) + TypeNode { connective: Cardinality } => + outcome_rejected(target_operator_shape_wire_malformed_diagnostic(wire: wire)) + TypeNode { connective: Instantiation } => + outcome_rejected(target_operator_shape_wire_malformed_diagnostic(wire: wire)) + ComputationNode { behavior: _ } => outcome_rejected(target_operator_shape_wire_malformed_diagnostic(wire: wire)) } } @@ -2688,7 +2749,17 @@ fn target_operator_realization_row_wire_schema_valid(row: Node) -> Outcome outcome_rejected(target_operator_realization_wire_malformed_diagnostic(row: row)) } } - _ => + TypeNode { connective: Atom { identity: _ } } => + outcome_rejected(target_operator_realization_wire_malformed_diagnostic(row: row)) + TypeNode { connective: Disj } => + outcome_rejected(target_operator_realization_wire_malformed_diagnostic(row: row)) + TypeNode { connective: Arrow } => + outcome_rejected(target_operator_realization_wire_malformed_diagnostic(row: row)) + TypeNode { connective: Cardinality } => + outcome_rejected(target_operator_realization_wire_malformed_diagnostic(row: row)) + TypeNode { connective: Instantiation } => + outcome_rejected(target_operator_realization_wire_malformed_diagnostic(row: row)) + ComputationNode { behavior: _ } => outcome_rejected(target_operator_realization_wire_malformed_diagnostic(row: row)) } } @@ -2781,15 +2852,23 @@ fn projection_bundle_symbol_field(bundle: Node, field: Symbol) -> Outcome outcome_accepted(id) - _ => - outcome_rejected( - target_value_projection_bundle_malformed_diagnostic(bundle: bundle) - ) + TypeNode { connective: Conj } => projection_bundle_symbol_field_otherwise(bundle: bundle) + TypeNode { connective: Disj } => projection_bundle_symbol_field_otherwise(bundle: bundle) + TypeNode { connective: Arrow } => projection_bundle_symbol_field_otherwise(bundle: bundle) + TypeNode { connective: Cardinality } => projection_bundle_symbol_field_otherwise(bundle: bundle) + TypeNode { connective: Instantiation } => projection_bundle_symbol_field_otherwise(bundle: bundle) + ComputationNode { behavior: _ } => projection_bundle_symbol_field_otherwise(bundle: bundle) } } ) } +fn projection_bundle_symbol_field_otherwise(bundle: Node) -> Outcome { + outcome_rejected( + target_value_projection_bundle_malformed_diagnostic(bundle: bundle) + ) +} + fn decode_binding_ref_shape_bundle(bundle: Node) -> Outcome { bind_outcome( o: projection_bundle_symbol_field( @@ -3499,19 +3578,27 @@ fn decode_int_literal_shape_bundle(bundle: Node) -> Outcome - bind_outcome( - o: projection_bundle_symbol_field( - bundle: bundle, - field: ^target_value_expr_field_int_literal_token - ), - f: fn(literal_token) { - outcome_accepted(IntLiteralDecimal { literal_token: literal_token }) - } - ) + TypeNode { connective: Conj } => decode_int_literal_shape_bundle_otherwise(bundle: bundle) + TypeNode { connective: Disj } => decode_int_literal_shape_bundle_otherwise(bundle: bundle) + TypeNode { connective: Arrow } => decode_int_literal_shape_bundle_otherwise(bundle: bundle) + TypeNode { connective: Cardinality } => decode_int_literal_shape_bundle_otherwise(bundle: bundle) + TypeNode { connective: Instantiation } => decode_int_literal_shape_bundle_otherwise(bundle: bundle) + ComputationNode { behavior: _ } => decode_int_literal_shape_bundle_otherwise(bundle: bundle) } } +fn decode_int_literal_shape_bundle_otherwise(bundle: Node) -> Outcome { + bind_outcome( + o: projection_bundle_symbol_field( + bundle: bundle, + field: ^target_value_expr_field_int_literal_token + ), + f: fn(literal_token) { + outcome_accepted(IntLiteralDecimal { literal_token: literal_token }) + } + ) +} + fn decode_vep_parent_int_literal(bundle: Node) -> Outcome { bind_outcome( o: projection_bundle_child(bundle: bundle, name: ^target_value_expr_field_int_literal), @@ -3868,13 +3955,21 @@ fn decode_value_expression_projection_bundle( ) -> Outcome { match bundle.kind { TypeNode { connective: Conj } => decode_vep_chain_binding_ref(bundle: bundle) - _ => - outcome_rejected( - target_value_projection_bundle_malformed_diagnostic(bundle: bundle) - ) + TypeNode { connective: Atom { identity: _ } } => decode_value_expression_projection_bundle_otherwise(bundle: bundle) + TypeNode { connective: Disj } => decode_value_expression_projection_bundle_otherwise(bundle: bundle) + TypeNode { connective: Arrow } => decode_value_expression_projection_bundle_otherwise(bundle: bundle) + TypeNode { connective: Cardinality } => decode_value_expression_projection_bundle_otherwise(bundle: bundle) + TypeNode { connective: Instantiation } => decode_value_expression_projection_bundle_otherwise(bundle: bundle) + ComputationNode { behavior: _ } => decode_value_expression_projection_bundle_otherwise(bundle: bundle) } } +fn decode_value_expression_projection_bundle_otherwise(bundle: Node) -> Outcome { + outcome_rejected( + target_value_projection_bundle_malformed_diagnostic(bundle: bundle) + ) +} + fn decode_optional_projection_bundle_symbol_field( bundle: Node, field: Symbol @@ -3884,15 +3979,23 @@ fn decode_optional_projection_bundle_symbol_field( match child.kind { TypeNode { connective: Atom { identity: id } } => Accepted { value: optional_present(value: id), diagnostics: d } - _ => - outcome_rejected( - target_type_expr_projection_bundle_malformed_diagnostic(bundle: bundle) - ) + TypeNode { connective: Conj } => decode_optional_projection_bundle_symbol_field_otherwise(bundle: bundle) + TypeNode { connective: Disj } => decode_optional_projection_bundle_symbol_field_otherwise(bundle: bundle) + TypeNode { connective: Arrow } => decode_optional_projection_bundle_symbol_field_otherwise(bundle: bundle) + TypeNode { connective: Cardinality } => decode_optional_projection_bundle_symbol_field_otherwise(bundle: bundle) + TypeNode { connective: Instantiation } => decode_optional_projection_bundle_symbol_field_otherwise(bundle: bundle) + ComputationNode { behavior: _ } => decode_optional_projection_bundle_symbol_field_otherwise(bundle: bundle) } Rejected { diagnostics: _ } => outcome_accepted(optional_absent()) } } +fn decode_optional_projection_bundle_symbol_field_otherwise(bundle: Node) -> Outcome> { + outcome_rejected( + target_type_expr_projection_bundle_malformed_diagnostic(bundle: bundle) + ) +} + fn decode_atom_type_shape_bundle(bundle: Node) -> Outcome { bind_outcome( o: projection_bundle_symbol_field(bundle: bundle, field: ^target_type_expr_field_surface), @@ -4130,13 +4233,21 @@ fn decode_type_expression_projection_bundle( ) } ) - _ => - outcome_rejected( - target_type_expr_projection_bundle_malformed_diagnostic(bundle: bundle) - ) + TypeNode { connective: Atom { identity: _ } } => decode_type_expression_projection_bundle_otherwise(bundle: bundle) + TypeNode { connective: Disj } => decode_type_expression_projection_bundle_otherwise(bundle: bundle) + TypeNode { connective: Arrow } => decode_type_expression_projection_bundle_otherwise(bundle: bundle) + TypeNode { connective: Cardinality } => decode_type_expression_projection_bundle_otherwise(bundle: bundle) + TypeNode { connective: Instantiation } => decode_type_expression_projection_bundle_otherwise(bundle: bundle) + ComputationNode { behavior: _ } => decode_type_expression_projection_bundle_otherwise(bundle: bundle) } } +fn decode_type_expression_projection_bundle_otherwise(bundle: Node) -> Outcome { + outcome_rejected( + target_type_expr_projection_bundle_malformed_diagnostic(bundle: bundle) + ) +} + fn type_expression_projection_from_target( target: TargetModel ) -> Outcome { @@ -4334,13 +4445,21 @@ fn decode_bodied_arrow_statement_scaffold_bundle( ) } ) - _ => - outcome_rejected( - target_bodied_arrow_scaffold_bundle_malformed_diagnostic(bundle: bundle) - ) + TypeNode { connective: Atom { identity: _ } } => decode_bodied_arrow_statement_scaffold_bundle_otherwise(bundle: bundle) + TypeNode { connective: Disj } => decode_bodied_arrow_statement_scaffold_bundle_otherwise(bundle: bundle) + TypeNode { connective: Arrow } => decode_bodied_arrow_statement_scaffold_bundle_otherwise(bundle: bundle) + TypeNode { connective: Cardinality } => decode_bodied_arrow_statement_scaffold_bundle_otherwise(bundle: bundle) + TypeNode { connective: Instantiation } => decode_bodied_arrow_statement_scaffold_bundle_otherwise(bundle: bundle) + ComputationNode { behavior: _ } => decode_bodied_arrow_statement_scaffold_bundle_otherwise(bundle: bundle) } } +fn decode_bodied_arrow_statement_scaffold_bundle_otherwise(bundle: Node) -> Outcome { + outcome_rejected( + target_bodied_arrow_scaffold_bundle_malformed_diagnostic(bundle: bundle) + ) +} + fn wire_conj_named_binding_atom(parent: Node) -> Outcome { bind_outcome( o: find_named_child(root: parent, name: ^concrete_syntax_token_field_binding), @@ -4348,7 +4467,17 @@ fn wire_conj_named_binding_atom(parent: Node) -> Outcome { match binding_node.kind { TypeNode { connective: Atom { identity: binding } } => outcome_accepted(binding) - _ => + TypeNode { connective: Conj } => + outcome_rejected(concrete_syntax_token_wire_malformed_diagnostic(token: parent)) + TypeNode { connective: Disj } => + outcome_rejected(concrete_syntax_token_wire_malformed_diagnostic(token: parent)) + TypeNode { connective: Arrow } => + outcome_rejected(concrete_syntax_token_wire_malformed_diagnostic(token: parent)) + TypeNode { connective: Cardinality } => + outcome_rejected(concrete_syntax_token_wire_malformed_diagnostic(token: parent)) + TypeNode { connective: Instantiation } => + outcome_rejected(concrete_syntax_token_wire_malformed_diagnostic(token: parent)) + ComputationNode { behavior: _ } => outcome_rejected(concrete_syntax_token_wire_malformed_diagnostic(token: parent)) } } @@ -4429,20 +4558,38 @@ fn concrete_syntax_token_wire_schema_valid(token: Node) -> Outcome { concrete_syntax_token_wire_malformed_diagnostic(token: token) ) } - _ => - outcome_rejected( - concrete_syntax_token_wire_malformed_diagnostic(token: token) - ) + TypeNode { connective: Conj } => concrete_syntax_token_wire_schema_valid_otherwise(token: token) + TypeNode { connective: Disj } => concrete_syntax_token_wire_schema_valid_otherwise(token: token) + TypeNode { connective: Arrow } => concrete_syntax_token_wire_schema_valid_otherwise(token: token) + TypeNode { connective: Cardinality } => concrete_syntax_token_wire_schema_valid_otherwise(token: token) + TypeNode { connective: Instantiation } => concrete_syntax_token_wire_schema_valid_otherwise(token: token) + ComputationNode { behavior: _ } => concrete_syntax_token_wire_schema_valid_otherwise(token: token) } } ) } } - _ => + TypeNode { connective: Atom { identity: _ } } => + outcome_rejected(concrete_syntax_token_wire_malformed_diagnostic(token: token)) + TypeNode { connective: Disj } => + outcome_rejected(concrete_syntax_token_wire_malformed_diagnostic(token: token)) + TypeNode { connective: Arrow } => + outcome_rejected(concrete_syntax_token_wire_malformed_diagnostic(token: token)) + TypeNode { connective: Cardinality } => + outcome_rejected(concrete_syntax_token_wire_malformed_diagnostic(token: token)) + TypeNode { connective: Instantiation } => + outcome_rejected(concrete_syntax_token_wire_malformed_diagnostic(token: token)) + ComputationNode { behavior: _ } => outcome_rejected(concrete_syntax_token_wire_malformed_diagnostic(token: token)) } } +fn concrete_syntax_token_wire_schema_valid_otherwise(token: Node) -> Outcome { + outcome_rejected( + concrete_syntax_token_wire_malformed_diagnostic(token: token) + ) +} + fn concrete_syntax_token_from_wire_node(token: Node) -> Outcome { bind_outcome( o: concrete_syntax_token_wire_schema_valid(token: token), @@ -4479,10 +4626,12 @@ fn concrete_syntax_token_from_wire_node(token: Node) -> Outcome - outcome_rejected( - concrete_syntax_token_wire_malformed_diagnostic(token: token) - ) + TypeNode { connective: Conj } => concrete_syntax_token_from_wire_node_otherwise(token: token) + TypeNode { connective: Disj } => concrete_syntax_token_from_wire_node_otherwise(token: token) + TypeNode { connective: Arrow } => concrete_syntax_token_from_wire_node_otherwise(token: token) + TypeNode { connective: Cardinality } => concrete_syntax_token_from_wire_node_otherwise(token: token) + TypeNode { connective: Instantiation } => concrete_syntax_token_from_wire_node_otherwise(token: token) + ComputationNode { behavior: _ } => concrete_syntax_token_from_wire_node_otherwise(token: token) } } ) @@ -4492,6 +4641,12 @@ fn concrete_syntax_token_from_wire_node(token: Node) -> Outcome Outcome { + outcome_rejected( + concrete_syntax_token_wire_malformed_diagnostic(token: token) + ) +} + fn target_value_projection_bundle_malformed_diagnostic(bundle: Node) -> Diagnostic { Diagnostic { reason: ^target_value_projection_bundle_malformed, @@ -4548,7 +4703,12 @@ fn source_atom_char_projection_from_node(source: Node) -> Optional optional_absent() + TypeNode { connective: Conj } => optional_absent() + TypeNode { connective: Disj } => optional_absent() + TypeNode { connective: Arrow } => optional_absent() + TypeNode { connective: Cardinality } => optional_absent() + TypeNode { connective: Instantiation } => optional_absent() + ComputationNode { behavior: _ } => optional_absent() } } @@ -4598,7 +4758,11 @@ fn source_atom_string_projection_from_node_bounded(source: Node, fuel: Int) -> O Rejected { diagnostics: _ } => optional_absent() } } - _ => optional_absent() + TypeNode { connective: Disj } => optional_absent() + TypeNode { connective: Arrow } => optional_absent() + TypeNode { connective: Cardinality } => optional_absent() + TypeNode { connective: Instantiation } => optional_absent() + ComputationNode { behavior: _ } => optional_absent() } } } @@ -4619,7 +4783,12 @@ fn source_atom_symbol_projection_from_node(source: Node) -> Optional optional_absent() + TypeNode { connective: Conj } => optional_absent() + TypeNode { connective: Disj } => optional_absent() + TypeNode { connective: Arrow } => optional_absent() + TypeNode { connective: Cardinality } => optional_absent() + TypeNode { connective: Instantiation } => optional_absent() + ComputationNode { behavior: _ } => optional_absent() } } @@ -4642,7 +4811,12 @@ fn source_atom_value_for_value_template( } else { optional_absent() } - _ => optional_absent() + TypeNode { connective: Conj } => optional_absent() + TypeNode { connective: Disj } => optional_absent() + TypeNode { connective: Arrow } => optional_absent() + TypeNode { connective: Cardinality } => optional_absent() + TypeNode { connective: Instantiation } => optional_absent() + ComputationNode { behavior: _ } => optional_absent() } ValueCharUnicodeScalar => source_atom_char_projection_from_node(source: source) @@ -4863,7 +5037,12 @@ fn target_value_expression_int_literal_lexeme_from_wire(wire: Node) -> Outcome optional_present(value: id) - _ => acc + TypeNode { connective: Conj } => acc + TypeNode { connective: Disj } => acc + TypeNode { connective: Arrow } => acc + TypeNode { connective: Cardinality } => acc + TypeNode { connective: Instantiation } => acc + ComputationNode { behavior: _ } => acc } } else { acc @@ -4982,13 +5161,21 @@ fn target_value_expr_binding_ref_wire_schema_valid(wire: Node) -> Outcome target_value_expr_operand_wire_malformed_diagnostic(wire: wire) ) } - _ => - outcome_rejected( - target_value_expr_operand_wire_malformed_diagnostic(wire: wire) - ) + TypeNode { connective: Conj } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Disj } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Arrow } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Cardinality } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Instantiation } => target_value_expr_operand_wire_malformed(wire: wire) + ComputationNode { behavior: _ } => target_value_expr_operand_wire_malformed(wire: wire) } } +fn target_value_expr_operand_wire_malformed(wire: Node) -> Outcome { + outcome_rejected( + target_value_expr_operand_wire_malformed_diagnostic(wire: wire) + ) +} + fn target_value_expr_binding_ref_binding_from_wire(wire: Node) -> Outcome { match fold( wire.children, @@ -5003,7 +5190,12 @@ fn target_value_expr_binding_ref_binding_from_wire(wire: Node) -> Outcome optional_present(value: id) - _ => acc + TypeNode { connective: Conj } => acc + TypeNode { connective: Disj } => acc + TypeNode { connective: Arrow } => acc + TypeNode { connective: Cardinality } => acc + TypeNode { connective: Instantiation } => acc + ComputationNode { behavior: _ } => acc } } else { acc @@ -5068,10 +5260,12 @@ fn target_value_expr_primitive_apply_wire_schema_valid(wire: Node) -> Outcome - outcome_rejected( - target_value_expr_operand_wire_malformed_diagnostic(wire: wire) - ) + TypeNode { connective: Conj } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Disj } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Arrow } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Cardinality } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Instantiation } => target_value_expr_operand_wire_malformed(wire: wire) + ComputationNode { behavior: _ } => target_value_expr_operand_wire_malformed(wire: wire) } } @@ -5206,10 +5400,12 @@ fn target_value_expr_effect_apply_wire_schema_valid(wire: Node) -> Outcome ) } } - _ => - outcome_rejected( - target_value_expr_operand_wire_malformed_diagnostic(wire: wire) - ) + TypeNode { connective: Conj } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Disj } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Arrow } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Cardinality } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Instantiation } => target_value_expr_operand_wire_malformed(wire: wire) + ComputationNode { behavior: _ } => target_value_expr_operand_wire_malformed(wire: wire) } } @@ -5227,7 +5423,12 @@ fn target_value_expr_effect_apply_kind_from_wire(wire: Node) -> Outcome match edge.target.kind { TypeNode { connective: Atom { identity: id } } => optional_present(value: id) - _ => acc + TypeNode { connective: Conj } => acc + TypeNode { connective: Disj } => acc + TypeNode { connective: Arrow } => acc + TypeNode { connective: Cardinality } => acc + TypeNode { connective: Instantiation } => acc + ComputationNode { behavior: _ } => acc } } else { acc @@ -5701,7 +5902,12 @@ fn target_value_expr_closure_tokens_from_wire(wire: Node, field: Symbol) -> Outc match edge.target.kind { TypeNode { connective: Atom { identity: tc } } => outcome_accepted(list_snoc_item(xs: so_far, item: FixedToken { token_class: tc })) - _ => outcome_rejected(target_value_expr_operand_wire_malformed_diagnostic(wire: wire)) + TypeNode { connective: Conj } => outcome_rejected(target_value_expr_operand_wire_malformed_diagnostic(wire: wire)) + TypeNode { connective: Disj } => outcome_rejected(target_value_expr_operand_wire_malformed_diagnostic(wire: wire)) + TypeNode { connective: Arrow } => outcome_rejected(target_value_expr_operand_wire_malformed_diagnostic(wire: wire)) + TypeNode { connective: Cardinality } => outcome_rejected(target_value_expr_operand_wire_malformed_diagnostic(wire: wire)) + TypeNode { connective: Instantiation } => outcome_rejected(target_value_expr_operand_wire_malformed_diagnostic(wire: wire)) + ComputationNode { behavior: _ } => outcome_rejected(target_value_expr_operand_wire_malformed_diagnostic(wire: wire)) } } else { outcome_accepted(so_far) @@ -5815,13 +6021,21 @@ fn target_operator_realization_catalog_wire_schema_valid(catalog: Node) -> Outco target_operator_realization_catalog_miss_diagnostic(catalog: catalog) ) } - _ => - outcome_rejected( - target_operator_realization_catalog_miss_diagnostic(catalog: catalog) - ) + TypeNode { connective: Atom { identity: _ } } => target_operator_realization_catalog_wire_schema_valid_otherwise(catalog: catalog) + TypeNode { connective: Disj } => target_operator_realization_catalog_wire_schema_valid_otherwise(catalog: catalog) + TypeNode { connective: Arrow } => target_operator_realization_catalog_wire_schema_valid_otherwise(catalog: catalog) + TypeNode { connective: Cardinality } => target_operator_realization_catalog_wire_schema_valid_otherwise(catalog: catalog) + TypeNode { connective: Instantiation } => target_operator_realization_catalog_wire_schema_valid_otherwise(catalog: catalog) + ComputationNode { behavior: _ } => target_operator_realization_catalog_wire_schema_valid_otherwise(catalog: catalog) } } +fn target_operator_realization_catalog_wire_schema_valid_otherwise(catalog: Node) -> Outcome { + outcome_rejected( + target_operator_realization_catalog_miss_diagnostic(catalog: catalog) + ) +} + fn target_operator_realization_catalog_lookup_step( acc: PassingCandidateFold, row_node: Node, @@ -5884,15 +6098,23 @@ fn target_operator_realization_catalog_lookup( target_operator_realization_catalog_ambiguous_diagnostic(catalog: catalog) ) } - _ => - outcome_rejected( - target_operator_realization_catalog_miss_diagnostic(catalog: catalog) - ) + TypeNode { connective: Atom { identity: _ } } => target_operator_realization_catalog_lookup_otherwise(catalog: catalog) + TypeNode { connective: Disj } => target_operator_realization_catalog_lookup_otherwise(catalog: catalog) + TypeNode { connective: Arrow } => target_operator_realization_catalog_lookup_otherwise(catalog: catalog) + TypeNode { connective: Cardinality } => target_operator_realization_catalog_lookup_otherwise(catalog: catalog) + TypeNode { connective: Instantiation } => target_operator_realization_catalog_lookup_otherwise(catalog: catalog) + ComputationNode { behavior: _ } => target_operator_realization_catalog_lookup_otherwise(catalog: catalog) } } ) } +fn target_operator_realization_catalog_lookup_otherwise(catalog: Node) -> Outcome { + outcome_rejected( + target_operator_realization_catalog_miss_diagnostic(catalog: catalog) + ) +} + fn target_value_expr_primitive_apply_operation_from_wire(wire: Node) -> Outcome { match fold( wire.children, @@ -5950,7 +6172,7 @@ fn target_value_expression_binding_refs_intersperse_separator( ) match acc { Empty => Cons { head: token, tail: Empty } - _ => + Cons { head: _, tail: _ } => Cons { head: token, tail: Cons { @@ -6149,7 +6371,12 @@ fn target_value_expression_symbol_identity_from_wire(wire: Node) -> Outcome optional_present(value: id) - _ => acc + TypeNode { connective: Conj } => acc + TypeNode { connective: Disj } => acc + TypeNode { connective: Arrow } => acc + TypeNode { connective: Cardinality } => acc + TypeNode { connective: Instantiation } => acc + ComputationNode { behavior: _ } => acc } } else { acc @@ -6269,18 +6496,26 @@ fn target_value_expression_reify_from_wire(wire: Node) -> Outcome - outcome_rejected( - target_value_expression_emit_unsupported_kind_diagnostic( - expr: TargetValueExpression { - kind: TargetValueExprSymbolIdentity, - node: wire - } - ) - ) + TypeNode { connective: Conj } => target_value_expression_reify_from_wire_otherwise(wire: wire) + TypeNode { connective: Disj } => target_value_expression_reify_from_wire_otherwise(wire: wire) + TypeNode { connective: Arrow } => target_value_expression_reify_from_wire_otherwise(wire: wire) + TypeNode { connective: Cardinality } => target_value_expression_reify_from_wire_otherwise(wire: wire) + TypeNode { connective: Instantiation } => target_value_expression_reify_from_wire_otherwise(wire: wire) + ComputationNode { behavior: _ } => target_value_expression_reify_from_wire_otherwise(wire: wire) } } +fn target_value_expression_reify_from_wire_otherwise(wire: Node) -> Outcome { + outcome_rejected( + target_value_expression_emit_unsupported_kind_diagnostic( + expr: TargetValueExpression { + kind: TargetValueExprSymbolIdentity, + node: wire + } + ) + ) +} + fn target_value_expr_conditional_wire_schema_valid(wire: Node) -> Outcome { match wire.kind { TypeNode { connective: Atom { identity: id } } => @@ -6312,10 +6547,12 @@ fn target_value_expr_conditional_wire_schema_valid(wire: Node) -> Outcome } else { outcome_accepted(true) } - _ => - outcome_rejected( - target_value_expr_operand_wire_malformed_diagnostic(wire: wire) - ) + TypeNode { connective: Conj } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Disj } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Arrow } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Cardinality } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Instantiation } => target_value_expr_operand_wire_malformed(wire: wire) + ComputationNode { behavior: _ } => target_value_expr_operand_wire_malformed(wire: wire) } } @@ -6382,10 +6619,12 @@ fn target_value_expr_bind_let_wire_schema_valid(wire: Node) -> Outcome { } else { outcome_accepted(true) } - _ => - outcome_rejected( - target_value_expr_operand_wire_malformed_diagnostic(wire: wire) - ) + TypeNode { connective: Conj } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Disj } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Arrow } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Cardinality } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Instantiation } => target_value_expr_operand_wire_malformed(wire: wire) + ComputationNode { behavior: _ } => target_value_expr_operand_wire_malformed(wire: wire) } } @@ -6578,10 +6817,12 @@ fn target_value_expr_loop_wire_schema_valid(wire: Node) -> Outcome { } else { outcome_accepted(true) } - _ => - outcome_rejected( - target_value_expr_operand_wire_malformed_diagnostic(wire: wire) - ) + TypeNode { connective: Conj } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Disj } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Arrow } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Cardinality } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Instantiation } => target_value_expr_operand_wire_malformed(wire: wire) + ComputationNode { behavior: _ } => target_value_expr_operand_wire_malformed(wire: wire) } } @@ -6676,13 +6917,21 @@ fn target_value_expression_loop_to_concrete_tokens_inner( fn target_value_expr_wire_atom_identity(wire: Node) -> Outcome { match wire.kind { TypeNode { connective: Atom { identity: id } } => outcome_accepted(id) - _ => - outcome_rejected( - target_value_expr_operand_wire_malformed_diagnostic(wire: wire) - ) + TypeNode { connective: Conj } => target_value_expr_wire_atom_identity_otherwise(wire: wire) + TypeNode { connective: Disj } => target_value_expr_wire_atom_identity_otherwise(wire: wire) + TypeNode { connective: Arrow } => target_value_expr_wire_atom_identity_otherwise(wire: wire) + TypeNode { connective: Cardinality } => target_value_expr_wire_atom_identity_otherwise(wire: wire) + TypeNode { connective: Instantiation } => target_value_expr_wire_atom_identity_otherwise(wire: wire) + ComputationNode { behavior: _ } => target_value_expr_wire_atom_identity_otherwise(wire: wire) } } +fn target_value_expr_wire_atom_identity_otherwise(wire: Node) -> Outcome { + outcome_rejected( + target_value_expr_operand_wire_malformed_diagnostic(wire: wire) + ) +} + fn target_value_expr_record_construct_wire_schema_valid(wire: Node) -> Outcome { match wire.kind { TypeNode { connective: Atom { identity: id } } => @@ -6704,10 +6953,12 @@ fn target_value_expr_record_construct_wire_schema_valid(wire: Node) -> Outcome - outcome_rejected( - target_value_expr_operand_wire_malformed_diagnostic(wire: wire) - ) + TypeNode { connective: Conj } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Disj } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Arrow } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Cardinality } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Instantiation } => target_value_expr_operand_wire_malformed(wire: wire) + ComputationNode { behavior: _ } => target_value_expr_operand_wire_malformed(wire: wire) } } @@ -6725,7 +6976,12 @@ fn target_value_expr_record_construct_type_from_wire(wire: Node) -> Outcome optional_present(value: id) - _ => acc + TypeNode { connective: Conj } => acc + TypeNode { connective: Disj } => acc + TypeNode { connective: Arrow } => acc + TypeNode { connective: Cardinality } => acc + TypeNode { connective: Instantiation } => acc + ComputationNode { behavior: _ } => acc } } else { acc @@ -7277,10 +7533,12 @@ fn target_value_expr_field_access_wire_schema_valid(wire: Node) -> Outcome ) } } - _ => - outcome_rejected( - target_value_expr_operand_wire_malformed_diagnostic(wire: wire) - ) + TypeNode { connective: Conj } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Disj } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Arrow } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Cardinality } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Instantiation } => target_value_expr_operand_wire_malformed(wire: wire) + ComputationNode { behavior: _ } => target_value_expr_operand_wire_malformed(wire: wire) } } @@ -7307,7 +7565,12 @@ fn target_value_expr_field_access_field_from_wire(wire: Node) -> Outcome match edge.target.kind { TypeNode { connective: Atom { identity: id } } => optional_present(value: id) - _ => acc + TypeNode { connective: Conj } => acc + TypeNode { connective: Disj } => acc + TypeNode { connective: Arrow } => acc + TypeNode { connective: Cardinality } => acc + TypeNode { connective: Instantiation } => acc + ComputationNode { behavior: _ } => acc } } else { acc @@ -7410,13 +7673,21 @@ fn target_value_expr_match_arm_wire_schema_valid(arm_wire: Node) -> Outcome - outcome_rejected( - target_value_expr_operand_wire_malformed_diagnostic(wire: arm_wire) - ) + TypeNode { connective: Atom { identity: _ } } => target_value_expr_match_arm_wire_schema_valid_otherwise(arm_wire: arm_wire) + TypeNode { connective: Disj } => target_value_expr_match_arm_wire_schema_valid_otherwise(arm_wire: arm_wire) + TypeNode { connective: Arrow } => target_value_expr_match_arm_wire_schema_valid_otherwise(arm_wire: arm_wire) + TypeNode { connective: Cardinality } => target_value_expr_match_arm_wire_schema_valid_otherwise(arm_wire: arm_wire) + TypeNode { connective: Instantiation } => target_value_expr_match_arm_wire_schema_valid_otherwise(arm_wire: arm_wire) + ComputationNode { behavior: _ } => target_value_expr_match_arm_wire_schema_valid_otherwise(arm_wire: arm_wire) } } +fn target_value_expr_match_arm_wire_schema_valid_otherwise(arm_wire: Node) -> Outcome { + outcome_rejected( + target_value_expr_operand_wire_malformed_diagnostic(wire: arm_wire) + ) +} + fn target_value_expr_match_wire_schema_valid(wire: Node) -> Outcome { match wire.kind { TypeNode { connective: Atom { identity: id } } => @@ -7471,10 +7742,12 @@ fn target_value_expr_match_wire_schema_valid(wire: Node) -> Outcome { Rejected { diagnostics: r } => Rejected { diagnostics: r } } } - _ => - outcome_rejected( - target_value_expr_operand_wire_malformed_diagnostic(wire: wire) - ) + TypeNode { connective: Conj } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Disj } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Arrow } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Cardinality } => target_value_expr_operand_wire_malformed(wire: wire) + TypeNode { connective: Instantiation } => target_value_expr_operand_wire_malformed(wire: wire) + ComputationNode { behavior: _ } => target_value_expr_operand_wire_malformed(wire: wire) } } @@ -7634,7 +7907,12 @@ fn target_value_expr_bool_literal_value_from_atom(node: Node) -> Optional } else { optional_absent() } - _ => optional_absent() + TypeNode { connective: Conj } => optional_absent() + TypeNode { connective: Disj } => optional_absent() + TypeNode { connective: Arrow } => optional_absent() + TypeNode { connective: Cardinality } => optional_absent() + TypeNode { connective: Instantiation } => optional_absent() + ComputationNode { behavior: _ } => optional_absent() } } @@ -7692,7 +7970,23 @@ fn target_value_expr_bool_literal_value_from_expression( ) Rejected { diagnostics: _ } => optional_absent() } - _ => optional_absent() + TargetValueExprSymbolToOwnedString => optional_absent() + TargetValueExprCharUnicodeScalar => optional_absent() + TargetValueExprStringLiteral => optional_absent() + TargetValueExprIntLiteral => optional_absent() + TargetValueExprReferenceRcNew => optional_absent() + TargetValueExprReferenceBoxNew => optional_absent() + TargetValueExprBindingRef => optional_absent() + TargetValueExprPrimitiveApply => optional_absent() + TargetValueExprEffectApply => optional_absent() + TargetValueExprCallableApply => optional_absent() + TargetValueExprClosure => optional_absent() + TargetValueExprConditional => optional_absent() + TargetValueExprBindLet => optional_absent() + TargetValueExprLoop => optional_absent() + TargetValueExprRecordConstruct => optional_absent() + TargetValueExprFieldAccess => optional_absent() + TargetValueExprMatch => optional_absent() } } @@ -7722,7 +8016,12 @@ fn target_value_expr_is_source_bool_literal_atom( Present { value: _ } => true Absent => false } - _ => false + TypeNode { connective: Conj } => false + TypeNode { connective: Disj } => false + TypeNode { connective: Arrow } => false + TypeNode { connective: Cardinality } => false + TypeNode { connective: Instantiation } => false + ComputationNode { behavior: _ } => false } } @@ -7749,7 +8048,24 @@ fn target_value_expr_match_is_int_bool_octet_channel( match scrutinee.kind { TargetValueExprBindingRef => target_value_expr_match_arms_are_int_bool_octet_channel(arms: arms) - _ => false + TargetValueExprSymbolIdentity => false + TargetValueExprSymbolToOwnedString => false + TargetValueExprBoolLiteral => false + TargetValueExprCharUnicodeScalar => false + TargetValueExprStringLiteral => false + TargetValueExprIntLiteral => false + TargetValueExprReferenceRcNew => false + TargetValueExprReferenceBoxNew => false + TargetValueExprPrimitiveApply => false + TargetValueExprEffectApply => false + TargetValueExprCallableApply => false + TargetValueExprClosure => false + TargetValueExprConditional => false + TargetValueExprBindLet => false + TargetValueExprLoop => false + TargetValueExprRecordConstruct => false + TargetValueExprFieldAccess => false + TargetValueExprMatch => false } } @@ -7788,14 +8104,34 @@ fn target_value_expr_bool_literal_octet_body_tokens( ) ) } - _ => - outcome_rejected( - target_value_expr_diagnostic( - reason: ^target_value_expr_reason_transform_shape_invalid, - node: expr.node - ) - ) - } + TargetValueExprSymbolIdentity => target_value_expr_bool_literal_octet_body_tokens_otherwise(expr: expr) + TargetValueExprSymbolToOwnedString => target_value_expr_bool_literal_octet_body_tokens_otherwise(expr: expr) + TargetValueExprCharUnicodeScalar => target_value_expr_bool_literal_octet_body_tokens_otherwise(expr: expr) + TargetValueExprStringLiteral => target_value_expr_bool_literal_octet_body_tokens_otherwise(expr: expr) + TargetValueExprIntLiteral => target_value_expr_bool_literal_octet_body_tokens_otherwise(expr: expr) + TargetValueExprReferenceRcNew => target_value_expr_bool_literal_octet_body_tokens_otherwise(expr: expr) + TargetValueExprReferenceBoxNew => target_value_expr_bool_literal_octet_body_tokens_otherwise(expr: expr) + TargetValueExprBindingRef => target_value_expr_bool_literal_octet_body_tokens_otherwise(expr: expr) + TargetValueExprPrimitiveApply => target_value_expr_bool_literal_octet_body_tokens_otherwise(expr: expr) + TargetValueExprEffectApply => target_value_expr_bool_literal_octet_body_tokens_otherwise(expr: expr) + TargetValueExprCallableApply => target_value_expr_bool_literal_octet_body_tokens_otherwise(expr: expr) + TargetValueExprClosure => target_value_expr_bool_literal_octet_body_tokens_otherwise(expr: expr) + TargetValueExprConditional => target_value_expr_bool_literal_octet_body_tokens_otherwise(expr: expr) + TargetValueExprBindLet => target_value_expr_bool_literal_octet_body_tokens_otherwise(expr: expr) + TargetValueExprLoop => target_value_expr_bool_literal_octet_body_tokens_otherwise(expr: expr) + TargetValueExprRecordConstruct => target_value_expr_bool_literal_octet_body_tokens_otherwise(expr: expr) + TargetValueExprFieldAccess => target_value_expr_bool_literal_octet_body_tokens_otherwise(expr: expr) + TargetValueExprMatch => target_value_expr_bool_literal_octet_body_tokens_otherwise(expr: expr) + } +} + +fn target_value_expr_bool_literal_octet_body_tokens_otherwise(expr: TargetValueExpression) -> Outcome> { + outcome_rejected( + target_value_expr_diagnostic( + reason: ^target_value_expr_reason_transform_shape_invalid, + node: expr.node + ) + ) } fn target_value_expr_int_bool_octet_scrutinee_carrier_tokens( @@ -7829,15 +8165,21 @@ fn target_value_expr_int_bool_octet_scrutinee_carrier_tokens( } ) ) - _ => - outcome_rejected( - target_operator_realization_catalog_miss_diagnostic(catalog: catalog) - ) + PrefixToken { token: _ } => target_value_expr_int_bool_octet_scrutinee_carrier_tokens_otherwise(catalog: catalog) + CallIdent { ident: _ } => target_value_expr_int_bool_octet_scrutinee_carrier_tokens_otherwise(catalog: catalog) + MethodIdent { ident: _ } => target_value_expr_int_bool_octet_scrutinee_carrier_tokens_otherwise(catalog: catalog) + OperandUnchanged => target_value_expr_int_bool_octet_scrutinee_carrier_tokens_otherwise(catalog: catalog) } } ) } +fn target_value_expr_int_bool_octet_scrutinee_carrier_tokens_otherwise(catalog: Node) -> Outcome> { + outcome_rejected( + target_operator_realization_catalog_miss_diagnostic(catalog: catalog) + ) +} + fn target_value_expr_match_arm_tokens_int_bool_octet_channel( arms: List, projection: TargetValueExpressionProjection, @@ -8057,13 +8399,33 @@ fn target_value_expression_bool_literal_to_concrete_tokens( target_value_expression_emit_unsupported_kind_diagnostic(expr: expr) ) } - _ => - outcome_rejected( - target_value_expression_emit_unsupported_kind_diagnostic(expr: expr) - ) + TargetValueExprSymbolIdentity => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprSymbolToOwnedString => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprCharUnicodeScalar => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprStringLiteral => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprIntLiteral => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprReferenceRcNew => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprReferenceBoxNew => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprBindingRef => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprPrimitiveApply => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprEffectApply => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprCallableApply => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprClosure => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprConditional => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprBindLet => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprLoop => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprRecordConstruct => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprFieldAccess => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprMatch => target_value_expression_emit_unsupported_kind(expr: expr) } } +fn target_value_expression_emit_unsupported_kind(expr: TargetValueExpression) -> Outcome> { + outcome_rejected( + target_value_expression_emit_unsupported_kind_diagnostic(expr: expr) + ) +} + fn target_value_expression_symbol_identity_to_concrete_tokens( expr: TargetValueExpression, projection: TargetValueExpressionProjection @@ -8214,7 +8576,12 @@ fn target_value_expr_callable_apply_callee_from_wire(wire: Node) -> Outcome optional_present(value: id) - _ => acc + TypeNode { connective: Conj } => acc + TypeNode { connective: Disj } => acc + TypeNode { connective: Arrow } => acc + TypeNode { connective: Cardinality } => acc + TypeNode { connective: Instantiation } => acc + ComputationNode { behavior: _ } => acc } } else { acc @@ -8377,10 +8744,12 @@ fn target_value_expr_closure_params_from_wire(wire: Node) -> Outcome outcome_accepted(list_snoc_item(xs: ps, item: id)) - _ => - outcome_rejected( - target_value_expr_operand_wire_malformed_diagnostic(wire: wire) - ) + TypeNode { connective: Conj } => target_value_expr_closure_params_from_wire_otherwise(wire: wire) + TypeNode { connective: Disj } => target_value_expr_closure_params_from_wire_otherwise(wire: wire) + TypeNode { connective: Arrow } => target_value_expr_closure_params_from_wire_otherwise(wire: wire) + TypeNode { connective: Cardinality } => target_value_expr_closure_params_from_wire_otherwise(wire: wire) + TypeNode { connective: Instantiation } => target_value_expr_closure_params_from_wire_otherwise(wire: wire) + ComputationNode { behavior: _ } => target_value_expr_closure_params_from_wire_otherwise(wire: wire) } } else if n == ^target_value_expr_field_closure_body { acc @@ -8403,6 +8772,12 @@ fn target_value_expr_closure_params_from_wire(wire: Node) -> Outcome Outcome> { + outcome_rejected( + target_value_expr_operand_wire_malformed_diagnostic(wire: wire) + ) +} + fn target_value_expr_closure_body_from_wire(wire: Node) -> Outcome { target_value_expr_conditional_child_from_wire( wire: wire, @@ -8422,7 +8797,7 @@ fn target_value_expr_closure_param_tokens( let token = BoundToken { token_class: ident_token, binding: p } match acc { Empty => Cons { head: token, tail: Empty } - _ => + Cons { head: _, tail: _ } => Cons { head: token, tail: Cons { @@ -8633,10 +9008,11 @@ fn target_value_expression_to_concrete_tokens( projection: projection, catalog: catalog ) - _ => - outcome_rejected( - target_value_expression_emit_unsupported_kind_diagnostic(expr: expr) - ) + TargetValueExprSymbolToOwnedString => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprCharUnicodeScalar => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprStringLiteral => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprReferenceRcNew => target_value_expression_emit_unsupported_kind(expr: expr) + TargetValueExprReferenceBoxNew => target_value_expression_emit_unsupported_kind(expr: expr) } } @@ -9280,13 +9656,21 @@ fn target_constructor_template_from_node( target_constructor_template_decode_invalid_diagnostic(source_carrier: source_carrier) ) } - _ => - outcome_rejected( - target_constructor_template_decode_invalid_diagnostic(source_carrier: source_carrier) - ) + TypeNode { connective: Conj } => target_constructor_template_from_node_otherwise(source_carrier: source_carrier) + TypeNode { connective: Disj } => target_constructor_template_from_node_otherwise(source_carrier: source_carrier) + TypeNode { connective: Arrow } => target_constructor_template_from_node_otherwise(source_carrier: source_carrier) + TypeNode { connective: Cardinality } => target_constructor_template_from_node_otherwise(source_carrier: source_carrier) + TypeNode { connective: Instantiation } => target_constructor_template_from_node_otherwise(source_carrier: source_carrier) + ComputationNode { behavior: _ } => target_constructor_template_from_node_otherwise(source_carrier: source_carrier) } } +fn target_constructor_template_from_node_otherwise(source_carrier: Node) -> Outcome> { + outcome_rejected( + target_constructor_template_decode_invalid_diagnostic(source_carrier: source_carrier) + ) +} + fn target_model_bundle_core_keep_edge(acc: List, edge: Edge) -> List { match edge.label { Named { name: n } => @@ -9315,7 +9699,12 @@ fn target_model_bundle_core(host: TargetModel) -> Node { ), occurrence_id: OccurrenceSynthetic } - _ => host.bundle + TypeNode { connective: Atom { identity: _ } } => host.bundle + TypeNode { connective: Disj } => host.bundle + TypeNode { connective: Arrow } => host.bundle + TypeNode { connective: Cardinality } => host.bundle + TypeNode { connective: Instantiation } => host.bundle + ComputationNode { behavior: _ } => host.bundle } } @@ -9560,7 +9949,12 @@ fn target_atom_realization_conj_child(row_node: Node, edge_name: Symbol) -> Node } } ) - _ => row_node + TypeNode { connective: Atom { identity: _ } } => row_node + TypeNode { connective: Disj } => row_node + TypeNode { connective: Arrow } => row_node + TypeNode { connective: Cardinality } => row_node + TypeNode { connective: Instantiation } => row_node + ComputationNode { behavior: _ } => row_node } } @@ -9625,13 +10019,21 @@ fn target_value_template_from_node( target_value_template_decode_invalid_diagnostic(source_carrier: source_carrier) ) } - _ => - outcome_rejected( - target_value_template_decode_invalid_diagnostic(source_carrier: source_carrier) - ) + TypeNode { connective: Conj } => target_value_template_from_node_otherwise(source_carrier: source_carrier) + TypeNode { connective: Disj } => target_value_template_from_node_otherwise(source_carrier: source_carrier) + TypeNode { connective: Arrow } => target_value_template_from_node_otherwise(source_carrier: source_carrier) + TypeNode { connective: Cardinality } => target_value_template_from_node_otherwise(source_carrier: source_carrier) + TypeNode { connective: Instantiation } => target_value_template_from_node_otherwise(source_carrier: source_carrier) + ComputationNode { behavior: _ } => target_value_template_from_node_otherwise(source_carrier: source_carrier) } } +fn target_value_template_from_node_otherwise(source_carrier: Node) -> Outcome { + outcome_rejected( + target_value_template_decode_invalid_diagnostic(source_carrier: source_carrier) + ) +} + fn target_atom_realization_display_name_from_row( row_node: Node, source_carrier: Node @@ -9641,15 +10043,23 @@ fn target_atom_realization_display_name_from_row( edge_name: ^target_atom_realization_field_display_name ).kind { TypeNode { connective: Atom { identity: id } } => outcome_accepted(id) - _ => - outcome_rejected( - target_atom_realization_display_name_decode_invalid_diagnostic( - source_carrier: source_carrier - ) - ) + TypeNode { connective: Conj } => target_atom_realization_display_name_decode_invalid(source_carrier: source_carrier) + TypeNode { connective: Disj } => target_atom_realization_display_name_decode_invalid(source_carrier: source_carrier) + TypeNode { connective: Arrow } => target_atom_realization_display_name_decode_invalid(source_carrier: source_carrier) + TypeNode { connective: Cardinality } => target_atom_realization_display_name_decode_invalid(source_carrier: source_carrier) + TypeNode { connective: Instantiation } => target_atom_realization_display_name_decode_invalid(source_carrier: source_carrier) + ComputationNode { behavior: _ } => target_atom_realization_display_name_decode_invalid(source_carrier: source_carrier) } } +fn target_atom_realization_display_name_decode_invalid(source_carrier: Node) -> Outcome { + outcome_rejected( + target_atom_realization_display_name_decode_invalid_diagnostic( + source_carrier: source_carrier + ) + ) +} + fn target_atom_realization_lookup_in_catalog_node( catalog: Node, source_carrier: Node, @@ -9679,13 +10089,21 @@ fn target_atom_realization_lookup_in_catalog_node( ManyPassingCandidates => outcome_rejected(target_atom_realization_lookup_ambiguous_diagnostic(source_carrier: source_carrier)) } - _ => - outcome_rejected( - target_atom_realization_catalog_row_decode_invalid_diagnostic(source_carrier: source_carrier) - ) + TypeNode { connective: Atom { identity: _ } } => target_atom_realization_lookup_in_catalog_node_otherwise(source_carrier: source_carrier) + TypeNode { connective: Disj } => target_atom_realization_lookup_in_catalog_node_otherwise(source_carrier: source_carrier) + TypeNode { connective: Arrow } => target_atom_realization_lookup_in_catalog_node_otherwise(source_carrier: source_carrier) + TypeNode { connective: Cardinality } => target_atom_realization_lookup_in_catalog_node_otherwise(source_carrier: source_carrier) + TypeNode { connective: Instantiation } => target_atom_realization_lookup_in_catalog_node_otherwise(source_carrier: source_carrier) + ComputationNode { behavior: _ } => target_atom_realization_lookup_in_catalog_node_otherwise(source_carrier: source_carrier) } } +fn target_atom_realization_lookup_in_catalog_node_otherwise(source_carrier: Node) -> Outcome { + outcome_rejected( + target_atom_realization_catalog_row_decode_invalid_diagnostic(source_carrier: source_carrier) + ) +} + type FunctionBoundarySite = FunctionBoundaryParam | FunctionBoundaryReturn @@ -9772,13 +10190,21 @@ fn target_function_boundary_site_from_node( target_function_boundary_site_decode_invalid_diagnostic(source_carrier: source_carrier) ) } - _ => - outcome_rejected( - target_function_boundary_site_decode_invalid_diagnostic(source_carrier: source_carrier) - ) + TypeNode { connective: Conj } => target_function_boundary_site_from_node_otherwise(source_carrier: source_carrier) + TypeNode { connective: Disj } => target_function_boundary_site_from_node_otherwise(source_carrier: source_carrier) + TypeNode { connective: Arrow } => target_function_boundary_site_from_node_otherwise(source_carrier: source_carrier) + TypeNode { connective: Cardinality } => target_function_boundary_site_from_node_otherwise(source_carrier: source_carrier) + TypeNode { connective: Instantiation } => target_function_boundary_site_from_node_otherwise(source_carrier: source_carrier) + ComputationNode { behavior: _ } => target_function_boundary_site_from_node_otherwise(source_carrier: source_carrier) } } +fn target_function_boundary_site_from_node_otherwise(source_carrier: Node) -> Outcome { + outcome_rejected( + target_function_boundary_site_decode_invalid_diagnostic(source_carrier: source_carrier) + ) +} + fn target_function_signature_realization_to_node( row: TargetFunctionSignatureRealization ) -> Node { @@ -9967,13 +10393,21 @@ fn target_function_signature_realization_lookup_in_catalog_node( target_function_signature_realization_row_decode_invalid_diagnostic(source_carrier: source_carrier) ) } - _ => - outcome_rejected( - target_function_signature_realization_row_decode_invalid_diagnostic(source_carrier: source_carrier) - ) + TypeNode { connective: Atom { identity: _ } } => target_function_signature_realization_lookup_in_catalog_node_otherwise(source_carrier: source_carrier) + TypeNode { connective: Disj } => target_function_signature_realization_lookup_in_catalog_node_otherwise(source_carrier: source_carrier) + TypeNode { connective: Arrow } => target_function_signature_realization_lookup_in_catalog_node_otherwise(source_carrier: source_carrier) + TypeNode { connective: Cardinality } => target_function_signature_realization_lookup_in_catalog_node_otherwise(source_carrier: source_carrier) + TypeNode { connective: Instantiation } => target_function_signature_realization_lookup_in_catalog_node_otherwise(source_carrier: source_carrier) + ComputationNode { behavior: _ } => target_function_signature_realization_lookup_in_catalog_node_otherwise(source_carrier: source_carrier) } } +fn target_function_signature_realization_lookup_in_catalog_node_otherwise(source_carrier: Node) -> Outcome { + outcome_rejected( + target_function_signature_realization_row_decode_invalid_diagnostic(source_carrier: source_carrier) + ) +} + type TargetTypeExprKind = TargetTypeExprAtom | TargetTypeExprInstantiation @@ -10000,8 +10434,10 @@ fn target_type_expr_arrow_wire_shape(node: Node) -> Outcome outcome_accepted(TargetTypeExprArrowPositionalWire) - _ => - outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) + NamedMetadataFoldOk { kind_seen: true, surface_seen: true, extra_named: _ } => outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) + NamedMetadataFoldOk { kind_seen: true, surface_seen: false, extra_named: _ } => outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) + NamedMetadataFoldOk { kind_seen: false, surface_seen: _, extra_named: _ } => outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) + NamedMetadataFoldMalformed => outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) } } else { outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) @@ -10328,7 +10764,12 @@ fn target_type_expr_decode_kind_edge(edge: Edge) -> TargetTypeExprKindEdgeDecode Present { value: kind } => KindEdgeAuthority { value: kind } Absent => KindEdgeAuthorityMalformed } - _ => KindEdgeAuthorityMalformed + TypeNode { connective: Conj } => KindEdgeAuthorityMalformed + TypeNode { connective: Disj } => KindEdgeAuthorityMalformed + TypeNode { connective: Arrow } => KindEdgeAuthorityMalformed + TypeNode { connective: Cardinality } => KindEdgeAuthorityMalformed + TypeNode { connective: Instantiation } => KindEdgeAuthorityMalformed + ComputationNode { behavior: _ } => KindEdgeAuthorityMalformed } } else { KindEdgeNotKindField @@ -10363,7 +10804,12 @@ fn target_type_expr_emitted_kind(node: Node) -> TargetTypeExprKindProbe { TypeExprKindAuthority { value: kind } KindAuthorityFoldConflict => TypeExprKindAuthorityInvalid } - _ => TypeExprKindNotEmitted + TypeNode { connective: Atom { identity: _ } } => TypeExprKindNotEmitted + TypeNode { connective: Disj } => TypeExprKindNotEmitted + TypeNode { connective: Arrow } => TypeExprKindNotEmitted + TypeNode { connective: Cardinality } => TypeExprKindNotEmitted + TypeNode { connective: Instantiation } => TypeExprKindNotEmitted + ComputationNode { behavior: _ } => TypeExprKindNotEmitted } } @@ -10551,7 +10997,12 @@ fn target_type_expr_fold_named_metadata_edges(node: Node) -> TargetTypeExprNamed match e.target.kind { TypeNode { connective: Atom { identity: _ } } => NamedMetadataFoldOk { kind_seen: true, surface_seen: surface_seen, extra_named: extra_named } - _ => NamedMetadataFoldMalformed + TypeNode { connective: Conj } => NamedMetadataFoldMalformed + TypeNode { connective: Disj } => NamedMetadataFoldMalformed + TypeNode { connective: Arrow } => NamedMetadataFoldMalformed + TypeNode { connective: Cardinality } => NamedMetadataFoldMalformed + TypeNode { connective: Instantiation } => NamedMetadataFoldMalformed + ComputationNode { behavior: _ } => NamedMetadataFoldMalformed } } } else { @@ -10562,7 +11013,12 @@ fn target_type_expr_fold_named_metadata_edges(node: Node) -> TargetTypeExprNamed match e.target.kind { TypeNode { connective: Atom { identity: _ } } => NamedMetadataFoldOk { kind_seen: kind_seen, surface_seen: true, extra_named: extra_named } - _ => NamedMetadataFoldMalformed + TypeNode { connective: Conj } => NamedMetadataFoldMalformed + TypeNode { connective: Disj } => NamedMetadataFoldMalformed + TypeNode { connective: Arrow } => NamedMetadataFoldMalformed + TypeNode { connective: Cardinality } => NamedMetadataFoldMalformed + TypeNode { connective: Instantiation } => NamedMetadataFoldMalformed + ComputationNode { behavior: _ } => NamedMetadataFoldMalformed } } } else { @@ -10588,7 +11044,12 @@ fn target_type_expr_emitted_surface_identity(node: Node) -> Outcome { match child.kind { TypeNode { connective: Atom { identity: id } } => Accepted { value: id, diagnostics: d } - _ => outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) + TypeNode { connective: Conj } => outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) + TypeNode { connective: Disj } => outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) + TypeNode { connective: Arrow } => outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) + TypeNode { connective: Cardinality } => outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) + TypeNode { connective: Instantiation } => outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) + ComputationNode { behavior: _ } => outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) } Rejected { diagnostics: r } => Rejected { diagnostics: r } } @@ -10687,7 +11148,10 @@ fn target_type_expr_emitted_validate_positional_wire( } Rejected { diagnostics: r } => Rejected { diagnostics: r } } - _ => outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) + NamedMetadataFoldOk { kind_seen: true, surface_seen: true, extra_named: _ } => outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) + NamedMetadataFoldOk { kind_seen: true, surface_seen: false, extra_named: _ } => outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) + NamedMetadataFoldOk { kind_seen: false, surface_seen: _, extra_named: _ } => outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) + NamedMetadataFoldMalformed => outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) } } else { outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) @@ -10719,7 +11183,9 @@ fn target_type_expr_emitted_validate_labeled_wire( } Rejected { diagnostics: r } => Rejected { diagnostics: r } } - _ => outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) + NamedMetadataFoldOk { kind_seen: true, surface_seen: false, extra_named: _ } => outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) + NamedMetadataFoldOk { kind_seen: false, surface_seen: _, extra_named: _ } => outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) + NamedMetadataFoldMalformed => outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) } } else { outcome_rejected(target_type_expr_emitted_shape_malformed_diagnostic(node: node)) @@ -11887,7 +12353,12 @@ fn target_collection_repr_kind_from_atom(id: Symbol) -> Optional Outcome { match node.kind { TypeNode { connective: Atom { identity: id } } => outcome_accepted(id) - _ => outcome_rejected(target_collection_shape_malformed_diagnostic(node: node)) + TypeNode { connective: Conj } => outcome_rejected(target_collection_shape_malformed_diagnostic(node: node)) + TypeNode { connective: Disj } => outcome_rejected(target_collection_shape_malformed_diagnostic(node: node)) + TypeNode { connective: Arrow } => outcome_rejected(target_collection_shape_malformed_diagnostic(node: node)) + TypeNode { connective: Cardinality } => outcome_rejected(target_collection_shape_malformed_diagnostic(node: node)) + TypeNode { connective: Instantiation } => outcome_rejected(target_collection_shape_malformed_diagnostic(node: node)) + ComputationNode { behavior: _ } => outcome_rejected(target_collection_shape_malformed_diagnostic(node: node)) } } @@ -12088,7 +12559,12 @@ fn target_capability_unknown_diagnostic(elem: Node) -> Diagnostic { fn target_capability_element_kernel_identity(elem: Node) -> Optional { match elem.kind { TypeNode { connective: Atom { identity: id } } => optional_present(value: id) - _ => optional_absent() + TypeNode { connective: Conj } => optional_absent() + TypeNode { connective: Disj } => optional_absent() + TypeNode { connective: Arrow } => optional_absent() + TypeNode { connective: Cardinality } => optional_absent() + TypeNode { connective: Instantiation } => optional_absent() + ComputationNode { behavior: _ } => optional_absent() } } @@ -12229,11 +12705,21 @@ fn target_collection_type_node_is_set_carrier(node: Node) -> Bool { Present { value: head } => match head.kind { TypeNode { connective: Atom { identity: id } } => id == ^target_collection_set_carrier - _ => false + TypeNode { connective: Conj } => false + TypeNode { connective: Disj } => false + TypeNode { connective: Arrow } => false + TypeNode { connective: Cardinality } => false + TypeNode { connective: Instantiation } => false + ComputationNode { behavior: _ } => false } Absent => false } - _ => false + TypeNode { connective: Atom { identity: _ } } => false + TypeNode { connective: Conj } => false + TypeNode { connective: Disj } => false + TypeNode { connective: Arrow } => false + TypeNode { connective: Instantiation } => false + ComputationNode { behavior: _ } => false } } @@ -12253,11 +12739,21 @@ fn target_collection_type_node_is_free_monoid_carrier(node: Node) -> Bool { match head.kind { TypeNode { connective: Atom { identity: id } } => id == ^target_carrier_free_monoid - _ => false + TypeNode { connective: Conj } => false + TypeNode { connective: Disj } => false + TypeNode { connective: Arrow } => false + TypeNode { connective: Cardinality } => false + TypeNode { connective: Instantiation } => false + ComputationNode { behavior: _ } => false } Absent => false } - _ => false + TypeNode { connective: Atom { identity: _ } } => false + TypeNode { connective: Conj } => false + TypeNode { connective: Disj } => false + TypeNode { connective: Arrow } => false + TypeNode { connective: Cardinality } => false + ComputationNode { behavior: _ } => false } } @@ -12609,7 +13105,12 @@ fn target_use_site_ownership_source_key( Present { value: head } => optional_present(value: head) Absent => optional_absent() } - _ => optional_absent() + TypeNode { connective: Atom { identity: _ } } => optional_absent() + TypeNode { connective: Conj } => optional_absent() + TypeNode { connective: Disj } => optional_absent() + TypeNode { connective: Arrow } => optional_absent() + TypeNode { connective: Cardinality } => optional_absent() + ComputationNode { behavior: _ } => optional_absent() } } } @@ -12668,15 +13169,23 @@ fn target_use_site_ownership_lookup_in_catalog( fn target_model_node_atom_identity(node: Node, source_carrier: Node) -> Outcome { match node.kind { TypeNode { connective: Atom { identity: id } } => outcome_accepted(id) - _ => - outcome_rejected( - target_use_site_ownership_catalog_row_decode_invalid_diagnostic( - source_carrier: source_carrier - ) - ) + TypeNode { connective: Conj } => target_model_node_atom_identity_otherwise(source_carrier: source_carrier) + TypeNode { connective: Disj } => target_model_node_atom_identity_otherwise(source_carrier: source_carrier) + TypeNode { connective: Arrow } => target_model_node_atom_identity_otherwise(source_carrier: source_carrier) + TypeNode { connective: Cardinality } => target_model_node_atom_identity_otherwise(source_carrier: source_carrier) + TypeNode { connective: Instantiation } => target_model_node_atom_identity_otherwise(source_carrier: source_carrier) + ComputationNode { behavior: _ } => target_model_node_atom_identity_otherwise(source_carrier: source_carrier) } } +fn target_model_node_atom_identity_otherwise(source_carrier: Node) -> Outcome { + outcome_rejected( + target_use_site_ownership_catalog_row_decode_invalid_diagnostic( + source_carrier: source_carrier + ) + ) +} + fn target_use_site_ownership_row_from_node( row_node: Node, display_name: Symbol, @@ -12873,15 +13382,23 @@ fn target_use_site_ownership_reference_catalog_lookup( ) ) } - _ => - outcome_rejected( - target_use_site_ownership_catalog_row_decode_invalid_diagnostic( - source_carrier: source_carrier - ) - ) + TypeNode { connective: Atom { identity: _ } } => target_use_site_ownership_reference_catalog_lookup_otherwise(source_carrier: source_carrier) + TypeNode { connective: Disj } => target_use_site_ownership_reference_catalog_lookup_otherwise(source_carrier: source_carrier) + TypeNode { connective: Arrow } => target_use_site_ownership_reference_catalog_lookup_otherwise(source_carrier: source_carrier) + TypeNode { connective: Cardinality } => target_use_site_ownership_reference_catalog_lookup_otherwise(source_carrier: source_carrier) + TypeNode { connective: Instantiation } => target_use_site_ownership_reference_catalog_lookup_otherwise(source_carrier: source_carrier) + ComputationNode { behavior: _ } => target_use_site_ownership_reference_catalog_lookup_otherwise(source_carrier: source_carrier) } } +fn target_use_site_ownership_reference_catalog_lookup_otherwise(source_carrier: Node) -> Outcome { + outcome_rejected( + target_use_site_ownership_catalog_row_decode_invalid_diagnostic( + source_carrier: source_carrier + ) + ) +} + fn target_use_site_ownership_lookup_in_catalog_node( catalog: Node, value_semantics_carriers: List, @@ -12900,15 +13417,23 @@ fn target_use_site_ownership_lookup_in_catalog_node( use_site: use_site ) } - _ => - target_use_site_ownership_reference_catalog_lookup( - catalog: catalog, - source_carrier: source_carrier, - use_site: use_site - ) + TypeNode { connective: Conj } => target_use_site_ownership_lookup_in_catalog_node_otherwise(catalog: catalog, source_carrier: source_carrier, use_site: use_site) + TypeNode { connective: Disj } => target_use_site_ownership_lookup_in_catalog_node_otherwise(catalog: catalog, source_carrier: source_carrier, use_site: use_site) + TypeNode { connective: Arrow } => target_use_site_ownership_lookup_in_catalog_node_otherwise(catalog: catalog, source_carrier: source_carrier, use_site: use_site) + TypeNode { connective: Cardinality } => target_use_site_ownership_lookup_in_catalog_node_otherwise(catalog: catalog, source_carrier: source_carrier, use_site: use_site) + TypeNode { connective: Instantiation } => target_use_site_ownership_lookup_in_catalog_node_otherwise(catalog: catalog, source_carrier: source_carrier, use_site: use_site) + ComputationNode { behavior: _ } => target_use_site_ownership_lookup_in_catalog_node_otherwise(catalog: catalog, source_carrier: source_carrier, use_site: use_site) } } +fn target_use_site_ownership_lookup_in_catalog_node_otherwise(catalog: Node, source_carrier: Node, use_site: TargetOwnershipUseSite) -> Outcome { + target_use_site_ownership_reference_catalog_lookup( + catalog: catalog, + source_carrier: source_carrier, + use_site: use_site + ) +} + fn wrap_decision_from_carrier_ownership( ownership: TargetCarrierOwnership ) -> WrapDecision { @@ -13045,7 +13570,12 @@ fn target_use_site_ownership_catalog_append_derived_rows( ), occurrence_id: OccurrenceSynthetic } - _ => catalog + TypeNode { connective: Atom { identity: _ } } => catalog + TypeNode { connective: Disj } => catalog + TypeNode { connective: Arrow } => catalog + TypeNode { connective: Cardinality } => catalog + TypeNode { connective: Instantiation } => catalog + ComputationNode { behavior: _ } => catalog } } @@ -13078,7 +13608,12 @@ fn target_model_bundle_replace_edge_target( ), occurrence_id: OccurrenceSynthetic } - _ => bundle + TypeNode { connective: Atom { identity: _ } } => bundle + TypeNode { connective: Disj } => bundle + TypeNode { connective: Arrow } => bundle + TypeNode { connective: Cardinality } => bundle + TypeNode { connective: Instantiation } => bundle + ComputationNode { behavior: _ } => bundle } } @@ -13196,7 +13731,12 @@ fn target_model_augment_use_site_ownership_catalog( } ) } - _ => outcome_accepted(target) + TypeNode { connective: Atom { identity: _ } } => outcome_accepted(target) + TypeNode { connective: Disj } => outcome_accepted(target) + TypeNode { connective: Arrow } => outcome_accepted(target) + TypeNode { connective: Cardinality } => outcome_accepted(target) + TypeNode { connective: Instantiation } => outcome_accepted(target) + ComputationNode { behavior: _ } => outcome_accepted(target) } } } @@ -13248,7 +13788,12 @@ fn target_model_augment_value_semantics_carriers( } ) } - _ => outcome_accepted(target) + TypeNode { connective: Atom { identity: _ } } => outcome_accepted(target) + TypeNode { connective: Disj } => outcome_accepted(target) + TypeNode { connective: Arrow } => outcome_accepted(target) + TypeNode { connective: Cardinality } => outcome_accepted(target) + TypeNode { connective: Instantiation } => outcome_accepted(target) + ComputationNode { behavior: _ } => outcome_accepted(target) } } } @@ -13279,7 +13824,7 @@ fn target_value_semantics_carriers_node(atoms: List) -> Node { fn target_value_semantics_carrier_snoc(acc: List, edge: Edge) -> List { match edge.label { Named { name: n } => list_snoc_item(xs: acc, item: n) - _ => acc + Positional => acc } } @@ -13291,7 +13836,12 @@ fn target_value_semantics_carriers_from_node(node: Node) -> List { empty: Empty, cons: fn(acc, edge) { target_value_semantics_carrier_snoc(acc: acc, edge: edge) } ) - _ => Empty + TypeNode { connective: Atom { identity: _ } } => Empty + TypeNode { connective: Disj } => Empty + TypeNode { connective: Arrow } => Empty + TypeNode { connective: Cardinality } => Empty + TypeNode { connective: Instantiation } => Empty + ComputationNode { behavior: _ } => Empty } } @@ -13358,13 +13908,21 @@ fn target_reference_layer_tokens_from_node(node: Node) -> Outcome - outcome_rejected( - target_reference_layer_tokens_decode_invalid_diagnostic(source_carrier: node) - ) + TypeNode { connective: Atom { identity: _ } } => target_reference_layer_tokens_from_node_otherwise(node: node) + TypeNode { connective: Disj } => target_reference_layer_tokens_from_node_otherwise(node: node) + TypeNode { connective: Arrow } => target_reference_layer_tokens_from_node_otherwise(node: node) + TypeNode { connective: Cardinality } => target_reference_layer_tokens_from_node_otherwise(node: node) + TypeNode { connective: Instantiation } => target_reference_layer_tokens_from_node_otherwise(node: node) + ComputationNode { behavior: _ } => target_reference_layer_tokens_from_node_otherwise(node: node) } } +fn target_reference_layer_tokens_from_node_otherwise(node: Node) -> Outcome { + outcome_rejected( + target_reference_layer_tokens_decode_invalid_diagnostic(source_carrier: node) + ) +} + fn target_reference_layer_tokens_node(tokens: TargetReferenceLayerTokens) -> Node { Node { kind: TypeNode { connective: Conj }, @@ -13527,7 +14085,11 @@ fn target_reference_layer_probe_from_emitted_type( } Absent => ReferenceLayerProbeInvalid } - _ => ReferenceLayerProbeNotWrapped + TargetTypeExprAtom => ReferenceLayerProbeNotWrapped + TargetTypeExprCardinality => ReferenceLayerProbeNotWrapped + TargetTypeExprRecord => ReferenceLayerProbeNotWrapped + TargetTypeExprSum => ReferenceLayerProbeNotWrapped + TargetTypeExprArrow => ReferenceLayerProbeNotWrapped } Rejected { diagnostics: _ } => ReferenceLayerProbeInvalid } @@ -13935,16 +14497,24 @@ fn target_value_expr_diagnostic(reason: Symbol, node: Node) -> Diagnostic { fn target_transform_positional_operand_binding_atom(child: Node) -> Outcome { match child.kind { TypeNode { connective: Atom { identity: id } } => outcome_accepted(id) - _ => - outcome_rejected( - target_value_expr_diagnostic( - reason: ^target_value_expr_reason_transform_shape_invalid, - node: child - ) - ) + TypeNode { connective: Conj } => target_transform_positional_operand_binding_atom_otherwise(child: child) + TypeNode { connective: Disj } => target_transform_positional_operand_binding_atom_otherwise(child: child) + TypeNode { connective: Arrow } => target_transform_positional_operand_binding_atom_otherwise(child: child) + TypeNode { connective: Cardinality } => target_transform_positional_operand_binding_atom_otherwise(child: child) + TypeNode { connective: Instantiation } => target_transform_positional_operand_binding_atom_otherwise(child: child) + ComputationNode { behavior: _ } => target_transform_positional_operand_binding_atom_otherwise(child: child) } } +fn target_transform_positional_operand_binding_atom_otherwise(child: Node) -> Outcome { + outcome_rejected( + target_value_expr_diagnostic( + reason: ^target_value_expr_reason_transform_shape_invalid, + node: child + ) + ) +} + fn target_transform_positional_operand_binding(node: Node, index: Int) -> Outcome { match list_at_optional(xs: node_positional_child_targets(node: node), index: index) { Present { value: child } => target_transform_positional_operand_binding_atom(child: child) @@ -13980,7 +14550,12 @@ fn target_value_expr_arrow_has_transform_body(arrow: Node) -> Bool { Accepted { value: body, diagnostics: _ } => match body.kind { ComputationNode { behavior: Transform } => true - _ => false + TypeNode { connective: _ } => false + ComputationNode { behavior: Value } => false + ComputationNode { behavior: Branch } => false + ComputationNode { behavior: Loop } => false + ComputationNode { behavior: Bind } => false + ComputationNode { behavior: Match } => false } Rejected { diagnostics: _ } => false } @@ -13992,7 +14567,12 @@ fn target_value_expr_arrow_has_branch_body(arrow: Node) -> Bool { match body.kind { ComputationNode { behavior: Branch } => length(xs: node_positional_child_targets(node: body)) == 3 - _ => false + TypeNode { connective: _ } => false + ComputationNode { behavior: Value } => false + ComputationNode { behavior: Transform } => false + ComputationNode { behavior: Loop } => false + ComputationNode { behavior: Bind } => false + ComputationNode { behavior: Match } => false } Rejected { diagnostics: _ } => false } @@ -14276,17 +14856,25 @@ fn target_project_callable_arg_in_arrow_scope( outcome_accepted(target_value_expression_binding_ref(binding: scoped)) } ) - _ => - target_value_expr_project_body_subexpression( - arrow: arrow, - node: arg, - target: target, - source_bool_form: source_bool_form, - handle_transform: handle_transform - ) + TypeNode { connective: Conj } => target_project_callable_arg_in_arrow_scope_otherwise(arrow: arrow, arg: arg, target: target, source_bool_form: source_bool_form, handle_transform: handle_transform) + TypeNode { connective: Disj } => target_project_callable_arg_in_arrow_scope_otherwise(arrow: arrow, arg: arg, target: target, source_bool_form: source_bool_form, handle_transform: handle_transform) + TypeNode { connective: Arrow } => target_project_callable_arg_in_arrow_scope_otherwise(arrow: arrow, arg: arg, target: target, source_bool_form: source_bool_form, handle_transform: handle_transform) + TypeNode { connective: Cardinality } => target_project_callable_arg_in_arrow_scope_otherwise(arrow: arrow, arg: arg, target: target, source_bool_form: source_bool_form, handle_transform: handle_transform) + TypeNode { connective: Instantiation } => target_project_callable_arg_in_arrow_scope_otherwise(arrow: arrow, arg: arg, target: target, source_bool_form: source_bool_form, handle_transform: handle_transform) + ComputationNode { behavior: _ } => target_project_callable_arg_in_arrow_scope_otherwise(arrow: arrow, arg: arg, target: target, source_bool_form: source_bool_form, handle_transform: handle_transform) } } +fn target_project_callable_arg_in_arrow_scope_otherwise(arrow: Node, arg: Node, target: TargetModel, source_bool_form: TargetBoolLiteralShape, handle_transform: fn(Node, Node, TargetModel) -> Outcome) -> Outcome { + target_value_expr_project_body_subexpression( + arrow: arrow, + node: arg, + target: target, + source_bool_form: source_bool_form, + handle_transform: handle_transform + ) +} + // A NAMED ACTUAL HAS NO SLOT THIS PROJECTION CAN NAME. It binds by name against the callee's declared // parameters (v2.std.arrow_signature application_binding_plan), and this projection receives // the callee as a bare atom with no declaration context, so it cannot recover the declared order a @@ -14381,7 +14969,12 @@ data target_value_expr_int_literal_predicate_dissolve_on: DissolutionCondition = fn target_value_expr_is_int_literal_atom(node: Node) -> Bool { match node.kind { TypeNode { connective: Atom { identity: id } } => id == ^dag_token_int_literal - _ => false + TypeNode { connective: Conj } => false + TypeNode { connective: Disj } => false + TypeNode { connective: Arrow } => false + TypeNode { connective: Cardinality } => false + TypeNode { connective: Instantiation } => false + ComputationNode { behavior: _ } => false } } @@ -14527,18 +15120,26 @@ fn target_value_expr_project_atom_in_arrow_scope( } ) } - _ => - outcome_rejected( - target_value_expr_diagnostic( - reason: ^target_value_expr_reason_transform_shape_invalid, - node: node - ) - ) + TypeNode { connective: Conj } => target_value_expr_transform_shape_invalid(node: node) + TypeNode { connective: Disj } => target_value_expr_transform_shape_invalid(node: node) + TypeNode { connective: Arrow } => target_value_expr_transform_shape_invalid(node: node) + TypeNode { connective: Cardinality } => target_value_expr_transform_shape_invalid(node: node) + TypeNode { connective: Instantiation } => target_value_expr_transform_shape_invalid(node: node) + ComputationNode { behavior: _ } => target_value_expr_transform_shape_invalid(node: node) } } ) } +fn target_value_expr_transform_shape_invalid(node: Node) -> Outcome { + outcome_rejected( + target_value_expr_diagnostic( + reason: ^target_value_expr_reason_transform_shape_invalid, + node: node + ) + ) +} + fn target_value_expr_project_atom_literal_or( node: Node, source_bool_form: TargetBoolLiteralShape, @@ -14571,13 +15172,12 @@ fn target_value_expr_project_atom_literal_or( ) } } - _ => - outcome_rejected( - target_value_expr_diagnostic( - reason: ^target_value_expr_reason_transform_shape_invalid, - node: node - ) - ) + TypeNode { connective: Conj } => target_value_expr_transform_shape_invalid(node: node) + TypeNode { connective: Disj } => target_value_expr_transform_shape_invalid(node: node) + TypeNode { connective: Arrow } => target_value_expr_transform_shape_invalid(node: node) + TypeNode { connective: Cardinality } => target_value_expr_transform_shape_invalid(node: node) + TypeNode { connective: Instantiation } => target_value_expr_transform_shape_invalid(node: node) + ComputationNode { behavior: _ } => target_value_expr_transform_shape_invalid(node: node) } } @@ -14724,12 +15324,22 @@ fn target_value_expr_field_access_gate(node: Node) -> Bool { match callee.kind { TypeNode { connective: Atom { identity: id } } => id == ^dag_token_dot - _ => false + TypeNode { connective: Conj } => false + TypeNode { connective: Disj } => false + TypeNode { connective: Arrow } => false + TypeNode { connective: Cardinality } => false + TypeNode { connective: Instantiation } => false + ComputationNode { behavior: _ } => false } Absent => false } } - _ => false + TypeNode { connective: _ } => false + ComputationNode { behavior: Value } => false + ComputationNode { behavior: Branch } => false + ComputationNode { behavior: Loop } => false + ComputationNode { behavior: Bind } => false + ComputationNode { behavior: Match } => false } } @@ -14783,13 +15393,12 @@ fn target_project_field_access( field_name: field_name ) ) - _ => - outcome_rejected( - target_value_expr_diagnostic( - reason: ^target_value_expr_reason_transform_shape_invalid, - node: body - ) - ) + TypeNode { connective: Conj } => target_value_expr_transform_shape_invalid(node: body) + TypeNode { connective: Disj } => target_value_expr_transform_shape_invalid(node: body) + TypeNode { connective: Arrow } => target_value_expr_transform_shape_invalid(node: body) + TypeNode { connective: Cardinality } => target_value_expr_transform_shape_invalid(node: body) + TypeNode { connective: Instantiation } => target_value_expr_transform_shape_invalid(node: body) + ComputationNode { behavior: _ } => target_value_expr_transform_shape_invalid(node: body) } } ) @@ -14806,7 +15415,12 @@ fn target_value_expr_match_gate(node: Node) -> Bool { children: node.children, skipped_scrutinee: false ) - _ => false + TypeNode { connective: _ } => false + ComputationNode { behavior: Value } => false + ComputationNode { behavior: Transform } => false + ComputationNode { behavior: Branch } => false + ComputationNode { behavior: Loop } => false + ComputationNode { behavior: Bind } => false } } @@ -15044,7 +15658,12 @@ fn target_value_expr_bind_let_gate(node: Node) -> Bool { match node.kind { ComputationNode { behavior: Bind } => length(xs: node_positional_child_targets(node: node)) == 3 - _ => false + TypeNode { connective: _ } => false + ComputationNode { behavior: Value } => false + ComputationNode { behavior: Transform } => false + ComputationNode { behavior: Branch } => false + ComputationNode { behavior: Loop } => false + ComputationNode { behavior: Match } => false } } @@ -15066,7 +15685,12 @@ fn target_value_expr_loop_gate(node: Node) -> Bool { LoopEdgeUnrecognized => false } }) - _ => false + TypeNode { connective: _ } => false + ComputationNode { behavior: Value } => false + ComputationNode { behavior: Transform } => false + ComputationNode { behavior: Branch } => false + ComputationNode { behavior: Bind } => false + ComputationNode { behavior: Match } => false } } @@ -15344,13 +15968,10 @@ fn target_value_expr_project_body_subexpression( target: target, source_bool_form: source_bool_form ) - _ => - outcome_rejected( - target_value_expr_diagnostic( - reason: ^target_value_expr_reason_transform_shape_invalid, - node: node - ) - ) + TypeNode { connective: Disj } => target_value_expr_transform_shape_invalid(node: node) + TypeNode { connective: Cardinality } => target_value_expr_transform_shape_invalid(node: node) + TypeNode { connective: Instantiation } => target_value_expr_transform_shape_invalid(node: node) + ComputationNode { behavior: Value } => target_value_expr_transform_shape_invalid(node: node) } } @@ -15492,29 +16113,11 @@ fn target_project_realized_closure( source_bool_form: source_bool_form, handle_transform: handle_transform ) - _ => - match body.kind { - TypeNode { connective: Atom { identity: id } } => - if symbol_list_contains(xs: scope, wanted: id) { - outcome_accepted(target_value_expression_binding_ref(binding: id)) - } else { - target_value_expr_project_body_subexpression( - arrow: closure, - node: body, - target: target, - source_bool_form: source_bool_form, - handle_transform: handle_transform - ) - } - _ => - target_value_expr_project_body_subexpression( - arrow: closure, - node: body, - target: target, - source_bool_form: source_bool_form, - handle_transform: handle_transform - ) - } + DirectAtomBody => target_project_realized_closure_body(closure: closure, body: body, scope: scope, target: target, source_bool_form: source_bool_form, handle_transform: handle_transform) + RecordConstructBody => target_project_realized_closure_body(closure: closure, body: body, scope: scope, target: target, source_bool_form: source_bool_form, handle_transform: handle_transform) + DeclarationReferenceBody => target_project_realized_closure_body(closure: closure, body: body, scope: scope, target: target, source_bool_form: source_bool_form, handle_transform: handle_transform) + ComputationBody { behavior: _ } => target_project_realized_closure_body(closure: closure, body: body, scope: scope, target: target, source_bool_form: source_bool_form, handle_transform: handle_transform) + UnsupportedArrowBody => target_project_realized_closure_body(closure: closure, body: body, scope: scope, target: target, source_bool_form: source_bool_form, handle_transform: handle_transform) }, f: fn(body_expr) { outcome_accepted( @@ -15534,6 +16137,52 @@ fn target_project_realized_closure( } } +fn target_project_realized_closure_body( + closure: Node, + body: Node, + scope: List, + target: TargetModel, + source_bool_form: TargetBoolLiteralShape, + handle_transform: fn(Node, Node, TargetModel) -> Outcome +) -> Outcome { + match body.kind { + TypeNode { connective: Atom { identity: id } } => + if symbol_list_contains(xs: scope, wanted: id) { + outcome_accepted(target_value_expression_binding_ref(binding: id)) + } else { + target_value_expr_project_body_subexpression( + arrow: closure, + node: body, + target: target, + source_bool_form: source_bool_form, + handle_transform: handle_transform + ) + } + TypeNode { connective: Conj } => target_project_realized_closure_subexpression(closure: closure, body: body, target: target, source_bool_form: source_bool_form, handle_transform: handle_transform) + TypeNode { connective: Disj } => target_project_realized_closure_subexpression(closure: closure, body: body, target: target, source_bool_form: source_bool_form, handle_transform: handle_transform) + TypeNode { connective: Arrow } => target_project_realized_closure_subexpression(closure: closure, body: body, target: target, source_bool_form: source_bool_form, handle_transform: handle_transform) + TypeNode { connective: Cardinality } => target_project_realized_closure_subexpression(closure: closure, body: body, target: target, source_bool_form: source_bool_form, handle_transform: handle_transform) + TypeNode { connective: Instantiation } => target_project_realized_closure_subexpression(closure: closure, body: body, target: target, source_bool_form: source_bool_form, handle_transform: handle_transform) + ComputationNode { behavior: _ } => target_project_realized_closure_subexpression(closure: closure, body: body, target: target, source_bool_form: source_bool_form, handle_transform: handle_transform) + } +} + +fn target_project_realized_closure_subexpression( + closure: Node, + body: Node, + target: TargetModel, + source_bool_form: TargetBoolLiteralShape, + handle_transform: fn(Node, Node, TargetModel) -> Outcome +) -> Outcome { + target_value_expr_project_body_subexpression( + arrow: closure, + node: body, + target: target, + source_bool_form: source_bool_form, + handle_transform: handle_transform + ) +} + fn target_value_expression_projection_from_target( target: TargetModel ) -> Outcome { @@ -15681,14 +16330,21 @@ fn target_project_arrow_body_by_kind( target: target, source_bool_form: source_bool_form ) - _ => - outcome_rejected( - target_value_expr_diagnostic( - reason: ^target_value_expr_reason_arrow_body_form_unsupported, - node: body - ) - ) + TypeNode { connective: Disj } => target_project_arrow_body_by_kind_otherwise(body: body) + TypeNode { connective: Arrow } => target_project_arrow_body_by_kind_otherwise(body: body) + TypeNode { connective: Cardinality } => target_project_arrow_body_by_kind_otherwise(body: body) + TypeNode { connective: Instantiation } => target_project_arrow_body_by_kind_otherwise(body: body) + ComputationNode { behavior: Value } => target_project_arrow_body_by_kind_otherwise(body: body) } } +fn target_project_arrow_body_by_kind_otherwise(body: Node) -> Outcome { + outcome_rejected( + target_value_expr_diagnostic( + reason: ^target_value_expr_reason_arrow_body_form_unsupported, + node: body + ) + ) +} + data target_value_expr_int_bool_octet_channel_dissolve_on: DissolutionCondition = unbound_dissolution(description: "the modeled octet-to-bool codec authority is inhabited over the \{0,1} domain (NOT general nonzero), at which point this inline `x != 0` scrutinee staging bridge at the match seam grounds on it and deletes")