mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 22:02:23 +01:00
Remove the type field from semantics nodes that don't produce values of that type. (#3049)
For `Assign` and `ReturnExpression`, this field wasn't used for anything. For `StructTypeField`, we stored the type of the field here, and now store it as an argument of the node instead. --------- Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
This commit is contained in:
co-authored by
Jon Ross-Perkins
parent
ab709b4117
commit
0c33dead70
@@ -149,12 +149,13 @@ auto LoweringContext::BuildType(SemanticsNodeId node_id) -> llvm::Type* {
|
||||
llvm::SmallVector<llvm::Type*> subtypes;
|
||||
subtypes.reserve(refs.size());
|
||||
for (auto ref_id : refs) {
|
||||
auto type_id = semantics_ir_->GetNode(ref_id).type_id();
|
||||
auto [field_name_id, field_type_id] =
|
||||
semantics_ir_->GetNode(ref_id).GetAsStructTypeField();
|
||||
// TODO: Handle recursive types. The restriction for builtins prevents
|
||||
// recursion while still letting them cache.
|
||||
CARBON_CHECK(type_id.index < SemanticsBuiltinKind::ValidCount)
|
||||
<< type_id;
|
||||
subtypes.push_back(GetType(type_id));
|
||||
CARBON_CHECK(field_type_id.index < SemanticsBuiltinKind::ValidCount)
|
||||
<< field_type_id;
|
||||
subtypes.push_back(GetType(field_type_id));
|
||||
}
|
||||
return llvm::StructType::create(*llvm_context_, subtypes,
|
||||
"StructLiteralType");
|
||||
|
||||
@@ -207,10 +207,11 @@ auto LoweringHandleStructMemberAccess(LoweringFunctionContext& context,
|
||||
context.semantics_ir()
|
||||
.GetNode(context.semantics_ir().GetType(struct_type_id))
|
||||
.GetAsStructType());
|
||||
auto member_name = context.semantics_ir().GetString(
|
||||
auto [field_name_id, field_type_id] =
|
||||
context.semantics_ir()
|
||||
.GetNode(type_refs[member_index.index])
|
||||
.GetAsStructTypeField());
|
||||
.GetAsStructTypeField();
|
||||
auto member_name = context.semantics_ir().GetString(field_name_id);
|
||||
|
||||
auto* gep = context.builder().CreateStructGEP(
|
||||
llvm_type, context.GetLocal(struct_id), member_index.index, member_name);
|
||||
@@ -258,8 +259,9 @@ auto LoweringHandleStructValue(LoweringFunctionContext& context,
|
||||
.GetNode(context.semantics_ir().GetType(node.type_id()))
|
||||
.GetAsStructType());
|
||||
for (int i = 0; i < static_cast<int>(refs.size()); ++i) {
|
||||
auto member_name = context.semantics_ir().GetString(
|
||||
context.semantics_ir().GetNode(type_refs[i]).GetAsStructTypeField());
|
||||
auto [field_name_id, field_type_id] =
|
||||
context.semantics_ir().GetNode(type_refs[i]).GetAsStructTypeField();
|
||||
auto member_name = context.semantics_ir().GetString(field_name_id);
|
||||
auto* gep =
|
||||
context.builder().CreateStructGEP(llvm_type, alloca, i, member_name);
|
||||
context.builder().CreateStore(context.GetLocal(refs[i]), gep);
|
||||
|
||||
@@ -476,8 +476,9 @@ auto SemanticsContext::CanonicalizeStructType(ParseTree::Node parse_node,
|
||||
llvm::FoldingSetNodeID canonical_id;
|
||||
for (const auto& ref_id : refs) {
|
||||
auto ref = semantics_ir_->GetNode(ref_id);
|
||||
canonical_id.AddInteger(ref.GetAsStructTypeField().index);
|
||||
canonical_id.AddInteger(ref.type_id().index);
|
||||
auto [name_id, type_id] = ref.GetAsStructTypeField();
|
||||
canonical_id.AddInteger(name_id.index);
|
||||
canonical_id.AddInteger(type_id.index);
|
||||
}
|
||||
|
||||
// If a struct with matching fields was already created, reuse it.
|
||||
|
||||
@@ -32,11 +32,12 @@ auto SemanticsHandleMemberAccessExpression(SemanticsContext& context,
|
||||
// TODO: Do we need to optimize this with a lookup table for O(1)?
|
||||
for (int i = 0; i < static_cast<int>(refs.size()); ++i) {
|
||||
auto ref = context.semantics_ir().GetNode(refs[i]);
|
||||
if (name_id == ref.GetAsStructTypeField()) {
|
||||
if (auto [field_name_id, field_type_id] = ref.GetAsStructTypeField();
|
||||
name_id == field_name_id) {
|
||||
context.AddNodeAndPush(
|
||||
parse_node,
|
||||
SemanticsNode::StructMemberAccess::Make(
|
||||
parse_node, ref.type_id(), base_id, SemanticsMemberIndex(i)));
|
||||
parse_node, field_type_id, base_id, SemanticsMemberIndex(i)));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,8 +61,7 @@ auto SemanticsHandleReturnStatement(SemanticsContext& context,
|
||||
context.ImplicitAsRequired(parse_node, arg, callable.return_type_id);
|
||||
}
|
||||
|
||||
context.AddNode(SemanticsNode::ReturnExpression::Make(
|
||||
parse_node, context.semantics_ir().GetNode(arg).type_id(), arg));
|
||||
context.AddNode(SemanticsNode::ReturnExpression::Make(parse_node, arg));
|
||||
}
|
||||
|
||||
// Switch to a new, unreachable, empty node block. This typically won't
|
||||
|
||||
@@ -34,7 +34,7 @@ auto SemanticsHandleStructFieldType(SemanticsContext& context,
|
||||
context.node_stack().PopWithParseNode<ParseNodeKind::Name>();
|
||||
|
||||
context.AddNodeAndPush(parse_node, SemanticsNode::StructTypeField::Make(
|
||||
name_node, cast_type_id, name_id));
|
||||
name_node, name_id, cast_type_id));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -54,8 +54,8 @@ auto SemanticsHandleStructFieldValue(SemanticsContext& context,
|
||||
context.semantics_ir().AddNode(
|
||||
type_block_id,
|
||||
SemanticsNode::StructTypeField::Make(
|
||||
parse_node, context.semantics_ir().GetNode(value_node_id).type_id(),
|
||||
name_id));
|
||||
parse_node, name_id,
|
||||
context.semantics_ir().GetNode(value_node_id).type_id()));
|
||||
|
||||
// Push the value back on the stack as an argument.
|
||||
context.node_stack().Push(parse_node, value_node_id);
|
||||
|
||||
@@ -31,9 +31,8 @@ auto SemanticsHandleVariableDeclaration(SemanticsContext& context,
|
||||
auto cast_value_id = context.ImplicitAsRequired(
|
||||
parse_node, expr_node_id,
|
||||
context.semantics_ir().GetNode(storage_id).type_id());
|
||||
context.AddNode(SemanticsNode::Assign::Make(
|
||||
parse_node, context.semantics_ir().GetNode(cast_value_id).type_id(),
|
||||
storage_id, cast_value_id));
|
||||
context.AddNode(
|
||||
SemanticsNode::Assign::Make(parse_node, storage_id, cast_value_id));
|
||||
}
|
||||
|
||||
context.node_stack()
|
||||
|
||||
@@ -246,8 +246,9 @@ auto SemanticsIR::StringifyType(SemanticsTypeId type_id) -> std::string {
|
||||
break;
|
||||
}
|
||||
case SemanticsNodeKind::StructTypeField: {
|
||||
out << "." << GetString(node.GetAsStructTypeField()) << ": ";
|
||||
steps.push_back({.node_id = GetTypeAllowBuiltinTypes(node.type_id())});
|
||||
auto [name_id, type_id] = node.GetAsStructTypeField();
|
||||
out << "." << GetString(name_id) << ": ";
|
||||
steps.push_back({.node_id = GetTypeAllowBuiltinTypes(type_id)});
|
||||
break;
|
||||
}
|
||||
case SemanticsNodeKind::TupleType: {
|
||||
|
||||
@@ -286,7 +286,8 @@ class SemanticsNode {
|
||||
using FactoryBase<Kind, ArgTypes...>::Get;
|
||||
};
|
||||
|
||||
// Provides Get along with a Make that assumes a non-changing type.
|
||||
// Provides Get along with a Make that assumes the node doesn't produce a
|
||||
// typed value.
|
||||
template <KindTemplateEnum Kind, typename... ArgTypes>
|
||||
class FactoryNoType : public FactoryBase<Kind, ArgTypes...> {
|
||||
public:
|
||||
@@ -306,9 +307,9 @@ class SemanticsNode {
|
||||
}
|
||||
};
|
||||
|
||||
using Assign = SemanticsNode::Factory<SemanticsNodeKind::Assign,
|
||||
SemanticsNodeId /*lhs_id*/,
|
||||
SemanticsNodeId /*rhs_id*/>;
|
||||
using Assign = SemanticsNode::FactoryNoType<SemanticsNodeKind::Assign,
|
||||
SemanticsNodeId /*lhs_id*/,
|
||||
SemanticsNodeId /*rhs_id*/>;
|
||||
|
||||
using BinaryOperatorAdd =
|
||||
SemanticsNode::Factory<SemanticsNodeKind::BinaryOperatorAdd,
|
||||
@@ -387,8 +388,8 @@ class SemanticsNode {
|
||||
|
||||
using Return = FactoryNoType<SemanticsNodeKind::Return>;
|
||||
|
||||
using ReturnExpression =
|
||||
Factory<SemanticsNodeKind::ReturnExpression, SemanticsNodeId /*expr_id*/>;
|
||||
using ReturnExpression = FactoryNoType<SemanticsNodeKind::ReturnExpression,
|
||||
SemanticsNodeId /*expr_id*/>;
|
||||
|
||||
using StringLiteral = Factory<SemanticsNodeKind::StringLiteral,
|
||||
SemanticsStringId /*string_id*/>;
|
||||
@@ -400,8 +401,9 @@ class SemanticsNode {
|
||||
using StructType =
|
||||
Factory<SemanticsNodeKind::StructType, SemanticsNodeBlockId /*refs_id*/>;
|
||||
|
||||
using StructTypeField = Factory<SemanticsNodeKind::StructTypeField,
|
||||
SemanticsStringId /*name_id*/>;
|
||||
using StructTypeField =
|
||||
FactoryNoType<SemanticsNodeKind::StructTypeField,
|
||||
SemanticsStringId /*name_id*/, SemanticsTypeId /*type_id*/>;
|
||||
|
||||
using StructValue =
|
||||
Factory<SemanticsNodeKind::StructValue, SemanticsNodeBlockId /*refs_id*/>;
|
||||
@@ -431,6 +433,8 @@ class SemanticsNode {
|
||||
|
||||
auto parse_node() const -> ParseTree::Node { return parse_node_; }
|
||||
auto kind() const -> SemanticsNodeKind { return kind_; }
|
||||
|
||||
// Gets the type of the value produced by evaluating this node.
|
||||
auto type_id() const -> SemanticsTypeId { return type_id_; }
|
||||
|
||||
auto Print(llvm::raw_ostream& out) const -> void;
|
||||
|
||||
@@ -30,18 +30,18 @@
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+0, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+0, arg1: node+2},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+4, type: type1},
|
||||
// CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: node+6, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: node+6},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type2},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+8, type: type2},
|
||||
// CHECK:STDOUT: {kind: StringLiteral, arg0: str3, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+8, arg1: node+10, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+8, arg1: node+10},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str4, arg1: node+12, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+12, arg1: nodeIntegerType, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+12, arg1: nodeIntegerType},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+0, arg1: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+0, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node+2, arg1: node+3, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+0, arg1: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+0, arg1: node+4},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block0, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+2},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+8, type: type0},
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block0, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+2},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+8, type: type0},
|
||||
|
||||
+2
-2
@@ -27,12 +27,12 @@
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+1, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+1},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+4, type: type1},
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block0, arg1: function0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: nodeError},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
|
||||
+2
-2
@@ -28,14 +28,14 @@
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str3, arg1: node+5, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+7, type: type0},
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block6, arg1: function0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+9, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+9},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+5, type: type0},
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block0, arg1: function0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+7, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+7},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block5, arg1: node+0},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block6},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+5, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+5},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block7},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+8, type: type0},
|
||||
@@ -43,7 +43,7 @@
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block11, arg1: node+8},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block12},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+13, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+13},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block13},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+16, type: type0},
|
||||
@@ -51,7 +51,7 @@
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block17, arg1: node+16},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block18},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+21, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+21},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block18},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
|
||||
+3
-3
@@ -32,10 +32,10 @@
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+5, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+7, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+5, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+7},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+5},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block6},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -30,9 +30,9 @@
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block5, arg1: node+0},
|
||||
// CHECK:STDOUT: {kind: Branch, arg0: block6},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+5, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+5},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+7, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+7},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block7, arg1: node+9},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block7, arg1: node+10},
|
||||
// CHECK:STDOUT: {kind: BlockArg, arg0: block7, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+13, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+13},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -31,10 +31,10 @@
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+1, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+1},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+4},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function2},
|
||||
// CHECK:STDOUT: {kind: BoolLiteral, arg0: true, type: type1},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block5, arg1: node+7},
|
||||
@@ -44,7 +44,7 @@
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block7, arg1: node+10},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block7, arg1: node+11},
|
||||
// CHECK:STDOUT: {kind: BlockArg, arg0: block7, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+14, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+14},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function3},
|
||||
// CHECK:STDOUT: {kind: BoolLiteral, arg0: false, type: type1},
|
||||
// CHECK:STDOUT: {kind: BranchIf, arg0: block9, arg1: node+17},
|
||||
@@ -54,7 +54,7 @@
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block11, arg1: node+20},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block11, arg1: node+21},
|
||||
// CHECK:STDOUT: {kind: BlockArg, arg0: block11, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+24, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+24},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -30,10 +30,10 @@
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+1, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+1},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+4},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str3, arg1: node+6, type: type1},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function2},
|
||||
@@ -44,7 +44,7 @@
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block9, arg1: node+11},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block9, arg1: node+12},
|
||||
// CHECK:STDOUT: {kind: BlockArg, arg0: block9, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+15, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+15},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block13, arg1: node+15},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block13, arg1: node+22},
|
||||
// CHECK:STDOUT: {kind: BlockArg, arg0: block13, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+25, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+25},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
+3
-3
@@ -26,10 +26,10 @@
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: BoolLiteral, arg0: true, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+1, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+1},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: BoolLiteral, arg0: true, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+4},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function2},
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block0, arg1: function0, type: type0},
|
||||
// CHECK:STDOUT: {kind: BoolLiteral, arg0: false, type: type0},
|
||||
@@ -38,7 +38,7 @@
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block0, arg1: function1, type: type0},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block6, arg1: node+11},
|
||||
// CHECK:STDOUT: {kind: BlockArg, arg0: block6, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+13, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+13},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node+1, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+3, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+3},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: type1},
|
||||
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: nodeError, arg1: node+2, type: typeError},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+3, type: typeError},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+3},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: nodeError, arg1: node+2, type: typeError},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node+3, arg1: node+4, type: typeError},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+5, type: typeError},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+5},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
+3
-3
@@ -26,10 +26,10 @@
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: BoolLiteral, arg0: true, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+1, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+1},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function1},
|
||||
// CHECK:STDOUT: {kind: BoolLiteral, arg0: true, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+4},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function2},
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block0, arg1: function0, type: type0},
|
||||
// CHECK:STDOUT: {kind: UnaryOperatorNot, arg0: node+7, type: type0},
|
||||
@@ -39,7 +39,7 @@
|
||||
// CHECK:STDOUT: {kind: Call, arg0: block0, arg1: function1, type: type0},
|
||||
// CHECK:STDOUT: {kind: BranchWithArg, arg0: block6, arg1: node+12},
|
||||
// CHECK:STDOUT: {kind: BlockArg, arg0: block6, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+14, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+14},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: UnaryOperatorNot, arg0: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+3, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+3},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node+4, arg1: node+5, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+6, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+6},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -30,13 +30,13 @@
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+3, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+3},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+5, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: type1},
|
||||
// CHECK:STDOUT: {kind: BlockArg, arg0: unreachable, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+9, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+9},
|
||||
// CHECK:STDOUT: {kind: BoolLiteral, arg0: false, type: type0},
|
||||
// CHECK:STDOUT: {kind: UnaryOperatorNot, arg0: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: BoolLiteral, arg0: true, type: type0},
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+1, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+1},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
+3
-3
@@ -23,14 +23,14 @@
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+3, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block5, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+6, type: type1},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+6},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+8, type: type1},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block4, type: type2},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+10, type: type2},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+10},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+1, type: type0},
|
||||
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node+1},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
+2
-2
@@ -25,11 +25,11 @@
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+4},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+7, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+7, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+7, arg1: node+2},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -22,13 +22,13 @@
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+2, type: type1},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block0, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -28,11 +28,11 @@
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type1},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type1},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+4, type: type1},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block3, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -24,16 +24,16 @@
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+2, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block3, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block4, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -25,16 +25,16 @@
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+2, type: type1},
|
||||
// CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: type2},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, type: type2},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, arg1: type2},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+4, type: type2},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block3, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block4, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -25,18 +25,18 @@
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+2, type: type1},
|
||||
// CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block4, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+7, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+7},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type2},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+9, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+9, arg1: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+9, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -24,18 +24,18 @@
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+2, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block4, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+7, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+7},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+9, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+9, arg1: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+9, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -24,17 +24,17 @@
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+3, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+5, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block3, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block4, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+3, arg1: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+3, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -21,12 +21,12 @@
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+2, type: type1},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block3, type: type1},
|
||||
|
||||
@@ -27,26 +27,26 @@
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, type: type1},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, arg1: type1},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type2},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+3, type: type2},
|
||||
// CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+5, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type1},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, type: type1},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, arg1: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+8, type: type1},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block4, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+3, arg1: node+11, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+3, arg1: node+11},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str3, arg1: node+13, type: type1},
|
||||
// CHECK:STDOUT: {kind: StructMemberAccess, arg0: node+3, arg1: member1, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+13, arg1: node+15, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+13, arg1: node+15},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str4, arg1: node+17, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+17, arg1: node+13, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+17, arg1: node+13},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
+5
-5
@@ -23,19 +23,19 @@
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+2, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block4, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+7, type: type1},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+7},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+10, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+10, arg1: node+2, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+10, arg1: node+2},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -33,32 +33,32 @@
|
||||
// CHECK:STDOUT: ],
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock0, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block3, type: type1},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock1, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, type: type2},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, arg1: type2},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type3},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+7, type: type3},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+9, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+12, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block6, type: type2},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, type: type2},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, arg1: type2},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+14, type: type2},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block5, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+7, arg1: node+17, type: type3},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+7, arg1: node+17},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block8, type: type1},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, type: type2},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, arg1: type2},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type3},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str3, arg1: node+23, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+23, arg1: node+7, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+23, arg1: node+7},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
+8
-8
@@ -25,24 +25,24 @@
|
||||
// CHECK:STDOUT: type_blocks: [
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: nodes: [
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StructType, arg0: block2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+3, type: type1},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+5, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+8, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructValue, arg0: block4, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+3, arg1: node+11, type: type1},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, type: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+3, arg1: node+11},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str1, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: StructTypeField, arg0: str2, arg1: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type1},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str3, arg1: node+15, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+15, arg1: node+3, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+15, arg1: node+3},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
+2
-2
@@ -27,11 +27,11 @@
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: node+4},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block0, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+7, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+7, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+7, arg1: node+2},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+4, type: type2},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block0, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+9, type: type3},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block3, type: type4},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+7, type: type1},
|
||||
// CHECK:STDOUT: {kind: TupleType, arg0: typeBlock2, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block3, type: type3},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+4, type: type2},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block3, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
+1
-1
@@ -63,7 +63,7 @@
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: type2},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+18, type: type2},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block5, type: type4},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+10, arg1: node+20, type: type4},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+10, arg1: node+20},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
+2
-2
@@ -38,12 +38,12 @@
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+6, type: type1},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block3, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: node+8, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: node+8},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block4, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type2},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+12, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+12, arg1: node+4, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+12, arg1: node+4},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
+2
-2
@@ -44,13 +44,13 @@
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type1},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: node+9, type: type1},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block3, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+11, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+11},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: StubReference, arg0: nodeIntegerType, type: typeTypeType},
|
||||
// CHECK:STDOUT: {kind: TupleValue, arg0: block4, type: type0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type2},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+16, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+16, arg1: node+5, type: type2},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+16, arg1: node+5},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+1, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: node+3, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: node+3},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
|
||||
@@ -27,11 +27,11 @@
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+1, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: node+3, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: node+3},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+5, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+7, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+7},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+1, type: type0},
|
||||
// CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: type1},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: nodeError},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+1, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: nodeError},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: nodeError},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: typeError},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+2, type: typeError},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: nodeError, type: typeError},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+2, arg1: nodeError},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+0, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+0, arg1: node+2},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
+2
-2
@@ -24,10 +24,10 @@
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+0, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+0, arg1: node+2},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+4, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+4, arg1: node+0},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
// CHECK:STDOUT: [
|
||||
|
||||
@@ -26,11 +26,11 @@
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+0, arg1: node+2, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+0, arg1: node+2},
|
||||
// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: function0},
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node+5, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+5, arg1: node+0},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@
|
||||
// CHECK:STDOUT: {kind: VarStorage, type: type0},
|
||||
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node+1, type: type0},
|
||||
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: node+3, type: type0},
|
||||
// CHECK:STDOUT: {kind: Assign, arg0: node+1, arg1: node+3},
|
||||
// CHECK:STDOUT: {kind: Return},
|
||||
// CHECK:STDOUT: ]
|
||||
// CHECK:STDOUT: node_blocks: [
|
||||
|
||||
Reference in New Issue
Block a user