Use more specific node kinds for literals. (#3419)

Sounding out the approach, to make it clearer what a literal node
corresponds to.
This commit is contained in:
Jon Ross-Perkins
2023-11-22 01:27:28 +00:00
committed by GitHub
parent f1ddded3a1
commit a204689893
107 changed files with 463 additions and 383 deletions
+89 -73
View File
@@ -6,80 +6,96 @@
namespace Carbon::Check {
auto HandleLiteral(Context& context, Parse::Node parse_node) -> bool {
auto token = context.parse_tree().node_token(parse_node);
switch (auto token_kind = context.tokens().GetKind(token)) {
case Lex::TokenKind::False:
case Lex::TokenKind::True: {
context.AddInstAndPush(
parse_node,
SemIR::BoolLiteral{
parse_node, context.GetBuiltinType(SemIR::BuiltinKind::BoolType),
token_kind == Lex::TokenKind::True ? SemIR::BoolValue::True
: SemIR::BoolValue::False});
break;
}
case Lex::TokenKind::IntegerLiteral: {
context.AddInstAndPush(
parse_node,
SemIR::IntegerLiteral{
parse_node,
context.GetBuiltinType(SemIR::BuiltinKind::IntegerType),
context.tokens().GetIntegerLiteral(token)});
break;
}
case Lex::TokenKind::RealLiteral: {
context.AddInstAndPush(
parse_node,
SemIR::RealLiteral{
parse_node,
context.GetBuiltinType(SemIR::BuiltinKind::FloatingPointType),
context.tokens().GetRealLiteral(token)});
break;
}
case Lex::TokenKind::StringLiteral: {
auto id = context.tokens().GetStringLiteral(token);
context.AddInstAndPush(
parse_node,
SemIR::StringLiteral{
parse_node,
context.GetBuiltinType(SemIR::BuiltinKind::StringType), id});
break;
}
case Lex::TokenKind::Type: {
context.node_stack().Push(parse_node, SemIR::InstId::BuiltinTypeType);
break;
}
case Lex::TokenKind::Bool: {
context.node_stack().Push(parse_node, SemIR::InstId::BuiltinBoolType);
break;
}
case Lex::TokenKind::IntegerTypeLiteral: {
auto text = context.tokens().GetTokenText(token);
if (text != "i32") {
return context.TODO(parse_node, "Currently only i32 is allowed");
}
context.node_stack().Push(parse_node, SemIR::InstId::BuiltinIntegerType);
break;
}
case Lex::TokenKind::FloatingPointTypeLiteral: {
auto text = context.tokens().GetTokenText(token);
if (text != "f64") {
return context.TODO(parse_node, "Currently only f64 is allowed");
}
context.node_stack().Push(parse_node,
SemIR::InstId::BuiltinFloatingPointType);
break;
}
case Lex::TokenKind::StringTypeLiteral: {
context.node_stack().Push(parse_node, SemIR::InstId::BuiltinStringType);
break;
}
default: {
return context.TODO(parse_node, llvm::formatv("Handle {0}", token_kind));
}
}
auto HandleBoolLiteralFalse(Context& context, Parse::Node parse_node) -> bool {
context.AddInstAndPush(
parse_node,
SemIR::BoolLiteral{parse_node,
context.GetBuiltinType(SemIR::BuiltinKind::BoolType),
SemIR::BoolValue::False});
return true;
}
auto HandleBoolLiteralTrue(Context& context, Parse::Node parse_node) -> bool {
context.AddInstAndPush(
parse_node,
SemIR::BoolLiteral{parse_node,
context.GetBuiltinType(SemIR::BuiltinKind::BoolType),
SemIR::BoolValue::True});
return true;
}
auto HandleIntegerLiteral(Context& context, Parse::Node parse_node) -> bool {
context.AddInstAndPush(
parse_node,
SemIR::IntegerLiteral{
parse_node, context.GetBuiltinType(SemIR::BuiltinKind::IntegerType),
context.tokens().GetIntegerLiteral(
context.parse_tree().node_token(parse_node))});
return true;
}
auto HandleFloatingPointLiteral(Context& context, Parse::Node parse_node)
-> bool {
context.AddInstAndPush(
parse_node,
SemIR::RealLiteral{
parse_node,
context.GetBuiltinType(SemIR::BuiltinKind::FloatingPointType),
context.tokens().GetRealLiteral(
context.parse_tree().node_token(parse_node))});
return true;
}
auto HandleStringLiteral(Context& context, Parse::Node parse_node) -> bool {
context.AddInstAndPush(
parse_node,
SemIR::StringLiteral{
parse_node, context.GetBuiltinType(SemIR::BuiltinKind::StringType),
context.tokens().GetStringLiteral(
context.parse_tree().node_token(parse_node))});
return true;
}
auto HandleBoolTypeLiteral(Context& context, Parse::Node parse_node) -> bool {
context.node_stack().Push(parse_node, SemIR::InstId::BuiltinBoolType);
return true;
}
auto HandleIntegerTypeLiteral(Context& context, Parse::Node parse_node)
-> bool {
auto text = context.tokens().GetTokenText(
context.parse_tree().node_token(parse_node));
if (text != "i32") {
return context.TODO(parse_node, "Currently only i32 is allowed");
}
context.node_stack().Push(parse_node, SemIR::InstId::BuiltinIntegerType);
return true;
}
auto HandleUnsignedIntegerTypeLiteral(Context& context, Parse::Node parse_node)
-> bool {
return context.TODO(parse_node, "Need to support unsigned type literals");
}
auto HandleFloatingPointTypeLiteral(Context& context, Parse::Node parse_node)
-> bool {
auto text = context.tokens().GetTokenText(
context.parse_tree().node_token(parse_node));
if (text != "f64") {
return context.TODO(parse_node, "Currently only f64 is allowed");
}
context.node_stack().Push(parse_node,
SemIR::InstId::BuiltinFloatingPointType);
return true;
}
auto HandleStringTypeLiteral(Context& context, Parse::Node parse_node) -> bool {
context.node_stack().Push(parse_node, SemIR::InstId::BuiltinStringType);
return true;
}
auto HandleTypeTypeLiteral(Context& context, Parse::Node parse_node) -> bool {
context.node_stack().Push(parse_node, SemIR::InstId::BuiltinTypeType);
return true;
}
+5 -1
View File
@@ -298,7 +298,6 @@ class NodeStack {
case Parse::NodeKind::IfExprElse:
case Parse::NodeKind::IndexExpr:
case Parse::NodeKind::InfixOperator:
case Parse::NodeKind::Literal:
case Parse::NodeKind::MemberAccessExpr:
case Parse::NodeKind::NameExpr:
case Parse::NodeKind::ParenExpr:
@@ -314,6 +313,11 @@ class NodeStack {
case Parse::NodeKind::StructFieldType:
case Parse::NodeKind::StructTypeLiteral:
case Parse::NodeKind::TupleLiteral:
// Use x-macros to handle literal cases.
#define CARBON_PARSE_NODE_KIND(...)
#define CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(Name, ...) \
case Parse::NodeKind::Name:
#include "toolchain/parse/node_kind.def"
return IdKind::InstId;
case Parse::NodeKind::IfCondition:
case Parse::NodeKind::IfExprIf:
+53 -11
View File
@@ -77,18 +77,60 @@ auto HandleExprInPostfix(Context& context) -> void {
context.PushState(state);
break;
}
case Lex::TokenKind::False:
case Lex::TokenKind::True:
case Lex::TokenKind::IntegerLiteral:
case Lex::TokenKind::RealLiteral:
case Lex::TokenKind::StringLiteral:
case Lex::TokenKind::Bool:
case Lex::TokenKind::IntegerTypeLiteral:
case Lex::TokenKind::UnsignedIntegerTypeLiteral:
case Lex::TokenKind::FloatingPointTypeLiteral:
case Lex::TokenKind::StringTypeLiteral:
case Lex::TokenKind::False: {
context.AddLeafNode(NodeKind::BoolLiteralFalse, context.Consume());
context.PushState(state);
break;
}
case Lex::TokenKind::True: {
context.AddLeafNode(NodeKind::BoolLiteralTrue, context.Consume());
context.PushState(state);
break;
}
case Lex::TokenKind::IntegerLiteral: {
context.AddLeafNode(NodeKind::IntegerLiteral, context.Consume());
context.PushState(state);
break;
}
case Lex::TokenKind::RealLiteral: {
context.AddLeafNode(NodeKind::FloatingPointLiteral, context.Consume());
context.PushState(state);
break;
}
case Lex::TokenKind::StringLiteral: {
context.AddLeafNode(NodeKind::StringLiteral, context.Consume());
context.PushState(state);
break;
}
case Lex::TokenKind::Bool: {
context.AddLeafNode(NodeKind::BoolTypeLiteral, context.Consume());
context.PushState(state);
break;
}
case Lex::TokenKind::IntegerTypeLiteral: {
context.AddLeafNode(NodeKind::IntegerTypeLiteral, context.Consume());
context.PushState(state);
break;
}
case Lex::TokenKind::UnsignedIntegerTypeLiteral: {
context.AddLeafNode(NodeKind::UnsignedIntegerTypeLiteral,
context.Consume());
context.PushState(state);
break;
}
case Lex::TokenKind::FloatingPointTypeLiteral: {
context.AddLeafNode(NodeKind::FloatingPointTypeLiteral,
context.Consume());
context.PushState(state);
break;
}
case Lex::TokenKind::StringTypeLiteral: {
context.AddLeafNode(NodeKind::StringTypeLiteral, context.Consume());
context.PushState(state);
break;
}
case Lex::TokenKind::Type: {
context.AddLeafNode(NodeKind::Literal, context.Consume());
context.AddLeafNode(NodeKind::TypeTypeLiteral, context.Consume());
context.PushState(state);
break;
}
+36 -18
View File
@@ -17,6 +17,9 @@
// - CARBON_PARSE_NODE_KIND_CHILD_COUNT(Name, ChildCount, LexTokenKinds)
// Defines a parse node with a set number of children, often 0. This count
// must be correct even when the node contains errors.
// - CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(Name, Token)
// Defines a parse node that corresponds to a token that is a single-token
// literal. The token is wrapped for LexTokenKinds.
//
// In both cases, LexTokenKinds says which Lex::TokenKind values that this
// parse node can correspond to, and is a sequence of:
@@ -47,6 +50,16 @@
CARBON_PARSE_NODE_KIND(Name)
#endif
// This is expected to be used with something like:
//
// // Use x-macros to handle literal cases.
// #define CARBON_PARSE_NODE_KIND(...)
// #define CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(Name, ...) <code>
#ifndef CARBON_PARSE_NODE_KIND_TOKEN_LITERAL
#define CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(Name, LexTokenKinds) \
CARBON_PARSE_NODE_KIND_CHILD_COUNT(Name, 0, LexTokenKinds)
#endif
// The start of the file.
CARBON_PARSE_NODE_KIND_CHILD_COUNT(FileStart, 0, CARBON_TOKEN(StartOfFile))
@@ -187,15 +200,13 @@ CARBON_PARSE_NODE_KIND_BRACKET(FunctionDecl, FunctionIntroducer,
//
// Exprs and ParamListComma may repeat with ParamListComma as a
// separator.
CARBON_PARSE_NODE_KIND_CHILD_COUNT(ParamListStart, 0,
CARBON_TOKEN(OpenParen))
CARBON_PARSE_NODE_KIND_CHILD_COUNT(ParamListStart, 0, CARBON_TOKEN(OpenParen))
CARBON_PARSE_NODE_KIND_CHILD_COUNT(ImplicitParamListStart, 0,
CARBON_TOKEN(OpenSquareBracket))
CARBON_PARSE_NODE_KIND_CHILD_COUNT(ParamListComma, 0, CARBON_TOKEN(Comma))
CARBON_PARSE_NODE_KIND_BRACKET(ParamList, ParamListStart,
CARBON_TOKEN(CloseParen))
CARBON_PARSE_NODE_KIND_BRACKET(ImplicitParamList,
ImplicitParamListStart,
CARBON_PARSE_NODE_KIND_BRACKET(ImplicitParamList, ImplicitParamListStart,
CARBON_TOKEN(CloseSquareBracket))
// An array type, such as `[i32; 3]` or `[i32;]`:
@@ -413,21 +424,27 @@ CARBON_PARSE_NODE_KIND_CHILD_COUNT(MemberAccessExpr, 2, CARBON_TOKEN(Period))
CARBON_PARSE_NODE_KIND_CHILD_COUNT(PointerMemberAccessExpr, 2,
CARBON_TOKEN(MinusGreater))
// clang-format off
// A value literal.
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(BoolLiteralFalse, CARBON_TOKEN(False))
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(BoolLiteralTrue, CARBON_TOKEN(True))
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(IntegerLiteral,
CARBON_TOKEN(IntegerLiteral))
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(FloatingPointLiteral, CARBON_TOKEN(RealLiteral))
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(StringLiteral, CARBON_TOKEN(StringLiteral))
// A literal.
CARBON_PARSE_NODE_KIND_CHILD_COUNT(Literal, 0,
CARBON_TOKEN(False)
CARBON_TOKEN(True)
CARBON_TOKEN(IntegerLiteral)
CARBON_TOKEN(RealLiteral)
CARBON_TOKEN(StringLiteral)
CARBON_TOKEN(Bool)
CARBON_TOKEN(IntegerTypeLiteral)
CARBON_TOKEN(UnsignedIntegerTypeLiteral)
CARBON_TOKEN(FloatingPointTypeLiteral)
CARBON_TOKEN(StringTypeLiteral)
CARBON_TOKEN(Type))
// A type literal.
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(BoolTypeLiteral, CARBON_TOKEN(Bool))
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(IntegerTypeLiteral,
CARBON_TOKEN(IntegerTypeLiteral))
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(UnsignedIntegerTypeLiteral,
CARBON_TOKEN(UnsignedIntegerTypeLiteral))
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(FloatingPointTypeLiteral,
CARBON_TOKEN(FloatingPointTypeLiteral))
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(StringTypeLiteral,
CARBON_TOKEN(StringTypeLiteral))
CARBON_PARSE_NODE_KIND_TOKEN_LITERAL(TypeTypeLiteral, CARBON_TOKEN(Type))
// clang-format off
// A prefix operator:
// _external_: expression
@@ -624,6 +641,7 @@ CARBON_PARSE_NODE_KIND_CHILD_COUNT(SelfTypeNameExpr, 0,
#undef CARBON_PARSE_NODE_KIND
#undef CARBON_PARSE_NODE_KIND_BRACKET
#undef CARBON_PARSE_NODE_KIND_CHILD_COUNT
#undef CARBON_PARSE_NODE_KIND_TOKEN_LITERAL
#undef CARBON_TOKEN
#undef CARBON_ANY_TOKEN
#undef CARBON_IF_ERROR
@@ -25,7 +25,7 @@ var x: [i32;;
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'x'},
// CHECK:STDOUT: {kind: 'ArrayExprStart', text: '['},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'ArrayExprSemi', text: ';', subtree_size: 3},
// CHECK:STDOUT: {kind: 'InvalidParse', text: ';', has_error: yes},
// CHECK:STDOUT: {kind: 'ArrayExpr', text: ']', has_error: yes, subtree_size: 5},
+1 -1
View File
@@ -15,7 +15,7 @@ var x: [i32];
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'x'},
// CHECK:STDOUT: {kind: 'ArrayExprStart', text: '['},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'ArrayExprSemi', text: ']', has_error: yes, subtree_size: 3},
// CHECK:STDOUT: {kind: 'ArrayExpr', text: ']', has_error: yes, subtree_size: 4},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 6},
+2 -2
View File
@@ -12,9 +12,9 @@ var x: [i32; 10];
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'x'},
// CHECK:STDOUT: {kind: 'ArrayExprStart', text: '['},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'ArrayExprSemi', text: ';', subtree_size: 3},
// CHECK:STDOUT: {kind: 'Literal', text: '10'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '10'},
// CHECK:STDOUT: {kind: 'ArrayExpr', text: ']', subtree_size: 5},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 7},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9},
+1 -1
View File
@@ -12,7 +12,7 @@ var x: [i32;];
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'x'},
// CHECK:STDOUT: {kind: 'ArrayExprStart', text: '['},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'ArrayExprSemi', text: ';', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ArrayExpr', text: ']', subtree_size: 4},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 6},
+6 -6
View File
@@ -13,24 +13,24 @@ var test_str: String = "Test";
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'test_i32'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: '0'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '0'},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'test_f64'},
// CHECK:STDOUT: {kind: 'Literal', text: 'f64'},
// CHECK:STDOUT: {kind: 'FloatingPointTypeLiteral', text: 'f64'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: '0.1'},
// CHECK:STDOUT: {kind: 'FloatingPointLiteral', text: '0.1'},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'test_str'},
// CHECK:STDOUT: {kind: 'Literal', text: 'String'},
// CHECK:STDOUT: {kind: 'StringTypeLiteral', text: 'String'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: '"Test"'},
// CHECK:STDOUT: {kind: 'StringLiteral', text: '"Test"'},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7},
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
// CHECK:STDOUT: ]
+16 -16
View File
@@ -36,48 +36,48 @@ fn F() {
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'ints'},
// CHECK:STDOUT: {kind: 'ArrayExprStart', text: '['},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'ArrayExprSemi', text: ';', subtree_size: 3},
// CHECK:STDOUT: {kind: 'Literal', text: '5'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '5'},
// CHECK:STDOUT: {kind: 'ArrayExpr', text: ']', subtree_size: 5},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 7},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'ParenExprOrTupleLiteralStart', text: '('},
// CHECK:STDOUT: {kind: 'Literal', text: '8'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '8'},
// CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','},
// CHECK:STDOUT: {kind: 'Literal', text: '9'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '9'},
// CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','},
// CHECK:STDOUT: {kind: 'Literal', text: '0x8'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '0x8'},
// CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','},
// CHECK:STDOUT: {kind: 'Literal', text: '0b1000'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '0b1000'},
// CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','},
// CHECK:STDOUT: {kind: 'Literal', text: '39999999999999999993'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '39999999999999999993'},
// CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','},
// CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 12},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 22},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'floats'},
// CHECK:STDOUT: {kind: 'ArrayExprStart', text: '['},
// CHECK:STDOUT: {kind: 'Literal', text: 'f64'},
// CHECK:STDOUT: {kind: 'FloatingPointTypeLiteral', text: 'f64'},
// CHECK:STDOUT: {kind: 'ArrayExprSemi', text: ';', subtree_size: 3},
// CHECK:STDOUT: {kind: 'Literal', text: '7'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '7'},
// CHECK:STDOUT: {kind: 'ArrayExpr', text: ']', subtree_size: 5},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 7},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'ParenExprOrTupleLiteralStart', text: '('},
// CHECK:STDOUT: {kind: 'Literal', text: '0.9'},
// CHECK:STDOUT: {kind: 'FloatingPointLiteral', text: '0.9'},
// CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','},
// CHECK:STDOUT: {kind: 'Literal', text: '8.0'},
// CHECK:STDOUT: {kind: 'FloatingPointLiteral', text: '8.0'},
// CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','},
// CHECK:STDOUT: {kind: 'Literal', text: '80.0'},
// CHECK:STDOUT: {kind: 'FloatingPointLiteral', text: '80.0'},
// CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','},
// CHECK:STDOUT: {kind: 'Literal', text: '1.0e7'},
// CHECK:STDOUT: {kind: 'FloatingPointLiteral', text: '1.0e7'},
// CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','},
// CHECK:STDOUT: {kind: 'Literal', text: '1.0e8'},
// CHECK:STDOUT: {kind: 'FloatingPointLiteral', text: '1.0e8'},
// CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','},
// CHECK:STDOUT: {kind: 'Literal', text: '1.0e-8'},
// CHECK:STDOUT: {kind: 'FloatingPointLiteral', text: '1.0e-8'},
// CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','},
// CHECK:STDOUT: {kind: 'Literal', text: '39999999999999999993.0e39999999999999999993'},
// CHECK:STDOUT: {kind: 'FloatingPointLiteral', text: '39999999999999999993.0e39999999999999999993'},
// CHECK:STDOUT: {kind: 'TupleLiteralComma', text: ','},
// CHECK:STDOUT: {kind: 'TupleLiteral', text: ')', subtree_size: 16},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 26},
+2 -2
View File
@@ -15,10 +15,10 @@ fn F(n: i32) -> i32 {
// CHECK:STDOUT: {kind: 'Name', text: 'F'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 5},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2},
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 10},
// CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'},
+3 -3
View File
@@ -29,7 +29,7 @@ class Foo {
// CHECK:STDOUT: {kind: 'StructLiteralOrStructTypeLiteralStart', text: '{'},
// CHECK:STDOUT: {kind: 'Name', text: 'x'},
// CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: '0'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '0'},
// CHECK:STDOUT: {kind: 'StructFieldValue', text: '=', subtree_size: 4},
// CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 6},
// CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 8},
@@ -43,7 +43,7 @@ class Foo {
// CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 5},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2},
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 12},
// CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'},
@@ -67,7 +67,7 @@ class Foo {
// CHECK:STDOUT: {kind: 'SelfValueNameExpr', text: 'self'},
// CHECK:STDOUT: {kind: 'Name', text: 'x'},
// CHECK:STDOUT: {kind: 'PointerMemberAccessExpr', text: '->', subtree_size: 3},
// CHECK:STDOUT: {kind: 'Literal', text: '1'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '1'},
// CHECK:STDOUT: {kind: 'InfixOperator', text: '=', subtree_size: 5},
// CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 6},
// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 19},
+1 -1
View File
@@ -16,7 +16,7 @@ class Foo {
// CHECK:STDOUT: {kind: 'ClassDefinitionStart', text: '{', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'x'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 5},
// CHECK:STDOUT: {kind: 'ClassDefinition', text: '}', subtree_size: 9},
@@ -24,7 +24,7 @@ fn foo() {
// CHECK:STDOUT: {kind: 'ForHeaderStart', text: '('},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'x'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ForIn', text: ':', has_error: yes, subtree_size: 5},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'y'},
+1 -1
View File
@@ -24,7 +24,7 @@ fn foo() {
// CHECK:STDOUT: {kind: 'ForHeaderStart', text: '('},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'x'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ForIn', text: 'var', has_error: yes, subtree_size: 5},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'y'},
+1 -1
View File
@@ -21,7 +21,7 @@ fn foo() -> i32 {
// CHECK:STDOUT: {kind: 'Name', text: 'foo'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2},
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 7},
// CHECK:STDOUT: {kind: 'ForHeaderStart', text: '('},
+2 -2
View File
@@ -23,7 +23,7 @@ fn foo() {
// CHECK:STDOUT: {kind: 'ForHeaderStart', text: '('},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'y'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ForIn', text: 'in', subtree_size: 5},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'x'},
@@ -32,7 +32,7 @@ fn foo() {
// CHECK:STDOUT: {kind: 'ForHeaderStart', text: '('},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'z'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ForIn', text: 'in', subtree_size: 5},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'y'},
+1 -1
View File
@@ -21,7 +21,7 @@ fn foo() {
// CHECK:STDOUT: {kind: 'ForHeaderStart', text: '('},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'x'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ForIn', text: 'in', subtree_size: 5},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'y'},
+1 -1
View File
@@ -13,7 +13,7 @@ fn foo(addr a: i32*);
// CHECK:STDOUT: {kind: 'Name', text: 'foo'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 4},
// CHECK:STDOUT: {kind: 'Address', text: 'addr', subtree_size: 5},
@@ -13,11 +13,11 @@ fn foo[a: i32, b: i32]();
// CHECK:STDOUT: {kind: 'Name', text: 'foo'},
// CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 9},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
@@ -13,11 +13,11 @@ fn foo(a: i32, b: i32);
// CHECK:STDOUT: {kind: 'Name', text: 'foo'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 9},
// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 12},
@@ -13,7 +13,7 @@ fn foo() -> u32;
// CHECK:STDOUT: {kind: 'Name', text: 'foo'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'u32'},
// CHECK:STDOUT: {kind: 'UnsignedIntegerTypeLiteral', text: 'u32'},
// CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2},
// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 7},
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
@@ -15,11 +15,11 @@ fn foo(bar: i64, baz: i64) {
// CHECK:STDOUT: {kind: 'Name', text: 'foo'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'bar'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i64'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i64'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'baz'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i64'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i64'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 9},
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 12},
@@ -15,11 +15,11 @@ fn foo() -> f64 {
// CHECK:STDOUT: {kind: 'Name', text: 'foo'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'f64'},
// CHECK:STDOUT: {kind: 'FloatingPointTypeLiteral', text: 'f64'},
// CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2},
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 7},
// CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'},
// CHECK:STDOUT: {kind: 'Literal', text: '42'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '42'},
// CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 3},
// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 11},
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
@@ -36,7 +36,7 @@ interface Bar[a: i32] {}
// CHECK:STDOUT: {kind: 'Name', text: 'Foo'},
// CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 5},
// CHECK:STDOUT: {kind: 'ClassDecl', text: ';', has_error: yes, subtree_size: 8},
@@ -49,7 +49,7 @@ interface Bar[a: i32] {}
// CHECK:STDOUT: {kind: 'Name', text: 'Bar'},
// CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 5},
// CHECK:STDOUT: {kind: 'InterfaceDecl', text: 'interface', has_error: yes, subtree_size: 8},
@@ -15,7 +15,7 @@ interface Bar[a: i32]() {}
// CHECK:STDOUT: {kind: 'Name', text: 'Foo'},
// CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 5},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
@@ -25,7 +25,7 @@ interface Bar[a: i32]() {}
// CHECK:STDOUT: {kind: 'Name', text: 'Bar'},
// CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 5},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
@@ -15,7 +15,7 @@ interface Bar[a: i32,]() {}
// CHECK:STDOUT: {kind: 'Name', text: 'Foo'},
// CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 6},
@@ -26,7 +26,7 @@ interface Bar[a: i32,]() {}
// CHECK:STDOUT: {kind: 'Name', text: 'Bar'},
// CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 6},
+12 -12
View File
@@ -15,27 +15,27 @@ interface Bar[a: i32, b: i32, c: i32, d: i32, e: i32, f: i32]() {}
// CHECK:STDOUT: {kind: 'Name', text: 'Foo'},
// CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'c'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'd'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'e'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'f'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 25},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
@@ -45,27 +45,27 @@ interface Bar[a: i32, b: i32, c: i32, d: i32, e: i32, f: i32]() {}
// CHECK:STDOUT: {kind: 'Name', text: 'Bar'},
// CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'c'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'd'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'e'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'f'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 25},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
@@ -15,11 +15,11 @@ interface Bar[a: i32, b: i32]() {}
// CHECK:STDOUT: {kind: 'Name', text: 'Foo'},
// CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 9},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
@@ -29,11 +29,11 @@ interface Bar[a: i32, b: i32]() {}
// CHECK:STDOUT: {kind: 'Name', text: 'Bar'},
// CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 9},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
@@ -15,11 +15,11 @@ interface Bar[a: i32, b: i32,]() {}
// CHECK:STDOUT: {kind: 'Name', text: 'Foo'},
// CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 10},
@@ -30,11 +30,11 @@ interface Bar[a: i32, b: i32,]() {}
// CHECK:STDOUT: {kind: 'Name', text: 'Bar'},
// CHECK:STDOUT: {kind: 'ImplicitParamListStart', text: '['},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'ImplicitParamList', text: ']', subtree_size: 10},
@@ -13,7 +13,7 @@ fn foo(a:! i32);
// CHECK:STDOUT: {kind: 'Name', text: 'foo'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'GenericPatternBinding', text: ':!', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 5},
// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 8},
@@ -13,7 +13,7 @@ fn foo(template a:! i32);
// CHECK:STDOUT: {kind: 'Name', text: 'foo'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'GenericPatternBinding', text: ':!', subtree_size: 3},
// CHECK:STDOUT: {kind: 'Template', text: 'template', subtree_size: 4},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 6},
@@ -13,7 +13,7 @@ fn foo(template addr a:! i32);
// CHECK:STDOUT: {kind: 'Name', text: 'foo'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'GenericPatternBinding', text: ':!', subtree_size: 3},
// CHECK:STDOUT: {kind: 'Address', text: 'addr', subtree_size: 4},
// CHECK:STDOUT: {kind: 'Template', text: 'template', subtree_size: 5},
+2 -2
View File
@@ -15,7 +15,7 @@ interface Bar(a: i32) {}
// CHECK:STDOUT: {kind: 'Name', text: 'Foo'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 5},
// CHECK:STDOUT: {kind: 'ClassDecl', text: ';', subtree_size: 8},
@@ -23,7 +23,7 @@ interface Bar(a: i32) {}
// CHECK:STDOUT: {kind: 'Name', text: 'Bar'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 5},
// CHECK:STDOUT: {kind: 'InterfaceDefinitionStart', text: '{', subtree_size: 8},
@@ -15,7 +15,7 @@ interface Bar(a: i32,) {}
// CHECK:STDOUT: {kind: 'Name', text: 'Foo'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 6},
@@ -24,7 +24,7 @@ interface Bar(a: i32,) {}
// CHECK:STDOUT: {kind: 'Name', text: 'Bar'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 6},
+12 -12
View File
@@ -15,27 +15,27 @@ interface Bar(a: i32, b: i32, c: i32, d: i32, e: i32, f: i32) {}
// CHECK:STDOUT: {kind: 'Name', text: 'Foo'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'c'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'd'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'e'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'f'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 25},
// CHECK:STDOUT: {kind: 'ClassDecl', text: ';', subtree_size: 28},
@@ -43,27 +43,27 @@ interface Bar(a: i32, b: i32, c: i32, d: i32, e: i32, f: i32) {}
// CHECK:STDOUT: {kind: 'Name', text: 'Bar'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'c'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'd'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'e'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'f'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 25},
// CHECK:STDOUT: {kind: 'InterfaceDefinitionStart', text: '{', subtree_size: 28},
+4 -4
View File
@@ -15,11 +15,11 @@ interface Bar(a: i32, b: i32) {}
// CHECK:STDOUT: {kind: 'Name', text: 'Foo'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 9},
// CHECK:STDOUT: {kind: 'ClassDecl', text: ';', subtree_size: 12},
@@ -27,11 +27,11 @@ interface Bar(a: i32, b: i32) {}
// CHECK:STDOUT: {kind: 'Name', text: 'Bar'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 9},
// CHECK:STDOUT: {kind: 'InterfaceDefinitionStart', text: '{', subtree_size: 12},
@@ -15,11 +15,11 @@ interface Bar(a: i32, b: i32,) {}
// CHECK:STDOUT: {kind: 'Name', text: 'Foo'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 10},
@@ -28,11 +28,11 @@ interface Bar(a: i32, b: i32,) {}
// CHECK:STDOUT: {kind: 'Name', text: 'Bar'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 10},
+4 -4
View File
@@ -15,18 +15,18 @@ fn F(b: bool, x: i32, y: i32) -> bool {
// CHECK:STDOUT: {kind: 'Name', text: 'F'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'bool'},
// CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'x'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'y'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 13},
// CHECK:STDOUT: {kind: 'Literal', text: 'bool'},
// 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: 'ReturnStatementStart', text: 'return'},
@@ -21,7 +21,7 @@ fn F() {
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'InvalidParse', text: ';', has_error: yes},
@@ -21,12 +21,12 @@ fn F() {
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: 'true'},
// CHECK:STDOUT: {kind: 'BoolLiteralTrue', text: 'true'},
// CHECK:STDOUT: {kind: 'IfExprIf', text: 'if', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: '1'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '1'},
// 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},
@@ -21,12 +21,12 @@ fn F() {
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: 'true'},
// CHECK:STDOUT: {kind: 'BoolLiteralTrue', text: 'true'},
// CHECK:STDOUT: {kind: 'IfExprIf', text: 'if', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: '1'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '1'},
// 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},
@@ -21,10 +21,10 @@ fn F() {
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: 'true'},
// 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: 'IfExprThen', text: 'then', has_error: yes, subtree_size: 2},
@@ -21,10 +21,10 @@ fn F() {
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: 'true'},
// 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},
@@ -26,7 +26,7 @@ fn F() {
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 2},
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5},
// CHECK:STDOUT: {kind: 'IfConditionStart', text: 'if', has_error: yes},
// CHECK:STDOUT: {kind: 'Literal', text: 'true'},
// CHECK:STDOUT: {kind: 'BoolLiteralTrue', text: 'true'},
// CHECK:STDOUT: {kind: 'IfCondition', text: 'if', has_error: yes, subtree_size: 3},
// CHECK:STDOUT: {kind: 'CodeBlockStart', text: 'then', has_error: yes},
// CHECK:STDOUT: {kind: 'InvalidParse', text: 'then', has_error: yes},
+5 -5
View File
@@ -15,24 +15,24 @@ fn F() -> if true then i32 else i32* {
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 5},
// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'},
// CHECK:STDOUT: {kind: 'Name', text: 'F'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'true'},
// CHECK:STDOUT: {kind: 'BoolLiteralTrue', text: 'true'},
// CHECK:STDOUT: {kind: 'IfExprIf', text: 'if', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'IfExprThen', text: 'then', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'IfExprElse', text: 'else', subtree_size: 7},
// CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 8},
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 13},
// CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'},
// CHECK:STDOUT: {kind: 'Literal', text: 'true'},
// CHECK:STDOUT: {kind: 'BoolLiteralTrue', text: 'true'},
// CHECK:STDOUT: {kind: 'IfExprIf', text: 'if', subtree_size: 2},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'n'},
// CHECK:STDOUT: {kind: 'IfExprThen', text: 'then', subtree_size: 2},
+2 -2
View File
@@ -15,10 +15,10 @@ fn F(b: bool) -> bool {
// CHECK:STDOUT: {kind: 'Name', text: 'F'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'bool'},
// CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 5},
// CHECK:STDOUT: {kind: 'Literal', text: 'bool'},
// 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: 'ReturnStatementStart', text: 'return'},
+2 -2
View File
@@ -11,12 +11,12 @@ var v: i32 = t[0];
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'v'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'NameExpr', text: 't'},
// CHECK:STDOUT: {kind: 'IndexExprStart', text: '[', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: '0'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '0'},
// CHECK:STDOUT: {kind: 'IndexExpr', text: ']', subtree_size: 4},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10},
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
+1 -1
View File
@@ -14,7 +14,7 @@ var v: i32 = t[];
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'v'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'NameExpr', text: 't'},
+2 -2
View File
@@ -14,12 +14,12 @@ var v: i32 = t[0,];
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'v'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'NameExpr', text: 't'},
// CHECK:STDOUT: {kind: 'IndexExprStart', text: '[', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: '0'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '0'},
// CHECK:STDOUT: {kind: 'IndexExpr', text: ']', has_error: yes, subtree_size: 4},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 10},
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
+1 -1
View File
@@ -17,7 +17,7 @@ let ? = 4;
// CHECK:STDOUT: {kind: 'InvalidParse', text: '?', has_error: yes},
// CHECK:STDOUT: {kind: 'PatternBinding', text: '?', has_error: yes, subtree_size: 3},
// CHECK:STDOUT: {kind: 'LetInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: '4'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '4'},
// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 7},
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
// CHECK:STDOUT: ]
+1 -1
View File
@@ -17,7 +17,7 @@ let a = 4;
// CHECK:STDOUT: {kind: 'InvalidParse', text: '=', has_error: yes},
// CHECK:STDOUT: {kind: 'PatternBinding', text: 'a', has_error: yes, subtree_size: 3},
// CHECK:STDOUT: {kind: 'LetInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: '4'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '4'},
// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 7},
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
// CHECK:STDOUT: ]
+2 -2
View File
@@ -21,7 +21,7 @@ fn F() {
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'LetDecl', text: ';', has_error: yes, subtree_size: 5},
// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'},
@@ -31,7 +31,7 @@ fn F() {
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5},
// CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'LetDecl', text: ';', has_error: yes, subtree_size: 5},
// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 11},
+4 -4
View File
@@ -14,10 +14,10 @@ fn F() {
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'},
// CHECK:STDOUT: {kind: 'Name', text: 'v'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'LetInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: '0'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '0'},
// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 7},
// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'},
// CHECK:STDOUT: {kind: 'Name', text: 'F'},
@@ -26,10 +26,10 @@ fn F() {
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5},
// CHECK:STDOUT: {kind: 'LetIntroducer', text: 'let'},
// CHECK:STDOUT: {kind: 'Name', text: 's'},
// CHECK:STDOUT: {kind: 'Literal', text: 'String'},
// CHECK:STDOUT: {kind: 'StringTypeLiteral', text: 'String'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'LetInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: '"hello"'},
// CHECK:STDOUT: {kind: 'StringLiteral', text: '"hello"'},
// CHECK:STDOUT: {kind: 'LetDecl', text: ';', subtree_size: 7},
// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 13},
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
+4 -4
View File
@@ -32,17 +32,17 @@ fn F() {
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: '0'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '0'},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: '1'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '1'},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'a'},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'b'},
@@ -25,18 +25,18 @@ fn F() {
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 5},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 5},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'a'},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'b'},
// CHECK:STDOUT: {kind: 'InfixOperator', text: '=', subtree_size: 3},
// CHECK:STDOUT: {kind: 'Literal', text: '1'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '1'},
// CHECK:STDOUT: {kind: 'InfixOperator', text: '=', has_error: yes, subtree_size: 5},
// CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 6},
// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 22},
@@ -16,7 +16,7 @@ var n: i8 = n* n;
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'n'},
@@ -25,7 +25,7 @@ var c: i32 = == ;
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'n'},
@@ -34,7 +34,7 @@ var c: i32 = == ;
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'InvalidParse', text: '==', has_error: yes},
@@ -43,7 +43,7 @@ var c: i32 = == ;
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'c'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'InvalidParse', text: '==', has_error: yes},
@@ -27,10 +27,10 @@ fn F() {
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: '0'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '0'},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'n'},
// CHECK:STDOUT: {kind: 'ExprStatement', text: ';', has_error: yes, subtree_size: 2},
@@ -29,25 +29,25 @@ fn F(n: i32) {
// CHECK:STDOUT: {kind: 'Name', text: 'F'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 5},
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 8},
// CHECK:STDOUT: {kind: 'Literal', text: 'true'},
// CHECK:STDOUT: {kind: 'BoolLiteralTrue', text: 'true'},
// CHECK:STDOUT: {kind: 'PrefixOperator', text: 'not', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'bool'},
// CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'},
// CHECK:STDOUT: {kind: 'InfixOperator', text: 'as', has_error: yes, subtree_size: 4},
// CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 5},
// CHECK:STDOUT: {kind: 'Literal', text: '1'},
// CHECK:STDOUT: {kind: 'Literal', text: '1'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '1'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '1'},
// CHECK:STDOUT: {kind: 'InfixOperator', text: '+', subtree_size: 3},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'InfixOperator', text: 'as', has_error: yes, subtree_size: 5},
// CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 6},
// CHECK:STDOUT: {kind: 'Literal', text: '5'},
// CHECK:STDOUT: {kind: 'Literal', text: '2'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '5'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '2'},
// CHECK:STDOUT: {kind: 'InfixOperator', text: '%', subtree_size: 3},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'InfixOperator', text: 'as', has_error: yes, subtree_size: 5},
// CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 6},
// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 26},
@@ -39,17 +39,17 @@ fn F() {
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 5},
// CHECK:STDOUT: {kind: 'Literal', text: '1'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '1'},
// CHECK:STDOUT: {kind: 'ParenExprOrTupleLiteralStart', text: '('},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'a'},
// CHECK:STDOUT: {kind: 'ParenExpr', text: ')', has_error: yes, subtree_size: 3},
// CHECK:STDOUT: {kind: 'InfixOperator', text: '+', subtree_size: 5},
// CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 6},
// CHECK:STDOUT: {kind: 'ParenExprOrTupleLiteralStart', text: '('},
// CHECK:STDOUT: {kind: 'Literal', text: 'true'},
// CHECK:STDOUT: {kind: 'BoolLiteralTrue', text: 'true'},
// CHECK:STDOUT: {kind: 'IfExprIf', text: 'if', subtree_size: 2},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'a'},
// CHECK:STDOUT: {kind: 'IfExprThen', text: 'then', subtree_size: 2},
@@ -14,7 +14,7 @@ var n: i8 = n* -n;
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'n'},
@@ -14,7 +14,7 @@ var n: i8 = n* *p;
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'n'},
@@ -18,7 +18,7 @@ var n: i8 = n**p;
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'n'},
+1 -1
View File
@@ -18,7 +18,7 @@ fn F() {
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'G'},
// CHECK:STDOUT: {kind: 'CallExprStart', text: '(', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'CallExprComma', text: ','},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'n'},
+2 -2
View File
@@ -14,12 +14,12 @@ fn F(p: i32*, n: i32) {
// CHECK:STDOUT: {kind: 'Name', text: 'F'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'p'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 4},
// CHECK:STDOUT: {kind: 'ParamListComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 10},
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 13},
+3 -3
View File
@@ -19,7 +19,7 @@ fn F() {
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'q'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 4},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
@@ -27,10 +27,10 @@ fn F() {
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 't'},
// CHECK:STDOUT: {kind: 'Literal', text: 'type'},
// CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8},
// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 22},
+1 -1
View File
@@ -11,7 +11,7 @@ var n: i8 = n * n;
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'n'},
+1 -1
View File
@@ -11,7 +11,7 @@ var n: i8 = n*n;
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'n'},
@@ -11,10 +11,10 @@ var n: i8 = 3*(n);
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: '3'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '3'},
// CHECK:STDOUT: {kind: 'ParenExprOrTupleLiteralStart', text: '('},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'n'},
// CHECK:STDOUT: {kind: 'ParenExpr', text: ')', subtree_size: 3},
@@ -11,13 +11,13 @@ var n: i8 = (n)*3;
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'ParenExprOrTupleLiteralStart', text: '('},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'n'},
// CHECK:STDOUT: {kind: 'ParenExpr', text: ')', subtree_size: 3},
// CHECK:STDOUT: {kind: 'Literal', text: '3'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '3'},
// CHECK:STDOUT: {kind: 'InfixOperator', text: '*', subtree_size: 5},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11},
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
+2 -2
View File
@@ -11,10 +11,10 @@ var v: type = i8*;
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'v'},
// CHECK:STDOUT: {kind: 'Literal', text: 'type'},
// CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8},
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
+1 -1
View File
@@ -16,7 +16,7 @@ fn F() {
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 2},
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 3},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 4},
@@ -11,10 +11,10 @@ var v: type = i8* ;
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'v'},
// CHECK:STDOUT: {kind: 'Literal', text: 'type'},
// CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8},
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
+11 -11
View File
@@ -20,38 +20,38 @@ fn F(n: i32) {
// CHECK:STDOUT: {kind: 'Name', text: 'F'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 5},
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 8},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'n'},
// CHECK:STDOUT: {kind: 'PrefixOperator', text: '-', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PrefixOperator', text: 'const', subtree_size: 2},
// CHECK:STDOUT: {kind: 'InfixOperator', text: 'as', subtree_size: 5},
// CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 6},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'n'},
// CHECK:STDOUT: {kind: 'PrefixOperator', text: '&', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'InfixOperator', text: 'as', subtree_size: 5},
// CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 6},
// CHECK:STDOUT: {kind: 'IfConditionStart', text: '('},
// CHECK:STDOUT: {kind: 'Literal', text: '1'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '1'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'InfixOperator', text: 'as', subtree_size: 3},
// CHECK:STDOUT: {kind: 'Literal', text: '2'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '2'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'InfixOperator', text: 'as', subtree_size: 3},
// CHECK:STDOUT: {kind: 'InfixOperator', text: '<', subtree_size: 7},
// CHECK:STDOUT: {kind: 'ShortCircuitOperand', text: 'and', subtree_size: 8},
// CHECK:STDOUT: {kind: 'Literal', text: 'true'},
// CHECK:STDOUT: {kind: 'Literal', text: 'bool'},
// CHECK:STDOUT: {kind: 'BoolLiteralTrue', text: 'true'},
// CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'},
// CHECK:STDOUT: {kind: 'InfixOperator', text: 'as', subtree_size: 3},
// CHECK:STDOUT: {kind: 'InfixOperator', text: 'and', subtree_size: 12},
// CHECK:STDOUT: {kind: 'ShortCircuitOperand', text: 'and', subtree_size: 13},
// CHECK:STDOUT: {kind: 'Literal', text: 'false'},
// CHECK:STDOUT: {kind: 'Literal', text: 'bool'},
// CHECK:STDOUT: {kind: 'BoolLiteralFalse', text: 'false'},
// CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'},
// CHECK:STDOUT: {kind: 'InfixOperator', text: 'as', subtree_size: 3},
// CHECK:STDOUT: {kind: 'InfixOperator', text: 'and', subtree_size: 17},
// CHECK:STDOUT: {kind: 'IfCondition', text: ')', subtree_size: 19},
@@ -20,23 +20,23 @@ fn F(c: bool) {
// CHECK:STDOUT: {kind: 'Name', text: 'F'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'c'},
// CHECK:STDOUT: {kind: 'Literal', text: 'bool'},
// CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 5},
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 8},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 5},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 5},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'p'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 4},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 6},
@@ -44,9 +44,9 @@ fn F(c: bool) {
// CHECK:STDOUT: {kind: 'PrefixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'c'},
// CHECK:STDOUT: {kind: 'IfExprIf', text: 'if', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: '1'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '1'},
// CHECK:STDOUT: {kind: 'IfExprThen', text: 'then', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: '2'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '2'},
// CHECK:STDOUT: {kind: 'IfExprElse', text: 'else', subtree_size: 6},
// CHECK:STDOUT: {kind: 'InfixOperator', text: '=', subtree_size: 9},
// CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 10},
@@ -60,9 +60,9 @@ fn F(c: bool) {
// CHECK:STDOUT: {kind: 'ParenExpr', text: ')', subtree_size: 8},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'c'},
// CHECK:STDOUT: {kind: 'IfExprIf', text: 'if', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: '1'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '1'},
// CHECK:STDOUT: {kind: 'IfExprThen', text: 'then', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: '2'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '2'},
// CHECK:STDOUT: {kind: 'IfExprElse', text: 'else', subtree_size: 6},
// CHECK:STDOUT: {kind: 'InfixOperator', text: '+=', subtree_size: 15},
// CHECK:STDOUT: {kind: 'ExprStatement', text: ';', subtree_size: 16},
+1 -1
View File
@@ -20,7 +20,7 @@ fn F(p: i32*) {
// CHECK:STDOUT: {kind: 'Name', text: 'F'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'p'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 4},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 6},
+3 -3
View File
@@ -12,7 +12,7 @@ var b: bool = not true;
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'n'},
@@ -20,10 +20,10 @@ var b: bool = not true;
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},
// CHECK:STDOUT: {kind: 'Literal', text: 'bool'},
// CHECK:STDOUT: {kind: 'BoolTypeLiteral', text: 'bool'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: 'true'},
// CHECK:STDOUT: {kind: 'BoolLiteralTrue', text: 'true'},
// CHECK:STDOUT: {kind: 'PrefixOperator', text: 'not', subtree_size: 2},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8},
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
+1 -1
View File
@@ -12,7 +12,7 @@ var n: i8 =-n;
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'n'},
@@ -14,7 +14,7 @@ var n: i8 = n *n;
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'n'},
@@ -14,10 +14,10 @@ var v: type = i8 *;
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'v'},
// CHECK:STDOUT: {kind: 'Literal', text: 'type'},
// CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8},
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
@@ -14,15 +14,15 @@ var n: i8 = F(i8 *, 0);
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'F'},
// CHECK:STDOUT: {kind: 'CallExprStart', text: '(', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'CallExprComma', text: ','},
// CHECK:STDOUT: {kind: 'Literal', text: '0'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '0'},
// CHECK:STDOUT: {kind: 'CallExpr', text: ')', subtree_size: 7},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 13},
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
@@ -14,12 +14,12 @@ var n: i8 = F(i8 *);
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'F'},
// CHECK:STDOUT: {kind: 'CallExprStart', text: '(', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'CallExpr', text: ')', subtree_size: 5},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11},
@@ -14,10 +14,10 @@ var v: type = i8 * ;
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'v'},
// CHECK:STDOUT: {kind: 'Literal', text: 'type'},
// CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8},
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
@@ -17,7 +17,7 @@ fn F() -> const const i32* {
// CHECK:STDOUT: {kind: 'Name', text: 'F'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PrefixOperator', text: 'const', subtree_size: 2},
// CHECK:STDOUT: {kind: 'PrefixOperator', text: 'const', subtree_size: 3},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 4},
@@ -14,7 +14,7 @@ var n: i8 = - n;
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'n'},
@@ -14,7 +14,7 @@ var n: i8 =- n;
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i8'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i8'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'NameExpr', text: 'n'},
+3 -3
View File
@@ -15,7 +15,7 @@ fn C() -> const (i32*) { return C(); }
// CHECK:STDOUT: {kind: 'Name', text: 'A'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PrefixOperator', text: 'const', subtree_size: 2},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 3},
// CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 4},
@@ -31,7 +31,7 @@ fn C() -> const (i32*) { return C(); }
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 2},
// CHECK:STDOUT: {kind: 'ParenExprOrTupleLiteralStart', text: '('},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PrefixOperator', text: 'const', subtree_size: 2},
// CHECK:STDOUT: {kind: 'ParenExpr', text: ')', subtree_size: 4},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 5},
@@ -48,7 +48,7 @@ fn C() -> const (i32*) { return C(); }
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 2},
// CHECK:STDOUT: {kind: 'ParenExprOrTupleLiteralStart', text: '('},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'ParenExpr', text: ')', subtree_size: 4},
// CHECK:STDOUT: {kind: 'PrefixOperator', text: 'const', subtree_size: 5},
@@ -39,15 +39,15 @@ fn H() -> i32 {
// CHECK:STDOUT: {kind: 'Name', text: 'F'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2},
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 7},
// CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'},
// CHECK:STDOUT: {kind: 'Literal', text: '3'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '3'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'InfixOperator', text: '*', subtree_size: 3},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', has_error: yes, subtree_size: 4},
// CHECK:STDOUT: {kind: 'Literal', text: '4'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '4'},
// CHECK:STDOUT: {kind: 'InfixOperator', text: '*', has_error: yes, subtree_size: 6},
// CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 8},
// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 16},
@@ -55,13 +55,13 @@ fn H() -> i32 {
// CHECK:STDOUT: {kind: 'Name', text: 'G'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2},
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 7},
// CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: '4'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '4'},
// CHECK:STDOUT: {kind: 'InfixOperator', text: '+', has_error: yes, subtree_size: 4},
// CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 6},
// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 14},
@@ -69,11 +69,11 @@ fn H() -> i32 {
// CHECK:STDOUT: {kind: 'Name', text: 'H'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2},
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 7},
// CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PrefixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', has_error: yes, subtree_size: 3},
// CHECK:STDOUT: {kind: 'ReturnStatement', text: ';', subtree_size: 5},
+6 -6
View File
@@ -17,11 +17,11 @@ var T: type = if true then i32* else f64*;
// CHECK:STDOUT: {kind: 'Name', text: 'F'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'Name', text: 'p'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 4},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 6},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 3},
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 12},
@@ -31,15 +31,15 @@ var T: type = if true then i32* else f64*;
// CHECK:STDOUT: {kind: 'FunctionDefinition', text: '}', subtree_size: 16},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'T'},
// CHECK:STDOUT: {kind: 'Literal', text: 'type'},
// CHECK:STDOUT: {kind: 'TypeTypeLiteral', text: 'type'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: 'true'},
// CHECK:STDOUT: {kind: 'BoolLiteralTrue', text: 'true'},
// CHECK:STDOUT: {kind: 'IfExprIf', text: 'if', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'IfExprThen', text: 'then', subtree_size: 3},
// CHECK:STDOUT: {kind: 'Literal', text: 'f64'},
// CHECK:STDOUT: {kind: 'FloatingPointTypeLiteral', text: 'f64'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'IfExprElse', text: 'else', subtree_size: 8},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 14},
+5 -5
View File
@@ -18,19 +18,19 @@ fn F() -> i32 {
// CHECK:STDOUT: {kind: 'Name', text: 'F'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2},
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 7},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'n'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: '0'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '0'},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 7},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'p'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 4},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
@@ -39,7 +39,7 @@ fn F() -> i32 {
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'Name', text: 'q'},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 2},
// CHECK:STDOUT: {kind: 'PostfixOperator', text: '*', subtree_size: 3},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 5},
@@ -18,7 +18,7 @@ fn F() -> String {
// CHECK:STDOUT: {kind: 'Name', text: 'F'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'String'},
// CHECK:STDOUT: {kind: 'StringTypeLiteral', text: 'String'},
// CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2},
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 7},
// CHECK:STDOUT: {kind: 'EmptyDecl', text: ';', has_error: yes},
+3 -3
View File
@@ -16,16 +16,16 @@ fn F() -> String {
// CHECK:STDOUT: {kind: 'Name', text: 'F'},
// CHECK:STDOUT: {kind: 'ParamListStart', text: '('},
// CHECK:STDOUT: {kind: 'ParamList', text: ')', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'String'},
// CHECK:STDOUT: {kind: 'StringTypeLiteral', text: 'String'},
// CHECK:STDOUT: {kind: 'ReturnType', text: '->', subtree_size: 2},
// CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 7},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
// CHECK:STDOUT: {kind: 'ReturnedModifier', text: 'returned'},
// CHECK:STDOUT: {kind: 'Name', text: 's'},
// CHECK:STDOUT: {kind: 'Literal', text: 'String'},
// CHECK:STDOUT: {kind: 'StringTypeLiteral', text: 'String'},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3},
// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='},
// CHECK:STDOUT: {kind: 'Literal', text: '"hello"'},
// CHECK:STDOUT: {kind: 'StringLiteral', text: '"hello"'},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8},
// CHECK:STDOUT: {kind: 'ReturnStatementStart', text: 'return'},
// CHECK:STDOUT: {kind: 'ReturnVarModifier', text: 'var'},
@@ -17,7 +17,7 @@ var x: {.a: i32,,} = {};
// CHECK:STDOUT: {kind: 'StructLiteralOrStructTypeLiteralStart', text: '{'},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'StructFieldType', text: ':', subtree_size: 4},
// CHECK:STDOUT: {kind: 'StructComma', text: ','},
// CHECK:STDOUT: {kind: 'StructFieldUnknown', text: ',', has_error: yes},
@@ -17,7 +17,7 @@ var x: {.a = 0,,} = {};
// CHECK:STDOUT: {kind: 'StructLiteralOrStructTypeLiteralStart', text: '{'},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: '0'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '0'},
// CHECK:STDOUT: {kind: 'StructFieldValue', text: '=', subtree_size: 4},
// CHECK:STDOUT: {kind: 'StructComma', text: ','},
// CHECK:STDOUT: {kind: 'StructFieldUnknown', text: ',', has_error: yes},
@@ -17,12 +17,12 @@ var x: {."hello": i32, .y: i32} = {};
// CHECK:STDOUT: {kind: 'StructLiteralOrStructTypeLiteralStart', text: '{'},
// CHECK:STDOUT: {kind: 'Name', text: '"hello"', has_error: yes},
// CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'StructFieldUnknown', text: ':', has_error: yes},
// CHECK:STDOUT: {kind: 'StructComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'y'},
// CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'StructFieldType', text: ':', subtree_size: 4},
// CHECK:STDOUT: {kind: 'StructTypeLiteral', text: '}', subtree_size: 11},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 13},
@@ -17,12 +17,12 @@ var x: {."hello" = 0, .y = 4} = {};
// CHECK:STDOUT: {kind: 'StructLiteralOrStructTypeLiteralStart', text: '{'},
// CHECK:STDOUT: {kind: 'Name', text: '"hello"', has_error: yes},
// CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: '0'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '0'},
// CHECK:STDOUT: {kind: 'StructFieldUnknown', text: '=', has_error: yes},
// CHECK:STDOUT: {kind: 'StructComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'y'},
// CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: '4'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '4'},
// CHECK:STDOUT: {kind: 'StructFieldValue', text: '=', subtree_size: 4},
// CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 11},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 13},
@@ -17,7 +17,7 @@ var x: {.a: i32 banana} = {.a = 0};
// CHECK:STDOUT: {kind: 'StructLiteralOrStructTypeLiteralStart', text: '{'},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'StructFieldType', text: ':', subtree_size: 4},
// CHECK:STDOUT: {kind: 'StructTypeLiteral', text: '}', has_error: yes, subtree_size: 6},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 8},
@@ -25,7 +25,7 @@ var x: {.a: i32 banana} = {.a = 0};
// CHECK:STDOUT: {kind: 'StructLiteralOrStructTypeLiteralStart', text: '{'},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: '0'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '0'},
// CHECK:STDOUT: {kind: 'StructFieldValue', text: '=', subtree_size: 4},
// CHECK:STDOUT: {kind: 'StructLiteral', text: '}', subtree_size: 6},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 17},
@@ -17,7 +17,7 @@ var x: {.a: i32} = {.a = 0 banana};
// CHECK:STDOUT: {kind: 'StructLiteralOrStructTypeLiteralStart', text: '{'},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'StructFieldType', text: ':', subtree_size: 4},
// CHECK:STDOUT: {kind: 'StructTypeLiteral', text: '}', subtree_size: 6},
// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 8},
@@ -25,7 +25,7 @@ var x: {.a: i32} = {.a = 0 banana};
// CHECK:STDOUT: {kind: 'StructLiteralOrStructTypeLiteralStart', text: '{'},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: '0'},
// CHECK:STDOUT: {kind: 'IntegerLiteral', text: '0'},
// CHECK:STDOUT: {kind: 'StructFieldValue', text: '=', subtree_size: 4},
// CHECK:STDOUT: {kind: 'StructLiteral', text: '}', has_error: yes, subtree_size: 6},
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 17},
@@ -17,7 +17,7 @@ var x: {.a: i32, .b = 0} = {};
// CHECK:STDOUT: {kind: 'StructLiteralOrStructTypeLiteralStart', text: '{'},
// CHECK:STDOUT: {kind: 'Name', text: 'a'},
// CHECK:STDOUT: {kind: 'StructFieldDesignator', text: '.', subtree_size: 2},
// CHECK:STDOUT: {kind: 'Literal', text: 'i32'},
// CHECK:STDOUT: {kind: 'IntegerTypeLiteral', text: 'i32'},
// CHECK:STDOUT: {kind: 'StructFieldType', text: ':', subtree_size: 4},
// CHECK:STDOUT: {kind: 'StructComma', text: ','},
// CHECK:STDOUT: {kind: 'Name', text: 'b'},

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