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.
This commit is contained in:
Dana Jansens
2026-07-22 16:45:00 +00:00
committed by GitHub
parent 21dc5cde04
commit d2ac9b3933
170 changed files with 1858 additions and 1314 deletions
+10 -2
View File
@@ -259,7 +259,7 @@ class Context {
using ImplLookupCacheMap = Map<ImplLookupCacheKey, SemIR::ConstantId>;
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<SemIR::ImplId>& {
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<WhereStackEntry> 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.
+52
View File
@@ -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<SemIR::FacetType>(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<SemIR::InstId> 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
+8
View File
@@ -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_
+155 -39
View File
@@ -135,16 +135,80 @@ struct BindingPatternTypeInfo {
};
} // namespace
static auto FindInvalidWhere(Context& context, SemIR::InstId first_inst_id)
-> SemIR::LocId {
llvm::SmallVector<SemIR::InstId> work = {first_inst_id};
while (!work.empty()) {
auto next_id = work.pop_back_val();
if (auto where = context.insts().TryGetAs<SemIR::WhereExpr>(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<SemIR::RequirementBaseFacetType>(
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<SemIR::FacetType>(
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<Parse::NodeKind, SemIR::InstId>;
// 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<SemIR::InstId>(&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<SemIR::FacetType>(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<SemIR::FacetType>(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<Parse::NodeKind>(type_start_or_self_type)) {
case Parse::NodeKind::BindingPatternTypeStart:
before_where_count = context.node_stack()
.Pop<Parse::NodeKind::BindingPatternTypeStart>()
.index;
break;
case Parse::NodeKind::CompileTimeBindingPatternTypeStart:
before_where_count =
context.node_stack()
.Pop<Parse::NodeKind::CompileTimeBindingPatternTypeStart>()
.index;
break;
default:
CARBON_FATAL("unexpected node kind {0}",
std::get<Parse::NodeKind>(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<Parse::NodeKind::TemplateBindingName>();
@@ -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,
+2 -60
View File
@@ -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<SemIR::FacetType>(
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<SemIR::FacetType>(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<SemIR::InstId> 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.
//
+3 -1
View File
@@ -448,6 +448,9 @@ class NodeStack {
case Parse::NodeKind::DefaultLibrary:
case Parse::NodeKind::LibraryName:
return Id::KindFor<SemIR::LibraryNameId>();
case Parse::NodeKind::BindingPatternTypeStart:
case Parse::NodeKind::CompileTimeBindingPatternTypeStart:
return Id::KindFor<SemIR::ElementIndex>();
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:
+4 -4
View File
@@ -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: ^~~~
+2 -2
View File
@@ -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: ^~~~~~~~
+121
View File
@@ -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)) {}
+2 -2
View File
@@ -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);
+1
View File
@@ -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)
+2 -1
View File
@@ -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, "!=")
+8 -4
View File
@@ -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);
+2 -1
View File
@@ -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)
+4 -3
View File
@@ -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: ]
+28 -21
View File
@@ -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: ]
+3 -2
View File
@@ -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: ]
+7 -6
View File
@@ -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: ]
+4 -3
View File
@@ -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: ]
@@ -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: ]
@@ -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: ]
+5 -4
View File
@@ -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: ]
+16 -12
View File
@@ -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: ]
+24 -18
View File
@@ -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: ]
@@ -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},
+6 -5
View File
@@ -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: ]
+15 -12
View File
@@ -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: ]
+13 -10
View File
@@ -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: ]
@@ -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: ]
+7 -6
View File
@@ -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: ]
+14 -12
View File
@@ -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: ]
+39 -35
View File
@@ -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: ]
+17 -13
View File
@@ -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: ]
+31 -24
View File
@@ -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
+13 -10
View File
@@ -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
@@ -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: ]
+10 -8
View File
@@ -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: ]
@@ -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},
@@ -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},
@@ -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: ','},
+24 -24
View File
@@ -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},
@@ -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},
@@ -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: ','},
@@ -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},
@@ -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},
@@ -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: ]
+5 -4
View File
@@ -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: ]
+6 -6
View File
@@ -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},
@@ -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: ]
+6 -6
View File
@@ -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},
+15 -13
View File
@@ -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: ]
+19 -16
View File
@@ -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: ]
@@ -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: ]
@@ -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: ]
+10 -8
View File
@@ -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: ]
@@ -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: ]
+2 -2
View File
@@ -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},
+11 -8
View File
@@ -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: ]
@@ -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: ]
@@ -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: ]
@@ -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: ]
@@ -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: ]
+4 -4
View File
@@ -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},
@@ -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: ','},
+24 -24
View File
@@ -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},
+8 -8
View File
@@ -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},
@@ -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: ','},
+9 -6
View File
@@ -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: ]
@@ -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: ]
@@ -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: ]
+5 -4
View File
@@ -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: ]
@@ -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: ]
+5 -4
View File
@@ -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: ]
+4 -3
View File
@@ -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: '('},
+5 -4
View File
@@ -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: ]
+4 -3
View File
@@ -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: ]
+4 -3
View File
@@ -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: ]
+4 -3
View File
@@ -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: ]
+33 -25
View File
@@ -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: ]
+2 -2
View File
@@ -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: '='},
+2 -2
View File
@@ -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: '='},
+13 -9
View File
@@ -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: ]
+13 -9
View File
@@ -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: ]
+7 -5
View File
@@ -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: ]
+7 -5
View File
@@ -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},
@@ -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: ]
+12 -10
View File
@@ -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: ]
@@ -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: ]
@@ -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: ]
@@ -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: ]
@@ -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: ]
@@ -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: ]
+25 -20
View File
@@ -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: ]
+5 -4
View File
@@ -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: ]
+9 -7
View File
@@ -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: ]
@@ -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: ]
@@ -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: ]
@@ -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: ]
@@ -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: ]
@@ -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: ]

Some files were not shown because too many files have changed in this diff Show More