diff --git a/toolchain/driver/driver.cpp b/toolchain/driver/driver.cpp index e7ab7b22742c..5e444491a3e7 100644 --- a/toolchain/driver/driver.cpp +++ b/toolchain/driver/driver.cpp @@ -209,6 +209,12 @@ auto Driver::RunDumpSubcommand(DiagnosticConsumer& consumer, } CARBON_VLOG() << "semantics_ir: " << semantics_ir; + // Unlike previous steps, errors block further progress. + if (has_errors) { + CARBON_VLOG() << "Unable to dump llvm-ir due to prior errors."; + return false; + } + CARBON_VLOG() << "*** LowerToLLVM ***\n"; llvm::LLVMContext llvm_context; const std::unique_ptr module = diff --git a/toolchain/lowering/BUILD b/toolchain/lowering/BUILD index 4d8a70f96d70..feb011966ad6 100644 --- a/toolchain/lowering/BUILD +++ b/toolchain/lowering/BUILD @@ -9,10 +9,23 @@ cc_library( srcs = ["lower_to_llvm.cpp"], hdrs = ["lower_to_llvm.h"], deps = [ - "//common:check", - "//common:ostream", + ":lowering", "//toolchain/semantics:semantics_ir", "@llvm-project//llvm:Core", "@llvm-project//llvm:Support", ], ) + +cc_library( + name = "lowering", + srcs = ["lowering.cpp"], + hdrs = ["lowering.h"], + deps = [ + "//common:check", + "//toolchain/semantics:semantics_ir", + "//toolchain/semantics:semantics_node", + "//toolchain/semantics:semantics_node_kind", + "@llvm-project//llvm:Core", + "@llvm-project//llvm:Support", + ], +) diff --git a/toolchain/lowering/lower_to_llvm.cpp b/toolchain/lowering/lower_to_llvm.cpp index 294140e4a84f..f2bae57b9e4e 100644 --- a/toolchain/lowering/lower_to_llvm.cpp +++ b/toolchain/lowering/lower_to_llvm.cpp @@ -4,13 +4,15 @@ #include "toolchain/lowering/lower_to_llvm.h" +#include "toolchain/lowering/lowering.h" + namespace Carbon { auto LowerToLLVM(llvm::LLVMContext& llvm_context, llvm::StringRef module_name, - const SemanticsIR& /*semantics_ir*/) + const SemanticsIR& semantics_ir) -> std::unique_ptr { - auto result = std::make_unique(module_name, llvm_context); - return result; + Lowering lowering(llvm_context, module_name, semantics_ir); + return lowering.Run(); } } // namespace Carbon diff --git a/toolchain/lowering/lower_to_llvm.h b/toolchain/lowering/lower_to_llvm.h index 1c02ff6a7c18..57b63abe02fc 100644 --- a/toolchain/lowering/lower_to_llvm.h +++ b/toolchain/lowering/lower_to_llvm.h @@ -5,7 +5,6 @@ #ifndef CARBON_TOOLCHAIN_LOWERING_LOWER_TO_LLVM_H_ #define CARBON_TOOLCHAIN_LOWERING_LOWER_TO_LLVM_H_ -#include "common/ostream.h" #include "llvm/IR/LLVMContext.h" #include "llvm/IR/Module.h" #include "toolchain/semantics/semantics_ir.h" diff --git a/toolchain/lowering/lowering.cpp b/toolchain/lowering/lowering.cpp new file mode 100644 index 000000000000..8446bc1e8247 --- /dev/null +++ b/toolchain/lowering/lowering.cpp @@ -0,0 +1,156 @@ +// 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/lowering/lowering.h" + +#include "toolchain/semantics/semantics_ir.h" + +namespace Carbon { + +Lowering::Lowering(llvm::LLVMContext& llvm_context, llvm::StringRef module_name, + const SemanticsIR& semantics_ir) + : llvm_context_(&llvm_context), + llvm_module_(std::make_unique(module_name, llvm_context)), + builder_(llvm_context), + semantics_ir_(&semantics_ir) { + CARBON_CHECK(!semantics_ir.has_errors()) + << "Generating LLVM IR from invalid SemanticsIR is unsupported."; +} + +auto Lowering::Run() -> std::unique_ptr { + CARBON_CHECK(llvm_module_) << "Run can only be called once."; + + LowerBlock(semantics_ir_->top_node_block_id()); + + while (!todo_blocks_.empty()) { + auto [llvm_block, block_id] = todo_blocks_.pop_back_val(); + builder_.SetInsertPoint(llvm_block); + LowerBlock(block_id); + } + + return std::move(llvm_module_); +} + +auto Lowering::LowerBlock(SemanticsNodeBlockId block_id) -> void { + for (const auto& node_id : semantics_ir_->GetNodeBlock(block_id)) { + auto node = semantics_ir_->GetNode(node_id); + switch (node.kind()) { +#define CARBON_SEMANTICS_NODE_KIND(Name) \ + case SemanticsNodeKind::Name: \ + Handle##Name##Node(node_id, node); \ + break; +#include "toolchain/semantics/semantics_node_kind.def" + } + } +} + +auto Lowering::HandleInvalidNode(SemanticsNodeId /*node_id*/, + SemanticsNode /*node*/) -> void { + llvm_unreachable("never in actual IR"); +} + +auto Lowering::HandleCrossReferenceNode(SemanticsNodeId /*node_id*/, + SemanticsNode node) -> void { + CARBON_FATAL() << "TODO: Add support: " << node; +} + +auto Lowering::HandleAssignNode(SemanticsNodeId /*node_id*/, SemanticsNode node) + -> void { + CARBON_FATAL() << "TODO: Add support: " << node; +} + +auto Lowering::HandleBinaryOperatorAddNode(SemanticsNodeId /*node_id*/, + SemanticsNode node) -> void { + CARBON_FATAL() << "TODO: Add support: " << node; +} + +auto Lowering::HandleBindNameNode(SemanticsNodeId /*node_id*/, + SemanticsNode node) -> void { + CARBON_FATAL() << "TODO: Add support: " << node; +} + +auto Lowering::HandleBuiltinNode(SemanticsNodeId /*node_id*/, + SemanticsNode node) -> void { + CARBON_FATAL() << "TODO: Add support: " << node; +} + +auto Lowering::HandleCallNode(SemanticsNodeId /*node_id*/, SemanticsNode node) + -> void { + CARBON_FATAL() << "TODO: Add support: " << node; +} + +auto Lowering::HandleCodeBlockNode(SemanticsNodeId /*node_id*/, + SemanticsNode node) -> void { + CARBON_FATAL() << "TODO: Add support: " << node; +} + +auto Lowering::HandleFunctionDeclarationNode(SemanticsNodeId /*node_id*/, + SemanticsNode node) -> void { + auto [name_id, callable_id] = node.GetAsFunctionDeclaration(); + auto callable = semantics_ir_->GetCallable(callable_id); + llvm::SmallVector args; + // Note, when handling non-empty parameters, we'll also want to set names. + CARBON_CHECK(callable.param_refs_id == SemanticsNodeBlockId::Empty) + << "TODO: Handle non-empty parameters."; + CARBON_CHECK(callable.return_type_id == SemanticsNodeId::BuiltinIntegerType) + << "TODO: Handle non-i32 return types."; + llvm::Type* return_type = builder_.getInt32Ty(); + llvm::FunctionType* function_type = + llvm::FunctionType::get(return_type, args, /*isVarArg=*/false); + llvm::Function::Create(function_type, llvm::Function::ExternalLinkage, + semantics_ir_->GetString(name_id), llvm_module_.get()); + // TODO: Name arguments. +} + +auto Lowering::HandleFunctionDefinitionNode(SemanticsNodeId /*node_id*/, + SemanticsNode node) -> void { + auto [declaration_id, body_block_id] = node.GetAsFunctionDefinition(); + auto [name_id, callable_id] = + semantics_ir_->GetNode(declaration_id).GetAsFunctionDeclaration(); + + llvm::Function* function = + llvm_module_->getFunction(semantics_ir_->GetString(name_id)); + + // Create a new basic block to start insertion into. + llvm::BasicBlock* body = + llvm::BasicBlock::Create(*llvm_context_, "entry", function); + todo_blocks_.push_back({body, body_block_id}); +} + +auto Lowering::HandleIntegerLiteralNode(SemanticsNodeId node_id, + SemanticsNode node) -> void { + SemanticsIntegerLiteralId int_id = node.GetAsIntegerLiteral(); + llvm::APInt i = semantics_ir_->GetIntegerLiteral(int_id); + llvm::Value* v = + llvm::ConstantInt::get(builder_.getInt32Ty(), i.getLimitedValue()); + node_values_[node_id] = v; +} + +auto Lowering::HandleRealLiteralNode(SemanticsNodeId /*node_id*/, + SemanticsNode node) -> void { + CARBON_FATAL() << "TODO: Add support: " << node; +} + +auto Lowering::HandleReturnNode(SemanticsNodeId /*node_id*/, SemanticsNode node) + -> void { + CARBON_FATAL() << "TODO: Add support: " << node; +} + +auto Lowering::HandleReturnExpressionNode(SemanticsNodeId /*node_id*/, + SemanticsNode node) -> void { + SemanticsNodeId expr_id = node.GetAsReturnExpression(); + builder_.CreateRet(node_values_[expr_id]); +} + +auto Lowering::HandleStringLiteralNode(SemanticsNodeId /*node_id*/, + SemanticsNode node) -> void { + CARBON_FATAL() << "TODO: Add support: " << node; +} + +auto Lowering::HandleVarStorageNode(SemanticsNodeId /*node_id*/, + SemanticsNode node) -> void { + CARBON_FATAL() << "TODO: Add support: " << node; +} + +} // namespace Carbon diff --git a/toolchain/lowering/lowering.h b/toolchain/lowering/lowering.h new file mode 100644 index 000000000000..9f1822e8300b --- /dev/null +++ b/toolchain/lowering/lowering.h @@ -0,0 +1,79 @@ +// 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 + +#ifndef CARBON_TOOLCHAIN_LOWERING_LOWERING_H_ +#define CARBON_TOOLCHAIN_LOWERING_LOWERING_H_ + +#include "llvm/IR/IRBuilder.h" +#include "llvm/IR/LLVMContext.h" +#include "llvm/IR/Module.h" +#include "toolchain/semantics/semantics_ir.h" +#include "toolchain/semantics/semantics_node.h" + +namespace Carbon { + +// Use LowerToLLVM rather than calling this directly. +// +// This carries state for lowering. `Run()` should only be called once, and +// handles the main execution. +class Lowering { + public: + explicit Lowering(llvm::LLVMContext& llvm_context, + llvm::StringRef module_name, + const SemanticsIR& semantics_ir); + + // Lowers the SemanticsIR to LLVM IR. + auto Run() -> std::unique_ptr; + + private: + // Provides DenseMapInfo for SemanticsNodeId. + struct SemanticsNodeIdMapInfo { + static inline auto getEmptyKey() -> SemanticsNodeId { + return SemanticsNodeId(llvm::DenseMapInfo::getEmptyKey()); + } + static inline auto getTombstoneKey() -> SemanticsNodeId { + return SemanticsNodeId(llvm::DenseMapInfo::getTombstoneKey()); + } + + static auto getHashValue(const SemanticsNodeId& val) -> unsigned { + return llvm::DenseMapInfo::getHashValue(val.index); + } + + static auto isEqual(const SemanticsNodeId& lhs, const SemanticsNodeId& rhs) + -> bool { + return lhs == rhs; + } + }; + + // Declare handlers for each SemanticsIR node. +#define CARBON_SEMANTICS_NODE_KIND(Name) \ + auto Handle##Name##Node(SemanticsNodeId node_id, SemanticsNode node)->void; +#include "toolchain/semantics/semantics_node_kind.def" + + // Runs lowering for a block. + auto LowerBlock(SemanticsNodeBlockId block_id) -> void; + + // State for building the LLVM IR. + llvm::LLVMContext* llvm_context_; + std::unique_ptr llvm_module_; + llvm::IRBuilder<> builder_; + + // The input Semantics IR. + const SemanticsIR* const semantics_ir_; + + // Blocks which we've observed and need to lower. + llvm::SmallVector> + todo_blocks_; + + // A mapping of nodes to designated values. + // TODO: It might be worth considering other approaches, or at least if we + // stick with this we'll probably want to clean up nodes as they leave scope. + // However, for now, it's handy to make things work. + llvm::DenseMap + node_values_; +}; + +} // namespace Carbon + +#endif // CARBON_TOOLCHAIN_LOWERING_LOWERING_H_ diff --git a/toolchain/lowering/testdata/basics/fail_in_semantics.carbon b/toolchain/lowering/testdata/basics/fail_in_semantics.carbon new file mode 100644 index 000000000000..09341a1deb86 --- /dev/null +++ b/toolchain/lowering/testdata/basics/fail_in_semantics.carbon @@ -0,0 +1,10 @@ +// 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 +// +// This validates that earlier errors prevent lowering, without crashing. +// AUTOUPDATE +// RUN: %{not} %{carbon-run-lowering} + +// CHECK:STDERR: {{.*}}/toolchain/lowering/testdata/basics/fail_in_semantics.carbon:[[@LINE+1]]:17: Type mismatch: lhs is node2, rhs is node3 +var x: i32 = 1.0; diff --git a/toolchain/lowering/testdata/basics/zero.carbon b/toolchain/lowering/testdata/basics/zero.carbon new file mode 100644 index 000000000000..26ad83f6bce5 --- /dev/null +++ b/toolchain/lowering/testdata/basics/zero.carbon @@ -0,0 +1,17 @@ +// 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-lowering} +// CHECK:STDOUT: ; ModuleID = '{{.*}}/toolchain/lowering/testdata/basics/zero.carbon' +// CHECK:STDOUT: source_filename = "{{.*}}/toolchain/lowering/testdata/basics/zero.carbon" +// CHECK-EMPTY: +// CHECK:STDOUT: define i32 @Main() { +// CHECK:STDOUT: entry: +// CHECK:STDOUT: ret i32 0 +// CHECK:STDOUT: } + +fn Main() -> i32 { + return 0; +} diff --git a/toolchain/semantics/semantics_ir.h b/toolchain/semantics/semantics_ir.h index 5e5457145e01..0cc6eae15ae1 100644 --- a/toolchain/semantics/semantics_ir.h +++ b/toolchain/semantics/semantics_ir.h @@ -77,6 +77,37 @@ class SemanticsIR { // Prints the full IR. auto Print(llvm::raw_ostream& out) const -> void; + // Returns the requested callable. + auto GetCallable(SemanticsCallableId callable_id) const -> SemanticsCallable { + return callables_[callable_id.index]; + } + + // Returns the requested integer literal. + auto GetIntegerLiteral(SemanticsIntegerLiteralId int_id) const + -> const llvm::APInt& { + return integer_literals_[int_id.index]; + } + + // Returns the requested node. + auto GetNode(SemanticsNodeId node_id) const -> SemanticsNode { + return nodes_[node_id.index]; + } + + // Returns the requested node block. + auto GetNodeBlock(SemanticsNodeBlockId block_id) const + -> const llvm::SmallVector& { + return node_blocks_[block_id.index]; + } + + // Returns the requested string. + auto GetString(SemanticsStringId string_id) const -> llvm::StringRef { + return strings_[string_id.index]; + } + + auto top_node_block_id() const -> SemanticsNodeBlockId { + return top_node_block_id_; + } + // Returns true if there were errors creating the semantics IR. auto has_errors() const -> bool { return has_errors_; } @@ -103,11 +134,6 @@ class SemanticsIR { return id; } - // Returns the requested callable. - auto GetCallable(SemanticsCallableId callable_id) -> SemanticsCallable { - return callables_[callable_id.index]; - } - // Adds an integer literal, returning an ID to reference it. auto AddIntegerLiteral(llvm::APInt integer_literal) -> SemanticsIntegerLiteralId { @@ -125,11 +151,6 @@ class SemanticsIR { return node_id; } - // Returns the requested node. - auto GetNode(SemanticsNodeId node_id) const -> const SemanticsNode& { - return nodes_[node_id.index]; - } - // Returns the type of the requested node. auto GetType(SemanticsNodeId node_id) -> SemanticsNodeId { return GetNode(node_id).type(); @@ -159,7 +180,7 @@ class SemanticsIR { // 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. - if (auto existing_id = GetString(str)) { + if (auto existing_id = GetStringID(str)) { return *existing_id; } @@ -171,7 +192,7 @@ class SemanticsIR { } // Returns an ID for the string if it's previously been stored. - auto GetString(llvm::StringRef str) -> std::optional { + auto GetStringID(llvm::StringRef str) -> std::optional { auto str_find = string_to_id_.find(str); if (str_find != string_to_id_.end()) { return str_find->second; @@ -209,6 +230,9 @@ class SemanticsIR { // Storage for blocks within the IR. These reference entries in nodes_. llvm::SmallVector> node_blocks_; + + // The top node block ID. + SemanticsNodeBlockId top_node_block_id_ = SemanticsNodeBlockId::Invalid; }; } // namespace Carbon diff --git a/toolchain/semantics/semantics_node.h b/toolchain/semantics/semantics_node.h index 252f5333253f..78bfc6ece5ef 100644 --- a/toolchain/semantics/semantics_node.h +++ b/toolchain/semantics/semantics_node.h @@ -203,16 +203,18 @@ class SemanticsNode { return {SemanticsCrossReferenceIRId(arg0_), SemanticsNodeId(arg1_)}; } - // TODO: The signature should be added as a parameter. static auto MakeFunctionDeclaration(ParseTree::Node parse_node, - SemanticsCallableId signature) + SemanticsStringId name_id, + SemanticsCallableId signature_id) -> SemanticsNode { return SemanticsNode(parse_node, SemanticsNodeKind::FunctionDeclaration, - SemanticsNodeId::Invalid, signature.index); + SemanticsNodeId::Invalid, name_id.index, + signature_id.index); } - auto GetAsFunctionDeclaration() const -> SemanticsCallableId { + auto GetAsFunctionDeclaration() const + -> std::pair { CARBON_CHECK(kind_ == SemanticsNodeKind::FunctionDeclaration); - return {SemanticsCallableId(arg0_)}; + return {SemanticsStringId(arg0_), SemanticsCallableId(arg1_)}; } static auto MakeFunctionDefinition(ParseTree::Node parse_node, diff --git a/toolchain/semantics/semantics_parse_tree_handler.cpp b/toolchain/semantics/semantics_parse_tree_handler.cpp index 6f65c2599601..53b958a5aba4 100644 --- a/toolchain/semantics/semantics_parse_tree_handler.cpp +++ b/toolchain/semantics/semantics_parse_tree_handler.cpp @@ -62,7 +62,7 @@ auto SemanticsParseTreeHandler::Build() -> void { } // Pop information for the file-level scope. - node_block_stack_.Pop(); + semantics_->top_node_block_id_ = node_block_stack_.Pop(); PopScope(); // Information in all the various context objects should be cleaned up as @@ -87,16 +87,10 @@ auto SemanticsParseTreeHandler::AddNodeAndPush(ParseTree::Node parse_node, node_stack_.Push(parse_node, node_id); } -auto SemanticsParseTreeHandler::BindName(ParseTree::Node name_node, - SemanticsNodeId type_id, - SemanticsNodeId target_id) - -> SemanticsStringId { - CARBON_CHECK(parse_tree_->node_kind(name_node) == ParseNodeKind::DeclaredName) - << parse_tree_->node_kind(name_node); - auto name_str = parse_tree_->GetNodeText(name_node); - auto name_id = semantics_->AddString(name_str); - - AddNode(SemanticsNode::MakeBindName(name_node, type_id, name_id, target_id)); +auto SemanticsParseTreeHandler::AddNameToLookup(ParseTree::Node name_node, + SemanticsStringId name_id, + SemanticsNodeId target_id) + -> void { auto [it, inserted] = current_scope().names.insert(name_id); if (inserted) { name_lookup_[name_id].push_back(target_id); @@ -107,10 +101,23 @@ auto SemanticsParseTreeHandler::BindName(ParseTree::Node name_node, auto prev_def_id = name_lookup_[name_id].back(); auto prev_def = semantics_->GetNode(prev_def_id); - emitter_->Build(name_node, NameRedefined, name_str) + emitter_->Build(name_node, NameRedefined, semantics_->GetString(name_id)) .Note(prev_def.parse_node(), PreviousDefinition) .Emit(); } +} + +auto SemanticsParseTreeHandler::BindName(ParseTree::Node name_node, + SemanticsNodeId type_id, + SemanticsNodeId target_id) + -> SemanticsStringId { + CARBON_CHECK(parse_tree_->node_kind(name_node) == ParseNodeKind::DeclaredName) + << parse_tree_->node_kind(name_node); + auto name_str = parse_tree_->GetNodeText(name_node); + auto name_id = semantics_->AddString(name_str); + + AddNode(SemanticsNode::MakeBindName(name_node, type_id, name_id, target_id)); + AddNameToLookup(name_node, name_id, target_id); return name_id; } @@ -319,7 +326,7 @@ auto SemanticsParseTreeHandler::HandleCallExpression(ParseTree::Node parse_node) return true; } - auto callable_id = name_node.GetAsFunctionDeclaration(); + auto [_, callable_id] = name_node.GetAsFunctionDeclaration(); auto callable = semantics_->GetCallable(callable_id); if (!TryTypeConversionOnArgs(call_expr_parse_node, ir_id, refs_id, @@ -496,14 +503,16 @@ auto SemanticsParseTreeHandler::HandleFunctionDefinitionStart( auto fn_node = node_stack_.PopForSoloParseNode(ParseNodeKind::FunctionIntroducer); + auto name_str = parse_tree_->GetNodeText(name_node); + auto name_id = semantics_->AddString(name_str); + auto callable_id = semantics_->AddCallable({.param_ir_id = param_ir_id, .param_refs_id = param_refs_id, .return_type_id = return_type_id}); - auto decl_id = - AddNode(SemanticsNode::MakeFunctionDeclaration(fn_node, callable_id)); - // TODO: Propagate the type of the function. - BindName(name_node, SemanticsNodeId::Invalid, decl_id); + auto decl_id = AddNode( + SemanticsNode::MakeFunctionDeclaration(fn_node, name_id, callable_id)); + AddNameToLookup(name_node, name_id, decl_id); node_block_stack_.Push(); PushScope(); @@ -657,7 +666,7 @@ auto SemanticsParseTreeHandler::HandleNameReference(ParseTree::Node parse_node) node_stack_.Push(parse_node, SemanticsNodeId::BuiltinInvalidType); }; - auto name_id = semantics_->GetString(name_str); + auto name_id = semantics_->GetStringID(name_str); if (!name_id) { name_not_found(); return true; @@ -784,7 +793,7 @@ auto SemanticsParseTreeHandler::HandleReturnStatement( CARBON_CHECK(!return_scope_stack_.empty()); const auto& fn_node = semantics_->GetNode(return_scope_stack_.back()); const auto callable = - semantics_->GetCallable(fn_node.GetAsFunctionDeclaration()); + semantics_->GetCallable(fn_node.GetAsFunctionDeclaration().second); if (parse_tree_->node_kind(node_stack_.PeekParseNode()) == ParseNodeKind::ReturnStatementStart) { @@ -937,7 +946,7 @@ auto SemanticsParseTreeHandler::HandleVariableDeclaration( auto binding = node_stack_.PopForParseNodeAndNameId(); // Restore the name now that the initializer is complete. - AddNameToLookup(binding.second, storage_id); + ReaddNameToLookup(binding.second, storage_id); auto storage_type = TryTypeConversion(parse_node, storage_id, last_child.second, diff --git a/toolchain/semantics/semantics_parse_tree_handler.h b/toolchain/semantics/semantics_parse_tree_handler.h index f007b2b261a7..20b0ed73488b 100644 --- a/toolchain/semantics/semantics_parse_tree_handler.h +++ b/toolchain/semantics/semantics_parse_tree_handler.h @@ -79,9 +79,13 @@ class SemanticsParseTreeHandler { // result. auto AddNodeAndPush(ParseTree::Node parse_node, SemanticsNode node) -> void; - // Adds a name to name lookup. This is typically done through BindName, but + // Adds a name to name lookup. + auto AddNameToLookup(ParseTree::Node name_node, SemanticsStringId name_id, + SemanticsNodeId target_id) -> void; + + // Re-adds a name to name lookup. This is typically done through BindName, but // can also be used to restore removed names. - auto AddNameToLookup(SemanticsStringId name_id, SemanticsNodeId storage_id) + auto ReaddNameToLookup(SemanticsStringId name_id, SemanticsNodeId storage_id) -> void { name_lookup_[name_id].push_back(storage_id); } diff --git a/toolchain/semantics/testdata/basics/fail_name_lookup.carbon b/toolchain/semantics/testdata/basics/fail_name_lookup.carbon index d128345ddd1a..2bd74150409f 100644 --- a/toolchain/semantics/testdata/basics/fail_name_lookup.carbon +++ b/toolchain/semantics/testdata/basics/fail_name_lookup.carbon @@ -25,8 +25,7 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node5, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str0, arg1: callable0}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block0}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ @@ -35,7 +34,6 @@ // CHECK:STDOUT: [ // CHECK:STDOUT: node7, // CHECK:STDOUT: node8, -// CHECK:STDOUT: node9, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/basics/verbose.carbon b/toolchain/semantics/testdata/basics/verbose.carbon index 8fdbef83c6f8..13dd078e5804 100644 --- a/toolchain/semantics/testdata/basics/verbose.carbon +++ b/toolchain/semantics/testdata/basics/verbose.carbon @@ -7,7 +7,7 @@ // // Only checks a couple statements in order to minimize manual update churn. // CHECK:STDERR: Node Push 0: FunctionIntroducer -> -// CHECK:STDERR: AddNode block{{[0-9]+}}: {kind: BindName, arg0: str{{[0-9]+}}, arg1: node{{[0-9]+}}} +// CHECK:STDERR: AddNode block{{[0-9]+}}: {kind: FunctionDeclaration, arg0: str{{[0-9]+}}, arg1: callable{{[0-9]+}}} fn Foo() { return; diff --git a/toolchain/semantics/testdata/function/call/fail_param_count.carbon b/toolchain/semantics/testdata/function/call/fail_param_count.carbon index 11b3ea1dcd96..bc571f33a600 100644 --- a/toolchain/semantics/testdata/function/call/fail_param_count.carbon +++ b/toolchain/semantics/testdata/function/call/fail_param_count.carbon @@ -39,30 +39,26 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node5, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str0, arg1: callable0}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block0}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node10, type: node2}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable1}, -// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node12}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node12, arg1: block0}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9, type: node2}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str2, arg1: callable1}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node11, arg1: block0}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node15, type: node2}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node13, type: node2}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str3, arg1: node17, type: node2}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable2}, -// CHECK:STDOUT: {kind: BindName, arg0: str4, arg1: node19}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node19, arg1: block0}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable3}, -// CHECK:STDOUT: {kind: BindName, arg0: str5, arg1: node22}, +// CHECK:STDOUT: {kind: BindName, arg0: str3, arg1: node15, type: node2}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str4, arg1: callable2}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node17, arg1: block0}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str5, arg1: callable3}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int3, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int4, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int5, type: node2}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node22, arg1: block0}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node19, arg1: block0}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ @@ -70,61 +66,57 @@ // CHECK:STDOUT: [ // CHECK:STDOUT: node7, // CHECK:STDOUT: node8, -// CHECK:STDOUT: node9, +// CHECK:STDOUT: node11, // CHECK:STDOUT: node12, -// CHECK:STDOUT: node13, -// CHECK:STDOUT: node14, +// CHECK:STDOUT: node17, +// CHECK:STDOUT: node18, // CHECK:STDOUT: node19, -// CHECK:STDOUT: node20, -// CHECK:STDOUT: node21, -// CHECK:STDOUT: node22, -// CHECK:STDOUT: node23, -// CHECK:STDOUT: node30, +// CHECK:STDOUT: node26, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ +// CHECK:STDOUT: node9, +// CHECK:STDOUT: node10, // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node10, -// CHECK:STDOUT: node11, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ -// CHECK:STDOUT: node11, // CHECK:STDOUT: ], // CHECK:STDOUT: [ +// CHECK:STDOUT: node13, +// CHECK:STDOUT: node14, // CHECK:STDOUT: node15, // CHECK:STDOUT: node16, -// CHECK:STDOUT: node17, -// CHECK:STDOUT: node18, // CHECK:STDOUT: ], // CHECK:STDOUT: [ +// CHECK:STDOUT: node14, // CHECK:STDOUT: node16, -// CHECK:STDOUT: node18, // CHECK:STDOUT: ], // CHECK:STDOUT: [ +// CHECK:STDOUT: node20, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ +// CHECK:STDOUT: node20, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ +// CHECK:STDOUT: node21, +// CHECK:STDOUT: node22, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ +// CHECK:STDOUT: node21, +// CHECK:STDOUT: node22, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ +// CHECK:STDOUT: node23, // CHECK:STDOUT: node24, // CHECK:STDOUT: ], // CHECK:STDOUT: [ +// CHECK:STDOUT: node23, // CHECK:STDOUT: node24, // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node25, -// CHECK:STDOUT: node26, // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node25, -// CHECK:STDOUT: node26, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ -// CHECK:STDOUT: node27, -// CHECK:STDOUT: node28, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ -// CHECK:STDOUT: node27, -// CHECK:STDOUT: node28, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ -// CHECK:STDOUT: node29, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ -// CHECK:STDOUT: node29, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/call/fail_param_type.carbon b/toolchain/semantics/testdata/function/call/fail_param_type.carbon index 34a3ae929b3b..62d51b88e6fc 100644 --- a/toolchain/semantics/testdata/function/call/fail_param_type.carbon +++ b/toolchain/semantics/testdata/function/call/fail_param_type.carbon @@ -31,13 +31,11 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, // CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7, type: node2}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str1, arg1: callable0}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node9, arg1: block0}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable1}, -// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node12}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str2, arg1: callable1}, // CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: node3}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node12, arg1: block0}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node11, arg1: block0}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ @@ -53,15 +51,13 @@ // CHECK:STDOUT: node9, // CHECK:STDOUT: node10, // CHECK:STDOUT: node11, -// CHECK:STDOUT: node12, // CHECK:STDOUT: node13, -// CHECK:STDOUT: node15, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node14, +// CHECK:STDOUT: node12, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node14, +// CHECK:STDOUT: node12, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/call/more_param_ir.carbon b/toolchain/semantics/testdata/function/call/more_param_ir.carbon index e42e68481f7d..1fb3da24f1f0 100644 --- a/toolchain/semantics/testdata/function/call/more_param_ir.carbon +++ b/toolchain/semantics/testdata/function/call/more_param_ir.carbon @@ -43,22 +43,20 @@ // CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9, type: node2}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, // CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node11, type: node2}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str3, arg1: node13}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str3, arg1: callable0}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node13, arg1: block0}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable1}, -// CHECK:STDOUT: {kind: BindName, arg0: str4, arg1: node16}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str4, arg1: callable1}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: node2}, -// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node18, arg1: node19, type: node2}, +// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node16, arg1: node17, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: node2}, -// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node20, arg1: node21, type: node2}, +// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node18, arg1: node19, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int3, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int4, type: node2}, -// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node23, arg1: node24, type: node2}, +// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node21, arg1: node22, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int5, type: node2}, // CHECK:STDOUT: {kind: Call, arg0: call0, arg1: callable0, type: node6}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node16, arg1: block6}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node15, arg1: block6}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ @@ -80,11 +78,11 @@ // CHECK:STDOUT: node13, // CHECK:STDOUT: node14, // CHECK:STDOUT: node15, -// CHECK:STDOUT: node16, -// CHECK:STDOUT: node17, -// CHECK:STDOUT: node28, +// CHECK:STDOUT: node26, // CHECK:STDOUT: ], // CHECK:STDOUT: [ +// CHECK:STDOUT: node16, +// CHECK:STDOUT: node17, // CHECK:STDOUT: node18, // CHECK:STDOUT: node19, // CHECK:STDOUT: node20, @@ -92,16 +90,14 @@ // CHECK:STDOUT: node22, // CHECK:STDOUT: node23, // CHECK:STDOUT: node24, -// CHECK:STDOUT: node25, -// CHECK:STDOUT: node26, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node22, -// CHECK:STDOUT: node25, -// CHECK:STDOUT: node26, +// CHECK:STDOUT: node20, +// CHECK:STDOUT: node23, +// CHECK:STDOUT: node24, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node27, +// CHECK:STDOUT: node25, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/call/params_one.carbon b/toolchain/semantics/testdata/function/call/params_one.carbon index f5f91cd2c955..0eac29c1ad83 100644 --- a/toolchain/semantics/testdata/function/call/params_one.carbon +++ b/toolchain/semantics/testdata/function/call/params_one.carbon @@ -32,14 +32,12 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, // CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7, type: node2}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str1, arg1: callable0}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node9, arg1: block0}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable1}, -// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node12}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str2, arg1: callable1}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, // CHECK:STDOUT: {kind: Call, arg0: call0, arg1: callable0, type: node6}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node12, arg1: block6}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node11, arg1: block6}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ @@ -55,18 +53,16 @@ // CHECK:STDOUT: node9, // CHECK:STDOUT: node10, // CHECK:STDOUT: node11, +// CHECK:STDOUT: node14, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ // CHECK:STDOUT: node12, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ +// CHECK:STDOUT: node12, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ // CHECK:STDOUT: node13, -// CHECK:STDOUT: node16, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ -// CHECK:STDOUT: node14, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ -// CHECK:STDOUT: node14, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ -// CHECK:STDOUT: node15, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/call/params_one_comma.carbon b/toolchain/semantics/testdata/function/call/params_one_comma.carbon index 0029b90ff012..9bd27db8ed10 100644 --- a/toolchain/semantics/testdata/function/call/params_one_comma.carbon +++ b/toolchain/semantics/testdata/function/call/params_one_comma.carbon @@ -34,16 +34,14 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, // CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7, type: node2}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str1, arg1: callable0}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node9, arg1: block0}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable1}, -// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node12}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str2, arg1: callable1}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, // CHECK:STDOUT: {kind: Call, arg0: call0, arg1: callable0, type: node6}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: node2}, // CHECK:STDOUT: {kind: Call, arg0: call1, arg1: callable0, type: node6}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node12, arg1: block6}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node11, arg1: block6}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ @@ -59,25 +57,23 @@ // CHECK:STDOUT: node9, // CHECK:STDOUT: node10, // CHECK:STDOUT: node11, +// CHECK:STDOUT: node16, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ // CHECK:STDOUT: node12, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ +// CHECK:STDOUT: node12, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ // CHECK:STDOUT: node13, -// CHECK:STDOUT: node18, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ -// CHECK:STDOUT: node14, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ -// CHECK:STDOUT: node14, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ // CHECK:STDOUT: node15, -// CHECK:STDOUT: node17, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node16, +// CHECK:STDOUT: node14, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node16, +// CHECK:STDOUT: node14, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/call/params_two.carbon b/toolchain/semantics/testdata/function/call/params_two.carbon index ec5083df1463..e0f0e33b6beb 100644 --- a/toolchain/semantics/testdata/function/call/params_two.carbon +++ b/toolchain/semantics/testdata/function/call/params_two.carbon @@ -36,15 +36,13 @@ // CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7, type: node2}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, // CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9, type: node2}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node11}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str2, arg1: callable0}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node11, arg1: block0}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable1}, -// CHECK:STDOUT: {kind: BindName, arg0: str3, arg1: node14}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str3, arg1: callable1}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: node2}, // CHECK:STDOUT: {kind: Call, arg0: call0, arg1: callable0, type: node6}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node14, arg1: block6}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node13, arg1: block6}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ @@ -63,20 +61,18 @@ // CHECK:STDOUT: node11, // CHECK:STDOUT: node12, // CHECK:STDOUT: node13, +// CHECK:STDOUT: node17, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ +// CHECK:STDOUT: node14, +// CHECK:STDOUT: node15, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ // CHECK:STDOUT: node14, // CHECK:STDOUT: node15, -// CHECK:STDOUT: node19, // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node16, -// CHECK:STDOUT: node17, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ -// CHECK:STDOUT: node16, -// CHECK:STDOUT: node17, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ -// CHECK:STDOUT: node18, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/call/params_two_comma.carbon b/toolchain/semantics/testdata/function/call/params_two_comma.carbon index 5cbf1743ac7a..c8459cbfdbd0 100644 --- a/toolchain/semantics/testdata/function/call/params_two_comma.carbon +++ b/toolchain/semantics/testdata/function/call/params_two_comma.carbon @@ -39,18 +39,16 @@ // CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7, type: node2}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, // CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9, type: node2}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node11}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str2, arg1: callable0}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node11, arg1: block0}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable1}, -// CHECK:STDOUT: {kind: BindName, arg0: str3, arg1: node14}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str3, arg1: callable1}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: node2}, // CHECK:STDOUT: {kind: Call, arg0: call0, arg1: callable0, type: node6}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int2, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int3, type: node2}, // CHECK:STDOUT: {kind: Call, arg0: call1, arg1: callable0, type: node6}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node14, arg1: block6}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node13, arg1: block6}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ @@ -69,29 +67,27 @@ // CHECK:STDOUT: node11, // CHECK:STDOUT: node12, // CHECK:STDOUT: node13, +// CHECK:STDOUT: node20, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ +// CHECK:STDOUT: node14, +// CHECK:STDOUT: node15, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ // CHECK:STDOUT: node14, // CHECK:STDOUT: node15, -// CHECK:STDOUT: node22, // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node16, -// CHECK:STDOUT: node17, +// CHECK:STDOUT: node19, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node16, // CHECK:STDOUT: node17, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ // CHECK:STDOUT: node18, -// CHECK:STDOUT: node21, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node19, -// CHECK:STDOUT: node20, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ -// CHECK:STDOUT: node19, -// CHECK:STDOUT: node20, +// CHECK:STDOUT: node17, +// CHECK:STDOUT: node18, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/call/params_zero.carbon b/toolchain/semantics/testdata/function/call/params_zero.carbon index 3e5bb14df208..3d7fc10ad97d 100644 --- a/toolchain/semantics/testdata/function/call/params_zero.carbon +++ b/toolchain/semantics/testdata/function/call/params_zero.carbon @@ -28,13 +28,11 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node5, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str0, arg1: callable0}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block0}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable1}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node10}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str1, arg1: callable1}, // CHECK:STDOUT: {kind: Call, arg0: call0, arg1: callable0, type: node6}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node10, arg1: block2}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node9, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ @@ -43,12 +41,10 @@ // CHECK:STDOUT: node7, // CHECK:STDOUT: node8, // CHECK:STDOUT: node9, -// CHECK:STDOUT: node10, // CHECK:STDOUT: node11, -// CHECK:STDOUT: node13, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node12, +// CHECK:STDOUT: node10, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/definition/fail_param_name_conflict.carbon b/toolchain/semantics/testdata/function/definition/fail_param_name_conflict.carbon index e1181da7d0c7..ce084b913299 100644 --- a/toolchain/semantics/testdata/function/definition/fail_param_name_conflict.carbon +++ b/toolchain/semantics/testdata/function/definition/fail_param_name_conflict.carbon @@ -30,8 +30,7 @@ // CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7, type: node2}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, // CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node9, type: node2}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node11}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str1, arg1: callable0}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node11, arg1: block0}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ @@ -50,7 +49,6 @@ // CHECK:STDOUT: [ // CHECK:STDOUT: node11, // CHECK:STDOUT: node12, -// CHECK:STDOUT: node13, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/definition/order.carbon b/toolchain/semantics/testdata/function/definition/order.carbon index 6dc6f29e0556..15a25cddb9f3 100644 --- a/toolchain/semantics/testdata/function/definition/order.carbon +++ b/toolchain/semantics/testdata/function/definition/order.carbon @@ -29,15 +29,12 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node5, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str0, arg1: callable0}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block0}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable1}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node10}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node10, arg1: block0}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable2}, -// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node13}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node13, arg1: block0}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str1, arg1: callable1}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node9, arg1: block0}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str2, arg1: callable2}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node11, arg1: block0}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ @@ -49,9 +46,6 @@ // CHECK:STDOUT: node10, // CHECK:STDOUT: node11, // CHECK:STDOUT: node12, -// CHECK:STDOUT: node13, -// CHECK:STDOUT: node14, -// CHECK:STDOUT: node15, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/definition/params_one.carbon b/toolchain/semantics/testdata/function/definition/params_one.carbon index 7f8924ef8d9c..ba16a42056cc 100644 --- a/toolchain/semantics/testdata/function/definition/params_one.carbon +++ b/toolchain/semantics/testdata/function/definition/params_one.carbon @@ -28,8 +28,7 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, // CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7, type: node2}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str1, arg1: callable0}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node9, arg1: block0}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ @@ -45,7 +44,6 @@ // CHECK:STDOUT: [ // CHECK:STDOUT: node9, // CHECK:STDOUT: node10, -// CHECK:STDOUT: node11, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/definition/params_one_comma.carbon b/toolchain/semantics/testdata/function/definition/params_one_comma.carbon index 9f37fbdce19a..c24653ca5f40 100644 --- a/toolchain/semantics/testdata/function/definition/params_one_comma.carbon +++ b/toolchain/semantics/testdata/function/definition/params_one_comma.carbon @@ -28,8 +28,7 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, // CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7, type: node2}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str1, arg1: callable0}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node9, arg1: block0}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ @@ -45,7 +44,6 @@ // CHECK:STDOUT: [ // CHECK:STDOUT: node9, // CHECK:STDOUT: node10, -// CHECK:STDOUT: node11, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/definition/params_two.carbon b/toolchain/semantics/testdata/function/definition/params_two.carbon index be37d39d5813..bec066959655 100644 --- a/toolchain/semantics/testdata/function/definition/params_two.carbon +++ b/toolchain/semantics/testdata/function/definition/params_two.carbon @@ -31,8 +31,7 @@ // CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7, type: node2}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, // CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9, type: node2}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node11}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str2, arg1: callable0}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node11, arg1: block0}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ @@ -51,7 +50,6 @@ // CHECK:STDOUT: [ // CHECK:STDOUT: node11, // CHECK:STDOUT: node12, -// CHECK:STDOUT: node13, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/definition/params_two_comma.carbon b/toolchain/semantics/testdata/function/definition/params_two_comma.carbon index 3515aa5ffa1c..f3bd53c4ea95 100644 --- a/toolchain/semantics/testdata/function/definition/params_two_comma.carbon +++ b/toolchain/semantics/testdata/function/definition/params_two_comma.carbon @@ -31,8 +31,7 @@ // CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7, type: node2}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, // CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9, type: node2}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node11}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str2, arg1: callable0}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node11, arg1: block0}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ @@ -51,7 +50,6 @@ // CHECK:STDOUT: [ // CHECK:STDOUT: node11, // CHECK:STDOUT: node12, -// CHECK:STDOUT: node13, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/definition/params_zero.carbon b/toolchain/semantics/testdata/function/definition/params_zero.carbon index 4ee21729d3ce..5f9dd9c0c18b 100644 --- a/toolchain/semantics/testdata/function/definition/params_zero.carbon +++ b/toolchain/semantics/testdata/function/definition/params_zero.carbon @@ -25,8 +25,7 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node5, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str0, arg1: callable0}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block0}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ @@ -35,7 +34,6 @@ // CHECK:STDOUT: [ // CHECK:STDOUT: node7, // CHECK:STDOUT: node8, -// CHECK:STDOUT: node9, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/function/definition/same_param_name.carbon b/toolchain/semantics/testdata/function/definition/same_param_name.carbon index 51c6570199ee..b4d1f54209ca 100644 --- a/toolchain/semantics/testdata/function/definition/same_param_name.carbon +++ b/toolchain/semantics/testdata/function/definition/same_param_name.carbon @@ -30,14 +30,12 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, // CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7, type: node2}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str1, arg1: callable0}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node9, arg1: block0}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node12, type: node2}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable1}, -// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node14}, -// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node14, arg1: block0}, +// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node11, type: node2}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str2, arg1: callable1}, +// CHECK:STDOUT: {kind: FunctionDefinition, arg0: node13, arg1: block0}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ @@ -52,17 +50,15 @@ // CHECK:STDOUT: [ // CHECK:STDOUT: node9, // CHECK:STDOUT: node10, -// CHECK:STDOUT: node11, +// CHECK:STDOUT: node13, // CHECK:STDOUT: node14, -// CHECK:STDOUT: node15, -// CHECK:STDOUT: node16, +// CHECK:STDOUT: ], +// CHECK:STDOUT: [ +// CHECK:STDOUT: node11, +// CHECK:STDOUT: node12, // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node12, -// CHECK:STDOUT: node13, -// CHECK:STDOUT: ], -// CHECK:STDOUT: [ -// CHECK:STDOUT: node13, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/operators/binary_op.carbon b/toolchain/semantics/testdata/operators/binary_op.carbon index 302886f8659b..14a8f7c6c07a 100644 --- a/toolchain/semantics/testdata/operators/binary_op.carbon +++ b/toolchain/semantics/testdata/operators/binary_op.carbon @@ -27,12 +27,11 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node5, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str0, arg1: callable0}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: node2}, -// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node9, arg1: node10, type: node2}, -// CHECK:STDOUT: {kind: ReturnExpression, arg0: node11, type: node2}, +// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node8, arg1: node9, type: node2}, +// CHECK:STDOUT: {kind: ReturnExpression, arg0: node10, type: node2}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ @@ -40,14 +39,13 @@ // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node7, -// CHECK:STDOUT: node8, -// CHECK:STDOUT: node13, +// CHECK:STDOUT: node12, // CHECK:STDOUT: ], // CHECK:STDOUT: [ +// 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/operators/fail_type_mismatch.carbon b/toolchain/semantics/testdata/operators/fail_type_mismatch.carbon index a031b830dc12..846c5ba82ba5 100644 --- a/toolchain/semantics/testdata/operators/fail_type_mismatch.carbon +++ b/toolchain/semantics/testdata/operators/fail_type_mismatch.carbon @@ -27,12 +27,11 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node5, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str0, arg1: callable0}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, // CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: node3}, -// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node9, arg1: node10, type: node1}, -// CHECK:STDOUT: {kind: ReturnExpression, arg0: node11, type: node1}, +// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node8, arg1: node9, type: node1}, +// CHECK:STDOUT: {kind: ReturnExpression, arg0: node10, type: node1}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ @@ -40,14 +39,13 @@ // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node7, -// CHECK:STDOUT: node8, -// CHECK:STDOUT: node13, +// CHECK:STDOUT: node12, // CHECK:STDOUT: ], // CHECK:STDOUT: [ +// 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/operators/fail_type_mismatch_once.carbon b/toolchain/semantics/testdata/operators/fail_type_mismatch_once.carbon index a6c985504c73..1501fd73cda9 100644 --- a/toolchain/semantics/testdata/operators/fail_type_mismatch_once.carbon +++ b/toolchain/semantics/testdata/operators/fail_type_mismatch_once.carbon @@ -28,14 +28,13 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node5, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str0, arg1: callable0}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, // CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: node3}, -// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node9, arg1: node10, type: node1}, +// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node8, arg1: node9, type: node1}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: node2}, -// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node11, arg1: node12, type: node1}, -// CHECK:STDOUT: {kind: ReturnExpression, arg0: node13, type: node1}, +// CHECK:STDOUT: {kind: BinaryOperatorAdd, arg0: node10, arg1: node11, type: node1}, +// CHECK:STDOUT: {kind: ReturnExpression, arg0: node12, type: node1}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ @@ -43,16 +42,15 @@ // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node7, -// CHECK:STDOUT: node8, -// CHECK:STDOUT: node15, +// CHECK:STDOUT: node14, // CHECK:STDOUT: ], // CHECK:STDOUT: [ +// 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: ] diff --git a/toolchain/semantics/testdata/return/fail_type_mismatch.carbon b/toolchain/semantics/testdata/return/fail_type_mismatch.carbon index 938b0b5a8648..2a6ad8900e19 100644 --- a/toolchain/semantics/testdata/return/fail_type_mismatch.carbon +++ b/toolchain/semantics/testdata/return/fail_type_mismatch.carbon @@ -26,10 +26,9 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node5, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str0, arg1: callable0}, // CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: node3}, -// CHECK:STDOUT: {kind: ReturnExpression, arg0: node9}, +// CHECK:STDOUT: {kind: ReturnExpression, arg0: node8}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ @@ -37,12 +36,11 @@ // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node7, -// CHECK:STDOUT: node8, -// CHECK:STDOUT: node11, +// CHECK:STDOUT: node10, // CHECK:STDOUT: ], // CHECK:STDOUT: [ +// CHECK:STDOUT: node8, // CHECK:STDOUT: node9, -// CHECK:STDOUT: node10, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/return/fail_value_disallowed.carbon b/toolchain/semantics/testdata/return/fail_value_disallowed.carbon index 441080d13334..4a47f4845ffd 100644 --- a/toolchain/semantics/testdata/return/fail_value_disallowed.carbon +++ b/toolchain/semantics/testdata/return/fail_value_disallowed.carbon @@ -26,10 +26,9 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node5, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str0, arg1: callable0}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, -// CHECK:STDOUT: {kind: ReturnExpression, arg0: node9, type: node2}, +// CHECK:STDOUT: {kind: ReturnExpression, arg0: node8, type: node2}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ @@ -37,12 +36,11 @@ // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node7, -// CHECK:STDOUT: node8, -// CHECK:STDOUT: node11, +// CHECK:STDOUT: node10, // CHECK:STDOUT: ], // CHECK:STDOUT: [ +// CHECK:STDOUT: node8, // CHECK:STDOUT: node9, -// CHECK:STDOUT: node10, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/return/fail_value_missing.carbon b/toolchain/semantics/testdata/return/fail_value_missing.carbon index 82154a3a9a50..d63d0d108fc1 100644 --- a/toolchain/semantics/testdata/return/fail_value_missing.carbon +++ b/toolchain/semantics/testdata/return/fail_value_missing.carbon @@ -25,8 +25,7 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node5, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str0, arg1: callable0}, // CHECK:STDOUT: {kind: Return}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block2}, // CHECK:STDOUT: ] @@ -35,11 +34,10 @@ // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node7, -// CHECK:STDOUT: node8, -// CHECK:STDOUT: node10, +// CHECK:STDOUT: node9, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node9, +// CHECK:STDOUT: node8, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/return/no_value.carbon b/toolchain/semantics/testdata/return/no_value.carbon index 6f12061e2141..ebf6d2823d68 100644 --- a/toolchain/semantics/testdata/return/no_value.carbon +++ b/toolchain/semantics/testdata/return/no_value.carbon @@ -25,8 +25,7 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node5, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str0, arg1: callable0}, // CHECK:STDOUT: {kind: Return}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block2}, // CHECK:STDOUT: ] @@ -35,11 +34,10 @@ // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node7, -// CHECK:STDOUT: node8, -// CHECK:STDOUT: node10, +// CHECK:STDOUT: node9, // CHECK:STDOUT: ], // CHECK:STDOUT: [ -// CHECK:STDOUT: node9, +// CHECK:STDOUT: node8, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/return/value.carbon b/toolchain/semantics/testdata/return/value.carbon index af072dbcbf47..9eb046fcb81e 100644 --- a/toolchain/semantics/testdata/return/value.carbon +++ b/toolchain/semantics/testdata/return/value.carbon @@ -26,10 +26,9 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node5, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str0, arg1: callable0}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, -// CHECK:STDOUT: {kind: ReturnExpression, arg0: node9, type: node2}, +// CHECK:STDOUT: {kind: ReturnExpression, arg0: node8, type: node2}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ @@ -37,12 +36,11 @@ // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node7, -// CHECK:STDOUT: node8, -// CHECK:STDOUT: node11, +// CHECK:STDOUT: node10, // CHECK:STDOUT: ], // CHECK:STDOUT: [ +// CHECK:STDOUT: node8, // CHECK:STDOUT: node9, -// CHECK:STDOUT: node10, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/var/decl.carbon b/toolchain/semantics/testdata/var/decl.carbon index 8cdba32ffc43..9a9ee691aef7 100644 --- a/toolchain/semantics/testdata/var/decl.carbon +++ b/toolchain/semantics/testdata/var/decl.carbon @@ -26,10 +26,9 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node5, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str0, arg1: callable0}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9, type: node2}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node8, type: node2}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ @@ -37,12 +36,11 @@ // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node7, -// CHECK:STDOUT: node8, -// CHECK:STDOUT: node11, +// CHECK:STDOUT: node10, // CHECK:STDOUT: ], // CHECK:STDOUT: [ +// CHECK:STDOUT: node8, // CHECK:STDOUT: node9, -// CHECK:STDOUT: node10, // 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 f49e5e895ec2..17b0a4708fec 100644 --- a/toolchain/semantics/testdata/var/decl_with_init.carbon +++ b/toolchain/semantics/testdata/var/decl_with_init.carbon @@ -27,12 +27,11 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node5, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str0, arg1: callable0}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9, type: node2}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node8, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, -// CHECK:STDOUT: {kind: Assign, arg0: node9, arg1: node11, type: node2}, +// CHECK:STDOUT: {kind: Assign, arg0: node8, arg1: node10, type: node2}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ @@ -40,14 +39,13 @@ // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node7, -// CHECK:STDOUT: node8, -// CHECK:STDOUT: node13, +// CHECK:STDOUT: node12, // CHECK:STDOUT: ], // CHECK:STDOUT: [ +// 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/var/fail_duplicate_decl.carbon b/toolchain/semantics/testdata/var/fail_duplicate_decl.carbon index d8db652310b7..10e68ce0ca4d 100644 --- a/toolchain/semantics/testdata/var/fail_duplicate_decl.carbon +++ b/toolchain/semantics/testdata/var/fail_duplicate_decl.carbon @@ -28,16 +28,15 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node5, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str0, arg1: callable0}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9, type: node2}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node8, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, -// CHECK:STDOUT: {kind: Assign, arg0: node9, arg1: node11, type: node2}, +// CHECK:STDOUT: {kind: Assign, arg0: node8, arg1: node10, type: node2}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node13, type: node2}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node12, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int1, type: node2}, -// CHECK:STDOUT: {kind: Assign, arg0: node9, arg1: node15, type: node2}, +// CHECK:STDOUT: {kind: Assign, arg0: node8, arg1: node14, type: node2}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ @@ -45,10 +44,10 @@ // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node7, -// CHECK:STDOUT: node8, -// CHECK:STDOUT: node17, +// CHECK:STDOUT: node16, // CHECK:STDOUT: ], // CHECK:STDOUT: [ +// CHECK:STDOUT: node8, // CHECK:STDOUT: node9, // CHECK:STDOUT: node10, // CHECK:STDOUT: node11, @@ -56,7 +55,6 @@ // CHECK:STDOUT: node13, // CHECK:STDOUT: node14, // CHECK:STDOUT: node15, -// CHECK:STDOUT: node16, // 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 2ff6b45864b2..cb8cdbab9674 100644 --- a/toolchain/semantics/testdata/var/fail_init_type_mismatch.carbon +++ b/toolchain/semantics/testdata/var/fail_init_type_mismatch.carbon @@ -27,12 +27,11 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node5, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str0, arg1: callable0}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9, type: node2}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node8, type: node2}, // CHECK:STDOUT: {kind: RealLiteral, arg0: real0, type: node3}, -// CHECK:STDOUT: {kind: Assign, arg0: node9, arg1: node11, type: node1}, +// CHECK:STDOUT: {kind: Assign, arg0: node8, arg1: node10, type: node1}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ @@ -40,14 +39,13 @@ // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node7, -// CHECK:STDOUT: node8, -// CHECK:STDOUT: node13, +// CHECK:STDOUT: node12, // CHECK:STDOUT: ], // CHECK:STDOUT: [ +// 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/var/fail_init_with_self.carbon b/toolchain/semantics/testdata/var/fail_init_with_self.carbon index b2b50f58d3ad..e4a8994b89b7 100644 --- a/toolchain/semantics/testdata/var/fail_init_with_self.carbon +++ b/toolchain/semantics/testdata/var/fail_init_with_self.carbon @@ -26,11 +26,10 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node5, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str0, arg1: callable0}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9, type: node2}, -// CHECK:STDOUT: {kind: Assign, arg0: node9, arg1: node1, type: node1}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node8, type: node2}, +// CHECK:STDOUT: {kind: Assign, arg0: node8, arg1: node1, type: node1}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ @@ -38,13 +37,12 @@ // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node7, -// CHECK:STDOUT: node8, -// CHECK:STDOUT: node12, +// CHECK:STDOUT: node11, // CHECK:STDOUT: ], // CHECK:STDOUT: [ +// CHECK:STDOUT: node8, // CHECK:STDOUT: node9, // CHECK:STDOUT: node10, -// CHECK:STDOUT: node11, // 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 700233513b07..102c184b8b3d 100644 --- a/toolchain/semantics/testdata/var/fail_lookup_outside_scope.carbon +++ b/toolchain/semantics/testdata/var/fail_lookup_outside_scope.carbon @@ -27,29 +27,27 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node5, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str0, arg1: callable0}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9, type: node2}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node8, type: node2}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block2}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node12, type: node2}, -// CHECK:STDOUT: {kind: Assign, arg0: node12, arg1: node1, type: node1}, +// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node11, type: node2}, +// CHECK:STDOUT: {kind: Assign, arg0: node11, arg1: node1, type: node1}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ // CHECK:STDOUT: [ // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node7, -// CHECK:STDOUT: node8, +// CHECK:STDOUT: node10, // CHECK:STDOUT: node11, // CHECK:STDOUT: node12, // CHECK:STDOUT: node13, -// CHECK:STDOUT: node14, // CHECK:STDOUT: ], // CHECK:STDOUT: [ +// CHECK:STDOUT: node8, // CHECK:STDOUT: node9, -// CHECK:STDOUT: node10, // 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 93ca1d5dd021..7a0025f3bd6d 100644 --- a/toolchain/semantics/testdata/var/global_lookup_in_scope.carbon +++ b/toolchain/semantics/testdata/var/global_lookup_in_scope.carbon @@ -32,11 +32,10 @@ // CHECK:STDOUT: {kind: BindName, arg0: str0, 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: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node11}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str1, arg1: callable0}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node13, type: node2}, -// CHECK:STDOUT: {kind: Assign, arg0: node13, arg1: node7, type: node2}, +// CHECK:STDOUT: {kind: BindName, arg0: str2, arg1: node12, type: node2}, +// CHECK:STDOUT: {kind: Assign, arg0: node12, arg1: node7, type: node2}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node11, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ @@ -48,13 +47,12 @@ // CHECK:STDOUT: node9, // CHECK:STDOUT: node10, // CHECK:STDOUT: node11, -// CHECK:STDOUT: node12, -// CHECK:STDOUT: node16, +// CHECK:STDOUT: node15, // CHECK:STDOUT: ], // CHECK:STDOUT: [ +// CHECK:STDOUT: node12, // CHECK:STDOUT: node13, // CHECK:STDOUT: node14, -// CHECK:STDOUT: node15, // CHECK:STDOUT: ], // CHECK:STDOUT: ] diff --git a/toolchain/semantics/testdata/var/lookup.carbon b/toolchain/semantics/testdata/var/lookup.carbon index 0d0104b27149..ad23a6145514 100644 --- a/toolchain/semantics/testdata/var/lookup.carbon +++ b/toolchain/semantics/testdata/var/lookup.carbon @@ -27,12 +27,11 @@ // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node4, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node5, type: node0}, // CHECK:STDOUT: {kind: CrossReference, arg0: ir0, arg1: node6, type: node5}, -// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: callable0}, -// CHECK:STDOUT: {kind: BindName, arg0: str0, arg1: node7}, +// CHECK:STDOUT: {kind: FunctionDeclaration, arg0: str0, arg1: callable0}, // CHECK:STDOUT: {kind: VarStorage, type: node2}, -// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node9, type: node2}, +// CHECK:STDOUT: {kind: BindName, arg0: str1, arg1: node8, type: node2}, // CHECK:STDOUT: {kind: IntegerLiteral, arg0: int0, type: node2}, -// CHECK:STDOUT: {kind: Assign, arg0: node9, arg1: node11, type: node2}, +// CHECK:STDOUT: {kind: Assign, arg0: node8, arg1: node10, type: node2}, // CHECK:STDOUT: {kind: FunctionDefinition, arg0: node7, arg1: block2}, // CHECK:STDOUT: ] // CHECK:STDOUT: node_blocks: [ @@ -40,14 +39,13 @@ // CHECK:STDOUT: ], // CHECK:STDOUT: [ // CHECK:STDOUT: node7, -// CHECK:STDOUT: node8, -// CHECK:STDOUT: node13, +// CHECK:STDOUT: node12, // CHECK:STDOUT: ], // CHECK:STDOUT: [ +// CHECK:STDOUT: node8, // CHECK:STDOUT: node9, // CHECK:STDOUT: node10, // CHECK:STDOUT: node11, -// CHECK:STDOUT: node12, // CHECK:STDOUT: ], // CHECK:STDOUT: ]