Switch SemanticsIR dumps to produce YAML (#2517)

The parser and lexer already produce YAML, so this is fundamentally a consistency issue. I've been thinking about this, and was looking again because I'm working on adding callables, and figured I'd just fix it now.
This commit is contained in:
Jon Ross-Perkins
2023-01-18 17:43:17 -08:00
committed by GitHub
parent 0d279b388a
commit a1f2d6341f
26 changed files with 755 additions and 665 deletions
+15
View File
@@ -75,3 +75,18 @@ cc_library(
"@llvm-project//llvm:Support",
],
)
cc_test(
name = "semantics_ir_test",
size = "small",
srcs = ["semantics_ir_test.cpp"],
deps = [
":semantics_ir",
"//common:gtest_main",
"//toolchain/common:yaml_test_helpers",
"//toolchain/diagnostics:diagnostic_emitter",
"//toolchain/lexer:tokenized_buffer",
"@com_google_googletest//:gtest",
"@llvm-project//llvm:Support",
],
)
+15 -17
View File
@@ -75,45 +75,43 @@ auto SemanticsIR::MakeFromParseTree(const SemanticsIR& builtin_ir,
auto SemanticsIR::Print(llvm::raw_ostream& out) const -> void {
constexpr int Indent = 2;
out << "cross_reference_irs.size == " << cross_reference_irs_.size() << ",\n";
out << "cross_reference_irs_size: " << cross_reference_irs_.size() << "\n";
out << "integer_literals = {\n";
out << "integer_literals: [\n";
for (int32_t i = 0; i < static_cast<int32_t>(integer_literals_.size()); ++i) {
out.indent(Indent);
out << SemanticsIntegerLiteralId(i) << " = " << integer_literals_[i]
<< ";\n";
out << integer_literals_[i] << ",\n";
}
out << "},\n";
out << "]\n";
out << "strings = {\n";
out << "strings: [\n";
for (int32_t i = 0; i < static_cast<int32_t>(strings_.size()); ++i) {
out.indent(Indent);
out << SemanticsStringId(i) << " = \"" << strings_[i] << "\";\n";
out << strings_[i] << ",\n";
}
out << "},\n";
out << "]\n";
out << "nodes = {\n";
out << "nodes: [\n";
for (int32_t i = 0; i < static_cast<int32_t>(nodes_.size()); ++i) {
out.indent(Indent);
out << SemanticsNodeId(i) << " = " << nodes_[i] << ";\n";
out << nodes_[i] << ",\n";
}
out << "},\n";
out << "]\n";
out << "node_blocks = {\n";
out << "node_blocks: [\n";
for (int32_t i = 0; i < static_cast<int32_t>(node_blocks_.size()); ++i) {
out.indent(Indent);
out << SemanticsNodeBlockId(i) << " = {\n";
out << "[\n";
const auto& node_block = node_blocks_[i];
for (int32_t i = 0; i < static_cast<int32_t>(node_block.size()); ++i) {
out.indent(2 * Indent);
out << node_block[i] << ";\n";
out << node_block[i] << ",\n";
}
out.indent(Indent);
out << "},\n";
out << "],\n";
}
out << "}\n";
out << "]\n";
}
} // namespace Carbon
+76
View File
@@ -0,0 +1,76 @@
// Part of the Carbon Language project, under the Apache License v2.0 with LLVM
// Exceptions. See /LICENSE for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#include "toolchain/semantics/semantics_ir.h"
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <forward_list>
#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "toolchain/common/yaml_test_helpers.h"
#include "toolchain/diagnostics/diagnostic_emitter.h"
#include "toolchain/lexer/tokenized_buffer.h"
namespace Carbon::Testing {
namespace {
using ::testing::_;
using ::testing::AllOf;
using ::testing::Contains;
using ::testing::Each;
using ::testing::ElementsAre;
using ::testing::MatchesRegex;
using ::testing::Pair;
TEST(SemanticsIRTest, YAML) {
DiagnosticConsumer& consumer = ConsoleDiagnosticConsumer();
llvm::Expected<SourceBuffer> source =
SourceBuffer::CreateFromText("var x: i32 = 0;");
TokenizedBuffer tokens = TokenizedBuffer::Lex(*source, consumer);
ParseTree parse_tree =
ParseTree::Parse(tokens, consumer, /*vlog_stream=*/nullptr);
SemanticsIR builtin_ir = SemanticsIR::MakeBuiltinIR();
SemanticsIR semantics_ir = SemanticsIR::MakeFromParseTree(
builtin_ir, tokens, parse_tree, consumer, /*vlog_stream=*/nullptr);
std::string print_output;
llvm::raw_string_ostream print_stream(print_output);
semantics_ir.Print(print_stream);
print_stream.flush();
// Matches the ID of a node. The numbers may change because of builtin
// cross-references, so this code is only doing loose structural checks.
auto node_id = Yaml::Scalar(MatchesRegex("node\\d+"));
EXPECT_THAT(
Yaml::Value::FromText(print_output),
ElementsAre(Yaml::Mapping(ElementsAre(
Pair("cross_reference_irs_size", "1"),
Pair("integer_literals", Yaml::Sequence(ElementsAre("0"))),
Pair("strings", Yaml::Sequence(ElementsAre("x"))),
Pair("nodes",
Yaml::Sequence(AllOf(
// kind is required, other parts are optional.
Each(Yaml::Mapping(Contains(Pair("kind", _)))),
// A 0-arg node.
Contains(Yaml::Mapping(ElementsAre(
Pair("kind", "VarStorage"), Pair("type", node_id)))),
// A 1-arg node.
Contains(Yaml::Mapping(ElementsAre(
Pair("kind", "IntegerLiteral"), Pair("arg0", "int0"),
Pair("type", node_id)))),
// A 2-arg node.
Contains(Yaml::Mapping(ElementsAre(
Pair("kind", "BindName"), Pair("arg0", "str0"),
Pair("arg1", node_id), Pair("type", node_id))))))),
// This production has only one node block.
Pair("node_blocks",
Yaml::Sequence(ElementsAre(Yaml::Sequence(Each(node_id)))))))));
}
} // namespace
} // namespace Carbon::Testing
+10 -9
View File
@@ -9,20 +9,21 @@
namespace Carbon {
static auto PrintArgs(llvm::raw_ostream& /*out*/,
const SemanticsNode::NoArgs /*no_args*/) {}
const SemanticsNode::NoArgs /*no_args*/) -> void {}
template <typename T>
static auto PrintArgs(llvm::raw_ostream& out, T arg) {
out << arg;
static auto PrintArgs(llvm::raw_ostream& out, T arg) -> void {
out << ", arg0: " << arg;
}
template <typename T0, typename T1>
static auto PrintArgs(llvm::raw_ostream& out, std::pair<T0, T1> args) {
out << args.first << ", " << args.second;
static auto PrintArgs(llvm::raw_ostream& out, std::pair<T0, T1> args) -> void {
PrintArgs(out, args.first);
out << ", arg1: " << args.second;
}
void SemanticsNode::Print(llvm::raw_ostream& out) const {
out << kind_ << "(";
out << "{kind: " << kind_;
switch (kind_) {
#define CARBON_SEMANTICS_NODE_KIND(Name) \
case SemanticsNodeKind::Name: \
@@ -30,10 +31,10 @@ void SemanticsNode::Print(llvm::raw_ostream& out) const {
break;
#include "toolchain/semantics/semantics_node_kind.def"
}
out << ")";
if (type_.index != -1) {
out << ": " << type_;
if (type_.is_valid()) {
out << ", type: " << type_;
}
out << "}";
}
} // namespace Carbon
+15 -15
View File
@@ -4,18 +4,18 @@
//
// AUTOUPDATE
// RUN: %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
+15 -15
View File
@@ -4,20 +4,20 @@
//
// AUTOUPDATE
// RUN: %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
;
+24 -24
View File
@@ -4,30 +4,30 @@
//
// AUTOUPDATE
// RUN: %{not} %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: str0 = "Main";
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: node4 = FunctionDeclaration();
// CHECK:STDOUT: node5 = BindName(str0, node4);
// CHECK:STDOUT: node6 = FunctionDefinition(node4, block1);
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: node4;
// CHECK:STDOUT: node5;
// CHECK:STDOUT: node6;
// CHECK:STDOUT: },
// CHECK:STDOUT: block1 = {
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: Main,
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: {kind: FunctionDeclaration},
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4},
// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block1},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: node4,
// CHECK:STDOUT: node5,
// CHECK:STDOUT: node6,
// CHECK:STDOUT: ],
// CHECK:STDOUT: [
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
fn Main() {
// CHECK:STDERR: {{.*}}/toolchain/semantics/testdata/basics/fail_name_lookup.carbon:[[@LINE+1]]:3: Name x not found
+1 -1
View File
@@ -7,7 +7,7 @@
//
// Only checks a couple statements in order to minimize manual update churn.
// CHECK:STDERR: Push 0: FunctionIntroducer -> node<invalid>
// CHECK:STDERR: AddNode block0: BindName(str0, node{{[0-9]+}})
// CHECK:STDERR: AddNode block0: {kind: BindName, arg0: str0, arg1: node4}
fn Foo() {
return;
+24 -24
View File
@@ -4,29 +4,29 @@
//
// AUTOUPDATE
// RUN: %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: str0 = "Foo";
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: node4 = FunctionDeclaration();
// CHECK:STDOUT: node5 = BindName(str0, node4);
// CHECK:STDOUT: node6 = FunctionDefinition(node4, block1);
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: node4;
// CHECK:STDOUT: node5;
// CHECK:STDOUT: node6;
// CHECK:STDOUT: },
// CHECK:STDOUT: block1 = {
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: Foo,
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: {kind: FunctionDeclaration},
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4},
// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block1},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: node4,
// CHECK:STDOUT: node5,
// CHECK:STDOUT: node6,
// CHECK:STDOUT: ],
// CHECK:STDOUT: [
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
fn Foo() {}
+42 -42
View File
@@ -4,48 +4,48 @@
//
// AUTOUPDATE
// RUN: %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: str0 = "Foo";
// CHECK:STDOUT: str1 = "Bar";
// CHECK:STDOUT: str2 = "Baz";
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: node4 = FunctionDeclaration();
// CHECK:STDOUT: node5 = BindName(str0, node4);
// CHECK:STDOUT: node6 = FunctionDefinition(node4, block1);
// CHECK:STDOUT: node7 = FunctionDeclaration();
// CHECK:STDOUT: node8 = BindName(str1, node7);
// CHECK:STDOUT: node9 = FunctionDefinition(node7, block2);
// CHECK:STDOUT: node10 = FunctionDeclaration();
// CHECK:STDOUT: node11 = BindName(str2, node10);
// CHECK:STDOUT: node12 = FunctionDefinition(node10, block3);
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: node4;
// CHECK:STDOUT: node5;
// CHECK:STDOUT: node6;
// CHECK:STDOUT: node7;
// CHECK:STDOUT: node8;
// CHECK:STDOUT: node9;
// CHECK:STDOUT: node10;
// CHECK:STDOUT: node11;
// CHECK:STDOUT: node12;
// CHECK:STDOUT: },
// CHECK:STDOUT: block1 = {
// CHECK:STDOUT: },
// CHECK:STDOUT: block2 = {
// CHECK:STDOUT: },
// CHECK:STDOUT: block3 = {
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: Foo,
// CHECK:STDOUT: Bar,
// CHECK:STDOUT: Baz,
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: {kind: FunctionDeclaration},
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4},
// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block1},
// CHECK:STDOUT: {kind: FunctionDeclaration},
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node7},
// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block2},
// CHECK:STDOUT: {kind: FunctionDeclaration},
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node10},
// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node10, arg1: block3},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: node4,
// CHECK:STDOUT: node5,
// CHECK:STDOUT: node6,
// CHECK:STDOUT: node7,
// CHECK:STDOUT: node8,
// CHECK:STDOUT: node9,
// CHECK:STDOUT: node10,
// CHECK:STDOUT: node11,
// CHECK:STDOUT: node12,
// CHECK:STDOUT: ],
// CHECK:STDOUT: [
// CHECK:STDOUT: ],
// CHECK:STDOUT: [
// CHECK:STDOUT: ],
// CHECK:STDOUT: [
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
fn Foo() {}
fn Bar() {}
+34 -34
View File
@@ -4,40 +4,40 @@
//
// AUTOUPDATE
// RUN: %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: int0 = 12;
// CHECK:STDOUT: int1 = 34;
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: str0 = "Main";
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: node4 = FunctionDeclaration();
// CHECK:STDOUT: node5 = BindName(str0, node4);
// CHECK:STDOUT: node6 = FunctionDefinition(node4, block1);
// CHECK:STDOUT: node7 = IntegerLiteral(int0): node2;
// CHECK:STDOUT: node8 = IntegerLiteral(int1): node2;
// CHECK:STDOUT: node9 = BinaryOperatorAdd(node7, node8): node2;
// CHECK:STDOUT: node10 = ReturnExpression(node9): node2;
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: node4;
// CHECK:STDOUT: node5;
// CHECK:STDOUT: node6;
// CHECK:STDOUT: },
// CHECK:STDOUT: block1 = {
// CHECK:STDOUT: node7;
// CHECK:STDOUT: node8;
// CHECK:STDOUT: node9;
// CHECK:STDOUT: node10;
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: 12,
// CHECK:STDOUT: 34,
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: Main,
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: {kind: FunctionDeclaration},
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4},
// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block1},
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2},
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: node2},
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node7, arg1: node8, type: node2},
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node9, type: node2},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: node4,
// CHECK:STDOUT: node5,
// CHECK:STDOUT: node6,
// CHECK:STDOUT: ],
// CHECK:STDOUT: [
// CHECK:STDOUT: node7,
// CHECK:STDOUT: node8,
// CHECK:STDOUT: node9,
// CHECK:STDOUT: node10,
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
fn Main() {
return 12 + 34;
@@ -4,39 +4,39 @@
//
// AUTOUPDATE
// RUN: %{not} %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: int0 = 12;
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: str0 = "Main";
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: node4 = FunctionDeclaration();
// CHECK:STDOUT: node5 = BindName(str0, node4);
// CHECK:STDOUT: node6 = FunctionDefinition(node4, block1);
// CHECK:STDOUT: node7 = IntegerLiteral(int0): node2;
// CHECK:STDOUT: node8 = RealLiteral(): node3;
// CHECK:STDOUT: node9 = BinaryOperatorAdd(node7, node8): node1;
// CHECK:STDOUT: node10 = ReturnExpression(node9): node1;
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: node4;
// CHECK:STDOUT: node5;
// CHECK:STDOUT: node6;
// CHECK:STDOUT: },
// CHECK:STDOUT: block1 = {
// CHECK:STDOUT: node7;
// CHECK:STDOUT: node8;
// CHECK:STDOUT: node9;
// CHECK:STDOUT: node10;
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: 12,
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: Main,
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: {kind: FunctionDeclaration},
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4},
// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block1},
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2},
// CHECK:STDOUT: {kind: RealLiteral, type: node3},
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node7, arg1: node8, type: node1},
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node9, type: node1},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: node4,
// CHECK:STDOUT: node5,
// CHECK:STDOUT: node6,
// CHECK:STDOUT: ],
// CHECK:STDOUT: [
// CHECK:STDOUT: node7,
// CHECK:STDOUT: node8,
// CHECK:STDOUT: node9,
// CHECK:STDOUT: node10,
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
fn Main() {
// CHECK:STDERR: {{.*}}/toolchain/semantics/testdata/operators/fail_type_mismatch.carbon:[[@LINE+1]]:13: Type mismatch: lhs is node2, rhs is node3
@@ -4,44 +4,44 @@
//
// AUTOUPDATE
// RUN: %{not} %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: int0 = 12;
// CHECK:STDOUT: int1 = 12;
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: str0 = "Main";
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: node4 = FunctionDeclaration();
// CHECK:STDOUT: node5 = BindName(str0, node4);
// CHECK:STDOUT: node6 = FunctionDefinition(node4, block1);
// CHECK:STDOUT: node7 = IntegerLiteral(int0): node2;
// CHECK:STDOUT: node8 = RealLiteral(): node3;
// CHECK:STDOUT: node9 = BinaryOperatorAdd(node7, node8): node1;
// CHECK:STDOUT: node10 = IntegerLiteral(int1): node2;
// CHECK:STDOUT: node11 = BinaryOperatorAdd(node9, node10): node1;
// CHECK:STDOUT: node12 = ReturnExpression(node11): node1;
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: node4;
// CHECK:STDOUT: node5;
// CHECK:STDOUT: node6;
// CHECK:STDOUT: },
// CHECK:STDOUT: block1 = {
// CHECK:STDOUT: node7;
// CHECK:STDOUT: node8;
// CHECK:STDOUT: node9;
// CHECK:STDOUT: node10;
// CHECK:STDOUT: node11;
// CHECK:STDOUT: node12;
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: 12,
// CHECK:STDOUT: 12,
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: Main,
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: {kind: FunctionDeclaration},
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4},
// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block1},
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2},
// CHECK:STDOUT: {kind: RealLiteral, type: node3},
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node7, arg1: node8, type: node1},
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: node2},
// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node9, arg1: node10, type: node1},
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node11, type: node1},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: node4,
// CHECK:STDOUT: node5,
// CHECK:STDOUT: node6,
// CHECK:STDOUT: ],
// CHECK:STDOUT: [
// CHECK:STDOUT: node7,
// CHECK:STDOUT: node8,
// CHECK:STDOUT: node9,
// CHECK:STDOUT: node10,
// CHECK:STDOUT: node11,
// CHECK:STDOUT: node12,
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
fn Main() {
// The following line has two mismatches, but after the first, it shouldn't
+29 -29
View File
@@ -4,35 +4,35 @@
//
// AUTOUPDATE
// RUN: %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: int0 = 0;
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: str0 = "Main";
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: node4 = FunctionDeclaration();
// CHECK:STDOUT: node5 = BindName(str0, node4);
// CHECK:STDOUT: node6 = FunctionDefinition(node4, block1);
// CHECK:STDOUT: node7 = IntegerLiteral(int0): node2;
// CHECK:STDOUT: node8 = ReturnExpression(node7): node2;
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: node4;
// CHECK:STDOUT: node5;
// CHECK:STDOUT: node6;
// CHECK:STDOUT: },
// CHECK:STDOUT: block1 = {
// CHECK:STDOUT: node7;
// CHECK:STDOUT: node8;
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: 0,
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: Main,
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: {kind: FunctionDeclaration},
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4},
// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block1},
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2},
// CHECK:STDOUT: {kind: ReturnExpression, arg0: node7, type: node2},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: node4,
// CHECK:STDOUT: node5,
// CHECK:STDOUT: node6,
// CHECK:STDOUT: ],
// CHECK:STDOUT: [
// CHECK:STDOUT: node7,
// CHECK:STDOUT: node8,
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
fn Main() {
return 0;
+26 -26
View File
@@ -4,32 +4,32 @@
//
// AUTOUPDATE
// RUN: %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: str0 = "Main";
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: node4 = FunctionDeclaration();
// CHECK:STDOUT: node5 = BindName(str0, node4);
// CHECK:STDOUT: node6 = FunctionDefinition(node4, block1);
// CHECK:STDOUT: node7 = Return();
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: node4;
// CHECK:STDOUT: node5;
// CHECK:STDOUT: node6;
// CHECK:STDOUT: },
// CHECK:STDOUT: block1 = {
// CHECK:STDOUT: node7;
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: Main,
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: {kind: FunctionDeclaration},
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4},
// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block1},
// CHECK:STDOUT: {kind: Return},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: node4,
// CHECK:STDOUT: node5,
// CHECK:STDOUT: node6,
// CHECK:STDOUT: ],
// CHECK:STDOUT: [
// CHECK:STDOUT: node7,
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
fn Main() {
return;
+29 -29
View File
@@ -4,35 +4,35 @@
//
// AUTOUPDATE
// RUN: %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: str0 = "Main";
// CHECK:STDOUT: str1 = "x";
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: node4 = FunctionDeclaration();
// CHECK:STDOUT: node5 = BindName(str0, node4);
// CHECK:STDOUT: node6 = FunctionDefinition(node4, block1);
// CHECK:STDOUT: node7 = VarStorage(): node2;
// CHECK:STDOUT: node8 = BindName(str1, node7): node2;
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: node4;
// CHECK:STDOUT: node5;
// CHECK:STDOUT: node6;
// CHECK:STDOUT: },
// CHECK:STDOUT: block1 = {
// CHECK:STDOUT: node7;
// CHECK:STDOUT: node8;
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: Main,
// CHECK:STDOUT: x,
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: {kind: FunctionDeclaration},
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4},
// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block1},
// CHECK:STDOUT: {kind: VarStorage, type: node2},
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node7, type: node2},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: node4,
// CHECK:STDOUT: node5,
// CHECK:STDOUT: node6,
// CHECK:STDOUT: ],
// CHECK:STDOUT: [
// CHECK:STDOUT: node7,
// CHECK:STDOUT: node8,
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
fn Main() {
var x: i32;
+34 -34
View File
@@ -4,40 +4,40 @@
//
// AUTOUPDATE
// RUN: %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: int0 = 0;
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: str0 = "Main";
// CHECK:STDOUT: str1 = "x";
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: node4 = FunctionDeclaration();
// CHECK:STDOUT: node5 = BindName(str0, node4);
// CHECK:STDOUT: node6 = FunctionDefinition(node4, block1);
// CHECK:STDOUT: node7 = VarStorage(): node2;
// CHECK:STDOUT: node8 = BindName(str1, node7): node2;
// CHECK:STDOUT: node9 = IntegerLiteral(int0): node2;
// CHECK:STDOUT: node10 = Assign(node7, node9): node2;
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: node4;
// CHECK:STDOUT: node5;
// CHECK:STDOUT: node6;
// CHECK:STDOUT: },
// CHECK:STDOUT: block1 = {
// CHECK:STDOUT: node7;
// CHECK:STDOUT: node8;
// CHECK:STDOUT: node9;
// CHECK:STDOUT: node10;
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: 0,
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: Main,
// CHECK:STDOUT: x,
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: {kind: FunctionDeclaration},
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4},
// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block1},
// CHECK:STDOUT: {kind: VarStorage, type: node2},
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node7, type: node2},
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2},
// CHECK:STDOUT: {kind: Assign, arg0: node7, arg1: node9, type: node2},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: node4,
// CHECK:STDOUT: node5,
// CHECK:STDOUT: node6,
// CHECK:STDOUT: ],
// CHECK:STDOUT: [
// CHECK:STDOUT: node7,
// CHECK:STDOUT: node8,
// CHECK:STDOUT: node9,
// CHECK:STDOUT: node10,
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
fn Main() {
var x: i32 = 0;
+43 -43
View File
@@ -4,49 +4,49 @@
//
// AUTOUPDATE
// RUN: %{not} %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: int0 = 0;
// CHECK:STDOUT: int1 = 0;
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: str0 = "Main";
// CHECK:STDOUT: str1 = "x";
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: node4 = FunctionDeclaration();
// CHECK:STDOUT: node5 = BindName(str0, node4);
// CHECK:STDOUT: node6 = FunctionDefinition(node4, block1);
// CHECK:STDOUT: node7 = VarStorage(): node2;
// CHECK:STDOUT: node8 = BindName(str1, node7): node2;
// CHECK:STDOUT: node9 = IntegerLiteral(int0): node2;
// CHECK:STDOUT: node10 = Assign(node7, node9): node2;
// CHECK:STDOUT: node11 = VarStorage(): node2;
// CHECK:STDOUT: node12 = BindName(str1, node11): node2;
// CHECK:STDOUT: node13 = IntegerLiteral(int1): node2;
// CHECK:STDOUT: node14 = Assign(node7, node13): node2;
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: node4;
// CHECK:STDOUT: node5;
// CHECK:STDOUT: node6;
// CHECK:STDOUT: },
// CHECK:STDOUT: block1 = {
// CHECK:STDOUT: node7;
// CHECK:STDOUT: node8;
// CHECK:STDOUT: node9;
// CHECK:STDOUT: node10;
// CHECK:STDOUT: node11;
// CHECK:STDOUT: node12;
// CHECK:STDOUT: node13;
// CHECK:STDOUT: node14;
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: 0,
// CHECK:STDOUT: 0,
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: Main,
// CHECK:STDOUT: x,
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: {kind: FunctionDeclaration},
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4},
// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block1},
// CHECK:STDOUT: {kind: VarStorage, type: node2},
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node7, type: node2},
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2},
// CHECK:STDOUT: {kind: Assign, arg0: node7, arg1: node9, type: node2},
// CHECK:STDOUT: {kind: VarStorage, type: node2},
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node11, type: node2},
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: node2},
// CHECK:STDOUT: {kind: Assign, arg0: node7, arg1: node13, type: node2},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: node4,
// CHECK:STDOUT: node5,
// CHECK:STDOUT: node6,
// CHECK:STDOUT: ],
// CHECK:STDOUT: [
// CHECK:STDOUT: node7,
// CHECK:STDOUT: node8,
// CHECK:STDOUT: node9,
// CHECK:STDOUT: node10,
// CHECK:STDOUT: node11,
// CHECK:STDOUT: node12,
// CHECK:STDOUT: node13,
// CHECK:STDOUT: node14,
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
fn Main() {
@@ -4,39 +4,39 @@
//
// AUTOUPDATE
// RUN: %{not} %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: str0 = "Main";
// CHECK:STDOUT: str1 = "x";
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: node4 = FunctionDeclaration();
// CHECK:STDOUT: node5 = BindName(str0, node4);
// CHECK:STDOUT: node6 = FunctionDefinition(node4, block1);
// CHECK:STDOUT: node7 = VarStorage(): node2;
// CHECK:STDOUT: node8 = BindName(str1, node7): node2;
// CHECK:STDOUT: node9 = RealLiteral(): node3;
// CHECK:STDOUT: node10 = Assign(node7, node9): node1;
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: node4;
// CHECK:STDOUT: node5;
// CHECK:STDOUT: node6;
// CHECK:STDOUT: },
// CHECK:STDOUT: block1 = {
// CHECK:STDOUT: node7;
// CHECK:STDOUT: node8;
// CHECK:STDOUT: node9;
// CHECK:STDOUT: node10;
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: Main,
// CHECK:STDOUT: x,
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: {kind: FunctionDeclaration},
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4},
// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block1},
// CHECK:STDOUT: {kind: VarStorage, type: node2},
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node7, type: node2},
// CHECK:STDOUT: {kind: RealLiteral, type: node3},
// CHECK:STDOUT: {kind: Assign, arg0: node7, arg1: node9, type: node1},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: node4,
// CHECK:STDOUT: node5,
// CHECK:STDOUT: node6,
// CHECK:STDOUT: ],
// CHECK:STDOUT: [
// CHECK:STDOUT: node7,
// CHECK:STDOUT: node8,
// CHECK:STDOUT: node9,
// CHECK:STDOUT: node10,
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
fn Main() {
// CHECK:STDERR: {{.*}}/toolchain/semantics/testdata/var/fail_init_type_mismatch.carbon:[[@LINE+1]]:19: Type mismatch: lhs is node2, rhs is node3
+31 -31
View File
@@ -4,37 +4,37 @@
//
// AUTOUPDATE
// RUN: %{not} %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: str0 = "Main";
// CHECK:STDOUT: str1 = "x";
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: node4 = FunctionDeclaration();
// CHECK:STDOUT: node5 = BindName(str0, node4);
// CHECK:STDOUT: node6 = FunctionDefinition(node4, block1);
// CHECK:STDOUT: node7 = VarStorage(): node2;
// CHECK:STDOUT: node8 = BindName(str1, node7): node2;
// CHECK:STDOUT: node9 = Assign(node7, node1): node1;
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: node4;
// CHECK:STDOUT: node5;
// CHECK:STDOUT: node6;
// CHECK:STDOUT: },
// CHECK:STDOUT: block1 = {
// CHECK:STDOUT: node7;
// CHECK:STDOUT: node8;
// CHECK:STDOUT: node9;
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: Main,
// CHECK:STDOUT: x,
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: {kind: FunctionDeclaration},
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4},
// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block1},
// CHECK:STDOUT: {kind: VarStorage, type: node2},
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node7, type: node2},
// CHECK:STDOUT: {kind: Assign, arg0: node7, arg1: node1, type: node1},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: node4,
// CHECK:STDOUT: node5,
// CHECK:STDOUT: node6,
// CHECK:STDOUT: ],
// CHECK:STDOUT: [
// CHECK:STDOUT: node7,
// CHECK:STDOUT: node8,
// CHECK:STDOUT: node9,
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
fn Main() {
// CHECK:STDERR: {{.*}}/toolchain/semantics/testdata/var/fail_init_with_self.carbon:[[@LINE+1]]:16: Name x not found
@@ -4,42 +4,42 @@
//
// AUTOUPDATE
// RUN: %{not} %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: str0 = "Main";
// CHECK:STDOUT: str1 = "x";
// CHECK:STDOUT: str2 = "y";
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: node4 = FunctionDeclaration();
// CHECK:STDOUT: node5 = BindName(str0, node4);
// CHECK:STDOUT: node6 = FunctionDefinition(node4, block1);
// CHECK:STDOUT: node7 = VarStorage(): node2;
// CHECK:STDOUT: node8 = BindName(str1, node7): node2;
// CHECK:STDOUT: node9 = VarStorage(): node2;
// CHECK:STDOUT: node10 = BindName(str2, node9): node2;
// CHECK:STDOUT: node11 = Assign(node9, node1): node1;
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: node4;
// CHECK:STDOUT: node5;
// CHECK:STDOUT: node6;
// CHECK:STDOUT: node9;
// CHECK:STDOUT: node10;
// CHECK:STDOUT: node11;
// CHECK:STDOUT: },
// CHECK:STDOUT: block1 = {
// CHECK:STDOUT: node7;
// CHECK:STDOUT: node8;
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: Main,
// CHECK:STDOUT: x,
// CHECK:STDOUT: y,
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: {kind: FunctionDeclaration},
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4},
// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block1},
// CHECK:STDOUT: {kind: VarStorage, type: node2},
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node7, type: node2},
// CHECK:STDOUT: {kind: VarStorage, type: node2},
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node9, type: node2},
// CHECK:STDOUT: {kind: Assign, arg0: node9, arg1: node1, type: node1},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: node4,
// CHECK:STDOUT: node5,
// CHECK:STDOUT: node6,
// CHECK:STDOUT: node9,
// CHECK:STDOUT: node10,
// CHECK:STDOUT: node11,
// CHECK:STDOUT: ],
// CHECK:STDOUT: [
// CHECK:STDOUT: node7,
// CHECK:STDOUT: node8,
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
fn Main() {
var x: i32;
+20 -20
View File
@@ -4,25 +4,25 @@
//
// AUTOUPDATE
// RUN: %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: str0 = "x";
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: node4 = VarStorage(): node2;
// CHECK:STDOUT: node5 = BindName(str0, node4): node2;
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: node4;
// CHECK:STDOUT: node5;
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: x,
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: {kind: VarStorage, type: node2},
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4, type: node2},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: node4,
// CHECK:STDOUT: node5,
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
var x: i32;
+25 -25
View File
@@ -4,30 +4,30 @@
//
// AUTOUPDATE
// RUN: %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: int0 = 0;
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: str0 = "x";
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: node4 = VarStorage(): node2;
// CHECK:STDOUT: node5 = BindName(str0, node4): node2;
// CHECK:STDOUT: node6 = IntegerLiteral(int0): node2;
// CHECK:STDOUT: node7 = Assign(node4, node6): node2;
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: node4;
// CHECK:STDOUT: node5;
// CHECK:STDOUT: node6;
// CHECK:STDOUT: node7;
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: 0,
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: x,
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: {kind: VarStorage, type: node2},
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4, type: node2},
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2},
// CHECK:STDOUT: {kind: Assign, arg0: node4, arg1: node6, type: node2},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: node4,
// CHECK:STDOUT: node5,
// CHECK:STDOUT: node6,
// CHECK:STDOUT: node7,
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
var x: i32 = 0;
+32 -32
View File
@@ -4,38 +4,38 @@
//
// AUTOUPDATE
// RUN: %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: int0 = 0;
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: str0 = "x";
// CHECK:STDOUT: str1 = "y";
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: node4 = VarStorage(): node2;
// CHECK:STDOUT: node5 = BindName(str0, node4): node2;
// CHECK:STDOUT: node6 = IntegerLiteral(int0): node2;
// CHECK:STDOUT: node7 = Assign(node4, node6): node2;
// CHECK:STDOUT: node8 = VarStorage(): node2;
// CHECK:STDOUT: node9 = BindName(str1, node8): node2;
// CHECK:STDOUT: node10 = Assign(node8, node4): node2;
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: node4;
// CHECK:STDOUT: node5;
// CHECK:STDOUT: node6;
// CHECK:STDOUT: node7;
// CHECK:STDOUT: node8;
// CHECK:STDOUT: node9;
// CHECK:STDOUT: node10;
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: 0,
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: x,
// CHECK:STDOUT: y,
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: {kind: VarStorage, type: node2},
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4, type: node2},
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2},
// CHECK:STDOUT: {kind: Assign, arg0: node4, arg1: node6, type: node2},
// CHECK:STDOUT: {kind: VarStorage, type: node2},
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node8, type: node2},
// CHECK:STDOUT: {kind: Assign, arg0: node8, arg1: node4, type: node2},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: node4,
// CHECK:STDOUT: node5,
// CHECK:STDOUT: node6,
// CHECK:STDOUT: node7,
// CHECK:STDOUT: node8,
// CHECK:STDOUT: node9,
// CHECK:STDOUT: node10,
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
var x: i32 = 0;
var y: i32 = x;
@@ -4,47 +4,47 @@
//
// AUTOUPDATE
// RUN: %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: int0 = 0;
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: str0 = "x";
// CHECK:STDOUT: str1 = "Main";
// CHECK:STDOUT: str2 = "y";
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: node4 = VarStorage(): node2;
// CHECK:STDOUT: node5 = BindName(str0, node4): node2;
// CHECK:STDOUT: node6 = IntegerLiteral(int0): node2;
// CHECK:STDOUT: node7 = Assign(node4, node6): node2;
// CHECK:STDOUT: node8 = FunctionDeclaration();
// CHECK:STDOUT: node9 = BindName(str1, node8);
// CHECK:STDOUT: node10 = FunctionDefinition(node8, block1);
// CHECK:STDOUT: node11 = VarStorage(): node2;
// CHECK:STDOUT: node12 = BindName(str2, node11): node2;
// CHECK:STDOUT: node13 = Assign(node11, node4): node2;
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: node4;
// CHECK:STDOUT: node5;
// CHECK:STDOUT: node6;
// CHECK:STDOUT: node7;
// CHECK:STDOUT: node8;
// CHECK:STDOUT: node9;
// CHECK:STDOUT: node10;
// CHECK:STDOUT: },
// CHECK:STDOUT: block1 = {
// CHECK:STDOUT: node11;
// CHECK:STDOUT: node12;
// CHECK:STDOUT: node13;
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: 0,
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: x,
// CHECK:STDOUT: Main,
// CHECK:STDOUT: y,
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: {kind: VarStorage, type: node2},
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4, type: node2},
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2},
// CHECK:STDOUT: {kind: Assign, arg0: node4, arg1: node6, type: node2},
// CHECK:STDOUT: {kind: FunctionDeclaration},
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node8},
// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node8, arg1: block1},
// CHECK:STDOUT: {kind: VarStorage, type: node2},
// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node11, type: node2},
// CHECK:STDOUT: {kind: Assign, arg0: node11, arg1: node4, type: node2},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: node4,
// CHECK:STDOUT: node5,
// CHECK:STDOUT: node6,
// CHECK:STDOUT: node7,
// CHECK:STDOUT: node8,
// CHECK:STDOUT: node9,
// CHECK:STDOUT: node10,
// CHECK:STDOUT: ],
// CHECK:STDOUT: [
// CHECK:STDOUT: node11,
// CHECK:STDOUT: node12,
// CHECK:STDOUT: node13,
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
var x: i32 = 0;
+34 -34
View File
@@ -4,40 +4,40 @@
//
// AUTOUPDATE
// RUN: %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 1,
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: int0 = 0;
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: str0 = "Main";
// CHECK:STDOUT: str1 = "x";
// CHECK:STDOUT: },
// CHECK:STDOUT: nodes = {
// CHECK:STDOUT: node0 = CrossReference(ir0, block0): node0;
// CHECK:STDOUT: node1 = CrossReference(ir0, block1): node1;
// CHECK:STDOUT: node2 = CrossReference(ir0, block2): node0;
// CHECK:STDOUT: node3 = CrossReference(ir0, block3): node0;
// CHECK:STDOUT: node4 = FunctionDeclaration();
// CHECK:STDOUT: node5 = BindName(str0, node4);
// CHECK:STDOUT: node6 = FunctionDefinition(node4, block1);
// CHECK:STDOUT: node7 = VarStorage(): node2;
// CHECK:STDOUT: node8 = BindName(str1, node7): node2;
// CHECK:STDOUT: node9 = IntegerLiteral(int0): node2;
// CHECK:STDOUT: node10 = Assign(node7, node9): node2;
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: node4;
// CHECK:STDOUT: node5;
// CHECK:STDOUT: node6;
// CHECK:STDOUT: },
// CHECK:STDOUT: block1 = {
// CHECK:STDOUT: node7;
// CHECK:STDOUT: node8;
// CHECK:STDOUT: node9;
// CHECK:STDOUT: node10;
// CHECK:STDOUT: },
// CHECK:STDOUT: }
// CHECK:STDOUT: cross_reference_irs_size: 1
// CHECK:STDOUT: integer_literals: [
// CHECK:STDOUT: 0,
// CHECK:STDOUT: ]
// CHECK:STDOUT: strings: [
// CHECK:STDOUT: Main,
// CHECK:STDOUT: x,
// CHECK:STDOUT: ]
// CHECK:STDOUT: nodes: [
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block0, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block1, type: node1},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block2, type: node0},
// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: block3, type: node0},
// CHECK:STDOUT: {kind: FunctionDeclaration},
// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4},
// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block1},
// CHECK:STDOUT: {kind: VarStorage, type: node2},
// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node7, type: node2},
// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2},
// CHECK:STDOUT: {kind: Assign, arg0: node7, arg1: node9, type: node2},
// CHECK:STDOUT: ]
// CHECK:STDOUT: node_blocks: [
// CHECK:STDOUT: [
// CHECK:STDOUT: node4,
// CHECK:STDOUT: node5,
// CHECK:STDOUT: node6,
// CHECK:STDOUT: ],
// CHECK:STDOUT: [
// CHECK:STDOUT: node7,
// CHECK:STDOUT: node8,
// CHECK:STDOUT: node9,
// CHECK:STDOUT: node10,
// CHECK:STDOUT: ],
// CHECK:STDOUT: ]
fn Main() {
var x: i32 = 0;