diff --git a/toolchain/lexer/testdata/carbon_test.carbon b/toolchain/lexer/testdata/carbon_test.carbon index 8ba0be71cdc2..ac11c46ece6b 100644 --- a/toolchain/lexer/testdata/carbon_test.carbon +++ b/toolchain/lexer/testdata/carbon_test.carbon @@ -6,19 +6,19 @@ // RUN: %{carbon-run-tokens} // CHECK:STDOUT: [ -// CHECK:STDOUT: { index: 0, kind: 'Fn', line: {{ *}}[[@LINE+7]], column: 1, indent: 1, spelling: 'fn', has_trailing_space: true }, -// CHECK:STDOUT: { index: 1, kind: 'Identifier', line: {{ *}}[[@LINE+6]], column: 4, indent: 1, spelling: 'run', identifier: 0 }, -// CHECK:STDOUT: { index: 2, kind: 'OpenParen', line: {{ *}}[[@LINE+5]], column: 7, indent: 1, spelling: '(', closing_token: 5 }, -// CHECK:STDOUT: { index: 3, kind: 'Identifier', line: {{ *}}[[@LINE+4]], column: 8, indent: 1, spelling: 'String', identifier: 1, has_trailing_space: true }, -// CHECK:STDOUT: { index: 4, kind: 'Identifier', line: {{ *}}[[@LINE+3]], column: 15, indent: 1, spelling: 'program', identifier: 2 }, -// CHECK:STDOUT: { index: 5, kind: 'CloseParen', line: {{ *}}[[@LINE+2]], column: 22, indent: 1, spelling: ')', opening_token: 2, has_trailing_space: true }, -// CHECK:STDOUT: { index: 6, kind: 'OpenCurlyBrace', line: {{ *}}[[@LINE+1]], column: 24, indent: 1, spelling: '{', closing_token: 10, has_trailing_space: true }, +// CHECK:STDOUT: { index: 0, kind: 'Fn', line: {{ *}}[[@LINE+7]], column: 1, indent: 1, spelling: 'fn', has_trailing_space: true }, +// CHECK:STDOUT: { index: 1, kind: 'Identifier', line: {{ *}}[[@LINE+6]], column: 4, indent: 1, spelling: 'run', identifier: 0 }, +// CHECK:STDOUT: { index: 2, kind: 'OpenParen', line: {{ *}}[[@LINE+5]], column: 7, indent: 1, spelling: '(', closing_token: 5 }, +// CHECK:STDOUT: { index: 3, kind: 'StringTypeLiteral', line: {{ *}}[[@LINE+4]], column: 8, indent: 1, spelling: 'String', has_trailing_space: true }, +// CHECK:STDOUT: { index: 4, kind: 'Identifier', line: {{ *}}[[@LINE+3]], column: 15, indent: 1, spelling: 'program', identifier: 1 }, +// CHECK:STDOUT: { index: 5, kind: 'CloseParen', line: {{ *}}[[@LINE+2]], column: 22, indent: 1, spelling: ')', opening_token: 2, has_trailing_space: true }, +// CHECK:STDOUT: { index: 6, kind: 'OpenCurlyBrace', line: {{ *}}[[@LINE+1]], column: 24, indent: 1, spelling: '{', closing_token: 10, has_trailing_space: true }, fn run(String program) { - // CHECK:STDOUT: { index: 7, kind: 'Return', line: {{ *}}[[@LINE+3]], column: 3, indent: 3, spelling: 'return', has_trailing_space: true }, - // CHECK:STDOUT: { index: 8, kind: 'Identifier', line: {{ *}}[[@LINE+2]], column: 10, indent: 3, spelling: 'True', identifier: 3 }, - // CHECK:STDOUT: { index: 9, kind: 'Semi', line: {{ *}}[[@LINE+1]], column: 14, indent: 3, spelling: ';', has_trailing_space: true }, + // CHECK:STDOUT: { index: 7, kind: 'Return', line: {{ *}}[[@LINE+3]], column: 3, indent: 3, spelling: 'return', has_trailing_space: true }, + // CHECK:STDOUT: { index: 8, kind: 'Identifier', line: {{ *}}[[@LINE+2]], column: 10, indent: 3, spelling: 'True', identifier: 2 }, + // CHECK:STDOUT: { index: 9, kind: 'Semi', line: {{ *}}[[@LINE+1]], column: 14, indent: 3, spelling: ';', has_trailing_space: true }, return True; -// CHECK:STDOUT: { index: 10, kind: 'CloseCurlyBrace', line: {{ *}}[[@LINE+3]], column: 1, indent: 1, spelling: '}', opening_token: 6, has_trailing_space: true }, -// CHECK:STDOUT: { index: 11, kind: 'EndOfFile', line: {{ *}}[[@LINE+2]], column: 2, indent: 1, spelling: '' }, +// CHECK:STDOUT: { index: 10, kind: 'CloseCurlyBrace', line: {{ *}}[[@LINE+3]], column: 1, indent: 1, spelling: '}', opening_token: 6, has_trailing_space: true }, +// CHECK:STDOUT: { index: 11, kind: 'EndOfFile', line: {{ *}}[[@LINE+2]], column: 2, indent: 1, spelling: '' }, // CHECK:STDOUT: ] } diff --git a/toolchain/lexer/token_kind.def b/toolchain/lexer/token_kind.def index 3fc3121863df..f249f2f96899 100644 --- a/toolchain/lexer/token_kind.def +++ b/toolchain/lexer/token_kind.def @@ -156,6 +156,8 @@ CARBON_KEYWORD_TOKEN(Return, "return") CARBON_KEYWORD_TOKEN(Returned, "returned") CARBON_KEYWORD_TOKEN(SelfParameter, "self") CARBON_KEYWORD_TOKEN(SelfType, "Self") +// TODO: Although we provide a String type literal, it's not standardized. +CARBON_KEYWORD_TOKEN(StringTypeLiteral, "String") CARBON_KEYWORD_TOKEN(Then, "then") // Underscore is tokenized as a keyword because it's part of identifiers. CARBON_KEYWORD_TOKEN(Underscore, "_") diff --git a/toolchain/lexer/token_kind.h b/toolchain/lexer/token_kind.h index a29d964a652f..588341f6bc14 100644 --- a/toolchain/lexer/token_kind.h +++ b/toolchain/lexer/token_kind.h @@ -86,7 +86,13 @@ template <> struct format_provider { static void format(const Carbon::TokenKind& kind, raw_ostream& out, StringRef /*style*/) { - out << kind.fixed_spelling(); + auto spelling = kind.fixed_spelling(); + if (!spelling.empty()) { + out << spelling; + } else { + // Default to the name if there's no fixed spelling. + out << kind; + } } }; diff --git a/toolchain/lexer/token_kind_test.cpp b/toolchain/lexer/token_kind_test.cpp index ba12f7e64577..99820039e7e4 100644 --- a/toolchain/lexer/token_kind_test.cpp +++ b/toolchain/lexer/token_kind_test.cpp @@ -21,9 +21,9 @@ using ::testing::MatchesRegex; constexpr llvm::StringLiteral SymbolRegex = R"([\[\]{}!@#%^&*()/?\\|;:.,<>=+~-]+)"; -// We restrict keywords to be lowercase ASCII letters and underscores with one -// exception: `Self`. -constexpr llvm::StringLiteral KeywordRegex = "[a-z_]+|Self"; +// We restrict keywords to be lowercase ASCII letters and underscores with a few +// specific exceptions. +constexpr llvm::StringLiteral KeywordRegex = "[a-z_]+|Self|String"; #define CARBON_TOKEN(TokenName) \ TEST(TokenKindTest, TokenName) { \ diff --git a/toolchain/parser/parser.cpp b/toolchain/parser/parser.cpp index bf8037c69e02..08ff10392ff6 100644 --- a/toolchain/parser/parser.cpp +++ b/toolchain/parser/parser.cpp @@ -846,7 +846,8 @@ auto Parser::HandleExpressionInPostfixState() -> void { case TokenKind::StringLiteral: case TokenKind::IntegerTypeLiteral: case TokenKind::UnsignedIntegerTypeLiteral: - case TokenKind::FloatingPointTypeLiteral: { + case TokenKind::FloatingPointTypeLiteral: + case TokenKind::StringTypeLiteral: { AddLeafNode(ParseNodeKind::Literal, Consume()); PushState(state); break; diff --git a/toolchain/parser/testdata/basics/builtin_types.carbon b/toolchain/parser/testdata/basics/builtin_types.carbon new file mode 100644 index 000000000000..8b0134976ab4 --- /dev/null +++ b/toolchain/parser/testdata/basics/builtin_types.carbon @@ -0,0 +1,34 @@ +// 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 +// +// AUTOUPDATE +// RUN: %{carbon-run-parser} +// CHECK:STDOUT: [ +// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'test_i32'}, +// CHECK:STDOUT: {kind: 'Literal', text: 'i32'}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, +// CHECK:STDOUT: {kind: 'Literal', text: '0'}, +// CHECK:STDOUT: {kind: 'VariableDeclaration', text: ';', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'test_f64'}, +// CHECK:STDOUT: {kind: 'Literal', text: 'f64'}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, +// CHECK:STDOUT: {kind: 'Literal', text: '0.1'}, +// CHECK:STDOUT: {kind: 'VariableDeclaration', text: ';', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, +// CHECK:STDOUT: {kind: 'DeclaredName', text: 'test_str'}, +// CHECK:STDOUT: {kind: 'Literal', text: 'String'}, +// CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, +// CHECK:STDOUT: {kind: 'Literal', text: '"Test"'}, +// CHECK:STDOUT: {kind: 'VariableDeclaration', text: ';', subtree_size: 7}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: ] + +var test_i32: i32 = 0; +var test_f64: f64 = 0.1; +var test_str: String = "Test"; diff --git a/toolchain/parser/testdata/basics/var.carbon b/toolchain/parser/testdata/basics/var.carbon index 78a48780606b..cb858ec8c910 100644 --- a/toolchain/parser/testdata/basics/var.carbon +++ b/toolchain/parser/testdata/basics/var.carbon @@ -24,7 +24,7 @@ // CHECK:STDOUT: {kind: 'FunctionDefinitionStart', text: '{', subtree_size: 5}, // CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, // CHECK:STDOUT: {kind: 'DeclaredName', text: 's'}, -// CHECK:STDOUT: {kind: 'NameReference', text: 'String'}, +// CHECK:STDOUT: {kind: 'Literal', text: 'String'}, // CHECK:STDOUT: {kind: 'PatternBinding', text: ':', subtree_size: 3}, // CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, // CHECK:STDOUT: {kind: 'Literal', text: '"hello"'}, diff --git a/toolchain/semantics/semantics_builtin_kind.def b/toolchain/semantics/semantics_builtin_kind.def index ebe0c9c96e49..c5d8a7f17d5e 100644 --- a/toolchain/semantics/semantics_builtin_kind.def +++ b/toolchain/semantics/semantics_builtin_kind.def @@ -45,13 +45,17 @@ CARBON_SEMANTICS_BUILTIN_KIND(TypeType, TypeType) // This has a deliberately self-referential type. CARBON_SEMANTICS_BUILTIN_KIND(InvalidType, InvalidType) -// The type of integers and integer literals, currently always i32. Long-term -// we may not want it this way, but for now this is the approach. +// The type of integer values and integer literals, currently always i32. +// Long-term we may not want it this way, but for now this is the approach. CARBON_SEMANTICS_BUILTIN_KIND(IntegerType, TypeType) -// The type of reals and real literals, currently always f64. Long-term -// we may not want it this way, but for now this is the approach. -CARBON_SEMANTICS_BUILTIN_KIND(RealType, TypeType) +// The type of floating point values and real literals, currently always f64. +// Long-term we may not want it this way, but for now this is the approach. +CARBON_SEMANTICS_BUILTIN_KIND(FloatingPointType, TypeType) + +// The type of string values and String literals. +// Long-term we may not want it this way, but for now this is the approach. +CARBON_SEMANTICS_BUILTIN_KIND(StringType, TypeType) // Keep invalid last, so that we can use values as array indices without needing // an invalid entry. diff --git a/toolchain/semantics/semantics_ir.cpp b/toolchain/semantics/semantics_ir.cpp index 3485de59e5d7..12b2037edb6e 100644 --- a/toolchain/semantics/semantics_ir.cpp +++ b/toolchain/semantics/semantics_ir.cpp @@ -77,6 +77,13 @@ auto SemanticsIR::Print(llvm::raw_ostream& out) const -> void { } out << "]\n"; + out << "real_literals: [\n"; + for (const auto& real_literal : real_literals_) { + out.indent(Indent); + out << real_literal << ",\n"; + } + out << "]\n"; + out << "strings: [\n"; for (const auto& string : strings_) { out.indent(Indent); diff --git a/toolchain/semantics/semantics_ir.h b/toolchain/semantics/semantics_ir.h index d41f7980791a..7c2cb898d819 100644 --- a/toolchain/semantics/semantics_ir.h +++ b/toolchain/semantics/semantics_ir.h @@ -29,6 +29,20 @@ struct SemanticsCallable { SemanticsNodeBlockId param_refs_id; }; +struct SemanticsRealLiteral { + auto Print(llvm::raw_ostream& out) const -> void { + out << "{mantissa: " << mantissa << ", exponent: " << exponent + << ", is_decimal: " << is_decimal << "}"; + } + + llvm::APInt mantissa; + llvm::APInt exponent; + + // If false, the value is mantissa * 2^exponent. + // If true, the value is mantissa * 10^exponent. + bool is_decimal; +}; + // Provides semantic analysis on a ParseTree. class SemanticsIR { public: @@ -103,6 +117,14 @@ class SemanticsIR { return node_blocks_[block_id.index]; } + // Adds a real literal, returning an ID to reference it. + auto AddRealLiteral(SemanticsRealLiteral real_literal) + -> SemanticsRealLiteralId { + SemanticsRealLiteralId id(real_literals_.size()); + real_literals_.push_back(real_literal); + return id; + } + // Adds an string, returning an ID to reference it. auto AddString(llvm::StringRef str) -> SemanticsStringId { // If the string has already been stored, return the corresponding ID. @@ -139,6 +161,9 @@ class SemanticsIR { // Storage for integer literals. llvm::SmallVector integer_literals_; + // Storage for real literals. + llvm::SmallVector real_literals_; + // Storage for strings. strings_ provides a list of allocated strings, while // string_to_id_ provides a mapping to identify strings. llvm::StringMap string_to_id_; diff --git a/toolchain/semantics/semantics_ir_test.cpp b/toolchain/semantics/semantics_ir_test.cpp index acde13b20670..7ff341d1ff69 100644 --- a/toolchain/semantics/semantics_ir_test.cpp +++ b/toolchain/semantics/semantics_ir_test.cpp @@ -51,6 +51,7 @@ TEST(SemanticsIRTest, YAML) { Pair("cross_reference_irs_size", "1"), Pair("callables", Yaml::Sequence(IsEmpty())), Pair("integer_literals", Yaml::Sequence(ElementsAre("0"))), + Pair("real_literals", Yaml::Sequence(IsEmpty())), Pair("strings", Yaml::Sequence(ElementsAre("x"))), Pair("nodes", Yaml::Sequence(AllOf( diff --git a/toolchain/semantics/semantics_node.h b/toolchain/semantics/semantics_node.h index db86b734736b..8172ab34a98c 100644 --- a/toolchain/semantics/semantics_node.h +++ b/toolchain/semantics/semantics_node.h @@ -15,7 +15,7 @@ namespace Carbon { -// Type-safe storage of Node IDs. +// The ID of a node. struct SemanticsNodeId : public IndexBase { // An explicitly invalid node ID. // NOLINTNEXTLINE(readability-identifier-naming) @@ -60,7 +60,7 @@ struct SemanticsCrossReferenceIRId : public IndexBase { } }; -// Type-safe storage of integer literals. +// The ID of an integer literal. struct SemanticsIntegerLiteralId : public IndexBase { using IndexBase::IndexBase; auto Print(llvm::raw_ostream& out) const -> void { @@ -69,7 +69,7 @@ struct SemanticsIntegerLiteralId : public IndexBase { } }; -// Type-safe storage of node blocks. +// The ID of a node block. struct SemanticsNodeBlockId : public IndexBase { // All SemanticsIR instances must provide the 0th node block as empty. // NOLINTNEXTLINE(readability-identifier-naming) @@ -91,7 +91,16 @@ constexpr SemanticsNodeBlockId SemanticsNodeBlockId::Empty = constexpr SemanticsNodeBlockId SemanticsNodeBlockId::Invalid = SemanticsNodeBlockId(SemanticsNodeBlockId::InvalidIndex); -// Type-safe storage of strings. +// The ID of a real literal. +struct SemanticsRealLiteralId : public IndexBase { + using IndexBase::IndexBase; + auto Print(llvm::raw_ostream& out) const -> void { + out << "real"; + IndexBase::Print(out); + } +}; + +// The ID of a string. struct SemanticsStringId : public IndexBase { using IndexBase::IndexBase; auto Print(llvm::raw_ostream& out) const -> void { @@ -213,13 +222,14 @@ class SemanticsNode { return SemanticsIntegerLiteralId(arg0_); } - static auto MakeRealLiteral(ParseTree::Node parse_node) -> SemanticsNode { + static auto MakeRealLiteral(ParseTree::Node parse_node, + SemanticsRealLiteralId real) -> SemanticsNode { return SemanticsNode(parse_node, SemanticsNodeKind::RealLiteral, - SemanticsNodeId::BuiltinRealType); + SemanticsNodeId::BuiltinFloatingPointType, real.index); } - auto GetAsRealLiteral() const -> NoArgs { + auto GetAsRealLiteral() const -> SemanticsRealLiteralId { CARBON_CHECK(kind_ == SemanticsNodeKind::RealLiteral); - return {}; + return SemanticsRealLiteralId(arg0_); } static auto MakeReturn(ParseTree::Node parse_node) -> SemanticsNode { @@ -245,6 +255,16 @@ class SemanticsNode { return SemanticsNodeId(arg0_); } + static auto MakeStringLiteral(ParseTree::Node parse_node, + SemanticsStringId string_id) -> SemanticsNode { + return SemanticsNode(parse_node, SemanticsNodeKind::StringLiteral, + SemanticsNodeId::BuiltinStringType, string_id.index); + } + auto GetAsStringLiteral() const -> SemanticsStringId { + CARBON_CHECK(kind_ == SemanticsNodeKind::StringLiteral); + return SemanticsStringId(arg0_); + } + static auto MakeVarStorage(ParseTree::Node parse_node, SemanticsNodeId type) -> SemanticsNode { return SemanticsNode(parse_node, SemanticsNodeKind::VarStorage, type); diff --git a/toolchain/semantics/semantics_node_kind.def b/toolchain/semantics/semantics_node_kind.def index 26a830fb4d9f..3806eda4ec28 100644 --- a/toolchain/semantics/semantics_node_kind.def +++ b/toolchain/semantics/semantics_node_kind.def @@ -29,6 +29,7 @@ CARBON_SEMANTICS_NODE_KIND(IntegerLiteral) CARBON_SEMANTICS_NODE_KIND(RealLiteral) CARBON_SEMANTICS_NODE_KIND(Return) CARBON_SEMANTICS_NODE_KIND(ReturnExpression) +CARBON_SEMANTICS_NODE_KIND(StringLiteral) CARBON_SEMANTICS_NODE_KIND(VarStorage) #undef CARBON_SEMANTICS_NODE_KIND diff --git a/toolchain/semantics/semantics_parse_tree_handler.cpp b/toolchain/semantics/semantics_parse_tree_handler.cpp index 5f78cb5fccd4..e68f0cb3d28a 100644 --- a/toolchain/semantics/semantics_parse_tree_handler.cpp +++ b/toolchain/semantics/semantics_parse_tree_handler.cpp @@ -422,8 +422,19 @@ auto SemanticsParseTreeHandler::HandleLiteral(ParseTree::Node parse_node) break; } case TokenKind::RealLiteral: { - // TODO: Add storage of the Real literal. - AddNodeAndPush(parse_node, SemanticsNode::MakeRealLiteral(parse_node)); + auto token_value = tokens_->GetRealLiteral(token); + auto id = + semantics_->AddRealLiteral({.mantissa = token_value.Mantissa(), + .exponent = token_value.Exponent(), + .is_decimal = token_value.IsDecimal()}); + AddNodeAndPush(parse_node, + SemanticsNode::MakeRealLiteral(parse_node, id)); + break; + } + case TokenKind::StringLiteral: { + auto id = semantics_->AddString(tokens_->GetStringLiteral(token)); + AddNodeAndPush(parse_node, + SemanticsNode::MakeStringLiteral(parse_node, id)); break; } case TokenKind::IntegerTypeLiteral: { @@ -436,9 +447,25 @@ auto SemanticsParseTreeHandler::HandleLiteral(ParseTree::Node parse_node) node_stack_.Push(parse_node, SemanticsNodeId::BuiltinIntegerType); break; } - default: + case TokenKind::FloatingPointTypeLiteral: { + auto text = tokens_->GetTokenText(token); + if (text != "f64") { + emitter_->Emit(parse_node, SemanticsTodo, + "Currently only f64 is allowed"); + return false; + } + node_stack_.Push(parse_node, SemanticsNodeId::BuiltinFloatingPointType); + break; + } + case TokenKind::StringTypeLiteral: { + node_stack_.Push(parse_node, SemanticsNodeId::BuiltinStringType); + break; + } + default: { emitter_->Emit(parse_node, SemanticsTodo, llvm::formatv("Handle {0}", token_kind)); + return false; + } } return true; diff --git a/toolchain/semantics/testdata/basics/builtin_types.carbon b/toolchain/semantics/testdata/basics/builtin_types.carbon new file mode 100644 index 000000000000..a17dde11272b --- /dev/null +++ b/toolchain/semantics/testdata/basics/builtin_types.carbon @@ -0,0 +1,62 @@ +// 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 +// +// AUTOUPDATE +// RUN: %{carbon-run-semantics} +// CHECK:STDOUT: cross_reference_irs_size: 1 +// CHECK:STDOUT: callables: [ +// CHECK:STDOUT: ] +// CHECK:STDOUT: integer_literals: [ +// CHECK:STDOUT: 0, +// CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: {mantissa: 1, exponent: -1, is_decimal: 1}, +// CHECK:STDOUT: ] +// CHECK:STDOUT: strings: [ +// CHECK:STDOUT: test_i32, +// CHECK:STDOUT: test_f64, +// CHECK:STDOUT: test_str, +// CHECK:STDOUT: Test, +// CHECK:STDOUT: ] +// CHECK:STDOUT: nodes: [ +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node0, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, +// CHECK:STDOUT: {kind: VarStorage, type: node2}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5, type: node2}, +// CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, +// CHECK:STDOUT: {kind: Assign, arg0: node5, arg1: node7, type: node2}, +// CHECK:STDOUT: {kind: VarStorage, type: node3}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9, type: node3}, +// CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: node3}, +// CHECK:STDOUT: {kind: Assign, arg0: node9, arg1: node11, type: node3}, +// CHECK:STDOUT: {kind: VarStorage, type: node4}, +// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node13, type: node4}, +// CHECK:STDOUT: {kind: StringLiteral, arg0: str3, type: node4}, +// CHECK:STDOUT: {kind: Assign, arg0: node13, arg1: node15, type: node4}, +// CHECK:STDOUT: ] +// CHECK:STDOUT: node_blocks: [ +// CHECK:STDOUT: [ +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ +// 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: node13, +// CHECK:STDOUT: node14, +// CHECK:STDOUT: node15, +// CHECK:STDOUT: node16, +// CHECK:STDOUT: ], +// CHECK:STDOUT: ] + +var test_i32: i32 = 0; +var test_f64: f64 = 0.1; +var test_str: String = "Test"; diff --git a/toolchain/semantics/testdata/basics/empty.carbon b/toolchain/semantics/testdata/basics/empty.carbon index 79640c3b914d..fc47af87220e 100644 --- a/toolchain/semantics/testdata/basics/empty.carbon +++ b/toolchain/semantics/testdata/basics/empty.carbon @@ -9,6 +9,8 @@ // CHECK:STDOUT: ] // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: ] // CHECK:STDOUT: nodes: [ @@ -16,6 +18,7 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ diff --git a/toolchain/semantics/testdata/basics/empty_decl.carbon b/toolchain/semantics/testdata/basics/empty_decl.carbon new file mode 100644 index 000000000000..5d0a882e8ca8 --- /dev/null +++ b/toolchain/semantics/testdata/basics/empty_decl.carbon @@ -0,0 +1,28 @@ +// 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 +// +// AUTOUPDATE +// RUN: %{carbon-run-semantics} +// CHECK:STDOUT: cross_reference_irs_size: 1 +// CHECK:STDOUT: callables: [ +// CHECK:STDOUT: ] +// CHECK:STDOUT: integer_literals: [ +// CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] +// CHECK:STDOUT: strings: [ +// CHECK:STDOUT: ] +// CHECK:STDOUT: nodes: [ +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node0, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, +// CHECK:STDOUT: ] +// CHECK:STDOUT: node_blocks: [ +// CHECK:STDOUT: [ +// CHECK:STDOUT: ], +// CHECK:STDOUT: ] + +; diff --git a/toolchain/semantics/testdata/basics/fail_name_lookup.carbon b/toolchain/semantics/testdata/basics/fail_name_lookup.carbon index 7cb4decd9683..b1af8f6fb9d8 100644 --- a/toolchain/semantics/testdata/basics/fail_name_lookup.carbon +++ b/toolchain/semantics/testdata/basics/fail_name_lookup.carbon @@ -10,6 +10,8 @@ // CHECK:STDOUT: ] // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: Main, // CHECK:STDOUT: ] @@ -18,17 +20,18 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block0}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node5, arg1: block0}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, // CHECK:STDOUT: node5, // CHECK:STDOUT: node6, +// CHECK:STDOUT: node7, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/basic.carbon b/toolchain/semantics/testdata/function/basic.carbon index bc02c5fb69d7..8570d9fbaa69 100644 --- a/toolchain/semantics/testdata/function/basic.carbon +++ b/toolchain/semantics/testdata/function/basic.carbon @@ -10,6 +10,8 @@ // CHECK:STDOUT: ] // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: Foo, // CHECK:STDOUT: ] @@ -18,17 +20,18 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block0}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node5, arg1: block0}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, // CHECK:STDOUT: node5, // CHECK:STDOUT: node6, +// CHECK:STDOUT: node7, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/order.carbon b/toolchain/semantics/testdata/function/order.carbon index 7d96eb82b2b9..a4ff56d73a37 100644 --- a/toolchain/semantics/testdata/function/order.carbon +++ b/toolchain/semantics/testdata/function/order.carbon @@ -12,6 +12,8 @@ // CHECK:STDOUT: ] // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: Foo, // CHECK:STDOUT: Bar, @@ -22,21 +24,21 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block0}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node5, arg1: block0}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable1}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node7}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block0}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node8}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node8, arg1: block0}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable2}, -// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node10}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node10, arg1: block0}, +// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node11}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node11, arg1: block0}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, // CHECK:STDOUT: node5, // CHECK:STDOUT: node6, // CHECK:STDOUT: node7, @@ -45,6 +47,7 @@ // CHECK:STDOUT: node10, // CHECK:STDOUT: node11, // CHECK:STDOUT: node12, +// CHECK:STDOUT: node13, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/params_one.carbon b/toolchain/semantics/testdata/function/params_one.carbon index e71293d0b29f..ac724c98f903 100644 --- a/toolchain/semantics/testdata/function/params_one.carbon +++ b/toolchain/semantics/testdata/function/params_one.carbon @@ -10,6 +10,8 @@ // CHECK:STDOUT: ] // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: a, // CHECK:STDOUT: Foo, @@ -19,26 +21,27 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4, type: node2}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5, type: node2}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node6}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node6, arg1: block0}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block0}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, -// CHECK:STDOUT: node5, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ // CHECK:STDOUT: node5, +// CHECK:STDOUT: node6, // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node6, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ // CHECK:STDOUT: node7, // CHECK:STDOUT: node8, +// CHECK:STDOUT: node9, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/params_one_comma.carbon b/toolchain/semantics/testdata/function/params_one_comma.carbon index fbb60ab6308c..1cf1174c3daf 100644 --- a/toolchain/semantics/testdata/function/params_one_comma.carbon +++ b/toolchain/semantics/testdata/function/params_one_comma.carbon @@ -10,6 +10,8 @@ // CHECK:STDOUT: ] // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: a, // CHECK:STDOUT: Foo, @@ -19,26 +21,27 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4, type: node2}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5, type: node2}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node6}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node6, arg1: block0}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block0}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, -// CHECK:STDOUT: node5, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ // CHECK:STDOUT: node5, +// CHECK:STDOUT: node6, // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node6, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ // CHECK:STDOUT: node7, // CHECK:STDOUT: node8, +// CHECK:STDOUT: node9, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/params_two.carbon b/toolchain/semantics/testdata/function/params_two.carbon index 0b6c527fa63f..3634b1aace19 100644 --- a/toolchain/semantics/testdata/function/params_two.carbon +++ b/toolchain/semantics/testdata/function/params_two.carbon @@ -10,6 +10,8 @@ // CHECK:STDOUT: ] // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: a, // CHECK:STDOUT: b, @@ -20,31 +22,32 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4, type: node2}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5, type: node2}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node6, type: node2}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node7, type: node2}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node8}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node8, arg1: block0}, +// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node9}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node9, arg1: block0}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, // CHECK:STDOUT: node5, // CHECK:STDOUT: node6, // CHECK:STDOUT: node7, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ -// CHECK:STDOUT: node5, -// CHECK:STDOUT: node7, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ // CHECK:STDOUT: node8, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ +// CHECK:STDOUT: node6, +// CHECK:STDOUT: node8, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ // CHECK:STDOUT: node9, // CHECK:STDOUT: node10, +// CHECK:STDOUT: node11, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/params_two_comma.carbon b/toolchain/semantics/testdata/function/params_two_comma.carbon index fb906787a143..c5c55ad890e7 100644 --- a/toolchain/semantics/testdata/function/params_two_comma.carbon +++ b/toolchain/semantics/testdata/function/params_two_comma.carbon @@ -10,6 +10,8 @@ // CHECK:STDOUT: ] // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: a, // CHECK:STDOUT: b, @@ -20,31 +22,32 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4, type: node2}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5, type: node2}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node6, type: node2}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node7, type: node2}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node8}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node8, arg1: block0}, +// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node9}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node9, arg1: block0}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, // CHECK:STDOUT: node5, // CHECK:STDOUT: node6, // CHECK:STDOUT: node7, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ -// CHECK:STDOUT: node5, -// CHECK:STDOUT: node7, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ // CHECK:STDOUT: node8, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ +// CHECK:STDOUT: node6, +// CHECK:STDOUT: node8, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ // CHECK:STDOUT: node9, // CHECK:STDOUT: node10, +// CHECK:STDOUT: node11, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/operators/binary_op.carbon b/toolchain/semantics/testdata/operators/binary_op.carbon index d365b0efd9b4..84265d66ae3d 100644 --- a/toolchain/semantics/testdata/operators/binary_op.carbon +++ b/toolchain/semantics/testdata/operators/binary_op.carbon @@ -12,6 +12,8 @@ // CHECK:STDOUT: 12, // CHECK:STDOUT: 34, // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: Main, // CHECK:STDOUT: ] @@ -20,27 +22,28 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: node2}, -// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node6, arg1: node7, type: node2}, -// CHECK:STDOUT: {kind: ReturnExpression, arg0: node8, type: node2}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block2}, +// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node7, arg1: node8, type: node2}, +// CHECK:STDOUT: {kind: ReturnExpression, arg0: node9, type: node2}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node5, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, // CHECK:STDOUT: node5, -// CHECK:STDOUT: node10, +// CHECK:STDOUT: node6, +// CHECK:STDOUT: node11, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node6, // CHECK:STDOUT: node7, // CHECK:STDOUT: node8, // CHECK:STDOUT: node9, +// CHECK:STDOUT: node10, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/operators/fail_type_mismatch.carbon b/toolchain/semantics/testdata/operators/fail_type_mismatch.carbon index c906fdcf37de..17bb11da4586 100644 --- a/toolchain/semantics/testdata/operators/fail_type_mismatch.carbon +++ b/toolchain/semantics/testdata/operators/fail_type_mismatch.carbon @@ -11,6 +11,9 @@ // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: 12, // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: {mantissa: 34, exponent: -1, is_decimal: 1}, +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: Main, // CHECK:STDOUT: ] @@ -19,27 +22,28 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, -// CHECK:STDOUT: {kind: RealLiteral, type: node3}, -// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node6, arg1: node7, type: node1}, -// CHECK:STDOUT: {kind: ReturnExpression, arg0: node8, type: node1}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block2}, +// CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: node3}, +// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node7, arg1: node8, type: node1}, +// CHECK:STDOUT: {kind: ReturnExpression, arg0: node9, type: node1}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node5, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, // CHECK:STDOUT: node5, -// CHECK:STDOUT: node10, +// CHECK:STDOUT: node6, +// CHECK:STDOUT: node11, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node6, // CHECK:STDOUT: node7, // CHECK:STDOUT: node8, // CHECK:STDOUT: node9, +// CHECK:STDOUT: node10, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/operators/fail_type_mismatch_once.carbon b/toolchain/semantics/testdata/operators/fail_type_mismatch_once.carbon index 5d6449fbda81..88dd48777b68 100644 --- a/toolchain/semantics/testdata/operators/fail_type_mismatch_once.carbon +++ b/toolchain/semantics/testdata/operators/fail_type_mismatch_once.carbon @@ -12,6 +12,9 @@ // CHECK:STDOUT: 12, // CHECK:STDOUT: 12, // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: {mantissa: 34, exponent: -1, is_decimal: 1}, +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: Main, // CHECK:STDOUT: ] @@ -20,31 +23,32 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, -// CHECK:STDOUT: {kind: RealLiteral, type: node3}, -// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node6, arg1: node7, type: node1}, +// CHECK:STDOUT: {kind: RealLiteral, arg0: real0, 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: node8, arg1: node9, type: node1}, -// CHECK:STDOUT: {kind: ReturnExpression, arg0: node10, type: node1}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block2}, +// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node9, arg1: node10, type: node1}, +// CHECK:STDOUT: {kind: ReturnExpression, arg0: node11, type: node1}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node5, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, // CHECK:STDOUT: node5, -// CHECK:STDOUT: node12, +// CHECK:STDOUT: node6, +// CHECK:STDOUT: node13, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// 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: ] diff --git a/toolchain/semantics/testdata/return/literal.carbon b/toolchain/semantics/testdata/return/literal.carbon index 3377d1be0688..a45416c3d7a3 100644 --- a/toolchain/semantics/testdata/return/literal.carbon +++ b/toolchain/semantics/testdata/return/literal.carbon @@ -11,6 +11,8 @@ // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: 0, // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: Main, // CHECK:STDOUT: ] @@ -19,23 +21,24 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, -// CHECK:STDOUT: {kind: ReturnExpression, arg0: node6, type: node2}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block2}, +// CHECK:STDOUT: {kind: ReturnExpression, arg0: node7, type: node2}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node5, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, // CHECK:STDOUT: node5, -// CHECK:STDOUT: node8, +// CHECK:STDOUT: node6, +// CHECK:STDOUT: node9, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node6, // CHECK:STDOUT: node7, +// CHECK:STDOUT: node8, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/return/trivial.carbon b/toolchain/semantics/testdata/return/trivial.carbon index 43e39a6045fd..8a4664d06201 100644 --- a/toolchain/semantics/testdata/return/trivial.carbon +++ b/toolchain/semantics/testdata/return/trivial.carbon @@ -10,6 +10,8 @@ // CHECK:STDOUT: ] // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: Main, // CHECK:STDOUT: ] @@ -18,21 +20,22 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5}, // CHECK:STDOUT: {kind: Return}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block2}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node5, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, // CHECK:STDOUT: node5, -// CHECK:STDOUT: node7, +// CHECK:STDOUT: node6, +// CHECK:STDOUT: node8, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node6, +// CHECK:STDOUT: node7, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/var/decl.carbon b/toolchain/semantics/testdata/var/decl.carbon index 9fac674104ee..91f362e60471 100644 --- a/toolchain/semantics/testdata/var/decl.carbon +++ b/toolchain/semantics/testdata/var/decl.carbon @@ -10,6 +10,8 @@ // CHECK:STDOUT: ] // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: Main, // CHECK:STDOUT: x, @@ -19,23 +21,24 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node6, type: node2}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block2}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node7, type: node2}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node5, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, // CHECK:STDOUT: node5, -// CHECK:STDOUT: node8, +// CHECK:STDOUT: node6, +// CHECK:STDOUT: node9, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node6, // CHECK:STDOUT: node7, +// CHECK:STDOUT: node8, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/var/decl_with_init.carbon b/toolchain/semantics/testdata/var/decl_with_init.carbon index f4beb635879c..22da5b0a4f80 100644 --- a/toolchain/semantics/testdata/var/decl_with_init.carbon +++ b/toolchain/semantics/testdata/var/decl_with_init.carbon @@ -11,6 +11,8 @@ // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: 0, // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: Main, // CHECK:STDOUT: x, @@ -20,27 +22,28 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node6, 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: node6, arg1: node8, type: node2}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block2}, +// CHECK:STDOUT: {kind: Assign, arg0: node7, arg1: node9, type: node2}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node5, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, // CHECK:STDOUT: node5, -// CHECK:STDOUT: node10, +// CHECK:STDOUT: node6, +// CHECK:STDOUT: node11, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node6, // CHECK:STDOUT: node7, // CHECK:STDOUT: node8, // CHECK:STDOUT: node9, +// CHECK:STDOUT: node10, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/var/fail_duplicate_decl.carbon b/toolchain/semantics/testdata/var/fail_duplicate_decl.carbon index cccc39f97688..b58d57cfcbfd 100644 --- a/toolchain/semantics/testdata/var/fail_duplicate_decl.carbon +++ b/toolchain/semantics/testdata/var/fail_duplicate_decl.carbon @@ -12,6 +12,8 @@ // CHECK:STDOUT: 0, // CHECK:STDOUT: 0, // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: Main, // CHECK:STDOUT: x, @@ -21,28 +23,28 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node6, 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: node6, arg1: node8, 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: node10, 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: node6, arg1: node12, type: node2}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block2}, +// CHECK:STDOUT: {kind: Assign, arg0: node7, arg1: node13, type: node2}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node5, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, // CHECK:STDOUT: node5, -// CHECK:STDOUT: node14, +// CHECK:STDOUT: node6, +// CHECK:STDOUT: node15, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node6, // CHECK:STDOUT: node7, // CHECK:STDOUT: node8, // CHECK:STDOUT: node9, @@ -50,6 +52,7 @@ // CHECK:STDOUT: node11, // CHECK:STDOUT: node12, // CHECK:STDOUT: node13, +// CHECK:STDOUT: node14, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/var/fail_init_type_mismatch.carbon b/toolchain/semantics/testdata/var/fail_init_type_mismatch.carbon index ed5efc3ec98e..9f5999e1985a 100644 --- a/toolchain/semantics/testdata/var/fail_init_type_mismatch.carbon +++ b/toolchain/semantics/testdata/var/fail_init_type_mismatch.carbon @@ -10,6 +10,9 @@ // CHECK:STDOUT: ] // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: {mantissa: 10, exponent: -1, is_decimal: 1}, +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: Main, // CHECK:STDOUT: x, @@ -19,27 +22,28 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node6, type: node2}, -// CHECK:STDOUT: {kind: RealLiteral, type: node3}, -// CHECK:STDOUT: {kind: Assign, arg0: node6, arg1: node8, type: node1}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block2}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node7, type: node2}, +// CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: node3}, +// CHECK:STDOUT: {kind: Assign, arg0: node7, arg1: node9, type: node1}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node5, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, // CHECK:STDOUT: node5, -// CHECK:STDOUT: node10, +// CHECK:STDOUT: node6, +// CHECK:STDOUT: node11, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node6, // CHECK:STDOUT: node7, // CHECK:STDOUT: node8, // CHECK:STDOUT: node9, +// CHECK:STDOUT: node10, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/var/fail_init_with_self.carbon b/toolchain/semantics/testdata/var/fail_init_with_self.carbon index 9984dddc4822..409de39a9698 100644 --- a/toolchain/semantics/testdata/var/fail_init_with_self.carbon +++ b/toolchain/semantics/testdata/var/fail_init_with_self.carbon @@ -10,6 +10,8 @@ // CHECK:STDOUT: ] // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: Main, // CHECK:STDOUT: x, @@ -19,25 +21,26 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node6, type: node2}, -// CHECK:STDOUT: {kind: Assign, arg0: node6, arg1: node1, type: node1}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block2}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node7, type: node2}, +// CHECK:STDOUT: {kind: Assign, arg0: node7, arg1: node1, type: node1}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node5, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, // CHECK:STDOUT: node5, -// CHECK:STDOUT: node9, +// CHECK:STDOUT: node6, +// CHECK:STDOUT: node10, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node6, // CHECK:STDOUT: node7, // CHECK:STDOUT: node8, +// CHECK:STDOUT: node9, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/var/fail_lookup_outside_scope.carbon b/toolchain/semantics/testdata/var/fail_lookup_outside_scope.carbon index ab21effcf16a..6bda0c0c3419 100644 --- a/toolchain/semantics/testdata/var/fail_lookup_outside_scope.carbon +++ b/toolchain/semantics/testdata/var/fail_lookup_outside_scope.carbon @@ -10,6 +10,8 @@ // CHECK:STDOUT: ] // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: Main, // CHECK:STDOUT: x, @@ -20,29 +22,30 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node6, type: node2}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block2}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node7, type: node2}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node5, arg1: block2}, // 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: {kind: BindName, arg0: str2, arg1: node10, type: node2}, +// CHECK:STDOUT: {kind: Assign, arg0: node10, arg1: node1, type: node1}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, // CHECK:STDOUT: node5, -// CHECK:STDOUT: node8, +// CHECK:STDOUT: node6, // CHECK:STDOUT: node9, // CHECK:STDOUT: node10, // CHECK:STDOUT: node11, +// CHECK:STDOUT: node12, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node6, // CHECK:STDOUT: node7, +// CHECK:STDOUT: node8, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/var/global_decl.carbon b/toolchain/semantics/testdata/var/global_decl.carbon index 442dc03fbe20..379772577f5d 100644 --- a/toolchain/semantics/testdata/var/global_decl.carbon +++ b/toolchain/semantics/testdata/var/global_decl.carbon @@ -9,6 +9,8 @@ // CHECK:STDOUT: ] // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: x, // CHECK:STDOUT: ] @@ -17,15 +19,16 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4, type: node2}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5, type: node2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, // CHECK:STDOUT: node5, +// CHECK:STDOUT: node6, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/var/global_decl_with_init.carbon b/toolchain/semantics/testdata/var/global_decl_with_init.carbon index 537d29431732..998dd0c0c7d6 100644 --- a/toolchain/semantics/testdata/var/global_decl_with_init.carbon +++ b/toolchain/semantics/testdata/var/global_decl_with_init.carbon @@ -10,6 +10,8 @@ // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: 0, // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: x, // CHECK:STDOUT: ] @@ -18,19 +20,20 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4, type: node2}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, -// CHECK:STDOUT: {kind: Assign, arg0: node4, arg1: node6, type: node2}, +// CHECK:STDOUT: {kind: Assign, arg0: node5, arg1: node7, type: node2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, // CHECK:STDOUT: node5, // CHECK:STDOUT: node6, // CHECK:STDOUT: node7, +// CHECK:STDOUT: node8, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/var/global_lookup.carbon b/toolchain/semantics/testdata/var/global_lookup.carbon index cf1c5610bdaf..67fe77ac6e0f 100644 --- a/toolchain/semantics/testdata/var/global_lookup.carbon +++ b/toolchain/semantics/testdata/var/global_lookup.carbon @@ -10,6 +10,8 @@ // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: 0, // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: x, // CHECK:STDOUT: y, @@ -19,25 +21,26 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4, type: node2}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, -// CHECK:STDOUT: {kind: Assign, arg0: node4, arg1: node6, type: node2}, +// CHECK:STDOUT: {kind: Assign, arg0: node5, arg1: node7, 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: {kind: BindName, arg0: str1, arg1: node9, type: node2}, +// CHECK:STDOUT: {kind: Assign, arg0: node9, arg1: node5, type: node2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // 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: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/var/global_lookup_in_scope.carbon b/toolchain/semantics/testdata/var/global_lookup_in_scope.carbon index 3f5b1b766514..1d9f80231149 100644 --- a/toolchain/semantics/testdata/var/global_lookup_in_scope.carbon +++ b/toolchain/semantics/testdata/var/global_lookup_in_scope.carbon @@ -11,6 +11,8 @@ // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: 0, // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: x, // CHECK:STDOUT: Main, @@ -21,33 +23,34 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4, type: node2}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, -// CHECK:STDOUT: {kind: Assign, arg0: node4, arg1: node6, type: node2}, +// CHECK:STDOUT: {kind: Assign, arg0: node5, arg1: node7, type: node2}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node8}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node10, type: node2}, -// CHECK:STDOUT: {kind: Assign, arg0: node10, arg1: node4, type: node2}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node8, arg1: block2}, +// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node11, type: node2}, +// CHECK:STDOUT: {kind: Assign, arg0: node11, arg1: node5, type: node2}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node9, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, // CHECK:STDOUT: node5, // CHECK:STDOUT: node6, // CHECK:STDOUT: node7, // CHECK:STDOUT: node8, // CHECK:STDOUT: node9, -// CHECK:STDOUT: node13, +// CHECK:STDOUT: node10, +// CHECK:STDOUT: node14, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node10, // CHECK:STDOUT: node11, // CHECK:STDOUT: node12, +// CHECK:STDOUT: node13, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/var/lookup.carbon b/toolchain/semantics/testdata/var/lookup.carbon index 33b4a681d087..398d5854e227 100644 --- a/toolchain/semantics/testdata/var/lookup.carbon +++ b/toolchain/semantics/testdata/var/lookup.carbon @@ -11,6 +11,8 @@ // CHECK:STDOUT: integer_literals: [ // CHECK:STDOUT: 0, // CHECK:STDOUT: ] +// CHECK:STDOUT: real_literals: [ +// CHECK:STDOUT: ] // CHECK:STDOUT: strings: [ // CHECK:STDOUT: Main, // CHECK:STDOUT: x, @@ -20,27 +22,28 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node2, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node3, type: node0}, +// CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node4}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node5}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node6, 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: node6, arg1: node8, type: node2}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node4, arg1: block2}, +// CHECK:STDOUT: {kind: Assign, arg0: node7, arg1: node9, type: node2}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node5, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node4, // CHECK:STDOUT: node5, -// CHECK:STDOUT: node10, +// CHECK:STDOUT: node6, +// CHECK:STDOUT: node11, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node6, // CHECK:STDOUT: node7, // CHECK:STDOUT: node8, // CHECK:STDOUT: node9, +// CHECK:STDOUT: node10, // CHECK:STDOUT: ], // CHECK:STDOUT: ]