diff --git a/src/v1/stage0/src/v1_compiler_dag_collect_support.rs b/src/v1/stage0/src/v1_compiler_dag_collect_support.rs index 2a2acb5c25b..51a2f47316a 100644 --- a/src/v1/stage0/src/v1_compiler_dag_collect_support.rs +++ b/src/v1/stage0/src/v1_compiler_dag_collect_support.rs @@ -197,10 +197,10 @@ mod fingerprint_tests { params: Rc::new(params), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, diff --git a/src/v1/stage0/src/v1_compiler_emit_rust.rs b/src/v1/stage0/src/v1_compiler_emit_rust.rs index d560df32e11..7e8f695063e 100644 --- a/src/v1/stage0/src/v1_compiler_emit_rust.rs +++ b/src/v1/stage0/src/v1_compiler_emit_rust.rs @@ -1474,15 +1474,15 @@ pub fn type_variable_node(id: String) -> Rc { name: "".to_string(), span: make_span(0, 0), ident_span: None, - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::TypeVariable { id: id })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, diff --git a/src/v1/stage0/src/v1_compiler_infer.rs b/src/v1/stage0/src/v1_compiler_infer.rs index 99903a0eaeb..ca48e11ebdb 100644 --- a/src/v1/stage0/src/v1_compiler_infer.rs +++ b/src/v1/stage0/src/v1_compiler_infer.rs @@ -716,17 +716,17 @@ pub fn nominal_ref_node( name: name.clone(), span: span, ident_span: ident_span, - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: nominal_leaf_type(name.clone()), })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -1770,15 +1770,15 @@ pub fn type_variable_node(id: String) -> Rc { name: "".to_string(), span: make_span(0, 0), ident_span: None, - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::TypeVariable { id: id })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -2444,15 +2444,15 @@ pub fn infer_method_args_with_fold( name: "".to_string(), span: no_span(), ident_span: None, - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, params: fold_params.clone(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -5742,15 +5742,15 @@ pub fn infer_record_lit( ), span: fir.typed_field.clone().span.clone(), ident_span: fir.typed_field.clone().ident_span.clone(), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: fir.infer_result.clone().typed.clone().inferred.clone(), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -5767,13 +5767,13 @@ pub fn infer_record_lit( ident_span: None, children: child_nodes, connective: Connective::Conj, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -8428,7 +8428,7 @@ make_arm_node(arm_pattern(arm_node.clone()), arm_guard(arm_node.clone()), annota let threaded = body.children.clone().iter().cloned().fold( Rc::new(BlockAnnotateAcc { ctx: ctx.clone(), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), }), |acc: Rc, child: Rc| { let annotated = annotate_descent(child.clone(), acc.ctx.clone()); @@ -10912,11 +10912,11 @@ pub fn infer_item(item: Rc, scope: Rc) -> Rc name: item.name.clone(), span: item.span.clone(), ident_span: item.ident_span.clone(), - children: Rc::new(vec![]), - params: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), + params: crate::v1_std_core::empty_node_list(), inferred: item.inferred.clone(), return_cardinality: item.return_cardinality.clone(), - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: Some(body_typed.clone()), connective: Connective::NoConnective, transport: typed_transport, @@ -10961,11 +10961,11 @@ pub fn infer_item(item: Rc, scope: Rc) -> Rc name: item.name.clone(), span: item.span.clone(), ident_span: item.ident_span.clone(), - children: Rc::new(vec![]), - params: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), + params: crate::v1_std_core::empty_node_list(), inferred: inferred_ret, return_cardinality: item.return_cardinality.clone(), - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: Some(val_typed.clone()), connective: Connective::NoConnective, transport: typed_transport, @@ -11586,15 +11586,15 @@ pub fn build_type_env( name: name.clone(), span: kernel_span(name.clone()), ident_span: Some(kernel_span(name.clone())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -11617,15 +11617,15 @@ pub fn build_type_env( name: "Unit".to_string(), span: unit_span.clone(), ident_span: Some(unit_span.clone()), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::Conj, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -11640,17 +11640,17 @@ pub fn build_type_env( name: "value".to_string(), span: kernel_span("value".to_string()), ident_span: Some(kernel_span("value".to_string())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::TypeVariable { id: "present_value".to_string(), })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -11664,13 +11664,13 @@ pub fn build_type_env( ident_span: Some(kernel_span("Present".to_string())), children: Rc::new(vec![present_value_field]), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -11682,15 +11682,15 @@ pub fn build_type_env( name: "Absent".to_string(), span: kernel_span("Absent".to_string()), ident_span: Some(kernel_span("Absent".to_string())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -11704,13 +11704,13 @@ pub fn build_type_env( ident_span: Some(kernel_span("Optional".to_string())), children: Rc::new(vec![present_variant, absent_variant]), connective: Connective::Disj, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -11904,7 +11904,7 @@ pub fn build_type_env( params: item.params.clone(), inferred: None, return_cardinality: item.return_cardinality.clone(), - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, properties: item.properties.clone(), @@ -11935,15 +11935,15 @@ pub fn build_type_env( name: item.name.clone(), span: item.span.clone(), ident_span: item.ident_span.clone(), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: item.inferred.clone(), return_cardinality: item.return_cardinality.clone(), - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -11995,15 +11995,15 @@ pub fn build_type_env( name: item.name.clone(), span: item.span.clone(), ident_span: item.ident_span.clone(), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, params: item.params.clone(), inferred: item.inferred.clone(), return_cardinality: item.return_cardinality.clone(), - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -12235,15 +12235,15 @@ pub fn build_type_env_unresolved( name: name.clone(), span: kernel_span(name.clone()), ident_span: Some(kernel_span(name.clone())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -12260,17 +12260,17 @@ pub fn build_type_env_unresolved( name: "value".to_string(), span: kernel_span("value".to_string()), ident_span: Some(kernel_span("value".to_string())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::TypeVariable { id: "present_value".to_string(), })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -12284,13 +12284,13 @@ pub fn build_type_env_unresolved( ident_span: Some(kernel_span("Present".to_string())), children: Rc::new(vec![present_value_field]), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -12302,15 +12302,15 @@ pub fn build_type_env_unresolved( name: "Absent".to_string(), span: kernel_span("Absent".to_string()), ident_span: Some(kernel_span("Absent".to_string())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -12324,13 +12324,13 @@ pub fn build_type_env_unresolved( ident_span: Some(kernel_span("Optional".to_string())), children: Rc::new(vec![present_variant, absent_variant]), connective: Connective::Disj, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -12464,13 +12464,13 @@ pub fn build_type_env_unresolved( ident_span: item.ident_span.clone(), children: item.children.clone(), connective: item.connective.clone(), - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: item.return_cardinality.clone(), - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -12498,15 +12498,15 @@ pub fn build_type_env_unresolved( name: item.name.clone(), span: item.span.clone(), ident_span: item.ident_span.clone(), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: item.inferred.clone(), return_cardinality: item.return_cardinality.clone(), - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, diff --git a/src/v1/stage0/src/v1_compiler_infer_method.rs b/src/v1/stage0/src/v1_compiler_infer_method.rs index da0bfff7177..4bcd0445ff6 100644 --- a/src/v1/stage0/src/v1_compiler_infer_method.rs +++ b/src/v1/stage0/src/v1_compiler_infer_method.rs @@ -22,15 +22,15 @@ pub fn type_variable_node(id: String) -> Rc { name: "".to_string(), span: make_span(0, 0), ident_span: None, - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::TypeVariable { id: id })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, diff --git a/src/v1/stage0/src/v1_compiler_infer_patterns.rs b/src/v1/stage0/src/v1_compiler_infer_patterns.rs index 1ce3bf9b9cf..4207eedc0ec 100644 --- a/src/v1/stage0/src/v1_compiler_infer_patterns.rs +++ b/src/v1/stage0/src/v1_compiler_infer_patterns.rs @@ -79,15 +79,15 @@ pub fn synthesize_optional_present_variant(scrut: Rc) -> Rc { name: "value".to_string(), span: scrut.span.clone(), ident_span: Some(kernel_span("value".to_string())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: inner })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -101,13 +101,13 @@ pub fn synthesize_optional_present_variant(scrut: Rc) -> Rc { ident_span: Some(kernel_span("Present".to_string())), children: Rc::new(vec![value_field]), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -129,15 +129,15 @@ pub fn synthesize_witness_holds_variant(scrut: Rc) -> Rc { name: "value".to_string(), span: scrut.span.clone(), ident_span: Some(kernel_span("value".to_string())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: inner })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -151,13 +151,13 @@ pub fn synthesize_witness_holds_variant(scrut: Rc) -> Rc { ident_span: Some(kernel_span("Holds".to_string())), children: Rc::new(vec![value_field]), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -174,15 +174,15 @@ pub fn synthesize_witness_violates_variant(scrut: Rc) -> Rc { name: "Diagnostic".to_string(), span: scrut.span.clone(), ident_span: Some(kernel_span("Diagnostic".to_string())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -194,17 +194,17 @@ pub fn synthesize_witness_violates_variant(scrut: Rc) -> Rc { name: "diagnostic".to_string(), span: scrut.span.clone(), ident_span: Some(kernel_span("diagnostic".to_string())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: diagnostic_type, })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -218,13 +218,13 @@ pub fn synthesize_witness_violates_variant(scrut: Rc) -> Rc { ident_span: Some(kernel_span("Violates".to_string())), children: Rc::new(vec![diagnostic_field]), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, diff --git a/src/v1/stage0/src/v1_compiler_infer_resolve.rs b/src/v1/stage0/src/v1_compiler_infer_resolve.rs index 64463fc226b..99b5b9d9d96 100644 --- a/src/v1/stage0/src/v1_compiler_infer_resolve.rs +++ b/src/v1/stage0/src/v1_compiler_infer_resolve.rs @@ -1129,7 +1129,7 @@ pub fn resolve_node_bounded( ident_span: n.ident_span.clone(), children: target_result.resolved.clone().children.clone(), connective: target_result.resolved.clone().connective.clone(), - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: target_result.resolved.clone().inferred.clone(), return_cardinality: n.return_cardinality.clone(), uses: n.uses.clone(), @@ -1149,7 +1149,7 @@ pub fn resolve_node_bounded( ident_span: n.ident_span.clone(), children: resolved_args.clone(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: expanded_node, })), @@ -1195,7 +1195,7 @@ pub fn resolve_node_bounded( ident_span: n.ident_span.clone(), children: substituted_children, connective: decl.connective.clone(), - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: n.inferred.clone(), return_cardinality: n.return_cardinality.clone(), uses: n.uses.clone(), @@ -1216,7 +1216,7 @@ pub fn resolve_node_bounded( ident_span: n.ident_span.clone(), children: resolved_args.clone(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: expanded_node, })), @@ -1290,17 +1290,17 @@ pub fn resolve_node_bounded( name: key_param_name, span: key_child_node.span.clone(), ident_span: key_child_node.ident_span.clone(), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: key_resolved, })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -1312,17 +1312,17 @@ pub fn resolve_node_bounded( name: val_param_name, span: val_child_node.span.clone(), ident_span: val_child_node.ident_span.clone(), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: val_resolved, })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -1384,17 +1384,17 @@ pub fn resolve_node_bounded( name: el_param_name, span: child_node.span.clone(), ident_span: child_node.ident_span.clone(), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: el_resolved, })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -1650,15 +1650,15 @@ pub fn resolve_optional_node( name: tv.clone(), span: kernel_span(tv.clone()), ident_span: Some(kernel_span(tv.clone())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::TypeVariable { id: tv.clone() })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -2955,17 +2955,17 @@ pub fn resolve_item_types(item: Rc, env: Rc, module_name: String) name: tp_name.clone(), span: kernel_span(tp_name.clone()), ident_span: Some(kernel_span(tp_name.clone())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::TypeVariable { id: tp_name.clone(), })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, diff --git a/src/v1/stage0/src/v1_compiler_infer_service.rs b/src/v1/stage0/src/v1_compiler_infer_service.rs index 80ea3d35711..0bb54858b3e 100644 --- a/src/v1/stage0/src/v1_compiler_infer_service.rs +++ b/src/v1/stage0/src/v1_compiler_infer_service.rs @@ -354,17 +354,17 @@ pub fn check_service_method_call_node( name: f.name.clone(), span: f.span.clone(), ident_span: f.ident_span.clone(), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: param_node_type_expr(f.clone()), })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -376,13 +376,13 @@ pub fn check_service_method_call_node( __result }), connective: Connective::Conj, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, diff --git a/src/v1/stage0/src/v1_compiler_infer_types.rs b/src/v1/stage0/src/v1_compiler_infer_types.rs index 6c43ebf8d11..c598ac6bdc2 100644 --- a/src/v1/stage0/src/v1_compiler_infer_types.rs +++ b/src/v1/stage0/src/v1_compiler_infer_types.rs @@ -61,15 +61,15 @@ pub fn type_variable_node(id: String) -> Rc { name: "".to_string(), span: make_span(0, 0), ident_span: None, - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::TypeVariable { id: id })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -290,17 +290,17 @@ pub fn bare_map_node() -> Option> { name: key_id.clone(), span: make_span(0, 0), ident_span: Some(make_span(0, 0)), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: type_variable_node(key_id.clone()), })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -312,17 +312,17 @@ pub fn bare_map_node() -> Option> { name: val_id.clone(), span: make_span(0, 0), ident_span: Some(make_span(0, 0)), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: type_variable_node(val_id.clone()), })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -332,13 +332,13 @@ pub fn bare_map_node() -> Option> { }), ]), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -362,17 +362,17 @@ pub fn bare_set_node() -> Option> { name: elem_id.clone(), span: make_span(0, 0), ident_span: Some(make_span(0, 0)), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: type_variable_node(elem_id.clone()), })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -381,13 +381,13 @@ pub fn bare_set_node() -> Option> { ident: None, })]), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -419,18 +419,18 @@ pub fn missing_kernel_container_profile_type(kind_name: String) -> Rc { name: "".to_string(), span: make_span(0, 0), ident_span: None, - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::CompilerError { message: msg.clone(), span: make_span(0, 0), })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -461,15 +461,15 @@ pub fn make_container_type(kind_name: String, element: Rc) -> Rc) -> Rc, value: Rc) -> Rc { name: key_name.clone(), span: kernel_span(key_name.clone()), ident_span: Some(kernel_span(key_name.clone())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: key })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -536,15 +536,15 @@ pub fn make_map_type(key: Rc, value: Rc) -> Rc { name: val_name.clone(), span: kernel_span(val_name.clone()), ident_span: Some(kernel_span(val_name.clone())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: value })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -554,13 +554,13 @@ pub fn make_map_type(key: Rc, value: Rc) -> Rc { }), ]), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -591,15 +591,15 @@ pub fn make_callable_type(func_params: Rc>>, ret: Rc) -> Rc, second: Rc) -> Rc { name: "first".to_string(), span: kernel_span("first".to_string()), ident_span: Some(kernel_span("first".to_string())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: first })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -639,15 +639,15 @@ pub fn make_tuple_type(first: Rc, second: Rc) -> Rc { name: "second".to_string(), span: kernel_span("second".to_string()), ident_span: Some(kernel_span("second".to_string())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: second })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -657,13 +657,13 @@ pub fn make_tuple_type(first: Rc, second: Rc) -> Rc { }), ]), connective: Connective::Conj, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -678,15 +678,15 @@ pub fn algebra_value_field(name: String, type_node: Rc) -> Rc { name: name.clone(), span: kernel_span(name.clone()), ident_span: Some(kernel_span(name.clone())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: type_node })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -720,15 +720,15 @@ pub fn algebra_method_field( name: name.clone(), span: kernel_span(name.clone()), ident_span: Some(kernel_span(name.clone())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: callable })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, diff --git a/src/v1/stage0/src/v1_compiler_parse.rs b/src/v1/stage0/src/v1_compiler_parse.rs index 39aa16c107b..f8efa6046a6 100644 --- a/src/v1/stage0/src/v1_compiler_parse.rs +++ b/src/v1/stage0/src/v1_compiler_parse.rs @@ -1862,15 +1862,15 @@ pub fn leaf_type_node(name: String, span: Rc) -> Rc { } else { Some(span.clone()) }, - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -1885,15 +1885,15 @@ pub fn literal_width_nat_type_node(value: i64, span: Rc) -> Rc name: "".to_string(), span: span, ident_span: None, - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -2181,10 +2181,10 @@ pub fn parse_module(tokens: TokenStream, ctx: Rc) -> Rc) -> Rc name: "".to_string(), span: span.clone(), ident_span: Some(span.clone()), - children: Rc::new(vec![]), - params: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, connective: Connective::NoConnective, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -2517,9 +2517,9 @@ pub fn parse_item_prefix( name: "".to_string(), name_span: r.span.clone(), type_params: Rc::new(vec![]), - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), tokens: r.tokens.clone(), ctx: ctx.clone(), err: r.err.clone(), @@ -2532,7 +2532,7 @@ pub fn parse_item_prefix( parse_optional_type_params(tokens.clone(), ctx.clone()) } else { Rc::new(TypeParamsResult { - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), tokens: tokens.clone(), ctx: ctx.clone(), }) @@ -2543,7 +2543,7 @@ pub fn parse_item_prefix( parse_params(tokens.clone(), ctx.clone()) } else { Rc::new(ParamsResult { - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), tokens: tokens.clone(), ctx: ctx.clone(), err: None, @@ -2554,9 +2554,9 @@ pub fn parse_item_prefix( name: name.clone(), name_span: name_span.clone(), type_params: tp_result.params.clone(), - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), tokens: params_result.tokens.clone(), ctx: params_result.ctx.clone(), err: params_result.err.clone(), @@ -2581,7 +2581,7 @@ pub fn parse_item_prefix( type_params: tp_result.params.clone(), params: params_result.params.clone(), inferred: None, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), tokens: ret_result.tokens.clone(), ctx: ret_result.ctx.clone(), err: ret_result.err.clone(), @@ -2601,7 +2601,7 @@ pub fn parse_item_prefix( type_params: tp_result.params.clone(), params: params_result.params.clone(), inferred: None, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), tokens: tokens.clone(), ctx: ctx.clone(), err: Some(parse_error( @@ -2620,7 +2620,7 @@ pub fn parse_item_prefix( parse_uses_clause(skip_newlines(tokens.clone()), ctx.clone()) } else { Rc::new(UsesResult { - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), tokens: tokens.clone(), ctx: ctx.clone(), err: None, @@ -2633,7 +2633,7 @@ pub fn parse_item_prefix( type_params: tp_result.params.clone(), params: params_result.params.clone(), inferred: ret_result.inferred.clone(), - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), tokens: uses_result.tokens.clone(), ctx: uses_result.ctx.clone(), err: uses_result.err.clone(), @@ -2664,15 +2664,15 @@ pub fn parse_item_by_form( name: "".to_string(), span: start_span.clone(), ident_span: None, - children: Rc::new(vec![]), - params: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, connective: Connective::NoConnective, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -2783,12 +2783,12 @@ pub fn field_to_child_node( name: field_node_name_at(field.clone(), source_indices.clone()), span: field.span.clone(), ident_span: field.ident_span.clone(), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: ret_type })), return_cardinality: field_node_cardinality(field.clone()), - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: field_node_default_value(field.clone()), transport: None, properties: props, @@ -2825,13 +2825,13 @@ pub fn variant_to_child_node( } else { Connective::NoConnective }, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -2861,13 +2861,13 @@ pub fn outputs_to_inferred( __result }), connective: Connective::Conj, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -2903,7 +2903,7 @@ pub fn make_operation_node( name: name, span: span.clone(), ident_span: ident_span, - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), params: Rc::new({ let mut __result = Vec::new(); for f in inputs.iter().cloned() { @@ -2919,7 +2919,7 @@ pub fn make_operation_node( }), inferred: outputs_to_inferred(outputs, span.clone(), source_indices.clone()), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, connective: Connective::NoConnective, transport: transport, @@ -2946,7 +2946,7 @@ pub fn make_capability_node( name: name, span: span.clone(), ident_span: ident_span, - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), params: Rc::new({ let mut __result = Vec::new(); for f in inputs.iter().cloned() { @@ -2962,11 +2962,11 @@ pub fn make_capability_node( }), inferred: outputs_to_inferred(outputs, span.clone(), source_indices.clone()), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, connective: Connective::NoConnective, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -2983,15 +2983,15 @@ pub fn parse_type_def(tokens: TokenStream, ctx: Rc) -> Rc) -> Rc Rc::new(TypeParamsResult { - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), tokens: tokens.clone(), ctx: ctx, }), @@ -5188,15 +5188,15 @@ pub fn parse_fn_def(tokens: TokenStream, ctx: Rc) -> Rc) -> Rc) -> Rc) -> Rc) -> Rc) -> Rc) -> Rc) -> Rc) -> Rc) -> Rc) -> Rc { name: "".to_string(), span: span, ident_span: None, - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -1077,13 +1077,13 @@ pub fn make_interp_part_node(expr: Rc, span: Rc) -> Rc { ident_span: None, children: Rc::new(vec![expr]), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -1111,13 +1111,13 @@ pub fn make_param_node( ident_span: default_ident_span(name.clone(), name_span), children: children, connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -1147,12 +1147,12 @@ pub fn make_resolved_param_node( ident_span: default_ident_span(name.clone(), name_span), children: children, connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::Resolved { node: type_expr.clone(), })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, properties: properties, @@ -1300,15 +1300,15 @@ pub fn make_field_node( name: fk.clone(), span: make_span(0, 0), ident_span: default_ident_span(fk.clone(), make_span(0, 0)), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -1327,10 +1327,10 @@ pub fn make_field_node( ident_span: default_ident_span(name.clone(), name_span), children: children, connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: cardinality, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, properties: v1_rt::concat(props, type_expr.properties.clone()), @@ -1404,13 +1404,13 @@ pub fn make_variant_node( ident_span: default_ident_span(name.clone(), name_span), children: fields, connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -2054,10 +2054,10 @@ pub fn make_transport_node( ident_span: None, children: children, connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: body, transport: None, properties: properties, @@ -2172,15 +2172,15 @@ pub fn shell_transport_node( name: "".to_string(), span: span.clone(), ident_span: None, - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -2205,10 +2205,10 @@ pub fn shell_transport_node( ident_span: None, children: argv, connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: Some(shell_marker), transport: None, properties: all_props, @@ -2981,10 +2981,10 @@ pub fn module_node( params: imports, inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -3007,15 +3007,15 @@ pub fn import_node( name: "".to_string(), span: span.clone(), ident_span: None, - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -3032,13 +3032,13 @@ pub fn import_node( ident_span: Some(name_span), children: specific_names, connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: wildcard_marker, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -3074,20 +3074,28 @@ pub fn module_items(n: Rc) -> Rc>> { n.children.clone() } +thread_local! { + static EMPTY_NODE_LIST: Rc>> = Rc::new(Vec::new()); +} + +pub fn empty_node_list() -> Rc>> { + EMPTY_NODE_LIST.with(|e| e.clone()) +} + pub fn leaf_node_with_span(name: String, span: Rc) -> Rc { Rc::new(Node { name: name.clone(), span: span.clone(), ident_span: default_ident_span(name.clone(), span.clone()), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -3115,15 +3123,15 @@ pub fn unit_type() -> Rc { name: "Unit".to_string(), span: kernel_span("Unit".to_string()), ident_span: Some(kernel_span("Unit".to_string())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::Conj, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -3143,15 +3151,15 @@ pub fn bool_type() -> Rc { name: "Bool".to_string(), span: kernel_span("Bool".to_string()), ident_span: Some(kernel_span("Bool".to_string())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -3171,15 +3179,15 @@ pub fn string_type() -> Rc { name: "String".to_string(), span: kernel_span("String".to_string()), ident_span: Some(kernel_span("String".to_string())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -3199,15 +3207,15 @@ pub fn hash_type() -> Rc { name: "Hash".to_string(), span: kernel_span("Hash".to_string()), ident_span: Some(kernel_span("Hash".to_string())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -3227,15 +3235,15 @@ pub fn int_type() -> Rc { name: "Int".to_string(), span: kernel_span("Int".to_string()), ident_span: Some(kernel_span("Int".to_string())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -3255,15 +3263,15 @@ pub fn float_type() -> Rc { name: "Float".to_string(), span: kernel_span("Float".to_string()), ident_span: Some(kernel_span("Float".to_string())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -3283,15 +3291,15 @@ pub fn none_type() -> Rc { name: "None".to_string(), span: kernel_span("None".to_string()), ident_span: Some(kernel_span("None".to_string())), - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: None, return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false, @@ -3320,18 +3328,18 @@ pub fn error_type() -> Rc { name: "".to_string(), span: make_span(0, 0), ident_span: None, - children: Rc::new(vec![]), + children: crate::v1_std_core::empty_node_list(), connective: Connective::NoConnective, - params: Rc::new(vec![]), + params: crate::v1_std_core::empty_node_list(), inferred: Some(Rc::new(InferredNode::CompilerError { message: "unresolved type".to_string(), span: make_span(0, 0), })), return_cardinality: Cardinality::Required, - uses: Rc::new(vec![]), + uses: crate::v1_std_core::empty_node_list(), body: None, transport: None, - properties: Rc::new(vec![]), + properties: crate::v1_std_core::empty_node_list(), type_annotation: None, is_self_recursive: false, has_non_tail_self_call: false,