From d2ac9b39331a35a6c0479e977f65f53db9685fa5 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Wed, 22 Jul 2026 12:45:00 -0400 Subject: [PATCH] Diagnose `where` in a binding that introduces a `.Self` that does not refer to the binding (#7517) This is in addition to finding a `where` on the RHS of another `where`. Since a generic binding introduces `.Self`, any `where` expression that isn't part of a facet type modifying the binding itself would introduce an ambiguous `.Self`. Add virtual parse nodes for let, var, and form bindings, which goes before the type. This allows us to track if `where` appears in the binding's type. We only need to look for an invalid `where` if any appeared in the type. We combine these three nodes together into a single node kind, which requires us to remove the name from it as a child. We move it up to the Pattern node again, and rename the PatternStart nodes to PatternTypeStart as they are now located in the middle of the Pattern nodes, just before the type. And we only need to thaw `.Self` in generic bindings. Non-generic bindings can only have `.Self` through a `where` expression, since the name is not provided otherwise to non-generic bindings. And `where` expressions thaw their `.Self` independently. So the binding only needs to thaw a `.Self` that it introduced, which is only for generic bindings. --- toolchain/check/context.h | 12 +- toolchain/check/facet_type.cpp | 52 ++++ toolchain/check/facet_type.h | 8 + toolchain/check/handle_binding_pattern.cpp | 194 ++++++++++--- toolchain/check/handle_where.cpp | 62 +--- toolchain/check/node_stack.h | 4 +- .../check/testdata/class/self/self.carbon | 8 +- .../testdata/class/syntactic_merge.carbon | 4 +- .../testdata/facet/nested_facet_types.carbon | 121 ++++++++ .../check/testdata/function/call/form.carbon | 4 +- toolchain/diagnostics/kind.def | 1 + toolchain/lex/token_kind.def | 3 +- toolchain/parse/handle_binding_pattern.cpp | 12 +- toolchain/parse/node_kind.def | 3 +- toolchain/parse/testdata/array/basic.carbon | 7 +- .../parse/testdata/array/fail_syntax.carbon | 49 ++-- toolchain/parse/testdata/auto/let.carbon | 5 +- .../parse/testdata/auto/match_case.carbon | 13 +- toolchain/parse/testdata/auto/var.carbon | 7 +- .../basics/fail_bracket_recovery.carbon | 16 +- .../basics/multiline_string_recovery.carbon | 16 +- toolchain/parse/testdata/basics/parens.carbon | 9 +- .../testdata/basics/type_literals.carbon | 28 +- .../testdata/basics/value_literals.carbon | 42 +-- ...il_missing_definition_parameterized.carbon | 4 +- .../testdata/choice/parameterized.carbon | 11 +- .../parse/testdata/class/fail_var_name.carbon | 27 +- toolchain/parse/testdata/class/var.carbon | 23 +- .../for/fail_colon_instead_of_in.carbon | 13 +- .../parse/testdata/for/fail_missing_in.carbon | 13 +- toolchain/parse/testdata/for/nested.carbon | 26 +- toolchain/parse/testdata/for/pattern.carbon | 74 ++--- .../testdata/function/decl_statement.carbon | 30 +- .../testdata/function/declaration.carbon | 55 ++-- .../parse/testdata/function/definition.carbon | 23 +- .../function/fail_template_form_param.carbon | 7 +- .../parse/testdata/function/terse.carbon | 18 +- .../generics/deduced_params/no_parens.carbon | 8 +- .../generics/deduced_params/one.carbon | 8 +- .../deduced_params/one_suffix_comma.carbon | 8 +- .../generics/deduced_params/six.carbon | 48 ++-- .../generics/deduced_params/two.carbon | 16 +- .../deduced_params/two_suffix_comma.carbon | 16 +- .../generics/generic_params/basic.carbon | 4 +- .../fail_template_no_param.carbon | 18 +- .../generics/generic_params/template.carbon | 25 +- .../parse/testdata/generics/impl/basic.carbon | 9 +- .../testdata/generics/impl/fail_impl.carbon | 12 +- .../generics/impl/final_match_first.carbon | 28 +- .../testdata/generics/impl/forall.carbon | 12 +- .../testdata/generics/impl/match_first.carbon | 28 +- .../testdata/generics/interface/basic.carbon | 35 +-- .../generics/interface/default_fn.carbon | 9 +- .../interface/fail_self_param_syntax.carbon | 16 +- .../generics/interface/final_fn.carbon | 18 +- .../interface/final_member_definition.carbon | 11 +- .../generics/interface/require.carbon | 4 +- .../generics/interface/self_ref.carbon | 19 +- .../named_constraint/invalid_method.carbon | 20 +- .../fail_redundant_phase_keyword.carbon | 26 +- .../fail_unused_after_phase_keyword.carbon | 22 +- .../generics/params/name_qualifier.carbon | 72 ++--- .../parse/testdata/generics/params/one.carbon | 8 +- .../generics/params/one_suffix_comma.carbon | 8 +- .../parse/testdata/generics/params/six.carbon | 48 ++-- .../parse/testdata/generics/params/two.carbon | 16 +- .../generics/params/two_suffix_comma.carbon | 16 +- toolchain/parse/testdata/if_expr/basic.carbon | 15 +- .../if_expr/fail_condition_missing.carbon | 9 +- .../if_expr/fail_else_expr_missing.carbon | 9 +- .../testdata/if_expr/fail_else_missing.carbon | 9 +- .../if_expr/fail_then_expr_missing.carbon | 9 +- .../testdata/if_expr/fail_then_missing.carbon | 9 +- .../parse/testdata/if_expr/in_type.carbon | 7 +- .../parse/testdata/if_expr/precedence.carbon | 9 +- .../parse/testdata/index/assign_to_var.carbon | 7 +- .../testdata/index/fail_empty_expr.carbon | 7 +- .../testdata/index/fail_malformed_expr.carbon | 7 +- toolchain/parse/testdata/lambda/lambda.carbon | 58 ++-- .../testdata/let/fail_generic_ref.carbon | 4 +- .../testdata/let/fail_missing_name.carbon | 4 +- toolchain/parse/testdata/let/let.carbon | 22 +- toolchain/parse/testdata/let/let_ref.carbon | 22 +- toolchain/parse/testdata/let/let_tuple.carbon | 12 +- .../parse/testdata/let/missing_value.carbon | 12 +- .../match/fail_cases_after_default.carbon | 9 +- .../match/fail_missing_case_arrow.carbon | 22 +- .../fail_missing_case_statements_block.carbon | 13 +- .../fail_missing_guard_close_paren.carbon | 13 +- .../fail_missing_guard_open_paren.carbon | 13 +- ...sing_guard_parens_only_parse_errors.carbon | 22 +- ...il_unexpected_tokens_in_cases_block.carbon | 29 +- toolchain/parse/testdata/match/match.carbon | 45 +-- .../testdata/member_access/simple.carbon | 9 +- .../parse/testdata/operators/assign.carbon | 16 +- .../operators/fail_chained_assign.carbon | 16 +- .../fail_infix_uneven_space_after.carbon | 7 +- .../fail_infix_uneven_space_before.carbon | 7 +- .../operators/fail_invalid_infix.carbon | 21 +- .../operators/fail_postfix_space.carbon | 7 +- .../fail_postfix_space_before_comma.carbon | 7 +- .../fail_postfix_space_in_call.carbon | 7 +- .../fail_postfix_space_surrounding.carbon | 7 +- .../operators/fail_postincrement.carbon | 9 +- .../operators/fail_precedence_as.carbon | 9 +- .../operators/fail_precedence_assign.carbon | 9 +- .../operators/fail_prefix_space.carbon | 7 +- ...ail_prefix_uneven_space_with_assign.carbon | 7 +- .../testdata/operators/fail_star_minus.carbon | 7 +- .../testdata/operators/fail_star_star.carbon | 7 +- .../operators/fail_star_star_no_space.carbon | 7 +- .../operators/fixity_in_params.carbon | 12 +- .../testdata/operators/fixity_in_var.carbon | 22 +- .../testdata/operators/infix_no_space.carbon | 7 +- .../operators/infix_with_paren_after.carbon | 7 +- .../operators/infix_with_paren_before.carbon | 7 +- .../parse/testdata/operators/postfix.carbon | 7 +- .../operators/postfix_space_after_op.carbon | 7 +- .../testdata/operators/precedence_as.carbon | 9 +- .../operators/precedence_assign.carbon | 38 +-- .../operators/precedence_unary.carbon | 9 +- .../operators/precedence_where.carbon | 16 +- .../parse/testdata/operators/prefix.carbon | 32 ++- .../testdata/operators/prefix_no_space.carbon | 7 +- toolchain/parse/testdata/operators/ref.carbon | 28 +- .../parse/testdata/package_expr/basic.carbon | 7 +- .../parse/testdata/package_expr/core.carbon | 7 +- .../testdata/packages/keyword_names.carbon | 14 +- .../testdata/pointer/pointer_type.carbon | 16 +- .../testdata/pointer/pointer_value.carbon | 39 +-- .../parse/testdata/return/returned_var.carbon | 9 +- .../testdata/struct/fail_comma_only.carbon | 7 +- .../struct/fail_comma_repeat_in_type.carbon | 7 +- .../struct/fail_comma_repeat_in_value.carbon | 7 +- .../struct/fail_extra_token_in_type.carbon | 7 +- .../struct/fail_extra_token_in_value.carbon | 7 +- .../struct/fail_identifier_colon.carbon | 7 +- .../struct/fail_identifier_equals.carbon | 7 +- .../struct/fail_identifier_only.carbon | 7 +- .../fail_invalid_struct_designator.carbon | 7 +- .../testdata/struct/fail_missing_type.carbon | 7 +- .../testdata/struct/fail_missing_value.carbon | 7 +- .../struct/fail_mix_type_and_value.carbon | 7 +- .../struct/fail_mix_value_and_type.carbon | 7 +- .../struct/fail_mix_with_unknown.carbon | 14 +- .../struct/fail_no_colon_or_equals.carbon | 7 +- .../testdata/struct/fail_period_only.carbon | 7 +- .../testdata/struct/fail_period_paren.carbon | 7 +- .../struct/fail_period_string_colon.carbon | 7 +- .../struct/fail_period_string_equals.carbon | 7 +- .../struct/fail_type_no_designator.carbon | 7 +- .../parse/testdata/struct/no_entries.carbon | 7 +- .../testdata/struct/one_entry_no_comma.carbon | 7 +- .../struct/one_entry_with_comma.carbon | 7 +- .../parse/testdata/struct/two_entries.carbon | 7 +- .../testdata/tuple/access/repeated.carbon | 5 +- .../testdata/tuple/access/value_access.carbon | 5 +- toolchain/parse/testdata/tuple/nested.carbon | 24 +- .../parse/testdata/tuple/two_entries.carbon | 7 +- .../parse/testdata/var/fail_bad_name.carbon | 14 +- toolchain/parse/testdata/var/fail_ref.carbon | 7 +- toolchain/parse/testdata/var/unused.carbon | 272 ++++++++++-------- toolchain/parse/testdata/var/var.carbon | 37 +-- .../parse/testdata/var/var_pattern.carbon | 50 ++-- toolchain/parse/testdata/var/var_tuple.carbon | 14 +- .../parse/testdata/where_expr/basic.carbon | 15 +- .../testdata/where_expr/designators.carbon | 11 +- .../testdata/where_expr/fail_rewrite.carbon | 28 +- .../testdata/where_expr/where_and.carbon | 20 +- toolchain/parse/typed_nodes.h | 33 ++- 170 files changed, 1858 insertions(+), 1314 deletions(-) diff --git a/toolchain/check/context.h b/toolchain/check/context.h index 4cc784f41e36..d4f278817568 100644 --- a/toolchain/check/context.h +++ b/toolchain/check/context.h @@ -259,7 +259,7 @@ class Context { using ImplLookupCacheMap = Map; auto impl_lookup_cache() -> ImplLookupCacheMap& { return impl_lookup_cache_; } - auto impl_lookup_no_symbolic_final_lookups() -> int& { + auto impl_lookup_no_symbolic_final_lookups() -> int32_t& { return impl_lookup_no_symbolic_final_lookups_; } @@ -303,6 +303,10 @@ class Context { return where_stack_; } + auto binding_type_where_count() -> int32_t& { + return binding_type_where_count_; + } + auto forbidden_impls() -> llvm::SmallVector& { return forbidden_impls_; } @@ -587,7 +591,7 @@ class Context { // prevent cycles. This is incremented while replacing `.Self` in a facet type // from an impl lookup query that we are searching for a witness for the // query. - int impl_lookup_no_symbolic_final_lookups_ = 0; + int32_t impl_lookup_no_symbolic_final_lookups_ = 0; // Tracks impl lookup queries that lead to concrete witness results, along // with those results. Used to verify that the same queries produce the same @@ -599,6 +603,10 @@ class Context { // being checked so that they can be used by later constraints. llvm::SmallVector where_stack_; + // Counts the number of `where` expressions in the type of the binding + // currently being checked. + int32_t binding_type_where_count_ = 0; + // Impls that cannot be used in impl lookup. This prevents cycles where a // `LookupImplWitness` instruction inside the impl decl should not be able to // find the containing impl decl. diff --git a/toolchain/check/facet_type.cpp b/toolchain/check/facet_type.cpp index dad375435735..3ab3ea489301 100644 --- a/toolchain/check/facet_type.cpp +++ b/toolchain/check/facet_type.cpp @@ -474,4 +474,56 @@ auto GetConstantFacetValueForTypeAndInterface( return self_value_const_id; } +auto FindWhere(Context& context, SemIR::ConstantId const_id) -> bool { + class FindWhereCallbacks : public SubstInstCallbacks { + public: + FindWhereCallbacks(Context* context, bool* found) + : SubstInstCallbacks(context), found_(found) {} + + auto Subst(SemIR::InstId& inst_id) -> SubstResult override { + if (*found_ || inst_id == SemIR::TypeType::TypeInstId || + inst_id == SemIR::ErrorInst::InstId) { + return FullySubstituted; + } + + // Facet types can contain many references to the same value. Only search + // a given constant one time to avoid exponential costs. + if (!searched_.Insert(inst_id).is_inserted()) { + return FullySubstituted; + } + + if (auto facet_type = + context().insts().TryGetAs(inst_id)) { + const auto& declared_facet_type = context().declared_facet_types().Get( + facet_type->declared_facet_type_id); + if (!declared_facet_type.IsExtendedOnly()) { + *found_ = true; + return FullySubstituted; + } + } + + return SubstOperandsSkipType; + } + + auto Rebuild(SemIR::InstId orig_inst_id, SemIR::Inst /*new_inst*/) + -> SemIR::InstId override { + CARBON_FATAL("unexpected rebuild of inst {0}", + context().insts().Get(orig_inst_id)); + } + + private: + bool* found_; + Set searched_; + }; + + if (!const_id.is_constant()) { + return false; + } + + bool found = false; + FindWhereCallbacks callbacks(&context, &found); + SubstInst(context, context.constant_values().GetInstId(const_id), callbacks); + return found; +} + } // namespace Carbon::Check diff --git a/toolchain/check/facet_type.h b/toolchain/check/facet_type.h index 40cbc0c814f6..bcb914d220cf 100644 --- a/toolchain/check/facet_type.h +++ b/toolchain/check/facet_type.h @@ -76,6 +76,14 @@ auto GetConstantFacetValueForTypeAndInterface( SemIR::SpecificInterface specific_interface, SemIR::InstId witness_id) -> SemIR::ConstantId; +// Returns whether the constant value `const_id` contains a facet type +// instruction with a `where` expression. +// +// This search ignores the type_id of insts, and just looks at the `const_id` +// and its non-type operands recursively. Any use of a symbolic facet may have a +// type with an arbitrary facet type (including a `where` expression). +auto FindWhere(Context& context, SemIR::ConstantId const_id) -> bool; + } // namespace Carbon::Check #endif // CARBON_TOOLCHAIN_CHECK_FACET_TYPE_H_ diff --git a/toolchain/check/handle_binding_pattern.cpp b/toolchain/check/handle_binding_pattern.cpp index d47cad9f98bc..9a1945000415 100644 --- a/toolchain/check/handle_binding_pattern.cpp +++ b/toolchain/check/handle_binding_pattern.cpp @@ -135,16 +135,80 @@ struct BindingPatternTypeInfo { }; } // namespace +static auto FindInvalidWhere(Context& context, SemIR::InstId first_inst_id) + -> SemIR::LocId { + llvm::SmallVector work = {first_inst_id}; + + while (!work.empty()) { + auto next_id = work.pop_back_val(); + if (auto where = context.insts().TryGetAs(next_id)) { + // Harder case. We have a `where` but need to look for an invalid `where` + // on the LHS of it. + for (auto req_id : context.inst_blocks().Get(where->requirements_id)) { + if (auto base = + context.insts().TryGetAs( + req_id)) { + work.push_back(base->base_type_inst_id); + } + } + continue; + } + + auto const_next_id = context.constant_values().Get(next_id); + if (!const_next_id.is_constant()) { + continue; + } + + // Other facet types can be formed through evaluation. Having a `where` is + // fine, but we have to look for an invalid `where` in specific arguments on + // the LHS of it. + if (auto facet_type = + context.constant_values().TryGetInstAs( + const_next_id)) { + const auto& decl_facet_type = context.declared_facet_types().Get( + facet_type->declared_facet_type_id); + for (auto extend : decl_facet_type.extend_constraints) { + for (auto arg_id : context.inst_blocks().Get( + context.specifics().GetArgsOrEmpty(extend.specific_id))) { + if (FindWhere(context, context.constant_values().Get(arg_id))) { + return SemIR::LocId(next_id); + } + } + } + for (auto extend : decl_facet_type.extend_named_constraints) { + for (auto arg_id : context.inst_blocks().Get( + context.specifics().GetArgsOrEmpty(extend.specific_id))) { + if (FindWhere(context, context.constant_values().Get(arg_id))) { + return SemIR::LocId(next_id); + } + } + } + continue; + } + + // Simpler case. The top level expression is not a facet type so any `where` + // inside it would come from a specific argument, and is invalid. + if (FindWhere(context, const_next_id)) { + return SemIR::LocId(next_id); + } + } + return SemIR::LocId::None; +} + +// Either the node kind of the pattern type's start node, or the type of Self +// for a `self` binding with an omitted type. +using TypeStartOrSelfType = std::variant; + // Handle the type position of a binding pattern. For a `self` binding with an // omitted type, `self_type_inst_id` is the synthesized `Self` type expression // and there is no type expression on the node stack to pop. -static auto HandleAnyBindingPatternType(Context& context, - Parse::NodeId binding_node_id, - Parse::NodeKind node_kind, - SemIR::InstId self_type_inst_id) +static auto HandleAnyBindingPatternType( + Context& context, Parse::NodeId binding_node_id, Parse::NodeKind node_kind, + TypeStartOrSelfType type_start_or_self_type, bool is_generic) -> BindingPatternTypeInfo { - if (self_type_inst_id.has_value()) { - auto as_type = ExprAsType(context, binding_node_id, self_type_inst_id); + if (auto* self_type_inst_id = + std::get_if(&type_start_or_self_type)) { + auto as_type = ExprAsType(context, binding_node_id, *self_type_inst_id); return {.node_id = binding_node_id, .inst_id = as_type.inst_id, .type_component_id = as_type.type_id}; @@ -152,22 +216,60 @@ static auto HandleAnyBindingPatternType(Context& context, auto [node_id, original_inst_id] = context.node_stack().PopExprWithNodeId(); - // We are leaving the scope of the `.Self`; they should no longer be frozen in - // the binding's type. - auto thawed_inst_id = ThawPeriodSelf(context, original_inst_id); - if (thawed_inst_id != original_inst_id) { - // If ThawPeriodSelf changed the instruction, it means there is a `.Self` - // reference in the type. Diagnose if the type is not a facet type. - auto const_inst_id = - context.constant_values().GetConstantInstId(original_inst_id); - if (!context.insts().Is(const_inst_id) && - const_inst_id != SemIR::ErrorInst::InstId) { - CARBON_DIAGNOSTIC(PeriodSelfInNonFacetType, Error, - "`.Self` used in a type that is not a facet type"); - context.emitter().Emit(node_id, PeriodSelfInNonFacetType); + if (is_generic) { + // We are leaving the scope of the `.Self`; they should no longer be frozen + // in the binding's type. + auto thawed_inst_id = ThawPeriodSelf(context, original_inst_id); + if (thawed_inst_id != original_inst_id) { + // If ThawPeriodSelf changed the instruction, it means there is a `.Self` + // reference in the type. Diagnose if the type is not a facet type. + auto const_inst_id = + context.constant_values().GetConstantInstId(original_inst_id); + if (!context.insts().Is(const_inst_id) && + const_inst_id != SemIR::ErrorInst::InstId) { + CARBON_DIAGNOSTIC(PeriodSelfInNonFacetType, Error, + "`.Self` used in a type that is not a facet type"); + context.emitter().Emit(node_id, PeriodSelfInNonFacetType); + original_inst_id = SemIR::ErrorInst::InstId; + } else { + original_inst_id = thawed_inst_id; + } + } + } + + // Determine how many `where` expressions are present in the binding's type. + auto before_where_count = 0; + switch (std::get(type_start_or_self_type)) { + case Parse::NodeKind::BindingPatternTypeStart: + before_where_count = context.node_stack() + .Pop() + .index; + break; + case Parse::NodeKind::CompileTimeBindingPatternTypeStart: + before_where_count = + context.node_stack() + .Pop() + .index; + break; + default: + CARBON_FATAL("unexpected node kind {0}", + std::get(type_start_or_self_type)); + } + auto where_count = context.binding_type_where_count() - before_where_count; + if (where_count > 0) { + if (auto where_loc_id = FindInvalidWhere(context, original_inst_id); + where_loc_id.has_value()) { + if (context.constant_values().Get(original_inst_id) != + SemIR::ErrorInst::ConstantId) { + CARBON_DIAGNOSTIC( + InvalidWhereInsideBinding, Error, + "found `where` expression in binding's type that does " + "not constrain the binding"); + auto builder = + context.emitter().Build(where_loc_id, InvalidWhereInsideBinding); + builder.Emit(); + } original_inst_id = SemIR::ErrorInst::InstId; - } else { - original_inst_id = thawed_inst_id; } } @@ -185,18 +287,18 @@ static auto HandleAnyBindingPatternType(Context& context, } // TODO: make this function shorter by factoring pieces out. -static auto HandleAnyBindingPattern( - Context& context, Parse::NodeId node_id, Parse::NodeKind node_kind, - bool is_unused = false, - SemIR::InstId self_type_inst_id = SemIR::InstId::None) -> bool { - auto type_expr = HandleAnyBindingPatternType(context, node_id, node_kind, - self_type_inst_id); +static auto HandleAnyBindingPattern(Context& context, Parse::NodeId node_id, + Parse::NodeKind node_kind, + TypeStartOrSelfType type_start_or_self_type) + -> bool { + bool is_generic = node_kind == Parse::NodeKind::CompileTimeBindingPattern; + auto type_expr = HandleAnyBindingPatternType( + context, node_id, node_kind, type_start_or_self_type, is_generic); SemIR::ExprRegionId type_expr_region_id = ConsumeExprRegionForPattern(context, type_expr.inst_id); // The name in a generic binding may be wrapped in `template`. - bool is_generic = node_kind == Parse::NodeKind::CompileTimeBindingPattern; bool is_template = context.node_stack() .PopAndDiscardSoloNodeIdIf(); @@ -237,8 +339,8 @@ static auto HandleAnyBindingPattern( context, node_id, type_expr_region_id, type_expr.type_component_id, {.kind = kind, .type_id = GetPatternType(context, type_expr.type_component_id), - .entity_name_id = - AddBindingEntityName(context, name_id, form_id, is_unused, phase), + .entity_name_id = AddBindingEntityName(context, name_id, form_id, + /*is_unused=*/false, phase), .subpattern_id = subpattern_id}); // TODO: If `is_generic`, then `binding.bind_id is a SymbolicBinding. Subst @@ -454,10 +556,18 @@ static auto HandleAnyBindingPattern( return true; } +auto HandleParseNode(Context& context, Parse::BindingPatternTypeStartId node_id) + -> bool { + context.node_stack().Push( + node_id, SemIR::ElementIndex(context.binding_type_where_count())); + return true; +} + auto HandleParseNode(Context& context, Parse::LetBindingPatternId node_id) -> bool { return HandleAnyBindingPattern(context, node_id, - Parse::NodeKind::LetBindingPattern); + Parse::NodeKind::LetBindingPattern, + Parse::NodeKind::BindingPatternTypeStart); } auto HandleParseNode(Context& context, Parse::SelfBindingPatternId node_id) @@ -470,37 +580,41 @@ auto HandleParseNode(Context& context, Parse::SelfBindingPatternId node_id) auto self_type_inst_id = BuildNameRef( context, node_id, SemIR::NameId::SelfType, self_type.scope_result.target_inst_id(), self_type.specific_id); - return HandleAnyBindingPattern(context, node_id, - Parse::NodeKind::LetBindingPattern, - /*is_unused=*/false, self_type_inst_id); + return HandleAnyBindingPattern( + context, node_id, Parse::NodeKind::LetBindingPattern, self_type_inst_id); } auto HandleParseNode(Context& context, Parse::VarBindingPatternId node_id) -> bool { return HandleAnyBindingPattern(context, node_id, - Parse::NodeKind::VarBindingPattern); + Parse::NodeKind::VarBindingPattern, + Parse::NodeKind::BindingPatternTypeStart); } auto HandleParseNode(Context& context, Parse::FormBindingPatternId node_id) -> bool { return HandleAnyBindingPattern(context, node_id, - Parse::NodeKind::FormBindingPattern); + Parse::NodeKind::FormBindingPattern, + Parse::NodeKind::BindingPatternTypeStart); } auto HandleParseNode(Context& context, - Parse::CompileTimeBindingPatternStartId node_id) -> bool { + Parse::CompileTimeBindingPatternTypeStartId node_id) + -> bool { // Make a scope to contain the `.Self` facet value for use in the type of the // compile time binding. This is popped when handling the // CompileTimeBindingPatternId. context.scope_stack().PushForSameRegion(); MakePeriodSelfFacetValue(context, node_id, GetEmptyFacetType(context)); + context.node_stack().Push( + node_id, SemIR::ElementIndex(context.binding_type_where_count())); return true; } auto HandleParseNode(Context& context, Parse::CompileTimeBindingPatternId node_id) -> bool { // Pop the `.Self` facet value name introduced by the - // CompileTimeBindingPatternStart. + // CompileTimeBindingPatternTypeStart. context.scope_stack().Pop(/*check_unused=*/true); auto node_kind = Parse::NodeKind::CompileTimeBindingPattern; @@ -526,7 +640,9 @@ auto HandleParseNode(Context& context, } } - return HandleAnyBindingPattern(context, node_id, node_kind); + return HandleAnyBindingPattern( + context, node_id, node_kind, + Parse::NodeKind::CompileTimeBindingPatternTypeStart); } auto HandleParseNode(Context& context, diff --git a/toolchain/check/handle_where.cpp b/toolchain/check/handle_where.cpp index 55b68ce98223..22ce06bd7772 100644 --- a/toolchain/check/handle_where.cpp +++ b/toolchain/check/handle_where.cpp @@ -105,6 +105,8 @@ auto HandleParseNode(Context& context, Parse::WhereOperandId node_id) -> bool { // Add a context stack for tracking constraints, that will be used to allow // later constraints to read from them eagerly. context.where_stack().push_back({.loc_id = node_id}); + // Track the occurrence of `where` inside a binding's type. + ++context.binding_type_where_count(); if (auto self_facet_type = context.types().TryGetAs( self_with_constraints_type_id)) { @@ -465,66 +467,6 @@ auto HandleParseNode(Context& /*context*/, Parse::RequirementAndId /*node_id*/) return true; } -// Returns whether the constant value `const_id` contains a facet type -// instruction with a `where` expression. -// -// This search ignores the type_id of insts, and just looks at the `const_id` -// and its non-type operands recursively. Any use of a symbolic facet may have a -// type with an arbitrary facet type (including a `where` expression). But we -// are looking for a nested `where` that is part of the current `WhereExpr` -// being checked. -static auto FindWhere(Context& context, SemIR::ConstantId const_id) -> bool { - class FindWhereCallbacks : public SubstInstCallbacks { - public: - FindWhereCallbacks(Context* context, bool* found) - : SubstInstCallbacks(context), found_(found) {} - - auto Subst(SemIR::InstId& inst_id) -> SubstResult override { - if (*found_ || inst_id == SemIR::TypeType::TypeInstId || - inst_id == SemIR::ErrorInst::InstId) { - return FullySubstituted; - } - - // Facet types can contain many references to the same value. Only search - // a given constant one time to avoid exponential costs. - if (!searched_.Insert(inst_id).is_inserted()) { - return FullySubstituted; - } - - if (auto facet_type = - context().insts().TryGetAs(inst_id)) { - const auto& declared_facet_type = context().declared_facet_types().Get( - facet_type->declared_facet_type_id); - if (!declared_facet_type.IsExtendedOnly()) { - *found_ = true; - return FullySubstituted; - } - } - - return SubstOperandsSkipType; - } - - auto Rebuild(SemIR::InstId orig_inst_id, SemIR::Inst /*new_inst*/) - -> SemIR::InstId override { - CARBON_FATAL("unexpected rebuild of inst {0}", - context().insts().Get(orig_inst_id)); - } - - private: - bool* found_; - Set searched_; - }; - - if (!const_id.is_constant()) { - return false; - } - - bool found = false; - FindWhereCallbacks callbacks(&context, &found); - SubstInst(context, context.constant_values().GetInstId(const_id), callbacks); - return found; -} - // There are two ways to nest `where` expressions, this diagnoses a `where` // expression inside the RHS of another `where` expression. // diff --git a/toolchain/check/node_stack.h b/toolchain/check/node_stack.h index a1ac04c95979..0561899092d2 100644 --- a/toolchain/check/node_stack.h +++ b/toolchain/check/node_stack.h @@ -448,6 +448,9 @@ class NodeStack { case Parse::NodeKind::DefaultLibrary: case Parse::NodeKind::LibraryName: return Id::KindFor(); + case Parse::NodeKind::BindingPatternTypeStart: + case Parse::NodeKind::CompileTimeBindingPatternTypeStart: + return Id::KindFor(); case Parse::NodeKind::AssociatedConstantInitializer: case Parse::NodeKind::AssociatedConstantIntroducer: case Parse::NodeKind::BuiltinName: @@ -491,7 +494,6 @@ class NodeStack { case Parse::NodeKind::BreakStatementStart: case Parse::NodeKind::ChoiceAlternativeListComma: case Parse::NodeKind::CodeBlock: - case Parse::NodeKind::CompileTimeBindingPatternStart: case Parse::NodeKind::ContinueStatementStart: case Parse::NodeKind::CorePackageName: case Parse::NodeKind::CppPackageName: diff --git a/toolchain/check/testdata/class/self/self.carbon b/toolchain/check/testdata/class/self/self.carbon index e00d61435bea..c6d17ad04d3a 100644 --- a/toolchain/check/testdata/class/self/self.carbon +++ b/toolchain/check/testdata/class/self/self.carbon @@ -45,15 +45,15 @@ class Class { // CHECK:STDERR: fail_self_syntax_mismatch.carbon:[[@LINE+7]]:19: error: redeclaration syntax differs here [RedeclParamSyntaxDiffers] // CHECK:STDERR: fn Class.F(unused self) {} // CHECK:STDERR: ^~~~ -// CHECK:STDERR: fail_self_syntax_mismatch.carbon:[[@LINE-8]]:14: note: comparing with previous declaration here [RedeclParamSyntaxPrevious] +// CHECK:STDERR: fail_self_syntax_mismatch.carbon:[[@LINE-8]]:12: note: comparing with previous declaration here [RedeclParamSyntaxPrevious] // CHECK:STDERR: fn F(self: Self); -// CHECK:STDERR: ^~~~ +// CHECK:STDERR: ^ // CHECK:STDERR: fn Class.F(unused self) {} -// CHECK:STDERR: fail_self_syntax_mismatch.carbon:[[@LINE+7]]:25: error: redeclaration syntax differs here [RedeclParamSyntaxDiffers] +// CHECK:STDERR: fail_self_syntax_mismatch.carbon:[[@LINE+7]]:23: error: redeclaration syntax differs here [RedeclParamSyntaxDiffers] // CHECK:STDERR: fn Class.G(unused self: Self) {} -// CHECK:STDERR: ^~~~ +// CHECK:STDERR: ^ // CHECK:STDERR: fail_self_syntax_mismatch.carbon:[[@LINE-16]]:8: note: comparing with previous declaration here [RedeclParamSyntaxPrevious] // CHECK:STDERR: fn G(self); // CHECK:STDERR: ^~~~ diff --git a/toolchain/check/testdata/class/syntactic_merge.carbon b/toolchain/check/testdata/class/syntactic_merge.carbon index cff47cc607c8..162c19419929 100644 --- a/toolchain/check/testdata/class/syntactic_merge.carbon +++ b/toolchain/check/testdata/class/syntactic_merge.carbon @@ -180,9 +180,9 @@ base class Base { fn F(ref self); } -// CHECK:STDERR: fail_self_type.carbon:[[@LINE+7]]:21: error: redeclaration syntax differs here [RedeclParamSyntaxDiffers] +// CHECK:STDERR: fail_self_type.carbon:[[@LINE+7]]:19: error: redeclaration syntax differs here [RedeclParamSyntaxDiffers] // CHECK:STDERR: fn Base.F(ref self: Base) { -// CHECK:STDERR: ^~~~ +// CHECK:STDERR: ^ // CHECK:STDERR: fail_self_type.carbon:[[@LINE-6]]:8: note: comparing with previous declaration here [RedeclParamSyntaxPrevious] // CHECK:STDERR: fn F(ref self); // CHECK:STDERR: ^~~~~~~~ diff --git a/toolchain/check/testdata/facet/nested_facet_types.carbon b/toolchain/check/testdata/facet/nested_facet_types.carbon index 2d7d47e87a45..beb6731ec529 100644 --- a/toolchain/check/testdata/facet/nested_facet_types.carbon +++ b/toolchain/check/testdata/facet/nested_facet_types.carbon @@ -360,3 +360,124 @@ class C; // CHECK:STDERR: ^~~~~~~ // CHECK:STDERR: fn F(generic _: Z where C == (type where .Self impls type)) {} + +// --- fail_where_nested_inside_binding.carbon +library "[[@TEST_NAME]]"; + +interface Z(T: type) {} +interface Y {} + +// CHECK:STDERR: fail_where_nested_inside_binding.carbon:[[@LINE+4]]:17: error: found `where` expression in binding's type that does not constrain the binding [InvalidWhereInsideBinding] +// CHECK:STDERR: fn F(generic _: Z(type where .Self impls Y)) {} +// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: +fn F(generic _: Z(type where .Self impls Y)) {} + +// --- fail_where_double_nested_inside_binding.carbon +library "[[@TEST_NAME]]"; + +interface Z(T: type) {} +interface Y {} + +// CHECK:STDERR: fail_where_double_nested_inside_binding.carbon:[[@LINE+4]]:17: error: found `where` expression in binding's type that does not constrain the binding [InvalidWhereInsideBinding] +// CHECK:STDERR: fn F(generic _: Z(type where .Self impls Y) where .Self impls Y) {} +// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: +fn F(generic _: Z(type where .Self impls Y) where .Self impls Y) {} + +// --- fail_where_triple_nested_inside_binding.carbon +library "[[@TEST_NAME]]"; + +interface Z(T: type) {} +interface Y {} + +// CHECK:STDERR: fail_where_triple_nested_inside_binding.carbon:[[@LINE+4]]:18: error: found `where` expression in binding's type that does not constrain the binding [InvalidWhereInsideBinding] +// CHECK:STDERR: fn F(generic _: (Z(type where .Self impls Y) where .Self impls Y) where .Self impls Y) {} +// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: +fn F(generic _: (Z(type where .Self impls Y) where .Self impls Y) where .Self impls Y) {} + +// --- fail_where_nested_inside_binding_combined.carbon +library "[[@TEST_NAME]]"; + +interface Z(T: type) {} +interface Y {} + +// CHECK:STDERR: fail_where_nested_inside_binding_combined.carbon:[[@LINE+4]]:17: error: found `where` expression in binding's type that does not constrain the binding [InvalidWhereInsideBinding] +// CHECK:STDERR: fn F(generic _: Z(type where .Self impls Y) & Y) {} +// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: +fn F(generic _: Z(type where .Self impls Y) & Y) {} + +// --- fail_where_double_nested_inside_binding_combined.carbon +library "[[@TEST_NAME]]"; + +interface Z(T: type) {} +interface Y {} + +// CHECK:STDERR: fail_where_double_nested_inside_binding_combined.carbon:[[@LINE+4]]:17: error: found `where` expression in binding's type that does not constrain the binding [InvalidWhereInsideBinding] +// CHECK:STDERR: fn F(generic _: (Z(type where .Self impls Y) where .Self impls Y) & Y) {} +// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: +fn F(generic _: (Z(type where .Self impls Y) where .Self impls Y) & Y) {} + +// --- fail_where_triple_nested_inside_binding_combined.carbon +library "[[@TEST_NAME]]"; + +interface Z(T: type) {} +interface Y {} + +// CHECK:STDERR: fail_where_triple_nested_inside_binding_combined.carbon:[[@LINE+4]]:17: error: found `where` expression in binding's type that does not constrain the binding [InvalidWhereInsideBinding] +// CHECK:STDERR: fn F(generic _: ((Z(type where .Self impls Y) where .Self impls Y) where .Self impls Y) & Y) {} +// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: +fn F(generic _: ((Z(type where .Self impls Y) where .Self impls Y) where .Self impls Y) & Y) {} + +// --- fail_where_nested_inside_binding_of_non_facet_type.carbon +library "[[@TEST_NAME]]"; + +class C(T: type); +interface Y {} + +// CHECK:STDERR: fail_where_nested_inside_binding_of_non_facet_type.carbon:[[@LINE+4]]:17: error: found `where` expression in binding's type that does not constrain the binding [InvalidWhereInsideBinding] +// CHECK:STDERR: fn F(generic _: C(type where .Self impls Y)) {} +// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: +fn F(generic _: C(type where .Self impls Y)) {} + +// --- fail_where_nested_inside_runtime_let_binding.carbon +library "[[@TEST_NAME]]"; + +interface Z(T: type) {} +interface Y {} + +// CHECK:STDERR: fail_where_nested_inside_runtime_let_binding.carbon:[[@LINE+4]]:9: error: found `where` expression in binding's type that does not constrain the binding [InvalidWhereInsideBinding] +// CHECK:STDERR: fn F(_: Z(type where .Self impls Y)) {} +// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: +fn F(_: Z(type where .Self impls Y)) {} + +// --- fail_where_nested_inside_form_binding.carbon +library "[[@TEST_NAME]]"; + +interface Z(T: type) {} +interface Y {} + +// CHECK:STDERR: fail_where_nested_inside_form_binding.carbon:[[@LINE+4]]:10: error: found `where` expression in binding's type that does not constrain the binding [InvalidWhereInsideBinding] +// CHECK:STDERR: fn F(_:? Z(type where .Self impls Y)) {} +// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: +fn F(_:? Z(type where .Self impls Y)) {} + + +// --- fail_where_nested_inside_var_binding.carbon +library "[[@TEST_NAME]]"; + +interface Z(T: type) {} +interface Y {} + +// CHECK:STDERR: fail_where_nested_inside_var_binding.carbon:[[@LINE+4]]:13: error: found `where` expression in binding's type that does not constrain the binding [InvalidWhereInsideBinding] +// CHECK:STDERR: fn F(var _: Z(type where .Self impls Y)) {} +// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: +fn F(var _: Z(type where .Self impls Y)) {} diff --git a/toolchain/check/testdata/function/call/form.carbon b/toolchain/check/testdata/function/call/form.carbon index f7c1d784b21f..f7bc1316f76f 100644 --- a/toolchain/check/testdata/function/call/form.carbon +++ b/toolchain/check/testdata/function/call/form.carbon @@ -82,9 +82,9 @@ fn F(x:? i32); // CHECK:STDERR: fn G(ref x:? i32); // CHECK:STDERR: ^~~ // CHECK:STDERR: -// CHECK:STDERR: fail_form_param_not_form.carbon:[[@LINE+4]]:10: error: semantics TODO: `handle invalid parse trees in `check`` [SemanticsTodo] +// CHECK:STDERR: fail_form_param_not_form.carbon:[[@LINE+4]]:11: error: semantics TODO: `handle invalid parse trees in `check`` [SemanticsTodo] // CHECK:STDERR: fn G(ref x:? i32); -// CHECK:STDERR: ^~~~~~~ +// CHECK:STDERR: ^~ // CHECK:STDERR: fn G(ref x:? i32); diff --git a/toolchain/diagnostics/kind.def b/toolchain/diagnostics/kind.def index a3e57e918707..23aa58ec1c76 100644 --- a/toolchain/diagnostics/kind.def +++ b/toolchain/diagnostics/kind.def @@ -199,6 +199,7 @@ CARBON_DIAGNOSTIC_KIND(ExpectedAliasInitializer) // Where requirement diagnostics. CARBON_DIAGNOSTIC_KIND(ExpectedRequirementOperator) CARBON_DIAGNOSTIC_KIND(RequirementEqualAfterNonDesignator) +CARBON_DIAGNOSTIC_KIND(InvalidWhereInsideBinding) CARBON_DIAGNOSTIC_KIND(NestedWhereInsideWhere) CARBON_DIAGNOSTIC_KIND(NestedWhereInsideWhereOuterNote) diff --git a/toolchain/lex/token_kind.def b/toolchain/lex/token_kind.def index 0205d5ff00ba..3e4e9b248205 100644 --- a/toolchain/lex/token_kind.def +++ b/toolchain/lex/token_kind.def @@ -64,7 +64,8 @@ CARBON_SYMBOL_TOKEN(MinusGreaterQuestion,"->?") CARBON_SYMBOL_TOKEN(AmpEqual, "&=") CARBON_SYMBOL_TOKEN(CaretEqual, "^=") CARBON_SYMBOL_TOKEN(ColonEqual, ":=") -CARBON_SYMBOL_TOKEN(ColonQuestion, ":?") +CARBON_TOKEN_WITH_VIRTUAL_NODE( + CARBON_SYMBOL_TOKEN(ColonQuestion, ":?")) CARBON_SYMBOL_TOKEN(EqualEqual, "==") CARBON_SYMBOL_TOKEN(EqualGreater, "=>") CARBON_SYMBOL_TOKEN(ExclaimEqual, "!=") diff --git a/toolchain/parse/handle_binding_pattern.cpp b/toolchain/parse/handle_binding_pattern.cpp index ddc0e416337b..0322679be0f3 100644 --- a/toolchain/parse/handle_binding_pattern.cpp +++ b/toolchain/parse/handle_binding_pattern.cpp @@ -163,7 +163,8 @@ auto HandleBindingPattern(Context& context) -> void { return; } on_error(/*expected_name=*/false); - // Add a substitute for a type node. + // Add a substitute for the identifier name and virtual type-start nodes. + context.AddInvalidParse(*context.position()); context.AddInvalidParse(*context.position()); context.PushState(state, StateKind::BindingPatternFinishAsRegular); return; @@ -255,10 +256,13 @@ auto HandleBindingPattern(Context& context) -> void { // Use the `:` or `:?` for the root node. state.token = context.Consume(); + // Add a virtual node before the binding's type expression. if (!is_form && resolved_generic) { - // Add a virtual node before the compile time binding's type expression. - context.AddNode(NodeKind::CompileTimeBindingPatternStart, state.token, - state.has_error); + context.AddLeafNode(NodeKind::CompileTimeBindingPatternTypeStart, + state.token, state.has_error); + } else { + context.AddLeafNode(NodeKind::BindingPatternTypeStart, state.token, + state.has_error); } context.PushState(state); diff --git a/toolchain/parse/node_kind.def b/toolchain/parse/node_kind.def index 6d493818f16a..4ec6732c3c42 100644 --- a/toolchain/parse/node_kind.def +++ b/toolchain/parse/node_kind.def @@ -185,13 +185,14 @@ CARBON_PARSE_NODE_KIND(ArrayExpr) CARBON_PARSE_NODE_KIND(RefBindingName) CARBON_PARSE_NODE_KIND(RuntimeBindingName) CARBON_PARSE_NODE_KIND(UnusedPattern) +CARBON_PARSE_NODE_KIND(BindingPatternTypeStart) CARBON_PARSE_NODE_KIND(LetBindingPattern) CARBON_PARSE_NODE_KIND(SelfBindingPattern) CARBON_PARSE_NODE_KIND(AssociatedConstantNameAndType) CARBON_PARSE_NODE_KIND(VarBindingPattern) CARBON_PARSE_NODE_KIND(FormBindingPattern) CARBON_PARSE_NODE_KIND(TemplateBindingName) -CARBON_PARSE_NODE_KIND(CompileTimeBindingPatternStart) +CARBON_PARSE_NODE_KIND(CompileTimeBindingPatternTypeStart) CARBON_PARSE_NODE_KIND(CompileTimeBindingPattern) CARBON_PARSE_NODE_KIND(LetIntroducer) diff --git a/toolchain/parse/testdata/array/basic.carbon b/toolchain/parse/testdata/array/basic.carbon index bc05935e6abb..04c3517a24a7 100644 --- a/toolchain/parse/testdata/array/basic.carbon +++ b/toolchain/parse/testdata/array/basic.carbon @@ -15,14 +15,15 @@ var x: array(i32, 10); // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'ArrayExprKeyword', text: 'array'}, // CHECK:STDOUT: {kind: 'ArrayExprOpenParen', text: '('}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'ArrayExprComma', text: ','}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '10'}, // CHECK:STDOUT: {kind: 'ArrayExpr', text: ')', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/array/fail_syntax.carbon b/toolchain/parse/testdata/array/fail_syntax.carbon index c595e92037cd..1ad79d245e88 100644 --- a/toolchain/parse/testdata/array/fail_syntax.carbon +++ b/toolchain/parse/testdata/array/fail_syntax.carbon @@ -133,15 +133,16 @@ var x: array; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'ArrayExprKeyword', text: 'array'}, // CHECK:STDOUT: {kind: 'ArrayExprOpenParen', text: '('}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'ArrayExprComma', text: ')', has_error: yes}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ')', has_error: yes}, // CHECK:STDOUT: {kind: 'ArrayExpr', text: ')', has_error: yes, subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: fail_invalid_char.carbon @@ -166,15 +167,16 @@ var x: array; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'ArrayExprKeyword', text: 'array'}, // CHECK:STDOUT: {kind: 'ArrayExprOpenParen', text: '('}, // CHECK:STDOUT: {kind: 'InvalidParse', text: '`', has_error: yes}, // CHECK:STDOUT: {kind: 'ArrayExprComma', text: '`', has_error: yes}, // CHECK:STDOUT: {kind: 'InvalidParse', text: '`', has_error: yes}, // CHECK:STDOUT: {kind: 'ArrayExpr', text: ')', has_error: yes, subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: fail_no_open_paren.carbon @@ -182,15 +184,16 @@ var x: array; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'ArrayExprKeyword', text: 'array'}, // CHECK:STDOUT: {kind: 'ArrayExprOpenParen', text: 'array', has_error: yes}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'ArrayExprComma', text: ','}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '1'}, // CHECK:STDOUT: {kind: 'ArrayExpr', text: 'array', has_error: yes, subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: fail_no_close_paren.carbon @@ -198,15 +201,16 @@ var x: array; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'ArrayExprKeyword', text: 'array'}, // CHECK:STDOUT: {kind: 'ArrayExprOpenParen', text: 'array', has_error: yes}, // CHECK:STDOUT: {kind: 'InvalidParse', text: '(', has_error: yes}, // CHECK:STDOUT: {kind: 'ArrayExprComma', text: '(', has_error: yes}, // CHECK:STDOUT: {kind: 'InvalidParse', text: '(', has_error: yes}, // CHECK:STDOUT: {kind: 'ArrayExpr', text: 'array', has_error: yes, subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', has_error: yes, subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', has_error: yes, subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: fail_no_length.carbon @@ -214,15 +218,16 @@ var x: array; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'ArrayExprKeyword', text: 'array'}, // CHECK:STDOUT: {kind: 'ArrayExprOpenParen', text: '('}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'ArrayExprComma', text: ','}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ')', has_error: yes}, // CHECK:STDOUT: {kind: 'ArrayExpr', text: ')', has_error: yes, subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: fail_no_params.carbon @@ -230,15 +235,16 @@ var x: array; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'ArrayExprKeyword', text: 'array'}, // CHECK:STDOUT: {kind: 'ArrayExprOpenParen', text: '('}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ')', has_error: yes}, // CHECK:STDOUT: {kind: 'ArrayExprComma', text: ')', has_error: yes}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ')', has_error: yes}, // CHECK:STDOUT: {kind: 'ArrayExpr', text: ')', has_error: yes, subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: fail_keyword_alone.carbon @@ -246,14 +252,15 @@ var x: array; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'ArrayExprKeyword', text: 'array'}, // CHECK:STDOUT: {kind: 'ArrayExprOpenParen', text: 'array', has_error: yes}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ';', has_error: yes}, // CHECK:STDOUT: {kind: 'ArrayExprComma', text: ';', has_error: yes}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ';', has_error: yes}, // CHECK:STDOUT: {kind: 'ArrayExpr', text: 'array', has_error: yes, subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/auto/let.carbon b/toolchain/parse/testdata/auto/let.carbon index 2c74437b01d0..dd15ad09b845 100644 --- a/toolchain/parse/testdata/auto/let.carbon +++ b/toolchain/parse/testdata/auto/let.carbon @@ -15,10 +15,11 @@ let x: auto = 1; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'AutoTypeLiteral', text: 'auto'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '1'}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 8}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/auto/match_case.carbon b/toolchain/parse/testdata/auto/match_case.carbon index c91988e3fabd..b1ad254908e3 100644 --- a/toolchain/parse/testdata/auto/match_case.carbon +++ b/toolchain/parse/testdata/auto/match_case.carbon @@ -32,20 +32,21 @@ fn f() -> bool { // CHECK:STDOUT: {kind: 'MatchStatementStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'MatchCaseIntroducer', text: 'case'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'AutoTypeLiteral', text: 'auto'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'MatchCaseGuardIntroducer', text: 'if'}, // CHECK:STDOUT: {kind: 'MatchCaseGuardStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'x'}, // CHECK:STDOUT: {kind: 'BoolLiteralTrue', text: 'true'}, // CHECK:STDOUT: {kind: 'InfixOperatorEqualEqual', text: '==', subtree_size: 3}, // CHECK:STDOUT: {kind: 'MatchCaseGuard', text: ')', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'MatchCase', text: '=>', subtree_size: 11}, -// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'MatchCase', text: '=>', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 13}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'BoolLiteralTrue', text: 'true'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 17}, // CHECK:STDOUT: {kind: 'MatchDefaultIntroducer', text: 'default'}, // CHECK:STDOUT: {kind: 'MatchDefault', text: '=>', subtree_size: 2}, // CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 3}, @@ -53,7 +54,7 @@ fn f() -> bool { // CHECK:STDOUT: {kind: 'BoolLiteralFalse', text: 'false'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, // CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'MatchStatement', text: '}', subtree_size: 29}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 37}, +// CHECK:STDOUT: {kind: 'MatchStatement', text: '}', subtree_size: 30}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 38}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/auto/var.carbon b/toolchain/parse/testdata/auto/var.carbon index 74c8b9fcb571..1cc365cf85a7 100644 --- a/toolchain/parse/testdata/auto/var.carbon +++ b/toolchain/parse/testdata/auto/var.carbon @@ -15,11 +15,12 @@ var y: auto = false; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'AutoTypeLiteral', text: 'auto'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'BoolLiteralFalse', text: 'false'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/basics/fail_bracket_recovery.carbon b/toolchain/parse/testdata/basics/fail_bracket_recovery.carbon index 02b42db7dfb9..28cdc9eadb45 100644 --- a/toolchain/parse/testdata/basics/fail_bracket_recovery.carbon +++ b/toolchain/parse/testdata/basics/fail_bracket_recovery.carbon @@ -41,14 +41,15 @@ fn F() { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'ArrayExprKeyword', text: 'array'}, // CHECK:STDOUT: {kind: 'ArrayExprOpenParen', text: '('}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'ArrayExprComma', text: ','}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '3'}, // CHECK:STDOUT: {kind: 'ArrayExpr', text: ')', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, @@ -57,7 +58,7 @@ fn F() { // CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '2'}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 19}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 20}, // CHECK:STDOUT: {kind: 'ParenExprStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'a'}, // CHECK:STDOUT: {kind: 'IndexExprStart', text: '[', subtree_size: 2}, @@ -69,6 +70,7 @@ fn F() { // CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructTypeLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, // CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, @@ -76,8 +78,8 @@ fn F() { // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, // CHECK:STDOUT: {kind: 'StructTypeLiteralField', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'StructTypeLiteral', text: '}', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 11}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, @@ -88,7 +90,7 @@ fn F() { // CHECK:STDOUT: {kind: 'ParenExpr', text: ')', subtree_size: 4}, // CHECK:STDOUT: {kind: 'StructLiteralField', text: '=', subtree_size: 7}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 22}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 56}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 23}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 58}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/basics/multiline_string_recovery.carbon b/toolchain/parse/testdata/basics/multiline_string_recovery.carbon index 2c57f51c5df1..042f98fb6d36 100644 --- a/toolchain/parse/testdata/basics/multiline_string_recovery.carbon +++ b/toolchain/parse/testdata/basics/multiline_string_recovery.carbon @@ -38,20 +38,22 @@ str // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'bad'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', has_error: yes, subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', has_error: yes, subtree_size: 9}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 22}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 24}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/basics/parens.carbon b/toolchain/parse/testdata/basics/parens.carbon index 948bed687248..0c74f56eeab7 100644 --- a/toolchain/parse/testdata/basics/parens.carbon +++ b/toolchain/parse/testdata/basics/parens.carbon @@ -19,12 +19,13 @@ fn F(n: i32) -> i32 { // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 11}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'ParenExprStart', text: '('}, // CHECK:STDOUT: {kind: 'ParenExprStart', text: '('}, @@ -36,6 +37,6 @@ fn F(n: i32) -> i32 { // CHECK:STDOUT: {kind: 'ParenExpr', text: ')', subtree_size: 7}, // CHECK:STDOUT: {kind: 'ParenExpr', text: ')', subtree_size: 9}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 11}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 22}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 23}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/basics/type_literals.carbon b/toolchain/parse/testdata/basics/type_literals.carbon index a21874b37790..15d6153ab96a 100644 --- a/toolchain/parse/testdata/basics/type_literals.carbon +++ b/toolchain/parse/testdata/basics/type_literals.carbon @@ -18,35 +18,39 @@ var test_str: str = "Test"; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'test_i32'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'test_f64'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'FloatTypeLiteral', text: 'f64'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'RealLiteral', text: '0.1'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'test_char'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'CharTypeLiteral', text: 'char'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'CharLiteral', text: ''c''}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'test_str'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StringTypeLiteral', text: 'str'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StringLiteral', text: '"Test"'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/basics/value_literals.carbon b/toolchain/parse/testdata/basics/value_literals.carbon index f4fe63d63f0f..999e4de74715 100644 --- a/toolchain/parse/testdata/basics/value_literals.carbon +++ b/toolchain/parse/testdata/basics/value_literals.carbon @@ -50,14 +50,15 @@ var test_str: str = "Test"; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'ints'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'ArrayExprKeyword', text: 'array'}, // CHECK:STDOUT: {kind: 'ArrayExprOpenParen', text: '('}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'ArrayExprComma', text: ','}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '5'}, // CHECK:STDOUT: {kind: 'ArrayExpr', text: ')', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '8'}, @@ -71,7 +72,7 @@ var test_str: str = "Test"; // CHECK:STDOUT: {kind: 'IntLiteral', text: '39999999999999999993'}, // CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 12}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 24}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 25}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: real_literals.carbon @@ -79,14 +80,15 @@ var test_str: str = "Test"; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'reals'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'ArrayExprKeyword', text: 'array'}, // CHECK:STDOUT: {kind: 'ArrayExprOpenParen', text: '('}, // CHECK:STDOUT: {kind: 'FloatTypeLiteral', text: 'f64'}, // CHECK:STDOUT: {kind: 'ArrayExprComma', text: ','}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '7'}, // CHECK:STDOUT: {kind: 'ArrayExpr', text: ')', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'RealLiteral', text: '0.9'}, @@ -104,7 +106,7 @@ var test_str: str = "Test"; // CHECK:STDOUT: {kind: 'RealLiteral', text: '39999999999999999993.0e39999999999999999993'}, // CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 16}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 28}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 29}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: bool_literal.carbon @@ -112,20 +114,22 @@ var test_str: str = "Test"; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'f'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'BoolLiteralFalse', text: 'false'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 't'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'BoolLiteralTrue', text: 'true'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: char_literal.carbon @@ -133,14 +137,15 @@ var test_str: str = "Test"; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'c'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'CoreNameExpr', text: 'Core'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'Char'}, // CHECK:STDOUT: {kind: 'MemberAccessExpr', text: '.', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 7}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'CharLiteral', text: ''c''}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: string_literal.carbon @@ -148,11 +153,12 @@ var test_str: str = "Test"; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'test_str'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StringTypeLiteral', text: 'str'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StringLiteral', text: '"Test"'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/choice/fail_missing_definition_parameterized.carbon b/toolchain/parse/testdata/choice/fail_missing_definition_parameterized.carbon index e0dfa6540b7b..c6f0d959c493 100644 --- a/toolchain/parse/testdata/choice/fail_missing_definition_parameterized.carbon +++ b/toolchain/parse/testdata/choice/fail_missing_definition_parameterized.carbon @@ -20,8 +20,8 @@ choice MissingDefinition(T: type); // CHECK:STDOUT: {kind: 'ChoiceIntroducer', text: 'choice'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'MissingDefinition'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, diff --git a/toolchain/parse/testdata/choice/parameterized.carbon b/toolchain/parse/testdata/choice/parameterized.carbon index fcfcc72d40ac..e0256a53c48a 100644 --- a/toolchain/parse/testdata/choice/parameterized.carbon +++ b/toolchain/parse/testdata/choice/parameterized.carbon @@ -19,8 +19,8 @@ choice OptionalElement(T: type) { // CHECK:STDOUT: {kind: 'ChoiceIntroducer', text: 'choice'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'OptionalElement'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, @@ -28,12 +28,13 @@ choice OptionalElement(T: type) { // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Element'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'value'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'T'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, // CHECK:STDOUT: {kind: 'ChoiceAlternativeListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'None'}, // CHECK:STDOUT: {kind: 'ChoiceAlternativeListComma', text: ','}, -// CHECK:STDOUT: {kind: 'ChoiceDefinition', text: '}', subtree_size: 19}, +// CHECK:STDOUT: {kind: 'ChoiceDefinition', text: '}', subtree_size: 20}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/class/fail_var_name.carbon b/toolchain/parse/testdata/class/fail_var_name.carbon index c11c17f14246..8356acd0d83f 100644 --- a/toolchain/parse/testdata/class/fail_var_name.carbon +++ b/toolchain/parse/testdata/class/fail_var_name.carbon @@ -86,37 +86,40 @@ class C { // CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 4}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'name'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ';', has_error: yes}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', has_error: yes, subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', has_error: yes, subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', has_error: yes, subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', has_error: yes, subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'name'}, // CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 2}, // CHECK:STDOUT: {kind: 'VariableDecl', text: ';', has_error: yes, subtree_size: 4}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'name'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'C'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', has_error: yes, subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', has_error: yes, subtree_size: 7}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'SelfValueName', text: 'self'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'C'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'name'}, // CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 2}, // CHECK:STDOUT: {kind: 'VariableDecl', text: ';', has_error: yes, subtree_size: 4}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'name'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'name'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'C'}, // CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', has_error: yes, subtree_size: 4}, // CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', has_error: yes, subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'ClassDefinition', text: '}', subtree_size: 53}, +// CHECK:STDOUT: {kind: 'ClassDefinition', text: '}', subtree_size: 56}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/class/var.carbon b/toolchain/parse/testdata/class/var.carbon index 117598a9795b..829eb7be6ff4 100644 --- a/toolchain/parse/testdata/class/var.carbon +++ b/toolchain/parse/testdata/class/var.carbon @@ -23,25 +23,28 @@ class Foo { // CHECK:STDOUT: {kind: 'ClassDefinitionStart', text: '{', subtree_size: 3}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'StaticModifier', text: 'static'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'z'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'ClassDefinition', text: '}', subtree_size: 25}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'ClassDefinition', text: '}', subtree_size: 28}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/for/fail_colon_instead_of_in.carbon b/toolchain/parse/testdata/for/fail_colon_instead_of_in.carbon index 68560e192a87..b4e3de2f4454 100644 --- a/toolchain/parse/testdata/for/fail_colon_instead_of_in.carbon +++ b/toolchain/parse/testdata/for/fail_colon_instead_of_in.carbon @@ -28,11 +28,12 @@ fn foo() { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'ForHeaderStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'ForIn', text: ':', has_error: yes, subtree_size: 5}, -// CHECK:STDOUT: {kind: 'ForHeader', text: ')', has_error: yes, subtree_size: 7}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'ForIn', text: ':', has_error: yes, subtree_size: 6}, +// CHECK:STDOUT: {kind: 'ForHeader', text: ')', has_error: yes, subtree_size: 8}, // CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'Print'}, // CHECK:STDOUT: {kind: 'CallExprStart', text: '(', subtree_size: 2}, @@ -40,7 +41,7 @@ fn foo() { // CHECK:STDOUT: {kind: 'CallExpr', text: ')', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 5}, // CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'ForStatement', text: 'for', subtree_size: 15}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 21}, +// CHECK:STDOUT: {kind: 'ForStatement', text: 'for', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 22}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/for/fail_missing_in.carbon b/toolchain/parse/testdata/for/fail_missing_in.carbon index 9c94d567d5d7..bf6b744c6613 100644 --- a/toolchain/parse/testdata/for/fail_missing_in.carbon +++ b/toolchain/parse/testdata/for/fail_missing_in.carbon @@ -28,11 +28,12 @@ fn foo() { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'ForHeaderStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'ForIn', text: '(', has_error: yes, subtree_size: 5}, -// CHECK:STDOUT: {kind: 'ForHeader', text: ')', has_error: yes, subtree_size: 7}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'ForIn', text: '(', has_error: yes, subtree_size: 6}, +// CHECK:STDOUT: {kind: 'ForHeader', text: ')', has_error: yes, subtree_size: 8}, // CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'Print'}, // CHECK:STDOUT: {kind: 'CallExprStart', text: '(', subtree_size: 2}, @@ -40,7 +41,7 @@ fn foo() { // CHECK:STDOUT: {kind: 'CallExpr', text: ')', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 5}, // CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'ForStatement', text: 'for', subtree_size: 15}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 21}, +// CHECK:STDOUT: {kind: 'ForStatement', text: 'for', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 22}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/for/nested.carbon b/toolchain/parse/testdata/for/nested.carbon index 61457acb2e87..cab578b18f7b 100644 --- a/toolchain/parse/testdata/for/nested.carbon +++ b/toolchain/parse/testdata/for/nested.carbon @@ -26,21 +26,23 @@ fn foo() { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'ForHeaderStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'ForIn', text: 'in', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'ForIn', text: 'in', subtree_size: 6}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'x'}, -// CHECK:STDOUT: {kind: 'ForHeader', text: ')', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'ForHeader', text: ')', subtree_size: 9}, // CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, // CHECK:STDOUT: {kind: 'ForHeaderStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'z'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'ForIn', text: 'in', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'ForIn', text: 'in', subtree_size: 6}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'y'}, -// CHECK:STDOUT: {kind: 'ForHeader', text: ')', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'ForHeader', text: ')', subtree_size: 9}, // CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'Print'}, // CHECK:STDOUT: {kind: 'CallExprStart', text: '(', subtree_size: 2}, @@ -48,9 +50,9 @@ fn foo() { // CHECK:STDOUT: {kind: 'CallExpr', text: ')', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 5}, // CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'ForStatement', text: 'for', subtree_size: 16}, -// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 18}, -// CHECK:STDOUT: {kind: 'ForStatement', text: 'for', subtree_size: 27}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 33}, +// CHECK:STDOUT: {kind: 'ForStatement', text: 'for', subtree_size: 17}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 19}, +// CHECK:STDOUT: {kind: 'ForStatement', text: 'for', subtree_size: 29}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 35}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/for/pattern.carbon b/toolchain/parse/testdata/for/pattern.carbon index 062390a08cb0..17b8c374ba9a 100644 --- a/toolchain/parse/testdata/for/pattern.carbon +++ b/toolchain/parse/testdata/for/pattern.carbon @@ -42,35 +42,9 @@ fn foo() { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'ForHeaderStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ForIn', text: 'in', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'y'}, -// CHECK:STDOUT: {kind: 'ForHeader', text: ')', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, -// CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'Print'}, -// CHECK:STDOUT: {kind: 'CallExprStart', text: '(', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'x'}, -// CHECK:STDOUT: {kind: 'CallExpr', text: ')', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'ForStatement', text: 'for', subtree_size: 15}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 21}, -// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, -// CHECK:STDOUT: ] -// CHECK:STDOUT: - filename: var.carbon -// CHECK:STDOUT: parse_tree: [ -// CHECK:STDOUT: {kind: 'FileStart', text: ''}, -// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'foo'}, -// CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'ForHeaderStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, -// CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ForIn', text: 'in', subtree_size: 5}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'y'}, // CHECK:STDOUT: {kind: 'ForHeader', text: ')', subtree_size: 8}, @@ -85,6 +59,34 @@ fn foo() { // CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 22}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] +// CHECK:STDOUT: - filename: var.carbon +// CHECK:STDOUT: parse_tree: [ +// CHECK:STDOUT: {kind: 'FileStart', text: ''}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'foo'}, +// CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'ForHeaderStart', text: '('}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, +// CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'ForIn', text: 'in', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'y'}, +// CHECK:STDOUT: {kind: 'ForHeader', text: ')', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, +// CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'Print'}, +// CHECK:STDOUT: {kind: 'CallExprStart', text: '(', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'x'}, +// CHECK:STDOUT: {kind: 'CallExpr', text: ')', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'ForStatement', text: 'for', subtree_size: 17}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 23}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: ] // CHECK:STDOUT: - filename: tuple.carbon // CHECK:STDOUT: parse_tree: [ // CHECK:STDOUT: {kind: 'FileStart', text: ''}, @@ -96,16 +98,18 @@ fn foo() { // CHECK:STDOUT: {kind: 'ForHeaderStart', text: '('}, // CHECK:STDOUT: {kind: 'TuplePatternStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'ForIn', text: 'in', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'ForIn', text: 'in', subtree_size: 12}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'z'}, -// CHECK:STDOUT: {kind: 'ForHeader', text: ')', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'ForHeader', text: ')', subtree_size: 15}, // CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'Print'}, // CHECK:STDOUT: {kind: 'CallExprStart', text: '(', subtree_size: 2}, @@ -113,7 +117,7 @@ fn foo() { // CHECK:STDOUT: {kind: 'CallExpr', text: ')', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 5}, // CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'ForStatement', text: 'for', subtree_size: 21}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 27}, +// CHECK:STDOUT: {kind: 'ForStatement', text: 'for', subtree_size: 23}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 29}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/function/decl_statement.carbon b/toolchain/parse/testdata/function/decl_statement.carbon index bdaaf1da5bed..f329c2c418b5 100644 --- a/toolchain/parse/testdata/function/decl_statement.carbon +++ b/toolchain/parse/testdata/function/decl_statement.carbon @@ -103,18 +103,20 @@ fn F() { // CHECK:STDOUT: {kind: 'ChoiceDefinition', text: '}', subtree_size: 4}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 8}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'v'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 69}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 71}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: syntactically_valid.carbon @@ -172,17 +174,19 @@ fn F() { // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'PrivateModifier', text: 'private'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'v'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'ProtectedModifier', text: 'protected'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'v'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 64}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 66}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/function/declaration.carbon b/toolchain/parse/testdata/function/declaration.carbon index 052c361b07ba..ad80e589aceb 100644 --- a/toolchain/parse/testdata/function/declaration.carbon +++ b/toolchain/parse/testdata/function/declaration.carbon @@ -202,10 +202,11 @@ fn ComplexReturnForm() ->? X.Y(Z); // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, // CHECK:STDOUT: {kind: 'RefBindingName', text: 'ref', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 10}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: implicit_empty.carbon @@ -226,13 +227,13 @@ fn ComplexReturnForm() ->? X.Y(Z); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'foo'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 11}, @@ -257,14 +258,16 @@ fn ComplexReturnForm() ->? X.Y(Z); // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'foo'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 14}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: with_return_type.carbon @@ -450,23 +453,25 @@ fn ComplexReturnForm() ->? X.Y(Z); // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'FormParam'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':?'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'Form'}, -// CHECK:STDOUT: {kind: 'FormBindingPattern', text: ':?', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'FormBindingPattern', text: ':?', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'ComplexFormParam'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':?'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'X'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'Y'}, // CHECK:STDOUT: {kind: 'MemberAccessExpr', text: '.', subtree_size: 3}, // CHECK:STDOUT: {kind: 'CallExprStart', text: '(', subtree_size: 4}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'Z'}, // CHECK:STDOUT: {kind: 'CallExpr', text: ')', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'FormBindingPattern', text: ':?', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 10}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'FormBindingPattern', text: ':?', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 14}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: fail_ref_on_form_parameter.carbon @@ -476,10 +481,11 @@ fn ComplexReturnForm() ->? X.Y(Z); // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':?', has_error: yes}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'Form'}, -// CHECK:STDOUT: {kind: 'FormBindingPattern', text: ':?', has_error: yes, subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', has_error: yes, subtree_size: 5}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'FormBindingPattern', text: ':?', has_error: yes, subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', has_error: yes, subtree_size: 6}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: fail_form_within_var.carbon @@ -489,11 +495,12 @@ fn ComplexReturnForm() ->? X.Y(Z); // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'FormInVar'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':?'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'Form'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':?', has_error: yes, subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', has_error: yes, subtree_size: 4}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', has_error: yes, subtree_size: 6}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':?', has_error: yes, subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', has_error: yes, subtree_size: 5}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', has_error: yes, subtree_size: 7}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 10}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: return_form.carbon diff --git a/toolchain/parse/testdata/function/definition.carbon b/toolchain/parse/testdata/function/definition.carbon index 8cab42a18d15..75434259f52c 100644 --- a/toolchain/parse/testdata/function/definition.carbon +++ b/toolchain/parse/testdata/function/definition.carbon @@ -96,14 +96,16 @@ fn TestRecoveryFromSpuriousEquals(); // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'foo'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'bar'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i64'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'baz'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i64'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 14}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'foo'}, // CHECK:STDOUT: {kind: 'CallExprStart', text: '(', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'baz'}, @@ -113,7 +115,7 @@ fn TestRecoveryFromSpuriousEquals(); // CHECK:STDOUT: {kind: 'InfixOperatorPlus', text: '+', subtree_size: 3}, // CHECK:STDOUT: {kind: 'CallExpr', text: ')', subtree_size: 8}, // CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 22}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 24}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: with_return_type.carbon @@ -157,16 +159,17 @@ fn TestRecoveryFromSpuriousEquals(); // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'NamedParams'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 10}, // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'PositionalParams'}, // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 3}, // CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 19}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 20}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: builtin.carbon diff --git a/toolchain/parse/testdata/function/fail_template_form_param.carbon b/toolchain/parse/testdata/function/fail_template_form_param.carbon index c620e0444274..85dfa4e72110 100644 --- a/toolchain/parse/testdata/function/fail_template_form_param.carbon +++ b/toolchain/parse/testdata/function/fail_template_form_param.carbon @@ -22,9 +22,10 @@ fn F(template x:? Form); // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':?', has_error: yes}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'Form'}, -// CHECK:STDOUT: {kind: 'FormBindingPattern', text: ':?', has_error: yes, subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', has_error: yes, subtree_size: 5}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'FormBindingPattern', text: ':?', has_error: yes, subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', has_error: yes, subtree_size: 6}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/function/terse.carbon b/toolchain/parse/testdata/function/terse.carbon index f416d35f8572..b3d9773d74c1 100644 --- a/toolchain/parse/testdata/function/terse.carbon +++ b/toolchain/parse/testdata/function/terse.carbon @@ -19,25 +19,27 @@ fn G(x: i32) -> i32 => x; // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '=>', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '=>', subtree_size: 9}, // CHECK:STDOUT: {kind: 'TerseBodyArrow', text: '=>'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'x'}, -// CHECK:STDOUT: {kind: 'FunctionTerseDefinition', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'FunctionTerseDefinition', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'G'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '=>', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '=>', subtree_size: 11}, // CHECK:STDOUT: {kind: 'TerseBodyArrow', text: '=>'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'x'}, -// CHECK:STDOUT: {kind: 'FunctionTerseDefinition', text: ';', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'FunctionTerseDefinition', text: ';', subtree_size: 14}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/generics/deduced_params/no_parens.carbon b/toolchain/parse/testdata/generics/deduced_params/no_parens.carbon index 5b1619c0ab40..ac03cb9142c4 100644 --- a/toolchain/parse/testdata/generics/deduced_params/no_parens.carbon +++ b/toolchain/parse/testdata/generics/deduced_params/no_parens.carbon @@ -35,8 +35,8 @@ interface Bar[].Baz[] {} // CHECK:STDOUT: {kind: 'ClassIntroducer', text: 'class'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Foo'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 6}, @@ -55,8 +55,8 @@ interface Bar[].Baz[] {} // CHECK:STDOUT: {kind: 'InterfaceIntroducer', text: 'interface'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Bar'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 6}, diff --git a/toolchain/parse/testdata/generics/deduced_params/one.carbon b/toolchain/parse/testdata/generics/deduced_params/one.carbon index c509da46c7cc..393cacf2ea73 100644 --- a/toolchain/parse/testdata/generics/deduced_params/one.carbon +++ b/toolchain/parse/testdata/generics/deduced_params/one.carbon @@ -18,8 +18,8 @@ interface Bar[a: i32]() {} // CHECK:STDOUT: {kind: 'ClassIntroducer', text: 'class'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Foo'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 6}, @@ -29,8 +29,8 @@ interface Bar[a: i32]() {} // CHECK:STDOUT: {kind: 'InterfaceIntroducer', text: 'interface'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Bar'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 6}, diff --git a/toolchain/parse/testdata/generics/deduced_params/one_suffix_comma.carbon b/toolchain/parse/testdata/generics/deduced_params/one_suffix_comma.carbon index 6bcc73f90f3c..a919ddaa7f36 100644 --- a/toolchain/parse/testdata/generics/deduced_params/one_suffix_comma.carbon +++ b/toolchain/parse/testdata/generics/deduced_params/one_suffix_comma.carbon @@ -18,8 +18,8 @@ interface Bar[a: i32,]() {} // CHECK:STDOUT: {kind: 'ClassIntroducer', text: 'class'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Foo'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, @@ -30,8 +30,8 @@ interface Bar[a: i32,]() {} // CHECK:STDOUT: {kind: 'InterfaceIntroducer', text: 'interface'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Bar'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, diff --git a/toolchain/parse/testdata/generics/deduced_params/six.carbon b/toolchain/parse/testdata/generics/deduced_params/six.carbon index b9ea46c7b092..5e0ea2fc720e 100644 --- a/toolchain/parse/testdata/generics/deduced_params/six.carbon +++ b/toolchain/parse/testdata/generics/deduced_params/six.carbon @@ -18,33 +18,33 @@ interface Bar[a: i32, b: i32, c: i32, d: i32, e: i32, f: i32]() {} // CHECK:STDOUT: {kind: 'ClassIntroducer', text: 'class'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Foo'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'c'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'c'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'd'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'd'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'e'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'e'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'f'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'f'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 31}, @@ -54,33 +54,33 @@ interface Bar[a: i32, b: i32, c: i32, d: i32, e: i32, f: i32]() {} // CHECK:STDOUT: {kind: 'InterfaceIntroducer', text: 'interface'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Bar'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'c'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'c'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'd'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'd'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'e'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'e'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'f'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'f'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 31}, diff --git a/toolchain/parse/testdata/generics/deduced_params/two.carbon b/toolchain/parse/testdata/generics/deduced_params/two.carbon index 5a1ab9e1c921..179ccb4e2c27 100644 --- a/toolchain/parse/testdata/generics/deduced_params/two.carbon +++ b/toolchain/parse/testdata/generics/deduced_params/two.carbon @@ -18,13 +18,13 @@ interface Bar[a: i32, b: i32]() {} // CHECK:STDOUT: {kind: 'ClassIntroducer', text: 'class'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Foo'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 11}, @@ -34,13 +34,13 @@ interface Bar[a: i32, b: i32]() {} // CHECK:STDOUT: {kind: 'InterfaceIntroducer', text: 'interface'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Bar'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 11}, diff --git a/toolchain/parse/testdata/generics/deduced_params/two_suffix_comma.carbon b/toolchain/parse/testdata/generics/deduced_params/two_suffix_comma.carbon index 1640d8ccff10..c3c3986c29d8 100644 --- a/toolchain/parse/testdata/generics/deduced_params/two_suffix_comma.carbon +++ b/toolchain/parse/testdata/generics/deduced_params/two_suffix_comma.carbon @@ -18,13 +18,13 @@ interface Bar[a: i32, b: i32,]() {} // CHECK:STDOUT: {kind: 'ClassIntroducer', text: 'class'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Foo'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, @@ -35,13 +35,13 @@ interface Bar[a: i32, b: i32,]() {} // CHECK:STDOUT: {kind: 'InterfaceIntroducer', text: 'interface'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Bar'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, diff --git a/toolchain/parse/testdata/generics/generic_params/basic.carbon b/toolchain/parse/testdata/generics/generic_params/basic.carbon index 9e034e5ea24b..b19f9e95dd27 100644 --- a/toolchain/parse/testdata/generics/generic_params/basic.carbon +++ b/toolchain/parse/testdata/generics/generic_params/basic.carbon @@ -16,8 +16,8 @@ fn foo(generic a: i32); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'foo'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, diff --git a/toolchain/parse/testdata/generics/generic_params/fail_template_no_param.carbon b/toolchain/parse/testdata/generics/generic_params/fail_template_no_param.carbon index 7c676c5e2264..a5fde039aaae 100644 --- a/toolchain/parse/testdata/generics/generic_params/fail_template_no_param.carbon +++ b/toolchain/parse/testdata/generics/generic_params/fail_template_no_param.carbon @@ -40,9 +40,10 @@ fn E(generic template: i32); // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'i32', has_error: yes}, // CHECK:STDOUT: {kind: 'InvalidParse', text: 'i32', has_error: yes}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: 'template', has_error: yes, subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', has_error: yes, subtree_size: 5}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'InvalidParse', text: 'i32', has_error: yes}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: 'template', has_error: yes, subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', has_error: yes, subtree_size: 6}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: fail_template_no_name.carbon @@ -53,9 +54,10 @@ fn E(generic template: i32); // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: ')', has_error: yes}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ')', has_error: yes}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: 'template', has_error: yes, subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', has_error: yes, subtree_size: 5}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'InvalidParse', text: ')', has_error: yes}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: 'template', has_error: yes, subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', has_error: yes, subtree_size: 6}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: fail_reserved_word_after_generic.carbon @@ -64,8 +66,8 @@ fn E(generic template: i32); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'E'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'template'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'template'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, diff --git a/toolchain/parse/testdata/generics/generic_params/template.carbon b/toolchain/parse/testdata/generics/generic_params/template.carbon index 6bda515d3c81..8b47dd946f0b 100644 --- a/toolchain/parse/testdata/generics/generic_params/template.carbon +++ b/toolchain/parse/testdata/generics/generic_params/template.carbon @@ -38,9 +38,9 @@ fn foo(ref template a: i32); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'foo'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'TemplateBindingName', text: 'template', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'TemplateBindingName', text: 'template', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 7}, @@ -53,9 +53,9 @@ fn foo(ref template a: i32); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'foo'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'TemplateBindingName', text: 'template', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', has_error: yes, subtree_size: 3}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'TemplateBindingName', text: 'template', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':', has_error: yes}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', has_error: yes, subtree_size: 5}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', has_error: yes, subtree_size: 7}, @@ -63,9 +63,9 @@ fn foo(ref template a: i32); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'foo'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'TemplateBindingName', text: 'template', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', has_error: yes, subtree_size: 3}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'TemplateBindingName', text: 'template', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':', has_error: yes}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', has_error: yes, subtree_size: 5}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', has_error: yes, subtree_size: 7}, @@ -75,8 +75,9 @@ fn foo(ref template a: i32); // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'template', has_error: yes}, // CHECK:STDOUT: {kind: 'InvalidParse', text: 'template', has_error: yes}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: 'ref', has_error: yes, subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', has_error: yes, subtree_size: 5}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'InvalidParse', text: 'template', has_error: yes}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: 'ref', has_error: yes, subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', has_error: yes, subtree_size: 6}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/generics/impl/basic.carbon b/toolchain/parse/testdata/generics/impl/basic.carbon index 6101f12ec3d0..41bd13eb5ef5 100644 --- a/toolchain/parse/testdata/generics/impl/basic.carbon +++ b/toolchain/parse/testdata/generics/impl/basic.carbon @@ -27,12 +27,13 @@ impl i32 as Interface { // CHECK:STDOUT: {kind: 'SelfBindingPattern', text: 'self', subtree_size: 2}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 9}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'ImplDefinition', text: '}', subtree_size: 19}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'ImplDefinition', text: '}', subtree_size: 20}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/generics/impl/fail_impl.carbon b/toolchain/parse/testdata/generics/impl/fail_impl.carbon index 4f5f98e7ebd7..e4d23739c68f 100644 --- a/toolchain/parse/testdata/generics/impl/fail_impl.carbon +++ b/toolchain/parse/testdata/generics/impl/fail_impl.carbon @@ -146,8 +146,8 @@ impl // CHECK:STDOUT: {kind: 'ImplIntroducer', text: 'impl'}, // CHECK:STDOUT: {kind: 'Forall', text: 'forall'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 6}, @@ -156,8 +156,8 @@ impl // CHECK:STDOUT: {kind: 'ImplIntroducer', text: 'impl'}, // CHECK:STDOUT: {kind: 'Forall', text: 'forall'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 6}, @@ -166,8 +166,8 @@ impl // CHECK:STDOUT: {kind: 'ImplIntroducer', text: 'impl'}, // CHECK:STDOUT: {kind: 'Forall', text: 'forall'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 6}, diff --git a/toolchain/parse/testdata/generics/impl/final_match_first.carbon b/toolchain/parse/testdata/generics/impl/final_match_first.carbon index 43ecc0c7d754..262e86c8a845 100644 --- a/toolchain/parse/testdata/generics/impl/final_match_first.carbon +++ b/toolchain/parse/testdata/generics/impl/final_match_first.carbon @@ -29,8 +29,8 @@ impl forall [T: J] T as Interface { // CHECK:STDOUT: {kind: 'ImplIntroducer', text: 'impl'}, // CHECK:STDOUT: {kind: 'Forall', text: 'forall'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'I'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 6}, @@ -45,18 +45,19 @@ impl forall [T: J] T as Interface { // CHECK:STDOUT: {kind: 'SelfBindingPattern', text: 'self', subtree_size: 2}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 9}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'ImplDefinition', text: '}', subtree_size: 26}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'ImplDefinition', text: '}', subtree_size: 27}, // CHECK:STDOUT: {kind: 'ImplIntroducer', text: 'impl'}, // CHECK:STDOUT: {kind: 'Forall', text: 'forall'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'J'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 6}, @@ -71,13 +72,14 @@ impl forall [T: J] T as Interface { // CHECK:STDOUT: {kind: 'SelfBindingPattern', text: 'self', subtree_size: 2}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 9}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'ImplDefinition', text: '}', subtree_size: 26}, -// CHECK:STDOUT: {kind: 'MatchFirst', text: '}', subtree_size: 56}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'ImplDefinition', text: '}', subtree_size: 27}, +// CHECK:STDOUT: {kind: 'MatchFirst', text: '}', subtree_size: 58}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/generics/impl/forall.carbon b/toolchain/parse/testdata/generics/impl/forall.carbon index 81e63c1bf009..30a6b9d7572b 100644 --- a/toolchain/parse/testdata/generics/impl/forall.carbon +++ b/toolchain/parse/testdata/generics/impl/forall.carbon @@ -19,8 +19,8 @@ impl forall [T: type, U: Interface] U as Interface(T) { // CHECK:STDOUT: {kind: 'ImplIntroducer', text: 'impl'}, // CHECK:STDOUT: {kind: 'Forall', text: 'forall'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 6}, @@ -31,13 +31,13 @@ impl forall [T: type, U: Interface] U as Interface(T) { // CHECK:STDOUT: {kind: 'ImplIntroducer', text: 'impl'}, // CHECK:STDOUT: {kind: 'Forall', text: 'forall'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'U'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'U'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'Interface'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 11}, diff --git a/toolchain/parse/testdata/generics/impl/match_first.carbon b/toolchain/parse/testdata/generics/impl/match_first.carbon index 125358a9c3d2..f51acbed2df7 100644 --- a/toolchain/parse/testdata/generics/impl/match_first.carbon +++ b/toolchain/parse/testdata/generics/impl/match_first.carbon @@ -75,8 +75,8 @@ impl forall [T: J] T as Interface { // CHECK:STDOUT: {kind: 'ImplIntroducer', text: 'impl'}, // CHECK:STDOUT: {kind: 'Forall', text: 'forall'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'I'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 6}, @@ -91,18 +91,19 @@ impl forall [T: J] T as Interface { // CHECK:STDOUT: {kind: 'SelfBindingPattern', text: 'self', subtree_size: 2}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 9}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'ImplDefinition', text: '}', subtree_size: 26}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'ImplDefinition', text: '}', subtree_size: 27}, // CHECK:STDOUT: {kind: 'ImplIntroducer', text: 'impl'}, // CHECK:STDOUT: {kind: 'Forall', text: 'forall'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'J'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 6}, @@ -117,13 +118,14 @@ impl forall [T: J] T as Interface { // CHECK:STDOUT: {kind: 'SelfBindingPattern', text: 'self', subtree_size: 2}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 9}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'ImplDefinition', text: '}', subtree_size: 26}, -// CHECK:STDOUT: {kind: 'MatchFirst', text: '}', subtree_size: 55}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'ImplDefinition', text: '}', subtree_size: 27}, +// CHECK:STDOUT: {kind: 'MatchFirst', text: '}', subtree_size: 57}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/generics/interface/basic.carbon b/toolchain/parse/testdata/generics/interface/basic.carbon index 29f5d5e82c54..9f09a5bad3e2 100644 --- a/toolchain/parse/testdata/generics/interface/basic.carbon +++ b/toolchain/parse/testdata/generics/interface/basic.carbon @@ -26,26 +26,29 @@ interface Foo { // CHECK:STDOUT: {kind: 'SelfBindingPattern', text: 'self', subtree_size: 2}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, -// CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, -// CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Add'}, -// CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'SelfValueName', text: 'self'}, -// CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'foo'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, -// CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 9}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, // CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 14}, -// CHECK:STDOUT: {kind: 'InterfaceDefinition', text: '}', subtree_size: 31}, +// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, +// CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Add'}, +// CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, +// CHECK:STDOUT: {kind: 'SelfValueName', text: 'self'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, +// CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'foo'}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, +// CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, +// CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'InterfaceDefinition', text: '}', subtree_size: 34}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/generics/interface/default_fn.carbon b/toolchain/parse/testdata/generics/interface/default_fn.carbon index cc9aa6293275..cd9cf47bd211 100644 --- a/toolchain/parse/testdata/generics/interface/default_fn.carbon +++ b/toolchain/parse/testdata/generics/interface/default_fn.carbon @@ -30,12 +30,13 @@ interface Foo { // CHECK:STDOUT: {kind: 'SelfBindingPattern', text: 'self', subtree_size: 2}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 's'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 9}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 14}, // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'DefaultModifier', text: 'default'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Invert'}, @@ -56,6 +57,6 @@ interface Foo { // CHECK:STDOUT: {kind: 'CallExpr', text: ')', subtree_size: 7}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 20}, -// CHECK:STDOUT: {kind: 'InterfaceDefinition', text: '}', subtree_size: 37}, +// CHECK:STDOUT: {kind: 'InterfaceDefinition', text: '}', subtree_size: 38}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/generics/interface/fail_self_param_syntax.carbon b/toolchain/parse/testdata/generics/interface/fail_self_param_syntax.carbon index a29b5c7dd8c8..5c9dfe485167 100644 --- a/toolchain/parse/testdata/generics/interface/fail_self_param_syntax.carbon +++ b/toolchain/parse/testdata/generics/interface/fail_self_param_syntax.carbon @@ -31,12 +31,13 @@ interface Foo { // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', has_error: yes, subtree_size: 3}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 14}, // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Mul'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, @@ -44,12 +45,13 @@ interface Foo { // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 3}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'InterfaceDefinition', text: '}', subtree_size: 30}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'InterfaceDefinition', text: '}', subtree_size: 32}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/generics/interface/final_fn.carbon b/toolchain/parse/testdata/generics/interface/final_fn.carbon index 0e491c16752c..a4461115dde6 100644 --- a/toolchain/parse/testdata/generics/interface/final_fn.carbon +++ b/toolchain/parse/testdata/generics/interface/final_fn.carbon @@ -28,12 +28,13 @@ interface Order { // CHECK:STDOUT: {kind: 'SelfBindingPattern', text: 'self', subtree_size: 2}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'right'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 9}, // CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 14}, // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'FinalModifier', text: 'final'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Greater'}, @@ -42,12 +43,13 @@ interface Order { // CHECK:STDOUT: {kind: 'SelfBindingPattern', text: 'self', subtree_size: 2}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'right'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 9}, // CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 15}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'right'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'Less'}, @@ -56,7 +58,7 @@ interface Order { // CHECK:STDOUT: {kind: 'SelfValueNameExpr', text: 'self'}, // CHECK:STDOUT: {kind: 'CallExpr', text: ')', subtree_size: 6}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 23}, -// CHECK:STDOUT: {kind: 'InterfaceDefinition', text: '}', subtree_size: 40}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 24}, +// CHECK:STDOUT: {kind: 'InterfaceDefinition', text: '}', subtree_size: 42}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/generics/interface/final_member_definition.carbon b/toolchain/parse/testdata/generics/interface/final_member_definition.carbon index 5af3e41ee301..99e807136412 100644 --- a/toolchain/parse/testdata/generics/interface/final_member_definition.carbon +++ b/toolchain/parse/testdata/generics/interface/final_member_definition.carbon @@ -29,18 +29,19 @@ interface Foo { // CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 3}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 10}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 15}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 16}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'print'}, // CHECK:STDOUT: {kind: 'CallExprStart', text: '(', subtree_size: 2}, // CHECK:STDOUT: {kind: 'StringLiteral', text: '"Allowed."'}, // CHECK:STDOUT: {kind: 'CallExpr', text: ')', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 21}, -// CHECK:STDOUT: {kind: 'InterfaceDefinition', text: '}', subtree_size: 25}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 22}, +// CHECK:STDOUT: {kind: 'InterfaceDefinition', text: '}', subtree_size: 26}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/generics/interface/require.carbon b/toolchain/parse/testdata/generics/interface/require.carbon index 5fc9f92bf756..f64e32c3dc50 100644 --- a/toolchain/parse/testdata/generics/interface/require.carbon +++ b/toolchain/parse/testdata/generics/interface/require.carbon @@ -166,8 +166,8 @@ interface Z { // CHECK:STDOUT: {kind: 'InterfaceIntroducer', text: 'interface'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Z'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, diff --git a/toolchain/parse/testdata/generics/interface/self_ref.carbon b/toolchain/parse/testdata/generics/interface/self_ref.carbon index 3e0b91c90e9e..666edbdc6e74 100644 --- a/toolchain/parse/testdata/generics/interface/self_ref.carbon +++ b/toolchain/parse/testdata/generics/interface/self_ref.carbon @@ -27,27 +27,30 @@ interface Foo { // CHECK:STDOUT: {kind: 'SelfBindingPattern', text: 'self', subtree_size: 3}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 10}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 15}, // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Sub'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'SelfValueName', text: 'self'}, // CHECK:STDOUT: {kind: 'RefBindingName', text: 'ref', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'foo'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 12}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 15}, -// CHECK:STDOUT: {kind: 'InterfaceDefinition', text: '}', subtree_size: 33}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 17}, +// CHECK:STDOUT: {kind: 'InterfaceDefinition', text: '}', subtree_size: 36}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/generics/named_constraint/invalid_method.carbon b/toolchain/parse/testdata/generics/named_constraint/invalid_method.carbon index 1f4f005c8208..91126a826115 100644 --- a/toolchain/parse/testdata/generics/named_constraint/invalid_method.carbon +++ b/toolchain/parse/testdata/generics/named_constraint/invalid_method.carbon @@ -31,13 +31,14 @@ constraint Foo { // CHECK:STDOUT: {kind: 'SelfBindingPattern', text: 'self', subtree_size: 2}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 9}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'NamedConstraintDefinition', text: '}', subtree_size: 17}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'NamedConstraintDefinition', text: '}', subtree_size: 18}, // CHECK:STDOUT: {kind: 'NamedConstraintIntroducer', text: 'constraint'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'Foo'}, // CHECK:STDOUT: {kind: 'NamedConstraintDefinitionStart', text: '{', subtree_size: 3}, @@ -49,13 +50,14 @@ constraint Foo { // CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 3}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 10}, // CHECK:STDOUT: {kind: 'SelfTypeNameExpr', text: 'Self'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 14}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 15}, -// CHECK:STDOUT: {kind: 'NamedConstraintDefinition', text: '}', subtree_size: 19}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 15}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'NamedConstraintDefinition', text: '}', subtree_size: 20}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/generics/params/fail_redundant_phase_keyword.carbon b/toolchain/parse/testdata/generics/params/fail_redundant_phase_keyword.carbon index da26d48d3136..17736bbcccfa 100644 --- a/toolchain/parse/testdata/generics/params/fail_redundant_phase_keyword.carbon +++ b/toolchain/parse/testdata/generics/params/fail_redundant_phase_keyword.carbon @@ -54,8 +54,8 @@ fn C.G(runtime x: i32); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 6}, @@ -70,8 +70,8 @@ fn C.G(runtime x: i32); // CHECK:STDOUT: {kind: 'ClassIntroducer', text: 'class'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'C'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, @@ -87,10 +87,11 @@ fn C.G(runtime x: i32); // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, // CHECK:STDOUT: {kind: 'RuntimeBindingName', text: 'runtime', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 10}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: fail_redundant_generic_qualified.carbon @@ -101,8 +102,8 @@ fn C.G(runtime x: i32); // CHECK:STDOUT: {kind: 'IdentifierNameQualifierWithoutParams', text: '.', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 6}, @@ -121,9 +122,10 @@ fn C.G(runtime x: i32); // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, // CHECK:STDOUT: {kind: 'RuntimeBindingName', text: 'runtime', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/generics/params/fail_unused_after_phase_keyword.carbon b/toolchain/parse/testdata/generics/params/fail_unused_after_phase_keyword.carbon index 38e5a84c7864..daf515ccf902 100644 --- a/toolchain/parse/testdata/generics/params/fail_unused_after_phase_keyword.carbon +++ b/toolchain/parse/testdata/generics/params/fail_unused_after_phase_keyword.carbon @@ -38,8 +38,8 @@ fn H(runtime unused x: i32); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', has_error: yes, subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':', has_error: yes}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', has_error: yes, subtree_size: 4}, // CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', has_error: yes, subtree_size: 5}, @@ -55,13 +55,14 @@ fn H(runtime unused x: i32); // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, // CHECK:STDOUT: {kind: 'RuntimeBindingName', text: 'runtime', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':', has_error: yes}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', has_error: yes, subtree_size: 4}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', has_error: yes, subtree_size: 5}, -// CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', has_error: yes, subtree_size: 7}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', has_error: yes, subtree_size: 5}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', has_error: yes, subtree_size: 6}, +// CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', has_error: yes, subtree_size: 8}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 13}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: fail_redundant_runtime_before_unused.carbon @@ -72,10 +73,11 @@ fn H(runtime unused x: i32); // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, // CHECK:STDOUT: {kind: 'RuntimeBindingName', text: 'runtime', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 11}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/generics/params/name_qualifier.carbon b/toolchain/parse/testdata/generics/params/name_qualifier.carbon index e58f71a091bd..2cf067613134 100644 --- a/toolchain/parse/testdata/generics/params/name_qualifier.carbon +++ b/toolchain/parse/testdata/generics/params/name_qualifier.carbon @@ -36,8 +36,8 @@ fn OuterGeneric(T: type).InnerGeneric(U: type).F(x: T, y: U) {} // CHECK:STDOUT: {kind: 'ClassIntroducer', text: 'class'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'GenericClass1'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, @@ -51,8 +51,8 @@ fn OuterGeneric(T: type).InnerGeneric(U: type).F(x: T, y: U) {} // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'GenericClass1'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, @@ -65,14 +65,14 @@ fn OuterGeneric(T: type).InnerGeneric(U: type).F(x: T, y: U) {} // CHECK:STDOUT: {kind: 'ClassIntroducer', text: 'class'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'GenericClass2'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 6}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'X'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'X'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'T'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, @@ -86,14 +86,14 @@ fn OuterGeneric(T: type).InnerGeneric(U: type).F(x: T, y: U) {} // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'GenericClass2'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 6}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'X'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'X'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'T'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, @@ -106,8 +106,8 @@ fn OuterGeneric(T: type).InnerGeneric(U: type).F(x: T, y: U) {} // CHECK:STDOUT: {kind: 'ClassIntroducer', text: 'class'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'OuterGeneric'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, @@ -115,8 +115,8 @@ fn OuterGeneric(T: type).InnerGeneric(U: type).F(x: T, y: U) {} // CHECK:STDOUT: {kind: 'ClassIntroducer', text: 'class'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'InnerGeneric'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'U'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'U'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, @@ -125,16 +125,16 @@ fn OuterGeneric(T: type).InnerGeneric(U: type).F(x: T, y: U) {} // CHECK:STDOUT: {kind: 'ClassIntroducer', text: 'class'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'OuterGeneric'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, // CHECK:STDOUT: {kind: 'IdentifierNameQualifierWithParams', text: '.', subtree_size: 8}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'InnerGeneric'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'U'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'U'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, @@ -143,28 +143,30 @@ fn OuterGeneric(T: type).InnerGeneric(U: type).F(x: T, y: U) {} // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'T'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'U'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 12}, -// CHECK:STDOUT: {kind: 'ClassDefinition', text: '}', subtree_size: 30}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'ClassDefinition', text: '}', subtree_size: 32}, // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'OuterGeneric'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, // CHECK:STDOUT: {kind: 'IdentifierNameQualifierWithParams', text: '.', subtree_size: 8}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'InnerGeneric'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'U'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'U'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, @@ -172,14 +174,16 @@ fn OuterGeneric(T: type).InnerGeneric(U: type).F(x: T, y: U) {} // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'T'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'U'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 28}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 29}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 30}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 31}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/generics/params/one.carbon b/toolchain/parse/testdata/generics/params/one.carbon index 56dedb0c8e5c..f0ca085171c0 100644 --- a/toolchain/parse/testdata/generics/params/one.carbon +++ b/toolchain/parse/testdata/generics/params/one.carbon @@ -18,8 +18,8 @@ interface Bar(a: i32) {} // CHECK:STDOUT: {kind: 'ClassIntroducer', text: 'class'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Foo'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, @@ -27,8 +27,8 @@ interface Bar(a: i32) {} // CHECK:STDOUT: {kind: 'InterfaceIntroducer', text: 'interface'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Bar'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, diff --git a/toolchain/parse/testdata/generics/params/one_suffix_comma.carbon b/toolchain/parse/testdata/generics/params/one_suffix_comma.carbon index 848dff6d60c5..28a4e08c3a3e 100644 --- a/toolchain/parse/testdata/generics/params/one_suffix_comma.carbon +++ b/toolchain/parse/testdata/generics/params/one_suffix_comma.carbon @@ -18,8 +18,8 @@ interface Bar(a: i32,) {} // CHECK:STDOUT: {kind: 'ClassIntroducer', text: 'class'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Foo'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, @@ -28,8 +28,8 @@ interface Bar(a: i32,) {} // CHECK:STDOUT: {kind: 'InterfaceIntroducer', text: 'interface'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Bar'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, diff --git a/toolchain/parse/testdata/generics/params/six.carbon b/toolchain/parse/testdata/generics/params/six.carbon index e41350debcc2..1d2360f9bc84 100644 --- a/toolchain/parse/testdata/generics/params/six.carbon +++ b/toolchain/parse/testdata/generics/params/six.carbon @@ -18,33 +18,33 @@ interface Bar(a: i32, b: i32, c: i32, d: i32, e: i32, f: i32) {} // CHECK:STDOUT: {kind: 'ClassIntroducer', text: 'class'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Foo'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'c'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'c'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'd'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'd'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'e'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'e'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'f'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'f'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 31}, @@ -52,33 +52,33 @@ interface Bar(a: i32, b: i32, c: i32, d: i32, e: i32, f: i32) {} // CHECK:STDOUT: {kind: 'InterfaceIntroducer', text: 'interface'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Bar'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'c'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'c'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'd'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'd'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'e'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'e'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'f'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'f'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 31}, diff --git a/toolchain/parse/testdata/generics/params/two.carbon b/toolchain/parse/testdata/generics/params/two.carbon index 37fcc67ce5a6..c10459c87f71 100644 --- a/toolchain/parse/testdata/generics/params/two.carbon +++ b/toolchain/parse/testdata/generics/params/two.carbon @@ -18,13 +18,13 @@ interface Bar(a: i32, b: i32) {} // CHECK:STDOUT: {kind: 'ClassIntroducer', text: 'class'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Foo'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 11}, @@ -32,13 +32,13 @@ interface Bar(a: i32, b: i32) {} // CHECK:STDOUT: {kind: 'InterfaceIntroducer', text: 'interface'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Bar'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 11}, diff --git a/toolchain/parse/testdata/generics/params/two_suffix_comma.carbon b/toolchain/parse/testdata/generics/params/two_suffix_comma.carbon index f3a933a1172d..e0c5b524ab76 100644 --- a/toolchain/parse/testdata/generics/params/two_suffix_comma.carbon +++ b/toolchain/parse/testdata/generics/params/two_suffix_comma.carbon @@ -18,13 +18,13 @@ interface Bar(a: i32, b: i32,) {} // CHECK:STDOUT: {kind: 'ClassIntroducer', text: 'class'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Foo'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, @@ -33,13 +33,13 @@ interface Bar(a: i32, b: i32,) {} // CHECK:STDOUT: {kind: 'InterfaceIntroducer', text: 'interface'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Bar'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, diff --git a/toolchain/parse/testdata/if_expr/basic.carbon b/toolchain/parse/testdata/if_expr/basic.carbon index 6476929bafc3..fe539692e585 100644 --- a/toolchain/parse/testdata/if_expr/basic.carbon +++ b/toolchain/parse/testdata/if_expr/basic.carbon @@ -19,20 +19,23 @@ fn F(b: bool, x: i32, y: i32) -> bool { // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 16}, // CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 18}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 21}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'b'}, // CHECK:STDOUT: {kind: 'IfExprIf', text: 'if', subtree_size: 2}, @@ -41,6 +44,6 @@ fn F(b: bool, x: i32, y: i32) -> bool { // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'y'}, // CHECK:STDOUT: {kind: 'IfExprElse', text: 'else', subtree_size: 6}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 27}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 30}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/if_expr/fail_condition_missing.carbon b/toolchain/parse/testdata/if_expr/fail_condition_missing.carbon index 44bdda634438..352f49a8e026 100644 --- a/toolchain/parse/testdata/if_expr/fail_condition_missing.carbon +++ b/toolchain/parse/testdata/if_expr/fail_condition_missing.carbon @@ -26,16 +26,17 @@ fn F() { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ';', has_error: yes}, // CHECK:STDOUT: {kind: 'IfExprIf', text: 'if', has_error: yes, subtree_size: 2}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ';', has_error: yes}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ';', has_error: yes}, // CHECK:STDOUT: {kind: 'IfExprElse', text: 'if', has_error: yes, subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 18}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 19}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/if_expr/fail_else_expr_missing.carbon b/toolchain/parse/testdata/if_expr/fail_else_expr_missing.carbon index b9b79e4a9da5..3f43359a026b 100644 --- a/toolchain/parse/testdata/if_expr/fail_else_expr_missing.carbon +++ b/toolchain/parse/testdata/if_expr/fail_else_expr_missing.carbon @@ -26,9 +26,10 @@ fn F() { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'BoolLiteralTrue', text: 'true'}, // CHECK:STDOUT: {kind: 'IfExprIf', text: 'if', subtree_size: 2}, @@ -36,7 +37,7 @@ fn F() { // CHECK:STDOUT: {kind: 'IfExprThen', text: 'then', subtree_size: 2}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ';', has_error: yes}, // CHECK:STDOUT: {kind: 'IfExprElse', text: 'else', has_error: yes, subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 19}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 20}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/if_expr/fail_else_missing.carbon b/toolchain/parse/testdata/if_expr/fail_else_missing.carbon index 2de8a9f79ae5..cc45ab9753e1 100644 --- a/toolchain/parse/testdata/if_expr/fail_else_missing.carbon +++ b/toolchain/parse/testdata/if_expr/fail_else_missing.carbon @@ -26,9 +26,10 @@ fn F() { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'BoolLiteralTrue', text: 'true'}, // CHECK:STDOUT: {kind: 'IfExprIf', text: 'if', subtree_size: 2}, @@ -36,7 +37,7 @@ fn F() { // CHECK:STDOUT: {kind: 'IfExprThen', text: 'then', subtree_size: 2}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ';', has_error: yes}, // CHECK:STDOUT: {kind: 'IfExprElse', text: 'if', has_error: yes, subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 19}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 20}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/if_expr/fail_then_expr_missing.carbon b/toolchain/parse/testdata/if_expr/fail_then_expr_missing.carbon index 12e78e8ea161..28dd1a1b62bc 100644 --- a/toolchain/parse/testdata/if_expr/fail_then_expr_missing.carbon +++ b/toolchain/parse/testdata/if_expr/fail_then_expr_missing.carbon @@ -26,9 +26,10 @@ fn F() { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'BoolLiteralTrue', text: 'true'}, // CHECK:STDOUT: {kind: 'IfExprIf', text: 'if', subtree_size: 2}, @@ -36,7 +37,7 @@ fn F() { // CHECK:STDOUT: {kind: 'IfExprThen', text: 'then', has_error: yes, subtree_size: 2}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ';', has_error: yes}, // CHECK:STDOUT: {kind: 'IfExprElse', text: 'if', has_error: yes, subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 19}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 20}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/if_expr/fail_then_missing.carbon b/toolchain/parse/testdata/if_expr/fail_then_missing.carbon index 6dcdd199654e..ca38e0bf350e 100644 --- a/toolchain/parse/testdata/if_expr/fail_then_missing.carbon +++ b/toolchain/parse/testdata/if_expr/fail_then_missing.carbon @@ -26,16 +26,17 @@ fn F() { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'BoolLiteralTrue', text: 'true'}, // CHECK:STDOUT: {kind: 'IfExprIf', text: 'if', subtree_size: 2}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ';', has_error: yes}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ';', has_error: yes}, // CHECK:STDOUT: {kind: 'IfExprElse', text: 'if', has_error: yes, subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 18}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 19}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/if_expr/in_type.carbon b/toolchain/parse/testdata/if_expr/in_type.carbon index 5b1f57ad64cb..4a60c55a4458 100644 --- a/toolchain/parse/testdata/if_expr/in_type.carbon +++ b/toolchain/parse/testdata/if_expr/in_type.carbon @@ -19,10 +19,11 @@ fn F() -> if true then i32 else i32* { // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, diff --git a/toolchain/parse/testdata/if_expr/precedence.carbon b/toolchain/parse/testdata/if_expr/precedence.carbon index e21aa74a099c..1da48bf540ca 100644 --- a/toolchain/parse/testdata/if_expr/precedence.carbon +++ b/toolchain/parse/testdata/if_expr/precedence.carbon @@ -19,12 +19,13 @@ fn F(b: bool) -> bool { // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, // CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 11}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'b'}, // CHECK:STDOUT: {kind: 'ShortCircuitOperandAnd', text: 'and', subtree_size: 2}, @@ -42,6 +43,6 @@ fn F(b: bool) -> bool { // CHECK:STDOUT: {kind: 'ShortCircuitOperatorOr', text: 'or', subtree_size: 4}, // CHECK:STDOUT: {kind: 'IfExprElse', text: 'else', subtree_size: 15}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 17}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 28}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 29}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/index/assign_to_var.carbon b/toolchain/parse/testdata/index/assign_to_var.carbon index a1b858f2bca8..8a3735f68d27 100644 --- a/toolchain/parse/testdata/index/assign_to_var.carbon +++ b/toolchain/parse/testdata/index/assign_to_var.carbon @@ -15,14 +15,15 @@ var v: i32 = t[0]; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'v'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 't'}, // CHECK:STDOUT: {kind: 'IndexExprStart', text: '[', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'IndexExpr', text: ']', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/index/fail_empty_expr.carbon b/toolchain/parse/testdata/index/fail_empty_expr.carbon index 4271117a3a19..fd32b736e718 100644 --- a/toolchain/parse/testdata/index/fail_empty_expr.carbon +++ b/toolchain/parse/testdata/index/fail_empty_expr.carbon @@ -19,14 +19,15 @@ var v: i32 = t[]; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'v'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 't'}, // CHECK:STDOUT: {kind: 'IndexExprStart', text: '[', subtree_size: 2}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ']', has_error: yes}, // CHECK:STDOUT: {kind: 'IndexExpr', text: ']', has_error: yes, subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/index/fail_malformed_expr.carbon b/toolchain/parse/testdata/index/fail_malformed_expr.carbon index 5211e430e785..6e5776c68479 100644 --- a/toolchain/parse/testdata/index/fail_malformed_expr.carbon +++ b/toolchain/parse/testdata/index/fail_malformed_expr.carbon @@ -19,14 +19,15 @@ var v: i32 = t[0,]; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'v'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 't'}, // CHECK:STDOUT: {kind: 'IndexExprStart', text: '[', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'IndexExpr', text: ']', has_error: yes, subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/lambda/lambda.carbon b/toolchain/parse/testdata/lambda/lambda.carbon index 18cc53e027fe..3cbb1bce567b 100644 --- a/toolchain/parse/testdata/lambda/lambda.carbon +++ b/toolchain/parse/testdata/lambda/lambda.carbon @@ -70,21 +70,24 @@ fn G() { // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'AutoTypeLiteral', text: 'auto'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'LambdaIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 6}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'T'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'T'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, // CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, @@ -92,35 +95,38 @@ fn G() { // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'x'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, // CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'Lambda', text: 'fn', subtree_size: 19}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 26}, +// CHECK:STDOUT: {kind: 'Lambda', text: 'fn', subtree_size: 21}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 29}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'AutoTypeLiteral', text: 'auto'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'LambdaIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, // CHECK:STDOUT: {kind: 'TerseBodyArrow', text: '=>'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'x'}, -// CHECK:STDOUT: {kind: 'Lambda', text: 'fn', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'Lambda', text: 'fn', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 18}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'c'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'AutoTypeLiteral', text: 'auto'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'LambdaIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'CodeBlockStart', text: '{'}, // CHECK:STDOUT: {kind: 'CodeBlock', text: '}', subtree_size: 2}, // CHECK:STDOUT: {kind: 'Lambda', text: 'fn', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: fail_unconsumed_lambda_introducer.carbon @@ -150,15 +156,16 @@ fn G() { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'AutoTypeLiteral', text: 'auto'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'LambdaIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ';', has_error: yes}, // CHECK:STDOUT: {kind: 'Lambda', text: 'fn', has_error: yes, subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 17}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: fail_expected_body_after_return_type.carbon @@ -171,16 +178,17 @@ fn G() { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'AutoTypeLiteral', text: 'auto'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'LambdaIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ';', has_error: yes}, // CHECK:STDOUT: {kind: 'Lambda', text: 'fn', has_error: yes, subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 18}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 19}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/let/fail_generic_ref.carbon b/toolchain/parse/testdata/let/fail_generic_ref.carbon index cca6ae4cc7fa..f6d1b7347f33 100644 --- a/toolchain/parse/testdata/let/fail_generic_ref.carbon +++ b/toolchain/parse/testdata/let/fail_generic_ref.carbon @@ -18,8 +18,8 @@ let generic ref X: i32 = 0; // CHECK:STDOUT: parse_tree: [ // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'X'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', has_error: yes, subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'X'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':', has_error: yes}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', has_error: yes, subtree_size: 4}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, diff --git a/toolchain/parse/testdata/let/fail_missing_name.carbon b/toolchain/parse/testdata/let/fail_missing_name.carbon index ac302a6fe36c..0ce2c5aa348e 100644 --- a/toolchain/parse/testdata/let/fail_missing_name.carbon +++ b/toolchain/parse/testdata/let/fail_missing_name.carbon @@ -38,8 +38,8 @@ let generic : bool = true; // CHECK:STDOUT: parse_tree: [ // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: ':', has_error: yes}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', has_error: yes, subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: ':', has_error: yes}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':', has_error: yes}, // CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'}, // CHECK:STDOUT: {kind: 'CompileTimeBindingPattern', text: ':', has_error: yes, subtree_size: 4}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, diff --git a/toolchain/parse/testdata/let/let.carbon b/toolchain/parse/testdata/let/let.carbon index 98ca9c7f4582..436c28a86c6b 100644 --- a/toolchain/parse/testdata/let/let.carbon +++ b/toolchain/parse/testdata/let/let.carbon @@ -20,18 +20,20 @@ fn F() { // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'v'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 8}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'UnderscoreName', text: '_'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '1'}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 8}, // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, @@ -39,18 +41,20 @@ fn F() { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 's'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StringTypeLiteral', text: 'str'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StringLiteral', text: '"hello"'}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 8}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'UnderscoreName', text: '_'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StringTypeLiteral', text: 'str'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StringLiteral', text: '"goodbye"'}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 20}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 22}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/let/let_ref.carbon b/toolchain/parse/testdata/let/let_ref.carbon index a0552c97f151..c425892bac24 100644 --- a/toolchain/parse/testdata/let/let_ref.carbon +++ b/toolchain/parse/testdata/let/let_ref.carbon @@ -21,19 +21,21 @@ fn F() { // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'v'}, // CHECK:STDOUT: {kind: 'RefBindingName', text: 'ref', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'UnderscoreName', text: '_'}, // CHECK:STDOUT: {kind: 'RefBindingName', text: 'ref', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '1'}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, @@ -42,19 +44,21 @@ fn F() { // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 's'}, // CHECK:STDOUT: {kind: 'RefBindingName', text: 'ref', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StringTypeLiteral', text: 'str'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StringLiteral', text: '"hello"'}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'UnderscoreName', text: '_'}, // CHECK:STDOUT: {kind: 'RefBindingName', text: 'ref', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StringTypeLiteral', text: 'str'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StringLiteral', text: '"goodbye"'}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 22}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 24}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/let/let_tuple.carbon b/toolchain/parse/testdata/let/let_tuple.carbon index 96989f9c37d0..e97c1b3d7d01 100644 --- a/toolchain/parse/testdata/let/let_tuple.carbon +++ b/toolchain/parse/testdata/let/let_tuple.carbon @@ -23,20 +23,22 @@ fn F() { // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'TuplePatternStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 's'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StringTypeLiteral', text: 'str'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'i'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 11}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'StringLiteral', text: '"hello"'}, // CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 17}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 23}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 19}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 25}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/let/missing_value.carbon b/toolchain/parse/testdata/let/missing_value.carbon index f51af82630fe..d896f1ede95c 100644 --- a/toolchain/parse/testdata/let/missing_value.carbon +++ b/toolchain/parse/testdata/let/missing_value.carbon @@ -23,9 +23,10 @@ interface I { // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 6}, // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, @@ -33,10 +34,11 @@ interface I { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 12}, // CHECK:STDOUT: {kind: 'InterfaceIntroducer', text: 'interface'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'I'}, // CHECK:STDOUT: {kind: 'InterfaceDefinitionStart', text: '{', subtree_size: 3}, diff --git a/toolchain/parse/testdata/match/fail_cases_after_default.carbon b/toolchain/parse/testdata/match/fail_cases_after_default.carbon index 1690c30b9d83..daa045d303c7 100644 --- a/toolchain/parse/testdata/match/fail_cases_after_default.carbon +++ b/toolchain/parse/testdata/match/fail_cases_after_default.carbon @@ -43,12 +43,13 @@ fn f() -> i32 { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 7}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '3'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'MatchIntroducer', text: 'match'}, // CHECK:STDOUT: {kind: 'MatchConditionStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'x'}, @@ -65,6 +66,6 @@ fn f() -> i32 { // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 32}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 33}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/match/fail_missing_case_arrow.carbon b/toolchain/parse/testdata/match/fail_missing_case_arrow.carbon index 1c00728851d5..884fbabbc27a 100644 --- a/toolchain/parse/testdata/match/fail_missing_case_arrow.carbon +++ b/toolchain/parse/testdata/match/fail_missing_case_arrow.carbon @@ -41,28 +41,30 @@ fn f() -> i32 { // CHECK:STDOUT: {kind: 'MatchStatementStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'MatchCaseIntroducer', text: 'case'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'MatchCase', text: '{', has_error: yes, subtree_size: 5}, -// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', has_error: yes, subtree_size: 6}, -// CHECK:STDOUT: {kind: 'MatchHandler', text: '{', has_error: yes, subtree_size: 7}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'MatchCase', text: '{', has_error: yes, subtree_size: 6}, +// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', has_error: yes, subtree_size: 7}, +// CHECK:STDOUT: {kind: 'MatchHandler', text: '{', has_error: yes, subtree_size: 8}, // CHECK:STDOUT: {kind: 'MatchCaseIntroducer', text: 'case'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'MatchCaseGuardIntroducer', text: 'if'}, // CHECK:STDOUT: {kind: 'MatchCaseGuardStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'x'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '3'}, // CHECK:STDOUT: {kind: 'InfixOperatorEqualEqual', text: '==', subtree_size: 3}, // CHECK:STDOUT: {kind: 'MatchCaseGuard', text: ')', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'MatchCase', text: '{', has_error: yes, subtree_size: 11}, -// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', has_error: yes, subtree_size: 12}, -// CHECK:STDOUT: {kind: 'MatchHandler', text: '{', has_error: yes, subtree_size: 13}, -// CHECK:STDOUT: {kind: 'MatchStatement', text: '}', subtree_size: 26}, +// CHECK:STDOUT: {kind: 'MatchCase', text: '{', has_error: yes, subtree_size: 12}, +// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', has_error: yes, subtree_size: 13}, +// CHECK:STDOUT: {kind: 'MatchHandler', text: '{', has_error: yes, subtree_size: 14}, +// CHECK:STDOUT: {kind: 'MatchStatement', text: '}', subtree_size: 28}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 37}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 39}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/match/fail_missing_case_statements_block.carbon b/toolchain/parse/testdata/match/fail_missing_case_statements_block.carbon index 093c26b81712..7977d6ad5b6e 100644 --- a/toolchain/parse/testdata/match/fail_missing_case_statements_block.carbon +++ b/toolchain/parse/testdata/match/fail_missing_case_statements_block.carbon @@ -37,15 +37,16 @@ fn f() -> i32 { // CHECK:STDOUT: {kind: 'MatchStatementStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'MatchCaseIntroducer', text: 'case'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'MatchCase', text: '=>', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: 'default', has_error: yes, subtree_size: 6}, -// CHECK:STDOUT: {kind: 'MatchHandler', text: 'default', has_error: yes, subtree_size: 7}, -// CHECK:STDOUT: {kind: 'MatchStatement', text: '}', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'MatchCase', text: '=>', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: 'default', has_error: yes, subtree_size: 7}, +// CHECK:STDOUT: {kind: 'MatchHandler', text: 'default', has_error: yes, subtree_size: 8}, +// CHECK:STDOUT: {kind: 'MatchStatement', text: '}', subtree_size: 14}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 24}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 25}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/match/fail_missing_guard_close_paren.carbon b/toolchain/parse/testdata/match/fail_missing_guard_close_paren.carbon index c430f5683dcb..ac0ddd216f9e 100644 --- a/toolchain/parse/testdata/match/fail_missing_guard_close_paren.carbon +++ b/toolchain/parse/testdata/match/fail_missing_guard_close_paren.carbon @@ -40,19 +40,20 @@ fn f() -> i32 { // CHECK:STDOUT: {kind: 'MatchStatementStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'MatchCaseIntroducer', text: 'case'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'MatchCaseGuardIntroducer', text: 'if'}, // CHECK:STDOUT: {kind: 'MatchCaseGuardStart', text: '('}, // CHECK:STDOUT: {kind: 'BoolLiteralFalse', text: 'false'}, // CHECK:STDOUT: {kind: 'MatchCaseGuard', text: '=>', has_error: yes, subtree_size: 4}, -// CHECK:STDOUT: {kind: 'MatchCase', text: '}', has_error: yes, subtree_size: 9}, -// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '}', has_error: yes, subtree_size: 10}, -// CHECK:STDOUT: {kind: 'MatchHandler', text: '}', has_error: yes, subtree_size: 11}, -// CHECK:STDOUT: {kind: 'MatchStatement', text: '}', subtree_size: 17}, +// CHECK:STDOUT: {kind: 'MatchCase', text: '}', has_error: yes, subtree_size: 10}, +// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '}', has_error: yes, subtree_size: 11}, +// CHECK:STDOUT: {kind: 'MatchHandler', text: '}', has_error: yes, subtree_size: 12}, +// CHECK:STDOUT: {kind: 'MatchStatement', text: '}', subtree_size: 18}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 28}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 29}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/match/fail_missing_guard_open_paren.carbon b/toolchain/parse/testdata/match/fail_missing_guard_open_paren.carbon index 4d4eb3ca4a84..73b08aac0b46 100644 --- a/toolchain/parse/testdata/match/fail_missing_guard_open_paren.carbon +++ b/toolchain/parse/testdata/match/fail_missing_guard_open_paren.carbon @@ -40,19 +40,20 @@ fn f() -> i32 { // CHECK:STDOUT: {kind: 'MatchStatementStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'MatchCaseIntroducer', text: 'case'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'MatchCaseGuardIntroducer', text: 'if'}, // CHECK:STDOUT: {kind: 'MatchCaseGuardStart', text: 'false', has_error: yes}, // CHECK:STDOUT: {kind: 'InvalidParse', text: 'false', has_error: yes}, // CHECK:STDOUT: {kind: 'MatchCaseGuard', text: 'false', has_error: yes, subtree_size: 4}, -// CHECK:STDOUT: {kind: 'MatchCase', text: 'false', has_error: yes, subtree_size: 9}, -// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: 'false', has_error: yes, subtree_size: 10}, -// CHECK:STDOUT: {kind: 'MatchHandler', text: 'false', has_error: yes, subtree_size: 11}, -// CHECK:STDOUT: {kind: 'MatchStatement', text: '}', subtree_size: 17}, +// CHECK:STDOUT: {kind: 'MatchCase', text: 'false', has_error: yes, subtree_size: 10}, +// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: 'false', has_error: yes, subtree_size: 11}, +// CHECK:STDOUT: {kind: 'MatchHandler', text: 'false', has_error: yes, subtree_size: 12}, +// CHECK:STDOUT: {kind: 'MatchStatement', text: '}', subtree_size: 18}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 28}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 29}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/match/fail_missing_guard_parens_only_parse_errors.carbon b/toolchain/parse/testdata/match/fail_missing_guard_parens_only_parse_errors.carbon index 08e3dfac1687..55705a2c73ef 100644 --- a/toolchain/parse/testdata/match/fail_missing_guard_parens_only_parse_errors.carbon +++ b/toolchain/parse/testdata/match/fail_missing_guard_parens_only_parse_errors.carbon @@ -42,32 +42,34 @@ fn f() -> i32 { // CHECK:STDOUT: {kind: 'MatchStatementStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'MatchCaseIntroducer', text: 'case'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'MatchCaseGuardIntroducer', text: 'if'}, // CHECK:STDOUT: {kind: 'MatchCaseGuardStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'x'}, // CHECK:STDOUT: {kind: 'BoolLiteralFalse', text: 'false'}, // CHECK:STDOUT: {kind: 'InfixOperatorEqualEqual', text: '==', subtree_size: 3}, // CHECK:STDOUT: {kind: 'MatchCaseGuard', text: '=>', has_error: yes, subtree_size: 6}, -// CHECK:STDOUT: {kind: 'MatchCase', text: 'case', has_error: yes, subtree_size: 11}, -// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: 'case', has_error: yes, subtree_size: 12}, -// CHECK:STDOUT: {kind: 'MatchHandler', text: 'case', has_error: yes, subtree_size: 13}, +// CHECK:STDOUT: {kind: 'MatchCase', text: 'case', has_error: yes, subtree_size: 12}, +// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: 'case', has_error: yes, subtree_size: 13}, +// CHECK:STDOUT: {kind: 'MatchHandler', text: 'case', has_error: yes, subtree_size: 14}, // CHECK:STDOUT: {kind: 'MatchCaseIntroducer', text: 'case'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'z'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'MatchCaseGuardIntroducer', text: 'if'}, // CHECK:STDOUT: {kind: 'MatchCaseGuardStart', text: 'true', has_error: yes}, // CHECK:STDOUT: {kind: 'InvalidParse', text: 'true', has_error: yes}, // CHECK:STDOUT: {kind: 'MatchCaseGuard', text: 'true', has_error: yes, subtree_size: 4}, -// CHECK:STDOUT: {kind: 'MatchCase', text: 'true', has_error: yes, subtree_size: 9}, -// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: 'true', has_error: yes, subtree_size: 10}, -// CHECK:STDOUT: {kind: 'MatchHandler', text: 'true', has_error: yes, subtree_size: 11}, -// CHECK:STDOUT: {kind: 'MatchStatement', text: '}', subtree_size: 30}, +// CHECK:STDOUT: {kind: 'MatchCase', text: 'true', has_error: yes, subtree_size: 10}, +// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: 'true', has_error: yes, subtree_size: 11}, +// CHECK:STDOUT: {kind: 'MatchHandler', text: 'true', has_error: yes, subtree_size: 12}, +// CHECK:STDOUT: {kind: 'MatchStatement', text: '}', subtree_size: 32}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 41}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 43}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/match/fail_unexpected_tokens_in_cases_block.carbon b/toolchain/parse/testdata/match/fail_unexpected_tokens_in_cases_block.carbon index ec58bc12956c..ac1757e38d88 100644 --- a/toolchain/parse/testdata/match/fail_unexpected_tokens_in_cases_block.carbon +++ b/toolchain/parse/testdata/match/fail_unexpected_tokens_in_cases_block.carbon @@ -64,12 +64,13 @@ fn f() -> i32 { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 7}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '3'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'MatchIntroducer', text: 'match'}, // CHECK:STDOUT: {kind: 'MatchConditionStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'x'}, @@ -77,36 +78,38 @@ fn f() -> i32 { // CHECK:STDOUT: {kind: 'MatchStatementStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'MatchCaseIntroducer', text: 'case'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'MatchCaseGuardIntroducer', text: 'if'}, // CHECK:STDOUT: {kind: 'MatchCaseGuardStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'y'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '2'}, // CHECK:STDOUT: {kind: 'InfixOperatorGreater', text: '>', subtree_size: 3}, // CHECK:STDOUT: {kind: 'MatchCaseGuard', text: ')', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'MatchCase', text: '=>', subtree_size: 11}, -// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'MatchCase', text: '=>', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 13}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '1'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 17}, // CHECK:STDOUT: {kind: 'MatchCaseIntroducer', text: 'case'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'z'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'MatchCaseGuardIntroducer', text: 'if'}, // CHECK:STDOUT: {kind: 'MatchCaseGuardStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'z'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '3'}, // CHECK:STDOUT: {kind: 'InfixOperatorEqualEqual', text: '==', subtree_size: 3}, // CHECK:STDOUT: {kind: 'MatchCaseGuard', text: ')', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'MatchCase', text: '=>', subtree_size: 11}, -// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'MatchCase', text: '=>', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 13}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '3'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 17}, // CHECK:STDOUT: {kind: 'MatchDefaultIntroducer', text: 'default'}, // CHECK:STDOUT: {kind: 'MatchDefault', text: '=>', subtree_size: 2}, // CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 3}, @@ -114,10 +117,10 @@ fn f() -> i32 { // CHECK:STDOUT: {kind: 'IntLiteral', text: '3'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, // CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'MatchStatement', text: '}', has_error: yes, subtree_size: 45}, +// CHECK:STDOUT: {kind: 'MatchStatement', text: '}', has_error: yes, subtree_size: 47}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 64}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 67}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/match/match.carbon b/toolchain/parse/testdata/match/match.carbon index 9739e92a0065..09cbed2a7293 100644 --- a/toolchain/parse/testdata/match/match.carbon +++ b/toolchain/parse/testdata/match/match.carbon @@ -31,12 +31,13 @@ fn f() -> i32 { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 7}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '3'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'MatchIntroducer', text: 'match'}, // CHECK:STDOUT: {kind: 'MatchConditionStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'f'}, @@ -48,53 +49,57 @@ fn f() -> i32 { // CHECK:STDOUT: {kind: 'MatchCaseIntroducer', text: 'case'}, // CHECK:STDOUT: {kind: 'TuplePatternStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'MatchCase', text: '=>', subtree_size: 11}, -// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'MatchCase', text: '=>', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 14}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 18}, // CHECK:STDOUT: {kind: 'MatchCaseIntroducer', text: 'case'}, // CHECK:STDOUT: {kind: 'TuplePatternStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ParenPattern', text: ')', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ParenPattern', text: ')', subtree_size: 6}, // CHECK:STDOUT: {kind: 'MatchCaseGuardIntroducer', text: 'if'}, // CHECK:STDOUT: {kind: 'MatchCaseGuardStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'a'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'InfixOperatorLess', text: '<', subtree_size: 3}, // CHECK:STDOUT: {kind: 'MatchCaseGuard', text: ')', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'MatchCase', text: '=>', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'MatchCase', text: '=>', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 15}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '2'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 18}, +// CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 19}, // CHECK:STDOUT: {kind: 'MatchCaseIntroducer', text: 'case'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'MatchCaseGuardIntroducer', text: 'if'}, // CHECK:STDOUT: {kind: 'MatchCaseGuardStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'a'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'x'}, // CHECK:STDOUT: {kind: 'InfixOperatorExclaimEqual', text: '!=', subtree_size: 3}, // CHECK:STDOUT: {kind: 'MatchCaseGuard', text: ')', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'MatchCase', text: '=>', subtree_size: 11}, -// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'MatchCase', text: '=>', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 13}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '3'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 17}, // CHECK:STDOUT: {kind: 'MatchDefaultIntroducer', text: 'default'}, // CHECK:STDOUT: {kind: 'MatchDefault', text: '=>', subtree_size: 2}, // CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 3}, @@ -102,10 +107,10 @@ fn f() -> i32 { // CHECK:STDOUT: {kind: 'IntLiteral', text: '4'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, // CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'MatchStatement', text: '}', subtree_size: 66}, +// CHECK:STDOUT: {kind: 'MatchStatement', text: '}', subtree_size: 70}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 85}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 90}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/member_access/simple.carbon b/toolchain/parse/testdata/member_access/simple.carbon index bb69293edbbe..a0d6ae8dc2ed 100644 --- a/toolchain/parse/testdata/member_access/simple.carbon +++ b/toolchain/parse/testdata/member_access/simple.carbon @@ -22,10 +22,11 @@ fn F(a: T) { // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'T'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 9}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'a'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, // CHECK:STDOUT: {kind: 'MemberAccessExpr', text: '.', subtree_size: 3}, @@ -46,6 +47,6 @@ fn F(a: T) { // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, // CHECK:STDOUT: {kind: 'MemberAccessExpr', text: '.', subtree_size: 5}, // CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 29}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 30}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/assign.carbon b/toolchain/parse/testdata/operators/assign.carbon index bcf9c691ac69..22c9a36db3ed 100644 --- a/toolchain/parse/testdata/operators/assign.carbon +++ b/toolchain/parse/testdata/operators/assign.carbon @@ -36,20 +36,22 @@ fn F() { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '1'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'a'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'b'}, // CHECK:STDOUT: {kind: 'InfixOperatorEqual', text: '=', subtree_size: 3}, @@ -100,6 +102,6 @@ fn F() { // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'a'}, // CHECK:STDOUT: {kind: 'PrefixOperatorMinusMinus', text: '--', subtree_size: 2}, // CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 72}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 74}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/fail_chained_assign.carbon b/toolchain/parse/testdata/operators/fail_chained_assign.carbon index f921fbcfc519..56587f0466c3 100644 --- a/toolchain/parse/testdata/operators/fail_chained_assign.carbon +++ b/toolchain/parse/testdata/operators/fail_chained_assign.carbon @@ -30,22 +30,24 @@ fn F() { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'a'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'b'}, // CHECK:STDOUT: {kind: 'InfixOperatorEqual', text: '=', subtree_size: 3}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '1'}, // CHECK:STDOUT: {kind: 'InfixOperatorEqual', text: '=', has_error: yes, subtree_size: 5}, // CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 24}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 26}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/fail_infix_uneven_space_after.carbon b/toolchain/parse/testdata/operators/fail_infix_uneven_space_after.carbon index eaa43707a787..4b938bbb18bf 100644 --- a/toolchain/parse/testdata/operators/fail_infix_uneven_space_after.carbon +++ b/toolchain/parse/testdata/operators/fail_infix_uneven_space_after.carbon @@ -21,12 +21,13 @@ var n: i8 = n* n; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i8'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', has_error: yes, subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', has_error: yes, subtree_size: 10}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/fail_infix_uneven_space_before.carbon b/toolchain/parse/testdata/operators/fail_infix_uneven_space_before.carbon index b38415279b57..edf4d4297464 100644 --- a/toolchain/parse/testdata/operators/fail_infix_uneven_space_before.carbon +++ b/toolchain/parse/testdata/operators/fail_infix_uneven_space_before.carbon @@ -19,13 +19,14 @@ var n: i8 = n *n; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i8'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'InfixOperatorStar', text: '*', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/fail_invalid_infix.carbon b/toolchain/parse/testdata/operators/fail_invalid_infix.carbon index f9fcddbb90c8..690f0d6fc95d 100644 --- a/toolchain/parse/testdata/operators/fail_invalid_infix.carbon +++ b/toolchain/parse/testdata/operators/fail_invalid_infix.carbon @@ -33,33 +33,36 @@ var c: i32 = == ; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ';', has_error: yes}, // CHECK:STDOUT: {kind: 'InfixOperatorEqualEqual', text: '==', has_error: yes, subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'InvalidParse', text: '==', has_error: yes}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'InfixOperatorEqualEqual', text: '==', has_error: yes, subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'c'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'InvalidParse', text: '==', has_error: yes}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ';', has_error: yes}, // CHECK:STDOUT: {kind: 'InfixOperatorEqualEqual', text: '==', has_error: yes, subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/fail_postfix_space.carbon b/toolchain/parse/testdata/operators/fail_postfix_space.carbon index 9054ce7a37e8..96fde3a204ae 100644 --- a/toolchain/parse/testdata/operators/fail_postfix_space.carbon +++ b/toolchain/parse/testdata/operators/fail_postfix_space.carbon @@ -19,12 +19,13 @@ var v: type = i8 *; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'v'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i8'}, // CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/fail_postfix_space_before_comma.carbon b/toolchain/parse/testdata/operators/fail_postfix_space_before_comma.carbon index 347feca1e009..b4d1461c7756 100644 --- a/toolchain/parse/testdata/operators/fail_postfix_space_before_comma.carbon +++ b/toolchain/parse/testdata/operators/fail_postfix_space_before_comma.carbon @@ -19,9 +19,10 @@ var n: i8 = F(i8 *, 0); // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i8'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'F'}, // CHECK:STDOUT: {kind: 'CallExprStart', text: '(', subtree_size: 2}, @@ -30,6 +31,6 @@ var n: i8 = F(i8 *, 0); // CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'CallExpr', text: ')', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 15}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/fail_postfix_space_in_call.carbon b/toolchain/parse/testdata/operators/fail_postfix_space_in_call.carbon index 5438c7564a43..4d73180aa9db 100644 --- a/toolchain/parse/testdata/operators/fail_postfix_space_in_call.carbon +++ b/toolchain/parse/testdata/operators/fail_postfix_space_in_call.carbon @@ -19,15 +19,16 @@ var n: i8 = F(i8 *); // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i8'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'F'}, // CHECK:STDOUT: {kind: 'CallExprStart', text: '(', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i8'}, // CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, // CHECK:STDOUT: {kind: 'CallExpr', text: ')', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 13}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/fail_postfix_space_surrounding.carbon b/toolchain/parse/testdata/operators/fail_postfix_space_surrounding.carbon index c147d1294a24..62f590fa778f 100644 --- a/toolchain/parse/testdata/operators/fail_postfix_space_surrounding.carbon +++ b/toolchain/parse/testdata/operators/fail_postfix_space_surrounding.carbon @@ -19,12 +19,13 @@ var v: type = i8 * ; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'v'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i8'}, // CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/fail_postincrement.carbon b/toolchain/parse/testdata/operators/fail_postincrement.carbon index 223898916f4a..bc45a55e9c25 100644 --- a/toolchain/parse/testdata/operators/fail_postincrement.carbon +++ b/toolchain/parse/testdata/operators/fail_postincrement.carbon @@ -33,16 +33,17 @@ fn F() { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'ExprStatement', text: ';', has_error: yes, subtree_size: 2}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'ExprStatement', text: ';', has_error: yes, subtree_size: 2}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 18}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 19}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/fail_precedence_as.carbon b/toolchain/parse/testdata/operators/fail_precedence_as.carbon index 987a2198ee21..523a48175e52 100644 --- a/toolchain/parse/testdata/operators/fail_precedence_as.carbon +++ b/toolchain/parse/testdata/operators/fail_precedence_as.carbon @@ -60,10 +60,11 @@ fn F(n: i32) { // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 9}, // CHECK:STDOUT: {kind: 'BoolLiteralTrue', text: 'true'}, // CHECK:STDOUT: {kind: 'PrefixOperatorNot', text: 'not', subtree_size: 2}, // CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'}, @@ -107,6 +108,6 @@ fn F(n: i32) { // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'InfixOperatorAs', text: 'as', has_error: yes, subtree_size: 5}, // CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 52}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 53}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/fail_precedence_assign.carbon b/toolchain/parse/testdata/operators/fail_precedence_assign.carbon index 2cfbe506d4d2..15c70716219d 100644 --- a/toolchain/parse/testdata/operators/fail_precedence_assign.carbon +++ b/toolchain/parse/testdata/operators/fail_precedence_assign.carbon @@ -48,10 +48,11 @@ fn F() { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '1'}, // CHECK:STDOUT: {kind: 'ParenExprStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'a'}, @@ -80,6 +81,6 @@ fn F() { // CHECK:STDOUT: {kind: 'IfExprElse', text: 'else', subtree_size: 6}, // CHECK:STDOUT: {kind: 'PrefixOperatorPlusPlus', text: '++', subtree_size: 7}, // CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 40}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 41}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/fail_prefix_space.carbon b/toolchain/parse/testdata/operators/fail_prefix_space.carbon index 0ffc345de0c1..45e6d88c9497 100644 --- a/toolchain/parse/testdata/operators/fail_prefix_space.carbon +++ b/toolchain/parse/testdata/operators/fail_prefix_space.carbon @@ -19,12 +19,13 @@ var n: i8 = - n; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i8'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'PrefixOperatorMinus', text: '-', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/fail_prefix_uneven_space_with_assign.carbon b/toolchain/parse/testdata/operators/fail_prefix_uneven_space_with_assign.carbon index 177b927bd34f..2d434a1f3f18 100644 --- a/toolchain/parse/testdata/operators/fail_prefix_uneven_space_with_assign.carbon +++ b/toolchain/parse/testdata/operators/fail_prefix_uneven_space_with_assign.carbon @@ -19,12 +19,13 @@ var n: i8 =- n; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i8'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'PrefixOperatorMinus', text: '-', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/fail_star_minus.carbon b/toolchain/parse/testdata/operators/fail_star_minus.carbon index 782ae75b4d3f..e5881270f6a6 100644 --- a/toolchain/parse/testdata/operators/fail_star_minus.carbon +++ b/toolchain/parse/testdata/operators/fail_star_minus.carbon @@ -24,14 +24,15 @@ var n: i8 = n* -n; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i8'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'InfixOperatorMinus', text: '-', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/fail_star_star.carbon b/toolchain/parse/testdata/operators/fail_star_star.carbon index e3db95b1edb3..dbcb57e7d2f7 100644 --- a/toolchain/parse/testdata/operators/fail_star_star.carbon +++ b/toolchain/parse/testdata/operators/fail_star_star.carbon @@ -19,14 +19,15 @@ var n: i8 = n* *p; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i8'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'p'}, // CHECK:STDOUT: {kind: 'InfixOperatorStar', text: '*', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/fail_star_star_no_space.carbon b/toolchain/parse/testdata/operators/fail_star_star_no_space.carbon index 719702f299fb..6de68ec2e691 100644 --- a/toolchain/parse/testdata/operators/fail_star_star_no_space.carbon +++ b/toolchain/parse/testdata/operators/fail_star_star_no_space.carbon @@ -23,13 +23,14 @@ var n: i8 = n**p; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i8'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, // CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', has_error: yes, subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', has_error: yes, subtree_size: 11}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/fixity_in_params.carbon b/toolchain/parse/testdata/operators/fixity_in_params.carbon index 7f8d090abd73..89e4ae2c981e 100644 --- a/toolchain/parse/testdata/operators/fixity_in_params.carbon +++ b/toolchain/parse/testdata/operators/fixity_in_params.carbon @@ -18,15 +18,17 @@ fn F(p: i32*, n: i32) { // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'p'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 10}, -// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 15}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 16}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/fixity_in_var.carbon b/toolchain/parse/testdata/operators/fixity_in_var.carbon index ea225c04c64a..f63bca4e2140 100644 --- a/toolchain/parse/testdata/operators/fixity_in_var.carbon +++ b/toolchain/parse/testdata/operators/fixity_in_var.carbon @@ -23,22 +23,24 @@ fn F() { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'q'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, +// CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'p'}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 't'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, +// CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, -// CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'p'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 't'}, -// CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 24}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 26}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/infix_no_space.carbon b/toolchain/parse/testdata/operators/infix_no_space.carbon index a478380c88f8..c58979b49e46 100644 --- a/toolchain/parse/testdata/operators/infix_no_space.carbon +++ b/toolchain/parse/testdata/operators/infix_no_space.carbon @@ -15,13 +15,14 @@ var n: i8 = n*n; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i8'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'InfixOperatorStar', text: '*', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/infix_with_paren_after.carbon b/toolchain/parse/testdata/operators/infix_with_paren_after.carbon index 905b3d3b0cc0..dd5516238e96 100644 --- a/toolchain/parse/testdata/operators/infix_with_paren_after.carbon +++ b/toolchain/parse/testdata/operators/infix_with_paren_after.carbon @@ -15,15 +15,16 @@ var n: i8 = 3*(n); // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i8'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '3'}, // CHECK:STDOUT: {kind: 'ParenExprStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'ParenExpr', text: ')', subtree_size: 3}, // CHECK:STDOUT: {kind: 'InfixOperatorStar', text: '*', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 13}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/infix_with_paren_before.carbon b/toolchain/parse/testdata/operators/infix_with_paren_before.carbon index f3618d7b9e51..eb84b7cd20df 100644 --- a/toolchain/parse/testdata/operators/infix_with_paren_before.carbon +++ b/toolchain/parse/testdata/operators/infix_with_paren_before.carbon @@ -15,15 +15,16 @@ var n: i8 = (n)*3; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i8'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'ParenExprStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'ParenExpr', text: ')', subtree_size: 3}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '3'}, // CHECK:STDOUT: {kind: 'InfixOperatorStar', text: '*', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 13}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/postfix.carbon b/toolchain/parse/testdata/operators/postfix.carbon index b521cb8b85c2..42ffeeea2f2b 100644 --- a/toolchain/parse/testdata/operators/postfix.carbon +++ b/toolchain/parse/testdata/operators/postfix.carbon @@ -15,12 +15,13 @@ var v: type = i8*; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'v'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i8'}, // CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/postfix_space_after_op.carbon b/toolchain/parse/testdata/operators/postfix_space_after_op.carbon index cd7d7d051884..a2182a3a0060 100644 --- a/toolchain/parse/testdata/operators/postfix_space_after_op.carbon +++ b/toolchain/parse/testdata/operators/postfix_space_after_op.carbon @@ -15,12 +15,13 @@ var v: type = i8* ; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'v'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i8'}, // CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/precedence_as.carbon b/toolchain/parse/testdata/operators/precedence_as.carbon index 011b90a4ebcf..6c12d89c479d 100644 --- a/toolchain/parse/testdata/operators/precedence_as.carbon +++ b/toolchain/parse/testdata/operators/precedence_as.carbon @@ -23,10 +23,11 @@ fn F(n: i32) { // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 9}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'PrefixOperatorMinus', text: '-', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, @@ -49,6 +50,6 @@ fn F(n: i32) { // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'InfixOperatorAs', text: 'as', subtree_size: 4}, // CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 31}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 32}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/precedence_assign.carbon b/toolchain/parse/testdata/operators/precedence_assign.carbon index 11adf5c91efa..59cee9b9d6d8 100644 --- a/toolchain/parse/testdata/operators/precedence_assign.carbon +++ b/toolchain/parse/testdata/operators/precedence_assign.carbon @@ -24,29 +24,33 @@ fn F(c: bool) { // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'c'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 9}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, -// CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'p'}, -// CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, // CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, +// CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'p'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, +// CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, +// CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'p'}, // CHECK:STDOUT: {kind: 'PrefixOperatorStar', text: '*', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'c'}, @@ -73,6 +77,6 @@ fn F(c: bool) { // CHECK:STDOUT: {kind: 'IfExprElse', text: 'else', subtree_size: 6}, // CHECK:STDOUT: {kind: 'InfixOperatorPlusEqual', text: '+=', subtree_size: 15}, // CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 16}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 54}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 58}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/precedence_unary.carbon b/toolchain/parse/testdata/operators/precedence_unary.carbon index 2c312be8aa80..1be25b17cce8 100644 --- a/toolchain/parse/testdata/operators/precedence_unary.carbon +++ b/toolchain/parse/testdata/operators/precedence_unary.carbon @@ -24,11 +24,12 @@ fn F(p: i32*) { // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'p'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 10}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'p'}, // CHECK:STDOUT: {kind: 'PrefixOperatorStar', text: '*', subtree_size: 2}, // CHECK:STDOUT: {kind: 'PrefixOperatorMinus', text: '-', subtree_size: 3}, @@ -53,6 +54,6 @@ fn F(p: i32*) { // CHECK:STDOUT: {kind: 'PrefixOperatorCaret', text: '^', subtree_size: 3}, // CHECK:STDOUT: {kind: 'InfixOperatorLessLess', text: '<<', subtree_size: 7}, // CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 34}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 35}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/precedence_where.carbon b/toolchain/parse/testdata/operators/precedence_where.carbon index 37c1f98a998b..80f9fa1f1db6 100644 --- a/toolchain/parse/testdata/operators/precedence_where.carbon +++ b/toolchain/parse/testdata/operators/precedence_where.carbon @@ -22,8 +22,8 @@ fn UnaryMinus(generic W: -P where -Q impls -R); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'PostfixStar'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'I'}, // CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, // CHECK:STDOUT: {kind: 'WhereOperand', text: 'where', subtree_size: 3}, @@ -41,8 +41,8 @@ fn UnaryMinus(generic W: -P where -Q impls -R); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Ampersand'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'U'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'U'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'J'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'K'}, // CHECK:STDOUT: {kind: 'InfixOperatorAmp', text: '&', subtree_size: 3}, @@ -61,8 +61,8 @@ fn UnaryMinus(generic W: -P where -Q impls -R); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'BinaryPlus'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'V'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'V'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'L'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'M'}, // CHECK:STDOUT: {kind: 'InfixOperatorPlus', text: '+', subtree_size: 3}, @@ -81,8 +81,8 @@ fn UnaryMinus(generic W: -P where -Q impls -R); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'UnaryMinus'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'W'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'W'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'P'}, // CHECK:STDOUT: {kind: 'PrefixOperatorMinus', text: '-', subtree_size: 2}, // CHECK:STDOUT: {kind: 'WhereOperand', text: 'where', subtree_size: 3}, diff --git a/toolchain/parse/testdata/operators/prefix.carbon b/toolchain/parse/testdata/operators/prefix.carbon index a8a0c405eb27..7c60939dfc0e 100644 --- a/toolchain/parse/testdata/operators/prefix.carbon +++ b/toolchain/parse/testdata/operators/prefix.carbon @@ -19,36 +19,40 @@ var d: partial C*; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i8'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'PrefixOperatorMinus', text: '-', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'BoolLiteralTrue', text: 'true'}, // CHECK:STDOUT: {kind: 'PrefixOperatorNot', text: 'not', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'c'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'}, // CHECK:STDOUT: {kind: 'PrefixOperatorConst', text: 'const', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'd'}, -// CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'C'}, -// CHECK:STDOUT: {kind: 'PrefixOperatorPartial', text: 'partial', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 3}, // CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, // CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'd'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, +// CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'C'}, +// CHECK:STDOUT: {kind: 'PrefixOperatorPartial', text: 'partial', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/prefix_no_space.carbon b/toolchain/parse/testdata/operators/prefix_no_space.carbon index 4f05209098e4..76a54b5631dd 100644 --- a/toolchain/parse/testdata/operators/prefix_no_space.carbon +++ b/toolchain/parse/testdata/operators/prefix_no_space.carbon @@ -16,12 +16,13 @@ var n: i8 =-n; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i8'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'PrefixOperatorMinus', text: '-', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/operators/ref.carbon b/toolchain/parse/testdata/operators/ref.carbon index 0bc11e371770..95212f699624 100644 --- a/toolchain/parse/testdata/operators/ref.carbon +++ b/toolchain/parse/testdata/operators/ref.carbon @@ -27,15 +27,16 @@ var x: i32 = if b then ref c else ref d; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'y'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'InfixOperatorAs', text: 'as', subtree_size: 3}, // CHECK:STDOUT: {kind: 'PrefixOperatorRef', text: 'ref', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: fail_if_ref.carbon @@ -43,9 +44,10 @@ var x: i32 = if b then ref c else ref d; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'b'}, // CHECK:STDOUT: {kind: 'IfExprIf', text: 'if', subtree_size: 2}, @@ -54,12 +56,13 @@ var x: i32 = if b then ref c else ref d; // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'd'}, // CHECK:STDOUT: {kind: 'IfExprElse', text: 'else', subtree_size: 6}, // CHECK:STDOUT: {kind: 'PrefixOperatorRef', text: 'ref', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 15}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'ParenExprStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'b'}, @@ -70,12 +73,13 @@ var x: i32 = if b then ref c else ref d; // CHECK:STDOUT: {kind: 'IfExprElse', text: 'else', subtree_size: 6}, // CHECK:STDOUT: {kind: 'ParenExpr', text: ')', subtree_size: 8}, // CHECK:STDOUT: {kind: 'PrefixOperatorRef', text: 'ref', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 17}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'b'}, // CHECK:STDOUT: {kind: 'IfExprIf', text: 'if', subtree_size: 2}, @@ -85,6 +89,6 @@ var x: i32 = if b then ref c else ref d; // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'd'}, // CHECK:STDOUT: {kind: 'PrefixOperatorRef', text: 'ref', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IfExprElse', text: 'else', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 15}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 16}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/package_expr/basic.carbon b/toolchain/parse/testdata/package_expr/basic.carbon index 92d1c5fd927d..dc6f472d5650 100644 --- a/toolchain/parse/testdata/package_expr/basic.carbon +++ b/toolchain/parse/testdata/package_expr/basic.carbon @@ -15,15 +15,16 @@ var x: package.Foo = package.Bar; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'PackageExpr', text: 'package'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'Foo'}, // CHECK:STDOUT: {kind: 'MemberAccessExpr', text: '.', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 7}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'PackageExpr', text: 'package'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'Bar'}, // CHECK:STDOUT: {kind: 'MemberAccessExpr', text: '.', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 13}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/package_expr/core.carbon b/toolchain/parse/testdata/package_expr/core.carbon index 9e28d77a49f1..10cae51e3361 100644 --- a/toolchain/parse/testdata/package_expr/core.carbon +++ b/toolchain/parse/testdata/package_expr/core.carbon @@ -15,15 +15,16 @@ var x: Core.Foo = Core.Bar; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'CoreNameExpr', text: 'Core'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'Foo'}, // CHECK:STDOUT: {kind: 'MemberAccessExpr', text: '.', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 7}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'CoreNameExpr', text: 'Core'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'Bar'}, // CHECK:STDOUT: {kind: 'MemberAccessExpr', text: '.', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 13}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/packages/keyword_names.carbon b/toolchain/parse/testdata/packages/keyword_names.carbon index 47abee48889f..0e74e4887cef 100644 --- a/toolchain/parse/testdata/packages/keyword_names.carbon +++ b/toolchain/parse/testdata/packages/keyword_names.carbon @@ -21,10 +21,11 @@ var x: Cpp; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'CoreNameExpr', text: 'Core'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: cpp.carbon @@ -32,9 +33,10 @@ var x: Cpp; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'CppNameExpr', text: 'Cpp'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/pointer/pointer_type.carbon b/toolchain/parse/testdata/pointer/pointer_type.carbon index 436eede56457..1561634513a4 100644 --- a/toolchain/parse/testdata/pointer/pointer_type.carbon +++ b/toolchain/parse/testdata/pointer/pointer_type.carbon @@ -23,14 +23,15 @@ var T: type = if true then i32* else f64*; // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'p'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 7}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, // CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 13}, // CHECK:STDOUT: {kind: 'FloatTypeLiteral', text: 'f32'}, // CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, @@ -52,12 +53,13 @@ var T: type = if true then i32* else f64*; // CHECK:STDOUT: {kind: 'PrefixOperatorStar', text: '*', subtree_size: 2}, // CHECK:STDOUT: {kind: 'InfixOperatorStar', text: '*', subtree_size: 7}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 34}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 35}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'BoolLiteralTrue', text: 'true'}, // CHECK:STDOUT: {kind: 'IfExprIf', text: 'if', subtree_size: 2}, @@ -67,6 +69,6 @@ var T: type = if true then i32* else f64*; // CHECK:STDOUT: {kind: 'FloatTypeLiteral', text: 'f64'}, // CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IfExprElse', text: 'else', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 15}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 16}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/pointer/pointer_value.carbon b/toolchain/parse/testdata/pointer/pointer_value.carbon index e2fc0ea2abd4..2df420af0bf5 100644 --- a/toolchain/parse/testdata/pointer/pointer_value.carbon +++ b/toolchain/parse/testdata/pointer/pointer_value.carbon @@ -27,38 +27,41 @@ fn F() -> i32 { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 7}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, -// CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'p'}, -// CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, // CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, -// CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, -// CHECK:STDOUT: {kind: 'PrefixOperatorAmp', text: '&', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'q'}, -// CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'p'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, +// CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, +// CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, // CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, -// CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'p'}, +// CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'n'}, // CHECK:STDOUT: {kind: 'PrefixOperatorAmp', text: '&', subtree_size: 2}, // CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'q'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, +// CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, +// CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'PostfixOperatorStar', text: '*', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, +// CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'p'}, +// CHECK:STDOUT: {kind: 'PrefixOperatorAmp', text: '&', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'q'}, // CHECK:STDOUT: {kind: 'PrefixOperatorStar', text: '*', subtree_size: 2}, // CHECK:STDOUT: {kind: 'PrefixOperatorStar', text: '*', subtree_size: 3}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 42}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 45}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/return/returned_var.carbon b/toolchain/parse/testdata/return/returned_var.carbon index ee0e8db40593..0a978799c69d 100644 --- a/toolchain/parse/testdata/return/returned_var.carbon +++ b/toolchain/parse/testdata/return/returned_var.carbon @@ -26,15 +26,16 @@ fn F() -> str { // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'ReturnedModifier', text: 'returned'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 's'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StringTypeLiteral', text: 'str'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StringLiteral', text: '"hello"'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'ReturnVarModifier', text: 'var'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 20}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 21}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/fail_comma_only.carbon b/toolchain/parse/testdata/struct/fail_comma_only.carbon index 2e762b3e7434..b33eb4dbff33 100644 --- a/toolchain/parse/testdata/struct/fail_comma_only.carbon +++ b/toolchain/parse/testdata/struct/fail_comma_only.carbon @@ -19,15 +19,16 @@ var x: {,} = {}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ',', has_error: yes}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ',', has_error: yes}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', has_error: yes, subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 8}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 13}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/fail_comma_repeat_in_type.carbon b/toolchain/parse/testdata/struct/fail_comma_repeat_in_type.carbon index 40457e7099c4..81b7da43256c 100644 --- a/toolchain/parse/testdata/struct/fail_comma_repeat_in_type.carbon +++ b/toolchain/parse/testdata/struct/fail_comma_repeat_in_type.carbon @@ -19,6 +19,7 @@ var x: {.a: i32,,} = {}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructTypeLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, // CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, @@ -28,11 +29,11 @@ var x: {.a: i32,,} = {}; // CHECK:STDOUT: {kind: 'InvalidParse', text: ',', has_error: yes}, // CHECK:STDOUT: {kind: 'StructTypeLiteralComma', text: ','}, // CHECK:STDOUT: {kind: 'StructTypeLiteral', text: '}', has_error: yes, subtree_size: 9}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 11}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 13}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 17}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 18}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/fail_comma_repeat_in_value.carbon b/toolchain/parse/testdata/struct/fail_comma_repeat_in_value.carbon index f7eba9bdbebe..136b07a6eed3 100644 --- a/toolchain/parse/testdata/struct/fail_comma_repeat_in_value.carbon +++ b/toolchain/parse/testdata/struct/fail_comma_repeat_in_value.carbon @@ -19,6 +19,7 @@ var x: {.a = 0,,} = {}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, // CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, @@ -28,11 +29,11 @@ var x: {.a = 0,,} = {}; // CHECK:STDOUT: {kind: 'InvalidParse', text: ',', has_error: yes}, // CHECK:STDOUT: {kind: 'StructLiteralComma', text: ','}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', has_error: yes, subtree_size: 9}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 11}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 13}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 17}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 18}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/fail_extra_token_in_type.carbon b/toolchain/parse/testdata/struct/fail_extra_token_in_type.carbon index b0e536b87e79..131d30a17d2c 100644 --- a/toolchain/parse/testdata/struct/fail_extra_token_in_type.carbon +++ b/toolchain/parse/testdata/struct/fail_extra_token_in_type.carbon @@ -19,14 +19,15 @@ var x: {.a: i32 banana} = {.a = 0}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructTypeLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, // CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'StructTypeLiteralField', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'StructTypeLiteral', text: '}', has_error: yes, subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, @@ -34,6 +35,6 @@ var x: {.a: i32 banana} = {.a = 0}; // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'StructLiteralField', text: '=', subtree_size: 4}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 18}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 19}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/fail_extra_token_in_value.carbon b/toolchain/parse/testdata/struct/fail_extra_token_in_value.carbon index 98c4a7342215..a1f0dd2e7eea 100644 --- a/toolchain/parse/testdata/struct/fail_extra_token_in_value.carbon +++ b/toolchain/parse/testdata/struct/fail_extra_token_in_value.carbon @@ -19,14 +19,15 @@ var x: {.a: i32} = {.a = 0 banana}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructTypeLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, // CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'StructTypeLiteralField', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'StructTypeLiteral', text: '}', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, @@ -34,6 +35,6 @@ var x: {.a: i32} = {.a = 0 banana}; // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'StructLiteralField', text: '=', subtree_size: 4}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', has_error: yes, subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 18}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 19}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/fail_identifier_colon.carbon b/toolchain/parse/testdata/struct/fail_identifier_colon.carbon index 8b74d5553fee..287f70a63809 100644 --- a/toolchain/parse/testdata/struct/fail_identifier_colon.carbon +++ b/toolchain/parse/testdata/struct/fail_identifier_colon.carbon @@ -19,14 +19,15 @@ var x: {a:} = {}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'InvalidParse', text: 'a', has_error: yes}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', has_error: yes, subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 7}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/fail_identifier_equals.carbon b/toolchain/parse/testdata/struct/fail_identifier_equals.carbon index d870a1fa8496..262e9d2d1380 100644 --- a/toolchain/parse/testdata/struct/fail_identifier_equals.carbon +++ b/toolchain/parse/testdata/struct/fail_identifier_equals.carbon @@ -19,14 +19,15 @@ var x: {a=} = {}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'InvalidParse', text: 'a', has_error: yes}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', has_error: yes, subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 7}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/fail_identifier_only.carbon b/toolchain/parse/testdata/struct/fail_identifier_only.carbon index bee8482e98ba..e8e19ec25590 100644 --- a/toolchain/parse/testdata/struct/fail_identifier_only.carbon +++ b/toolchain/parse/testdata/struct/fail_identifier_only.carbon @@ -19,14 +19,15 @@ var x: {a} = {}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'InvalidParse', text: 'a', has_error: yes}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', has_error: yes, subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 7}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/fail_invalid_struct_designator.carbon b/toolchain/parse/testdata/struct/fail_invalid_struct_designator.carbon index 5f6e715f00f0..7c149524e898 100644 --- a/toolchain/parse/testdata/struct/fail_invalid_struct_designator.carbon +++ b/toolchain/parse/testdata/struct/fail_invalid_struct_designator.carbon @@ -19,9 +19,10 @@ var x: i32 = {.7 = 8}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: '7', has_error: yes}, @@ -29,6 +30,6 @@ var x: i32 = {.7 = 8}; // CHECK:STDOUT: {kind: 'IntLiteral', text: '8'}, // CHECK:STDOUT: {kind: 'InvalidParse', text: '=', has_error: yes}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', has_error: yes, subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 14}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/fail_missing_type.carbon b/toolchain/parse/testdata/struct/fail_missing_type.carbon index ff49c6fe84f6..4fa83fda1dda 100644 --- a/toolchain/parse/testdata/struct/fail_missing_type.carbon +++ b/toolchain/parse/testdata/struct/fail_missing_type.carbon @@ -19,17 +19,18 @@ var x: {.a:} = {}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructTypeLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, // CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, // CHECK:STDOUT: {kind: 'InvalidParse', text: '}', has_error: yes}, // CHECK:STDOUT: {kind: 'InvalidParse', text: ':', has_error: yes}, // CHECK:STDOUT: {kind: 'StructTypeLiteral', text: '}', has_error: yes, subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 15}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/fail_missing_value.carbon b/toolchain/parse/testdata/struct/fail_missing_value.carbon index 6aa06cb5b235..bf1f751ea4e8 100644 --- a/toolchain/parse/testdata/struct/fail_missing_value.carbon +++ b/toolchain/parse/testdata/struct/fail_missing_value.carbon @@ -19,17 +19,18 @@ var x: {.a=} = {}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, // CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, // CHECK:STDOUT: {kind: 'InvalidParse', text: '}', has_error: yes}, // CHECK:STDOUT: {kind: 'InvalidParse', text: '=', has_error: yes}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', has_error: yes, subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 15}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/fail_mix_type_and_value.carbon b/toolchain/parse/testdata/struct/fail_mix_type_and_value.carbon index 40f5dfb83659..d1beb20f1d45 100644 --- a/toolchain/parse/testdata/struct/fail_mix_type_and_value.carbon +++ b/toolchain/parse/testdata/struct/fail_mix_type_and_value.carbon @@ -19,6 +19,7 @@ var x: {.a: i32, .b = 0} = {}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructTypeLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, // CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, @@ -29,11 +30,11 @@ var x: {.a: i32, .b = 0} = {}; // CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, // CHECK:STDOUT: {kind: 'InvalidParse', text: '.', has_error: yes}, // CHECK:STDOUT: {kind: 'StructTypeLiteral', text: '}', has_error: yes, subtree_size: 10}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 12}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 14}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 18}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 19}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/fail_mix_value_and_type.carbon b/toolchain/parse/testdata/struct/fail_mix_value_and_type.carbon index d8e5550c8cdf..1d579e5d4911 100644 --- a/toolchain/parse/testdata/struct/fail_mix_value_and_type.carbon +++ b/toolchain/parse/testdata/struct/fail_mix_value_and_type.carbon @@ -19,6 +19,7 @@ var x: {.a = 0, b: i32} = {}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, // CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, @@ -27,11 +28,11 @@ var x: {.a = 0, b: i32} = {}; // CHECK:STDOUT: {kind: 'StructLiteralComma', text: ','}, // CHECK:STDOUT: {kind: 'InvalidParse', text: 'b', has_error: yes}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', has_error: yes, subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 10}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 12}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 17}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/fail_mix_with_unknown.carbon b/toolchain/parse/testdata/struct/fail_mix_with_unknown.carbon index 00760a4c828e..c63990696939 100644 --- a/toolchain/parse/testdata/struct/fail_mix_with_unknown.carbon +++ b/toolchain/parse/testdata/struct/fail_mix_with_unknown.carbon @@ -33,9 +33,10 @@ var x: i32 = {.a: i32, .b, .c = 1}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, @@ -51,12 +52,13 @@ var x: i32 = {.a: i32, .b, .c = 1}; // CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, // CHECK:STDOUT: {kind: 'InvalidParse', text: '.', has_error: yes}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', has_error: yes, subtree_size: 14}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 21}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 22}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructTypeLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, @@ -72,6 +74,6 @@ var x: i32 = {.a: i32, .b, .c = 1}; // CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, // CHECK:STDOUT: {kind: 'InvalidParse', text: '.', has_error: yes}, // CHECK:STDOUT: {kind: 'StructTypeLiteral', text: '}', has_error: yes, subtree_size: 14}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 21}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 22}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/fail_no_colon_or_equals.carbon b/toolchain/parse/testdata/struct/fail_no_colon_or_equals.carbon index 196d240e14c2..1afcb9f96ced 100644 --- a/toolchain/parse/testdata/struct/fail_no_colon_or_equals.carbon +++ b/toolchain/parse/testdata/struct/fail_no_colon_or_equals.carbon @@ -19,16 +19,17 @@ var x: {.a} = {}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, // CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, // CHECK:STDOUT: {kind: 'InvalidParse', text: '.', has_error: yes}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', has_error: yes, subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 14}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/fail_period_only.carbon b/toolchain/parse/testdata/struct/fail_period_only.carbon index cc25dd43f6bd..ab1347db8f2e 100644 --- a/toolchain/parse/testdata/struct/fail_period_only.carbon +++ b/toolchain/parse/testdata/struct/fail_period_only.carbon @@ -19,16 +19,17 @@ var x: {.} = {}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: '}', has_error: yes}, // CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, // CHECK:STDOUT: {kind: 'InvalidParse', text: '.', has_error: yes}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', has_error: yes, subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 14}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/fail_period_paren.carbon b/toolchain/parse/testdata/struct/fail_period_paren.carbon index 889affd9d2b6..3fdde3d3bdf4 100644 --- a/toolchain/parse/testdata/struct/fail_period_paren.carbon +++ b/toolchain/parse/testdata/struct/fail_period_paren.carbon @@ -19,14 +19,15 @@ var x: {.(a) = 1}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: '(', has_error: yes}, // CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '1'}, // CHECK:STDOUT: {kind: 'InvalidParse', text: '=', has_error: yes}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', has_error: yes, subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/fail_period_string_colon.carbon b/toolchain/parse/testdata/struct/fail_period_string_colon.carbon index 9f3e28c7f4d9..c4504b0f8331 100644 --- a/toolchain/parse/testdata/struct/fail_period_string_colon.carbon +++ b/toolchain/parse/testdata/struct/fail_period_string_colon.carbon @@ -19,6 +19,7 @@ var x: {."hello": i32, .y: i32} = {}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructTypeLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: '"hello"', has_error: yes}, // CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, @@ -30,11 +31,11 @@ var x: {."hello": i32, .y: i32} = {}; // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'StructTypeLiteralField', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'StructTypeLiteral', text: '}', has_error: yes, subtree_size: 11}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 15}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 19}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 20}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/fail_period_string_equals.carbon b/toolchain/parse/testdata/struct/fail_period_string_equals.carbon index 298893c74f50..b36edd90ef52 100644 --- a/toolchain/parse/testdata/struct/fail_period_string_equals.carbon +++ b/toolchain/parse/testdata/struct/fail_period_string_equals.carbon @@ -19,6 +19,7 @@ var x: {."hello" = 0, .y = 4} = {}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: '"hello"', has_error: yes}, // CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, @@ -30,11 +31,11 @@ var x: {."hello" = 0, .y = 4} = {}; // CHECK:STDOUT: {kind: 'IntLiteral', text: '4'}, // CHECK:STDOUT: {kind: 'StructLiteralField', text: '=', subtree_size: 4}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', has_error: yes, subtree_size: 11}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 15}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 19}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 20}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/fail_type_no_designator.carbon b/toolchain/parse/testdata/struct/fail_type_no_designator.carbon index 4a7e9958af2e..c2c93d98df02 100644 --- a/toolchain/parse/testdata/struct/fail_type_no_designator.carbon +++ b/toolchain/parse/testdata/struct/fail_type_no_designator.carbon @@ -19,14 +19,15 @@ var x: {i32} = {}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'InvalidParse', text: 'i32', has_error: yes}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', has_error: yes, subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 7}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 12}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/no_entries.carbon b/toolchain/parse/testdata/struct/no_entries.carbon index 00e8d1b62cc8..19d0e5861c05 100644 --- a/toolchain/parse/testdata/struct/no_entries.carbon +++ b/toolchain/parse/testdata/struct/no_entries.carbon @@ -15,13 +15,14 @@ var y: {} = {}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/one_entry_no_comma.carbon b/toolchain/parse/testdata/struct/one_entry_no_comma.carbon index 883a3a6560e1..a699ce5254d6 100644 --- a/toolchain/parse/testdata/struct/one_entry_no_comma.carbon +++ b/toolchain/parse/testdata/struct/one_entry_no_comma.carbon @@ -15,14 +15,15 @@ var z: {.n: i32} = {.n = 4}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'z'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructTypeLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, // CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'StructTypeLiteralField', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'StructTypeLiteral', text: '}', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, @@ -30,6 +31,6 @@ var z: {.n: i32} = {.n = 4}; // CHECK:STDOUT: {kind: 'IntLiteral', text: '4'}, // CHECK:STDOUT: {kind: 'StructLiteralField', text: '=', subtree_size: 4}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 18}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 19}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/one_entry_with_comma.carbon b/toolchain/parse/testdata/struct/one_entry_with_comma.carbon index ef92c36066e1..ac97852f5121 100644 --- a/toolchain/parse/testdata/struct/one_entry_with_comma.carbon +++ b/toolchain/parse/testdata/struct/one_entry_with_comma.carbon @@ -15,6 +15,7 @@ var z: {.n: i32,} = {.n = 4,}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'z'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructTypeLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, // CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, @@ -22,8 +23,8 @@ var z: {.n: i32,} = {.n = 4,}; // CHECK:STDOUT: {kind: 'StructTypeLiteralField', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'StructTypeLiteralComma', text: ','}, // CHECK:STDOUT: {kind: 'StructTypeLiteral', text: '}', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 11}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'n'}, @@ -32,6 +33,6 @@ var z: {.n: i32,} = {.n = 4,}; // CHECK:STDOUT: {kind: 'StructLiteralField', text: '=', subtree_size: 4}, // CHECK:STDOUT: {kind: 'StructLiteralComma', text: ','}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 20}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 21}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/struct/two_entries.carbon b/toolchain/parse/testdata/struct/two_entries.carbon index 61d2767eaeeb..f48007b82630 100644 --- a/toolchain/parse/testdata/struct/two_entries.carbon +++ b/toolchain/parse/testdata/struct/two_entries.carbon @@ -15,6 +15,7 @@ var x: {.a: i32, .b: i32} = {.a = 1, .b = 2}; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StructTypeLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, // CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2}, @@ -26,8 +27,8 @@ var x: {.a: i32, .b: i32} = {.a = 1, .b = 2}; // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'StructTypeLiteralField', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'StructTypeLiteral', text: '}', subtree_size: 11}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 15}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StructLiteralStart', text: '{'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, @@ -40,6 +41,6 @@ var x: {.a: i32, .b: i32} = {.a = 1, .b = 2}; // CHECK:STDOUT: {kind: 'IntLiteral', text: '2'}, // CHECK:STDOUT: {kind: 'StructLiteralField', text: '=', subtree_size: 4}, // CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 11}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 28}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 29}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/tuple/access/repeated.carbon b/toolchain/parse/testdata/tuple/access/repeated.carbon index 541e5a1a1e77..9c04830a403b 100644 --- a/toolchain/parse/testdata/tuple/access/repeated.carbon +++ b/toolchain/parse/testdata/tuple/access/repeated.carbon @@ -15,8 +15,9 @@ let x: i32 = tuple.0.1.2; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'tuple'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, @@ -25,6 +26,6 @@ let x: i32 = tuple.0.1.2; // CHECK:STDOUT: {kind: 'MemberAccessExpr', text: '.', subtree_size: 5}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '2'}, // CHECK:STDOUT: {kind: 'MemberAccessExpr', text: '.', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 14}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/tuple/access/value_access.carbon b/toolchain/parse/testdata/tuple/access/value_access.carbon index 71c4a7d29f1d..1753e77c010f 100644 --- a/toolchain/parse/testdata/tuple/access/value_access.carbon +++ b/toolchain/parse/testdata/tuple/access/value_access.carbon @@ -15,12 +15,13 @@ let x: i32 = tuple.0; // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'tuple'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'MemberAccessExpr', text: '.', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 10}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/tuple/nested.carbon b/toolchain/parse/testdata/tuple/nested.carbon index d9f409801e51..cd7ac285d37a 100644 --- a/toolchain/parse/testdata/tuple/nested.carbon +++ b/toolchain/parse/testdata/tuple/nested.carbon @@ -17,6 +17,7 @@ var (a: (), (b: (), c: ())); // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, @@ -27,29 +28,32 @@ var (a: (), (b: (), c: ())); // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 10}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 12}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 15}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 16}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'TuplePatternStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'TuplePatternStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'c'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 11}, -// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 18}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 19}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 21}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 21}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 22}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 24}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/tuple/two_entries.carbon b/toolchain/parse/testdata/tuple/two_entries.carbon index b0fce30b1cb8..f3f7cce7a03c 100644 --- a/toolchain/parse/testdata/tuple/two_entries.carbon +++ b/toolchain/parse/testdata/tuple/two_entries.carbon @@ -15,19 +15,20 @@ var x: (i32, i32) = (1, 2); // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '1'}, // CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '2'}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 17}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/var/fail_bad_name.carbon b/toolchain/parse/testdata/var/fail_bad_name.carbon index 1833824cc131..72a713847aad 100644 --- a/toolchain/parse/testdata/var/fail_bad_name.carbon +++ b/toolchain/parse/testdata/var/fail_bad_name.carbon @@ -36,15 +36,17 @@ var f2: f32; // CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'choice'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'f2'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'FloatTypeLiteral', text: 'f32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/var/fail_ref.carbon b/toolchain/parse/testdata/var/fail_ref.carbon index a2d1c4e72e69..32ba74e79553 100644 --- a/toolchain/parse/testdata/var/fail_ref.carbon +++ b/toolchain/parse/testdata/var/fail_ref.carbon @@ -20,11 +20,12 @@ var ref x: i32 = 0; // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, // CHECK:STDOUT: {kind: 'RefBindingName', text: 'ref', has_error: yes, subtree_size: 2}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':', has_error: yes}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', has_error: yes, subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', has_error: yes, subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', has_error: yes, subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', has_error: yes, subtree_size: 6}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/var/unused.carbon b/toolchain/parse/testdata/var/unused.carbon index 87e53b689bdb..90bbed7fd281 100644 --- a/toolchain/parse/testdata/var/unused.carbon +++ b/toolchain/parse/testdata/var/unused.carbon @@ -90,79 +90,89 @@ var unused (unused y: i32) = (0,); // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, -// CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'w'}, -// CHECK:STDOUT: {kind: 'RefBindingName', text: 'ref', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'w'}, +// CHECK:STDOUT: {kind: 'RefBindingName', text: 'ref', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, +// CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 6}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 10}, // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, -// CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, -// CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'c'}, -// CHECK:STDOUT: {kind: 'RefBindingName', text: 'ref', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 18}, -// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 21}, +// CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, +// CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'c'}, +// CHECK:STDOUT: {kind: 'RefBindingName', text: 'ref', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, +// CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 21}, +// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 24}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'z'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 7}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'w'}, // CHECK:STDOUT: {kind: 'RefBindingName', text: 'ref', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 6}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 10}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 't'}, // CHECK:STDOUT: {kind: 'RefBindingName', text: 'ref', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StringTypeLiteral', text: 'str'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 6}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StringLiteral', text: '"hello"'}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 53}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 60}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: unused_tuple.carbon @@ -171,17 +181,19 @@ var unused (unused y: i32) = (0,); // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'TuplePatternStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 15}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, @@ -190,21 +202,23 @@ var unused (unused y: i32) = (0,); // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 23}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 25}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'TuplePatternStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 15}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, @@ -213,20 +227,22 @@ var unused (unused y: i32) = (0,); // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 23}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 25}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'TuplePatternStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 11}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 14}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, @@ -235,21 +251,23 @@ var unused (unused y: i32) = (0,); // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 22}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 24}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'TuplePatternStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 12}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 15}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, @@ -258,21 +276,23 @@ var unused (unused y: i32) = (0,); // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 23}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 25}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'TuplePatternStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 11}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 12}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 15}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, @@ -281,7 +301,7 @@ var unused (unused y: i32) = (0,); // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 23}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 25}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: var_unused_function.carbon @@ -291,18 +311,20 @@ var unused (unused y: i32) = (0,); // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 15}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 18}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: var_unused_match.carbon @@ -317,12 +339,13 @@ var unused (unused y: i32) = (0,); // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 7}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '3'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'MatchIntroducer', text: 'match'}, // CHECK:STDOUT: {kind: 'MatchConditionStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'f'}, @@ -334,57 +357,61 @@ var unused (unused y: i32) = (0,); // CHECK:STDOUT: {kind: 'MatchCaseIntroducer', text: 'case'}, // CHECK:STDOUT: {kind: 'TuplePatternStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'b'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 11}, -// CHECK:STDOUT: {kind: 'MatchCase', text: '=>', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 13}, +// CHECK:STDOUT: {kind: 'MatchCase', text: '=>', subtree_size: 15}, +// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 16}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 18}, +// CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 20}, // CHECK:STDOUT: {kind: 'MatchCaseIntroducer', text: 'case'}, // CHECK:STDOUT: {kind: 'TuplePatternStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'ParenPattern', text: ')', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'ParenPattern', text: ')', subtree_size: 6}, // CHECK:STDOUT: {kind: 'MatchCaseGuardIntroducer', text: 'if'}, // CHECK:STDOUT: {kind: 'MatchCaseGuardStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'a'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'InfixOperatorLess', text: '<', subtree_size: 3}, // CHECK:STDOUT: {kind: 'MatchCaseGuard', text: ')', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'MatchCase', text: '=>', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'MatchCase', text: '=>', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 15}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '2'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 18}, +// CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 19}, // CHECK:STDOUT: {kind: 'MatchCaseIntroducer', text: 'case'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'a'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, // CHECK:STDOUT: {kind: 'MatchCaseGuardIntroducer', text: 'if'}, // CHECK:STDOUT: {kind: 'MatchCaseGuardStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'a'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'x'}, // CHECK:STDOUT: {kind: 'InfixOperatorExclaimEqual', text: '!=', subtree_size: 3}, // CHECK:STDOUT: {kind: 'MatchCaseGuard', text: ')', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'MatchCase', text: '=>', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'MatchCase', text: '=>', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 15}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '3'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 18}, +// CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 19}, // CHECK:STDOUT: {kind: 'MatchDefaultIntroducer', text: 'default'}, // CHECK:STDOUT: {kind: 'MatchDefault', text: '=>', subtree_size: 2}, // CHECK:STDOUT: {kind: 'MatchHandlerStart', text: '{', subtree_size: 3}, @@ -392,11 +419,11 @@ var unused (unused y: i32) = (0,); // CHECK:STDOUT: {kind: 'IntLiteral', text: '4'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, // CHECK:STDOUT: {kind: 'MatchHandler', text: '}', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'MatchStatement', text: '}', subtree_size: 70}, +// CHECK:STDOUT: {kind: 'MatchStatement', text: '}', subtree_size: 74}, // CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 89}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 94}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: unused_var_function.carbon @@ -406,18 +433,20 @@ var unused (unused y: i32) = (0,); // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 16}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 15}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 18}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: fail_ref_unused.carbon @@ -428,11 +457,12 @@ var unused (unused y: i32) = (0,); // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, // CHECK:STDOUT: {kind: 'RefBindingName', text: 'ref', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':', has_error: yes}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', has_error: yes, subtree_size: 4}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', has_error: yes, subtree_size: 5}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', has_error: yes, subtree_size: 7}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', has_error: yes, subtree_size: 5}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', has_error: yes, subtree_size: 6}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', has_error: yes, subtree_size: 8}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 11}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: fail_nested.carbon @@ -440,14 +470,15 @@ var unused (unused y: i32) = (0,); // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 7}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: fail_nested_parens.carbon @@ -456,17 +487,18 @@ var unused (unused y: i32) = (0,); // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'TuplePatternStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'ParenPattern', text: ')', subtree_size: 6}, -// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'ParenPattern', text: ')', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'UnusedPattern', text: 'unused', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 9}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 15}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 16}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/var/var.carbon b/toolchain/parse/testdata/var/var.carbon index a56758dd110e..74bbb6b4c83e 100644 --- a/toolchain/parse/testdata/var/var.carbon +++ b/toolchain/parse/testdata/var/var.carbon @@ -21,26 +21,29 @@ fn F() { // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'v'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'UnderscoreName', text: '_'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'w'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7}, // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, @@ -48,20 +51,22 @@ fn F() { // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 's'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StringTypeLiteral', text: 'str'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StringLiteral', text: '"hello"'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'UnderscoreName', text: '_'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StringTypeLiteral', text: 'str'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'StringLiteral', text: '"anonymous"'}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 22}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 24}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/var/var_pattern.carbon b/toolchain/parse/testdata/var/var_pattern.carbon index b55618845197..9578788efc2d 100644 --- a/toolchain/parse/testdata/var/var_pattern.carbon +++ b/toolchain/parse/testdata/var/var_pattern.carbon @@ -33,14 +33,15 @@ let (x: (), var (y: (), var z: ())) = ((), ((), ())); // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 11}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: tuple.carbon @@ -49,16 +50,18 @@ let (x: (), var (y: (), var z: ())) = ((), ((), ())); // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'TuplePatternStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 14}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, @@ -67,7 +70,7 @@ let (x: (), var (y: (), var z: ())) = ((), ((), ())); // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 22}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 24}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: function.carbon @@ -77,17 +80,19 @@ let (x: (), var (y: (), var z: ())) = ((), ((), ())); // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'F'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 12}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 15}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 6}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 17}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] // CHECK:STDOUT: - filename: fail_nested.carbon @@ -96,24 +101,27 @@ let (x: (), var (y: (), var z: ())) = ((), ((), ())); // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, // CHECK:STDOUT: {kind: 'TuplePatternStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'TuplePatternStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'y'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'z'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', has_error: yes, subtree_size: 5}, -// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', has_error: yes, subtree_size: 12}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 13}, -// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 20}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', has_error: yes, subtree_size: 6}, +// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', has_error: yes, subtree_size: 14}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 15}, +// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 23}, // CHECK:STDOUT: {kind: 'LetInitializer', text: '='}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, @@ -127,6 +135,6 @@ let (x: (), var (y: (), var z: ())) = ((), ((), ())); // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 2}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 7}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 12}, -// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 35}, +// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 38}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/var/var_tuple.carbon b/toolchain/parse/testdata/var/var_tuple.carbon index 2460f0d9d412..f2ea9bfaedc7 100644 --- a/toolchain/parse/testdata/var/var_tuple.carbon +++ b/toolchain/parse/testdata/var/var_tuple.carbon @@ -23,21 +23,23 @@ fn F() { // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'TuplePatternStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 's'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'StringTypeLiteral', text: 'str'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, // CHECK:STDOUT: {kind: 'PatternListComma', text: ','}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'i'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'TuplePattern', text: ')', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 12}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'TupleLiteralStart', text: '('}, // CHECK:STDOUT: {kind: 'StringLiteral', text: '"hello"'}, // CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','}, // CHECK:STDOUT: {kind: 'IntLiteral', text: '0'}, // CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 5}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 18}, -// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 24}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 20}, +// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 26}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/where_expr/basic.carbon b/toolchain/parse/testdata/where_expr/basic.carbon index bbad82fb3f28..d66bd46edee3 100644 --- a/toolchain/parse/testdata/where_expr/basic.carbon +++ b/toolchain/parse/testdata/where_expr/basic.carbon @@ -27,6 +27,7 @@ fn F() { // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'Foo'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'WhereOperand', text: 'where', subtree_size: 2}, // CHECK:STDOUT: {kind: 'SelfTypeName', text: 'Self'}, @@ -34,9 +35,9 @@ fn F() { // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, // CHECK:STDOUT: {kind: 'RequirementEqualEqual', text: '==', subtree_size: 4}, // CHECK:STDOUT: {kind: 'WhereExpr', text: 'where', subtree_size: 7}, -// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 9}, -// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 11}, -// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 14}, +// CHECK:STDOUT: {kind: 'LetBindingPattern', text: ':', subtree_size: 10}, +// CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 12}, +// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 15}, // CHECK:STDOUT: {kind: 'InterfaceIntroducer', text: 'interface'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'I'}, // CHECK:STDOUT: {kind: 'InterfaceDefinitionStart', text: '{', subtree_size: 3}, @@ -53,8 +54,8 @@ fn F() { // CHECK:STDOUT: {kind: 'AssociatedConstantDecl', text: ';', subtree_size: 11}, // CHECK:STDOUT: {kind: 'InterfaceDefinition', text: '}', subtree_size: 15}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'WhereOperand', text: 'where', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'U'}, @@ -71,8 +72,8 @@ fn F() { // CHECK:STDOUT: {kind: 'ExplicitParamList', text: ')', subtree_size: 2}, // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'U'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'U'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'WhereOperand', text: 'where', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'W'}, diff --git a/toolchain/parse/testdata/where_expr/designators.carbon b/toolchain/parse/testdata/where_expr/designators.carbon index d3342a4bd2a4..9fd162fd4762 100644 --- a/toolchain/parse/testdata/where_expr/designators.carbon +++ b/toolchain/parse/testdata/where_expr/designators.carbon @@ -59,11 +59,11 @@ fn FailStar() { var x: i32 = . -// CHECK:STDERR: fail_designator_eof.carbon:[[@LINE+95]]:21: error: expected identifier or `Self` after `.` [ExpectedIdentifierOrSelfAfterPeriod] +// CHECK:STDERR: fail_designator_eof.carbon:[[@LINE+96]]:21: error: expected identifier or `Self` after `.` [ExpectedIdentifierOrSelfAfterPeriod] // CHECK:STDERR: // CHECK:STDOUT: ] // CHECK:STDERR: ^ // CHECK:STDERR: -// CHECK:STDERR: fail_designator_eof.carbon:[[@LINE+91]]:21: error: `var` declarations must end with a `;` [ExpectedDeclSemi] +// CHECK:STDERR: fail_designator_eof.carbon:[[@LINE+92]]:21: error: `var` declarations must end with a `;` [ExpectedDeclSemi] // CHECK:STDERR: // CHECK:STDOUT: ] // CHECK:STDERR: ^ // CHECK:STDERR: @@ -146,12 +146,13 @@ var x: i32 = . // CHECK:STDOUT: {kind: 'FileStart', text: ''}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'x'}, +// CHECK:STDOUT: {kind: 'BindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, -// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 3}, -// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VarBindingPattern', text: ':', subtree_size: 4}, +// CHECK:STDOUT: {kind: 'VariablePattern', text: 'var', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'InvalidParse', text: '', has_error: yes}, // CHECK:STDOUT: {kind: 'DesignatorExpr', text: '.', has_error: yes, subtree_size: 2}, -// CHECK:STDOUT: {kind: 'VariableDecl', text: '.', has_error: yes, subtree_size: 9}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: '.', has_error: yes, subtree_size: 10}, // CHECK:STDOUT: {kind: 'FileEnd', text: ''}, // CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/where_expr/fail_rewrite.carbon b/toolchain/parse/testdata/where_expr/fail_rewrite.carbon index 4caa76f6b837..fd850eefe49d 100644 --- a/toolchain/parse/testdata/where_expr/fail_rewrite.carbon +++ b/toolchain/parse/testdata/where_expr/fail_rewrite.carbon @@ -73,8 +73,8 @@ fn AfterAnd(generic Z: Q where .R impls S and () = .A); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'NotDesignator'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'WhereOperand', text: 'where', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IntTypeLiteral', text: 'i32'}, @@ -90,8 +90,8 @@ fn AfterAnd(generic Z: Q where .R impls S and () = .A); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'DesignatorInParens'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'V'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'V'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'I'}, // CHECK:STDOUT: {kind: 'WhereOperand', text: 'where', subtree_size: 2}, // CHECK:STDOUT: {kind: 'ParenExprStart', text: '('}, @@ -110,8 +110,8 @@ fn AfterAnd(generic Z: Q where .R impls S and () = .A); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'DotSelf'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'W'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'W'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'K'}, // CHECK:STDOUT: {kind: 'WhereOperand', text: 'where', subtree_size: 2}, // CHECK:STDOUT: {kind: 'SelfTypeName', text: 'Self'}, @@ -128,8 +128,8 @@ fn AfterAnd(generic Z: Q where .R impls S and () = .A); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'DotKeyword'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'W'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'W'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'K'}, // CHECK:STDOUT: {kind: 'WhereOperand', text: 'where', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'and', has_error: yes}, @@ -146,8 +146,8 @@ fn AfterAnd(generic Z: Q where .R impls S and () = .A); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'PostfixAfterDesignator'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'X'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'X'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'L'}, // CHECK:STDOUT: {kind: 'WhereOperand', text: 'where', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'M'}, @@ -165,8 +165,8 @@ fn AfterAnd(generic Z: Q where .R impls S and () = .A); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'BinaryOpAfterDesignator'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'Y'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'Y'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'N'}, // CHECK:STDOUT: {kind: 'WhereOperand', text: 'where', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'O'}, @@ -186,8 +186,8 @@ fn AfterAnd(generic Z: Q where .R impls S and () = .A); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'AfterAnd'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'Z'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'Z'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'Q'}, // CHECK:STDOUT: {kind: 'WhereOperand', text: 'where', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'R'}, diff --git a/toolchain/parse/testdata/where_expr/where_and.carbon b/toolchain/parse/testdata/where_expr/where_and.carbon index f256a1d78635..97550be46394 100644 --- a/toolchain/parse/testdata/where_expr/where_and.carbon +++ b/toolchain/parse/testdata/where_expr/where_and.carbon @@ -44,8 +44,8 @@ fn AndEarly(generic Z: L where .M and N); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'OneAnd'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'WhereOperand', text: 'where', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'U'}, @@ -65,8 +65,8 @@ fn AndEarly(generic Z: L where .M and N); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'TwoAnd'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'Y'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'Y'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'I'}, // CHECK:STDOUT: {kind: 'WhereOperand', text: 'where', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'J'}, @@ -96,8 +96,8 @@ fn AndEarly(generic Z: L where .M and N); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'AndPrefix'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'T'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'}, // CHECK:STDOUT: {kind: 'WhereOperand', text: 'where', subtree_size: 2}, // CHECK:STDOUT: {kind: 'InvalidParse', text: 'and', has_error: yes}, @@ -113,8 +113,8 @@ fn AndEarly(generic Z: L where .M and N); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'AndSuffix'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'Y'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'Y'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'I'}, // CHECK:STDOUT: {kind: 'WhereOperand', text: 'where', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'J'}, @@ -135,8 +135,8 @@ fn AndEarly(generic Z: L where .M and N); // CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'}, // CHECK:STDOUT: {kind: 'IdentifierNameMaybeBeforeSignature', text: 'AndEarly'}, // CHECK:STDOUT: {kind: 'ExplicitParamListStart', text: '('}, -// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'Z'}, -// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternStart', text: ':', subtree_size: 2}, +// CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'Z'}, +// CHECK:STDOUT: {kind: 'CompileTimeBindingPatternTypeStart', text: ':'}, // CHECK:STDOUT: {kind: 'IdentifierNameExpr', text: 'L'}, // CHECK:STDOUT: {kind: 'WhereOperand', text: 'where', subtree_size: 2}, // CHECK:STDOUT: {kind: 'IdentifierNameNotBeforeSignature', text: 'M'}, diff --git a/toolchain/parse/typed_nodes.h b/toolchain/parse/typed_nodes.h index cff8d275d360..cc3145cf7e9d 100644 --- a/toolchain/parse/typed_nodes.h +++ b/toolchain/parse/typed_nodes.h @@ -396,15 +396,24 @@ struct RuntimeBindingName { AnyRuntimeBindingPatternName name; }; +struct BindingPatternTypeStart { + static constexpr auto Kind = + NodeKind::BindingPatternTypeStart.Define({.child_count = 0}); + // This is a virtual token. The `:` or `:?` token is owned by the enclosing + // BindingPattern node. + Lex::TokenIndex token; +}; + // A binding pattern, such as `name: Type`, that isn't inside a `var` pattern. struct LetBindingPattern { static constexpr auto Kind = NodeKind::LetBindingPattern.Define( - {.category = NodeCategory::Pattern, .child_count = 2}); + {.category = NodeCategory::Pattern, .child_count = 3}); // TODO: is there some way to reuse AnyRuntimeBindingPatternName here? NodeIdOneOf name; + BindingPatternTypeStartId introducer; Lex::ColonTokenIndex token; AnyExprId type; }; @@ -424,9 +433,10 @@ struct SelfBindingPattern { // A binding pattern, such as `name: Type`, that is inside a `var` pattern. struct VarBindingPattern { static constexpr auto Kind = NodeKind::VarBindingPattern.Define( - {.category = NodeCategory::Pattern, .child_count = 2}); + {.category = NodeCategory::Pattern, .child_count = 3}); AnyRuntimeBindingPatternName name; + BindingPatternTypeStartId introducer; Lex::ColonTokenIndex token; AnyExprId type; }; @@ -434,9 +444,10 @@ struct VarBindingPattern { // A form binding pattern, such as `name:? Form`. struct FormBindingPattern { static constexpr auto Kind = NodeKind::FormBindingPattern.Define( - {.category = NodeCategory::Pattern, .child_count = 2}); + {.category = NodeCategory::Pattern, .child_count = 3}); AnyRuntimeBindingPatternName name; + BindingPatternTypeStartId introducer; Lex::ColonQuestionTokenIndex token; AnyExprId type; }; @@ -450,13 +461,9 @@ struct TemplateBindingName { AnyRuntimeBindingPatternName name; }; -struct CompileTimeBindingPatternStart { +struct CompileTimeBindingPatternTypeStart { static constexpr auto Kind = - NodeKind::CompileTimeBindingPatternStart.Define({.child_count = 1}); - // TODO: is there some way to reuse AnyRuntimeBindingPatternName here? - NodeIdOneOf - name; + NodeKind::CompileTimeBindingPatternTypeStart.Define({.child_count = 0}); // This is a virtual token. The `:` token is owned by the // CompileTimeBindingPattern node. Lex::ColonTokenIndex token; @@ -467,9 +474,13 @@ struct CompileTimeBindingPatternStart { // or an explicit parameter marked `generic`/`template`). struct CompileTimeBindingPattern { static constexpr auto Kind = NodeKind::CompileTimeBindingPattern.Define( - {.category = NodeCategory::Pattern, .child_count = 2}); + {.category = NodeCategory::Pattern, .child_count = 3}); - CompileTimeBindingPatternStartId introducer; + // TODO: is there some way to reuse AnyRuntimeBindingPatternName here? + NodeIdOneOf + name; + CompileTimeBindingPatternTypeStartId introducer; Lex::ColonTokenIndex token; AnyExprId type; };