Przeglądaj źródła

When diagnosing a duplicated name, add the name to the diagnosis (#4902)

In order to have the name available for diagnostics, we now always set
`NameId` in `NameContext` and put `poisoning_loc_id` as part of the
union with `resolved_inst_id` instead (since we never need both).
Boaz Brickner 1 rok temu
rodzic
commit
6a99c4e970
40 zmienionych plików z 104 dodań i 96 usunięć
  1. 7 8
      toolchain/check/decl_name_stack.cpp
  2. 6 6
      toolchain/check/decl_name_stack.h
  3. 2 1
      toolchain/check/handle_class.cpp
  4. 6 5
      toolchain/check/handle_function.cpp
  5. 2 1
      toolchain/check/handle_interface.cpp
  6. 4 2
      toolchain/check/handle_namespace.cpp
  7. 8 7
      toolchain/check/import.cpp
  8. 3 2
      toolchain/check/import_ref.cpp
  9. 2 1
      toolchain/check/import_ref.h
  10. 6 5
      toolchain/check/name_lookup.cpp
  11. 2 2
      toolchain/check/name_lookup.h
  12. 2 2
      toolchain/check/testdata/alias/no_prelude/fail_name_conflict.carbon
  13. 2 2
      toolchain/check/testdata/class/cross_package_import.carbon
  14. 6 6
      toolchain/check/testdata/class/no_prelude/extern.carbon
  15. 1 1
      toolchain/check/testdata/class/no_prelude/implicit_import.carbon
  16. 1 1
      toolchain/check/testdata/function/declaration/fail_param_redecl.carbon
  17. 10 10
      toolchain/check/testdata/function/declaration/import.carbon
  18. 1 1
      toolchain/check/testdata/function/declaration/no_prelude/extern_library.carbon
  19. 1 1
      toolchain/check/testdata/function/definition/no_prelude/implicit_import.carbon
  20. 1 1
      toolchain/check/testdata/generic/local.carbon
  21. 2 2
      toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon
  22. 1 1
      toolchain/check/testdata/interface/no_prelude/fail_definition_imported.carbon
  23. 2 2
      toolchain/check/testdata/interface/no_prelude/fail_duplicate.carbon
  24. 1 1
      toolchain/check/testdata/interface/no_prelude/fail_redeclare_member.carbon
  25. 1 1
      toolchain/check/testdata/interface/no_prelude/fail_todo_generic_default_fn.carbon
  26. 3 3
      toolchain/check/testdata/interface/no_prelude/syntactic_merge.carbon
  27. 1 1
      toolchain/check/testdata/interop/cpp/no_prelude/cpp_namespace.carbon
  28. 1 1
      toolchain/check/testdata/let/fail_duplicate_decl.carbon
  29. 2 2
      toolchain/check/testdata/namespace/fail_conflict_after_merge.carbon
  30. 1 1
      toolchain/check/testdata/namespace/fail_conflict_imported_namespace_first.carbon
  31. 1 1
      toolchain/check/testdata/namespace/fail_conflict_imported_namespace_nested.carbon
  32. 1 1
      toolchain/check/testdata/namespace/fail_conflict_imported_namespace_second.carbon
  33. 1 1
      toolchain/check/testdata/namespace/fail_conflict_in_imports_namespace_first.carbon
  34. 1 1
      toolchain/check/testdata/namespace/fail_conflict_in_imports_namespace_second.carbon
  35. 1 1
      toolchain/check/testdata/packages/fail_conflict_no_namespaces.carbon
  36. 2 2
      toolchain/check/testdata/packages/no_prelude/cross_package_export.carbon
  37. 4 4
      toolchain/check/testdata/packages/no_prelude/cross_package_import.carbon
  38. 2 2
      toolchain/check/testdata/packages/no_prelude/implicit_imports_entities.carbon
  39. 1 1
      toolchain/check/testdata/var/no_prelude/fail_duplicate_decl.carbon
  40. 2 2
      toolchain/check/testdata/var/no_prelude/fail_namespace_conflict.carbon

+ 7 - 8
toolchain/check/decl_name_stack.cpp

@@ -136,7 +136,7 @@ auto DeclNameStack::AddName(NameContext name_context, SemIR::InstId target_id,
 
     case NameContext::State::Unresolved:
       if (!name_context.parent_scope_id.has_value()) {
-        AddNameToLookup(*context_, name_context.unresolved_name_id, target_id,
+        AddNameToLookup(*context_, name_context.name_id, target_id,
                         name_context.initial_scope_index);
       } else {
         auto& name_scope =
@@ -161,7 +161,7 @@ auto DeclNameStack::AddName(NameContext name_context, SemIR::InstId target_id,
           context_->AddExport(target_id);
         }
 
-        name_scope.AddRequired({.name_id = name_context.unresolved_name_id,
+        name_scope.AddRequired({.name_id = name_context.name_id,
                                 .result = SemIR::ScopeLookupResult::MakeFound(
                                     target_id, access_kind)});
       }
@@ -180,7 +180,8 @@ auto DeclNameStack::AddNameOrDiagnose(NameContext name_context,
     DiagnosePoisonedName(*context_, name_context.name_id_for_new_inst(),
                          name_context.poisoning_loc_id, name_context.loc_id);
   } else if (auto id = name_context.prev_inst_id(); id.has_value()) {
-    DiagnoseDuplicateName(*context_, name_context.loc_id, id);
+    DiagnoseDuplicateName(*context_, name_context.name_id, name_context.loc_id,
+                          id);
   } else {
     AddName(name_context, target_id, access_kind);
   }
@@ -258,10 +259,11 @@ auto DeclNameStack::ApplyAndLookupName(NameContext& name_context,
   // processed so far.
   name_context.loc_id = loc_id;
 
+  name_context.name_id = name_id;
+
   // Don't perform any more lookups after we hit an error. We still track the
   // final name, though.
   if (name_context.state == NameContext::State::Error) {
-    name_context.unresolved_name_id = name_id;
     return;
   }
 
@@ -270,12 +272,10 @@ auto DeclNameStack::ApplyAndLookupName(NameContext& name_context,
                                         name_context.parent_scope_id,
                                         name_context.initial_scope_index);
   if (lookup_result.is_poisoned()) {
-    name_context.unresolved_name_id = name_id;
     name_context.poisoning_loc_id = lookup_result.poisoning_loc_id();
     name_context.state = NameContext::State::Poisoned;
   } else if (!lookup_result.is_found()) {
     // Invalid indicates an unresolved name. Store it and return.
-    name_context.unresolved_name_id = name_id;
     name_context.state = NameContext::State::Unresolved;
   } else {
     // Store the resolved instruction and continue for the target scope
@@ -300,8 +300,7 @@ static auto CheckQualifierIsResolved(
     case DeclNameStack::NameContext::State::Unresolved:
       // Because more qualifiers were found, we diagnose that the earlier
       // qualifier failed to resolve.
-      DiagnoseNameNotFound(context, name_context.loc_id,
-                           name_context.unresolved_name_id);
+      DiagnoseNameNotFound(context, name_context.loc_id, name_context.name_id);
       return false;
 
     case DeclNameStack::NameContext::State::Finished:

+ 6 - 6
toolchain/check/decl_name_stack.h

@@ -125,7 +125,7 @@ class DeclNameStack {
       switch (state) {
         case State::Unresolved:
         case State::Poisoned:
-          return unresolved_name_id;
+          return name_id;
         default:
           return SemIR::NameId::None;
       }
@@ -153,13 +153,13 @@ class DeclNameStack {
       // expressions. `None` indicates resolution failed.
       SemIR::InstId resolved_inst_id;
 
-      // The ID of an unresolved identifier.
-      SemIR::NameId unresolved_name_id = SemIR::NameId::None;
+      // When `state` is `Poisoned` (name is unresolved due to name poisoning),
+      // the poisoning location.
+      SemIR::LocId poisoning_loc_id = SemIR::LocId::None;
     };
 
-    // When `state` is `Poisoned` (name is unresolved due to name poisoning),
-    // the poisoning location.
-    SemIR::LocId poisoning_loc_id = SemIR::LocId::None;
+    // The ID of an identifier.
+    SemIR::NameId name_id = SemIR::NameId::None;
   };
 
   // Information about a declaration name that has been temporarily removed from

+ 2 - 1
toolchain/check/handle_class.cpp

@@ -164,7 +164,8 @@ static auto MergeOrAddName(Context& context, Parse::AnyClassDeclId node_id,
 
   if (!prev_class_id.has_value()) {
     // This is a redeclaration of something other than a class.
-    DiagnoseDuplicateName(context, name_context.loc_id, prev_id);
+    DiagnoseDuplicateName(context, name_context.name_id, name_context.loc_id,
+                          prev_id);
     return;
   }
 

+ 6 - 5
toolchain/check/handle_function.cpp

@@ -139,7 +139,8 @@ static auto MergeFunctionRedecl(Context& context,
 
 // Check whether this is a redeclaration, merging if needed.
 static auto TryMergeRedecl(Context& context, Parse::AnyFunctionDeclId node_id,
-                           SemIR::InstId prev_id, SemIR::LocId name_loc_id,
+                           SemIR::NameId name_id, SemIR::InstId prev_id,
+                           SemIR::LocId name_loc_id,
                            SemIR::FunctionDecl& function_decl,
                            SemIR::Function& function_info, bool is_definition)
     -> void {
@@ -180,7 +181,7 @@ static auto TryMergeRedecl(Context& context, Parse::AnyFunctionDeclId node_id,
   }
 
   if (!prev_function_id.has_value()) {
-    DiagnoseDuplicateName(context, name_loc_id, prev_id);
+    DiagnoseDuplicateName(context, name_id, name_loc_id, prev_id);
     return;
   }
 
@@ -296,9 +297,9 @@ static auto BuildFunctionDecl(Context& context,
     DiagnosePoisonedName(context, name_context.name_id_for_new_inst(),
                          name_context.poisoning_loc_id, name_context.loc_id);
   } else {
-    TryMergeRedecl(context, node_id, name_context.prev_inst_id(),
-                   name_context.loc_id, function_decl, function_info,
-                   is_definition);
+    TryMergeRedecl(context, node_id, name_context.name_id,
+                   name_context.prev_inst_id(), name_context.loc_id,
+                   function_decl, function_info, is_definition);
   }
 
   // Create a new function if this isn't a valid redeclaration.

+ 2 - 1
toolchain/check/handle_interface.cpp

@@ -105,7 +105,8 @@ static auto BuildInterfaceDecl(Context& context,
       }
     } else {
       // This is a redeclaration of something other than a interface.
-      DiagnoseDuplicateName(context, name_context.loc_id, existing_id);
+      DiagnoseDuplicateName(context, name_context.name_id, name_context.loc_id,
+                            existing_id);
     }
   }
 

+ 4 - 2
toolchain/check/handle_namespace.cpp

@@ -65,7 +65,8 @@ auto HandleParseNode(Context& context, Parse::NamespaceId node_id) -> bool {
               .Get(existing->name_scope_id)
               .is_closed_import()) {
         // The existing name is a package name, so this is a name conflict.
-        DiagnoseDuplicateName(context, name_context.loc_id, existing_inst_id);
+        DiagnoseDuplicateName(context, name_context.name_id,
+                              name_context.loc_id, existing_inst_id);
 
         // Treat this as a local namespace name from now on to avoid further
         // diagnostics.
@@ -79,7 +80,8 @@ auto HandleParseNode(Context& context, Parse::NamespaceId node_id) -> bool {
         SetNamespaceNodeId(context, existing_inst_id, node_id);
       }
     } else {
-      DiagnoseDuplicateName(context, name_context.loc_id, existing_inst_id);
+      DiagnoseDuplicateName(context, name_context.name_id, name_context.loc_id,
+                            existing_inst_id);
     }
   }
 

+ 8 - 7
toolchain/check/import.cpp

@@ -110,7 +110,7 @@ auto AddImportNamespace(Context& context, SemIR::TypeId namespace_type_id,
           CARBON_CHECK(import_id.has_value());
           // TODO: Pass the import package name location instead of the import
           // id to get more accurate location.
-          DiagnoseDuplicateName(context, import_id, prev_inst_id);
+          DiagnoseDuplicateName(context, name_id, import_id, prev_inst_id);
         }
         return {.name_scope_id = namespace_inst->name_scope_id,
                 .inst_id = prev_inst_id,
@@ -153,7 +153,8 @@ auto AddImportNamespace(Context& context, SemIR::TypeId namespace_type_id,
   if (!result.is_poisoned() && !inserted) {
     // TODO: Pass the import namespace name location instead of the namespace id
     // to get more accurate location.
-    DiagnoseDuplicateName(context, namespace_id, result.target_inst_id());
+    DiagnoseDuplicateName(context, name_id, namespace_id,
+                          result.target_inst_id());
   }
   result = SemIR::ScopeLookupResult::MakeFound(namespace_id,
                                                SemIR::AccessKind::Public);
@@ -289,8 +290,8 @@ static auto AddImportRefOrMerge(Context& context, SemIR::ImportIRId ir_id,
 
   auto inst_id = entry.result.target_inst_id();
   auto prev_ir_inst = GetCanonicalImportIRInst(context, inst_id);
-  VerifySameCanonicalImportIRInst(context, inst_id, prev_ir_inst, ir_id,
-                                  &import_sem_ir, import_inst_id);
+  VerifySameCanonicalImportIRInst(context, name_id, inst_id, prev_ir_inst,
+                                  ir_id, &import_sem_ir, import_inst_id);
 }
 
 namespace {
@@ -605,9 +606,9 @@ auto ImportNameFromOtherPackage(
     if (!canonical_result_inst) {
       canonical_result_inst = GetCanonicalImportIRInst(context, result_id);
     }
-    VerifySameCanonicalImportIRInst(context, result_id, *canonical_result_inst,
-                                    import_ir_id, import_ir.sem_ir,
-                                    import_scope_inst_id);
+    VerifySameCanonicalImportIRInst(context, name_id, result_id,
+                                    *canonical_result_inst, import_ir_id,
+                                    import_ir.sem_ir, import_scope_inst_id);
   }
 
   return result_id;

+ 3 - 2
toolchain/check/import_ref.cpp

@@ -138,7 +138,8 @@ auto GetCanonicalImportIRInst(Context& context, SemIR::InstId inst_id)
   return GetCanonicalImportIRInst(context, &context.sem_ir(), inst_id);
 }
 
-auto VerifySameCanonicalImportIRInst(Context& context, SemIR::InstId prev_id,
+auto VerifySameCanonicalImportIRInst(Context& context, SemIR::NameId name_id,
+                                     SemIR::InstId prev_id,
                                      SemIR::ImportIRInst prev_import_ir_inst,
                                      SemIR::ImportIRId new_ir_id,
                                      const SemIR::File* new_import_ir,
@@ -151,7 +152,7 @@ auto VerifySameCanonicalImportIRInst(Context& context, SemIR::InstId prev_id,
   auto conflict_id =
       AddImportRef(context, {.ir_id = new_ir_id, .inst_id = new_inst_id});
   // TODO: Pass the imported name location instead of the conflict id.
-  DiagnoseDuplicateName(context, conflict_id, prev_id);
+  DiagnoseDuplicateName(context, name_id, conflict_id, prev_id);
 }
 
 // Returns an instruction that has the specified constant value.

+ 2 - 1
toolchain/check/import_ref.h

@@ -31,7 +31,8 @@ auto GetCanonicalImportIRInst(Context& context, SemIR::InstId inst_id)
 
 // Verifies a new instruction is the same as a previous instruction.
 // prev_import_ir_inst should come from GetCanonicalImportIRInst.
-auto VerifySameCanonicalImportIRInst(Context& context, SemIR::InstId prev_id,
+auto VerifySameCanonicalImportIRInst(Context& context, SemIR::NameId name_id,
+                                     SemIR::InstId prev_id,
                                      SemIR::ImportIRInst prev_import_ir_inst,
                                      SemIR::ImportIRId new_ir_id,
                                      const SemIR::File* new_import_ir,

+ 6 - 5
toolchain/check/name_lookup.cpp

@@ -19,7 +19,7 @@ auto AddNameToLookup(Context& context, SemIR::NameId name_id,
       existing.has_value()) {
     // TODO: Add coverage to this use case and use the location of the name
     // instead of the target.
-    DiagnoseDuplicateName(context, target_id, existing);
+    DiagnoseDuplicateName(context, name_id, target_id, existing);
   }
 }
 
@@ -484,13 +484,14 @@ auto LookupNameInCore(Context& context, SemIR::LocId loc_id,
       scope_result.target_inst_id());
 }
 
-auto DiagnoseDuplicateName(Context& context, SemIRLoc dup_def,
-                           SemIRLoc prev_def) -> void {
+auto DiagnoseDuplicateName(Context& context, SemIR::NameId name_id,
+                           SemIRLoc dup_def, SemIRLoc prev_def) -> void {
   CARBON_DIAGNOSTIC(NameDeclDuplicate, Error,
-                    "duplicate name being declared in the same scope");
+                    "duplicate name `{0}` being declared in the same scope",
+                    SemIR::NameId);
   CARBON_DIAGNOSTIC(NameDeclPrevious, Note, "name is previously declared here");
   context.emitter()
-      .Build(dup_def, NameDeclDuplicate)
+      .Build(dup_def, NameDeclDuplicate, name_id)
       .Note(prev_def, NameDeclPrevious)
       .Emit();
 }

+ 2 - 2
toolchain/check/name_lookup.h

@@ -100,8 +100,8 @@ auto LookupNameInCore(Context& context, SemIR::LocId loc_id,
                       llvm::StringRef name) -> SemIR::InstId;
 
 // Prints a diagnostic for a duplicate name.
-auto DiagnoseDuplicateName(Context& context, SemIRLoc dup_def,
-                           SemIRLoc prev_def) -> void;
+auto DiagnoseDuplicateName(Context& context, SemIR::NameId name_id,
+                           SemIRLoc dup_def, SemIRLoc prev_def) -> void;
 
 // Prints a diagnostic for a poisoned name when it's later declared.
 auto DiagnosePoisonedName(Context& context, SemIR::NameId name_id,

+ 2 - 2
toolchain/check/testdata/alias/no_prelude/fail_name_conflict.carbon

@@ -11,7 +11,7 @@
 class C {}
 
 alias a = C;
-// CHECK:STDERR: fail_name_conflict.carbon:[[@LINE+7]]:5: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_name_conflict.carbon:[[@LINE+7]]:5: error: duplicate name `a` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: var a: C = {};
 // CHECK:STDERR:     ^
 // CHECK:STDERR: fail_name_conflict.carbon:[[@LINE-4]]:7: note: name is previously declared here [NameDeclPrevious]
@@ -21,7 +21,7 @@ alias a = C;
 var a: C = {};
 
 var b: C = {};
-// CHECK:STDERR: fail_name_conflict.carbon:[[@LINE+7]]:7: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_name_conflict.carbon:[[@LINE+7]]:7: error: duplicate name `b` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: alias b = C;
 // CHECK:STDERR:       ^
 // CHECK:STDERR: fail_name_conflict.carbon:[[@LINE-4]]:5: note: name is previously declared here [NameDeclPrevious]

+ 2 - 2
toolchain/check/testdata/class/cross_package_import.carbon

@@ -63,7 +63,7 @@ var c: Other.C = {};
 library "[[@TEST_NAME]]";
 
 // CHECK:STDERR: fail_todo_merge_define_extern.carbon:[[@LINE+8]]:1: in import [InImport]
-// CHECK:STDERR: other_extern.carbon:4:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: other_extern.carbon:4:1: error: duplicate name `C` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: extern class C;
 // CHECK:STDERR: ^~~~~~~~~~~~~~~
 // CHECK:STDERR: fail_todo_merge_define_extern.carbon:[[@LINE+4]]:1: in import [InImport]
@@ -84,7 +84,7 @@ var c: Other.C = {};
 library "[[@TEST_NAME]]";
 
 // CHECK:STDERR: fail_conflict.carbon:[[@LINE+8]]:1: in import [InImport]
-// CHECK:STDERR: other_conflict.carbon:4:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: other_conflict.carbon:4:1: error: duplicate name `C` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: fn C() {}
 // CHECK:STDERR: ^~~~~~~~
 // CHECK:STDERR: fail_conflict.carbon:[[@LINE+4]]:1: in import [InImport]

+ 6 - 6
toolchain/check/testdata/class/no_prelude/extern.carbon

@@ -133,7 +133,7 @@ extern class C;
 library "[[@TEST_NAME]]";
 
 // CHECK:STDERR: fail_import_extern_decl_then_decl.carbon:[[@LINE+9]]:1: in import [InImport]
-// CHECK:STDERR: decl.carbon:4:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: decl.carbon:4:1: error: duplicate name `C` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: class C;
 // CHECK:STDERR: ^~~~~~~~
 // CHECK:STDERR: fail_import_extern_decl_then_decl.carbon:[[@LINE+5]]:1: in import [InImport]
@@ -149,7 +149,7 @@ import library "decl";
 library "[[@TEST_NAME]]";
 
 // CHECK:STDERR: fail_import_decl_then_extern_decl.carbon:[[@LINE+9]]:1: in import [InImport]
-// CHECK:STDERR: extern_decl.carbon:4:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: extern_decl.carbon:4:1: error: duplicate name `C` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: extern class C;
 // CHECK:STDERR: ^~~~~~~~~~~~~~~
 // CHECK:STDERR: fail_import_decl_then_extern_decl.carbon:[[@LINE+5]]:1: in import [InImport]
@@ -165,7 +165,7 @@ import library "extern_decl";
 library "[[@TEST_NAME]]";
 
 // CHECK:STDERR: fail_import_extern_decl_then_def.carbon:[[@LINE+9]]:1: in import [InImport]
-// CHECK:STDERR: def.carbon:4:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: def.carbon:4:1: error: duplicate name `C` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: class C {}
 // CHECK:STDERR: ^~~~~~~~~
 // CHECK:STDERR: fail_import_extern_decl_then_def.carbon:[[@LINE+5]]:1: in import [InImport]
@@ -181,7 +181,7 @@ import library "def";
 library "[[@TEST_NAME]]";
 
 // CHECK:STDERR: fail_import_ownership_conflict.carbon:[[@LINE+18]]:1: in import [InImport]
-// CHECK:STDERR: decl.carbon:4:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: decl.carbon:4:1: error: duplicate name `C` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: class C;
 // CHECK:STDERR: ^~~~~~~~
 // CHECK:STDERR: fail_import_ownership_conflict.carbon:[[@LINE+14]]:1: in import [InImport]
@@ -190,7 +190,7 @@ library "[[@TEST_NAME]]";
 // CHECK:STDERR: ^~~~~~~~~~~~~~~
 // CHECK:STDERR:
 // CHECK:STDERR: fail_import_ownership_conflict.carbon:[[@LINE+9]]:1: in import [InImport]
-// CHECK:STDERR: def.carbon:4:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: def.carbon:4:1: error: duplicate name `C` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: class C {}
 // CHECK:STDERR: ^~~~~~~~~
 // CHECK:STDERR: fail_import_ownership_conflict.carbon:[[@LINE+5]]:1: in import [InImport]
@@ -207,7 +207,7 @@ import library "def";
 library "[[@TEST_NAME]]";
 
 // CHECK:STDERR: fail_todo_import_extern_decl_copy.carbon:[[@LINE+9]]:1: in import [InImport]
-// CHECK:STDERR: extern_decl_copy.carbon:4:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: extern_decl_copy.carbon:4:1: error: duplicate name `C` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: extern class C;
 // CHECK:STDERR: ^~~~~~~~~~~~~~~
 // CHECK:STDERR: fail_todo_import_extern_decl_copy.carbon:[[@LINE+5]]:1: in import [InImport]

+ 1 - 1
toolchain/check/testdata/class/no_prelude/implicit_import.carbon

@@ -71,7 +71,7 @@ alias B = C;
 
 impl library "[[@TEST_NAME]]";
 
-// CHECK:STDERR: fail_def_alias.impl.carbon:[[@LINE+8]]:7: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_def_alias.impl.carbon:[[@LINE+8]]:7: error: duplicate name `B` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: class B {}
 // CHECK:STDERR:       ^
 // CHECK:STDERR: fail_def_alias.impl.carbon:[[@LINE-5]]:6: in import [InImport]

+ 1 - 1
toolchain/check/testdata/function/declaration/fail_param_redecl.carbon

@@ -8,7 +8,7 @@
 // TIP: To dump output, run:
 // TIP:   bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/function/declaration/fail_param_redecl.carbon
 
-// CHECK:STDERR: fail_param_redecl.carbon:[[@LINE+7]]:14: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_param_redecl.carbon:[[@LINE+7]]:14: error: duplicate name `n` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: fn F(n: i32, n: i32);
 // CHECK:STDERR:              ^
 // CHECK:STDERR: fail_param_redecl.carbon:[[@LINE+4]]:6: note: name is previously declared here [NameDeclPrevious]

+ 10 - 10
toolchain/check/testdata/function/declaration/import.carbon

@@ -133,7 +133,7 @@ var e: () = NS.E();
 library "[[@TEST_NAME]]";
 
 // CHECK:STDERR: fail_merge.carbon:[[@LINE+45]]:1: in import [InImport]
-// CHECK:STDERR: extern_api.carbon:4:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: extern_api.carbon:4:1: error: duplicate name `A` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: extern library "redecl_extern_api" fn A();
 // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // CHECK:STDERR: fail_merge.carbon:[[@LINE+41]]:1: in import [InImport]
@@ -142,7 +142,7 @@ library "[[@TEST_NAME]]";
 // CHECK:STDERR: ^~~~~~~
 // CHECK:STDERR:
 // CHECK:STDERR: fail_merge.carbon:[[@LINE+36]]:1: in import [InImport]
-// CHECK:STDERR: extern_api.carbon:5:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: extern_api.carbon:5:1: error: duplicate name `B` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: extern library "redecl_extern_api" fn B(b: i32) -> i32;
 // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // CHECK:STDERR: fail_merge.carbon:[[@LINE+32]]:1: in import [InImport]
@@ -151,7 +151,7 @@ library "[[@TEST_NAME]]";
 // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~
 // CHECK:STDERR:
 // CHECK:STDERR: fail_merge.carbon:[[@LINE+27]]:1: in import [InImport]
-// CHECK:STDERR: extern_api.carbon:6:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: extern_api.carbon:6:1: error: duplicate name `C` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: extern library "redecl_extern_api" fn C(c: (i32,)) -> {.c: i32};
 // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // CHECK:STDERR: fail_merge.carbon:[[@LINE+23]]:1: in import [InImport]
@@ -160,7 +160,7 @@ library "[[@TEST_NAME]]";
 // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // CHECK:STDERR:
 // CHECK:STDERR: fail_merge.carbon:[[@LINE+18]]:1: in import [InImport]
-// CHECK:STDERR: extern_api.carbon:7:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: extern_api.carbon:7:1: error: duplicate name `D` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: extern library "redecl_extern_api" fn D();
 // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // CHECK:STDERR: fail_merge.carbon:[[@LINE+14]]:1: in import [InImport]
@@ -169,7 +169,7 @@ library "[[@TEST_NAME]]";
 // CHECK:STDERR: ^~~~~~~~~~~~~~
 // CHECK:STDERR:
 // CHECK:STDERR: fail_merge.carbon:[[@LINE+9]]:1: in import [InImport]
-// CHECK:STDERR: extern_api.carbon:10:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: extern_api.carbon:10:1: error: duplicate name `E` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: extern library "redecl_extern_api" fn NS.E();
 // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // CHECK:STDERR: fail_merge.carbon:[[@LINE+5]]:1: in import [InImport]
@@ -191,7 +191,7 @@ var e: () = NS.E();
 library "[[@TEST_NAME]]";
 
 // CHECK:STDERR: fail_merge_reverse.carbon:[[@LINE+45]]:1: in import [InImport]
-// CHECK:STDERR: api.carbon:4:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: api.carbon:4:1: error: duplicate name `A` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: fn A();
 // CHECK:STDERR: ^~~~~~~
 // CHECK:STDERR: fail_merge_reverse.carbon:[[@LINE+41]]:1: in import [InImport]
@@ -200,7 +200,7 @@ library "[[@TEST_NAME]]";
 // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // CHECK:STDERR:
 // CHECK:STDERR: fail_merge_reverse.carbon:[[@LINE+36]]:1: in import [InImport]
-// CHECK:STDERR: api.carbon:5:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: api.carbon:5:1: error: duplicate name `B` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: fn B(b: i32) -> i32;
 // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~
 // CHECK:STDERR: fail_merge_reverse.carbon:[[@LINE+32]]:1: in import [InImport]
@@ -209,7 +209,7 @@ library "[[@TEST_NAME]]";
 // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // CHECK:STDERR:
 // CHECK:STDERR: fail_merge_reverse.carbon:[[@LINE+27]]:1: in import [InImport]
-// CHECK:STDERR: api.carbon:6:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: api.carbon:6:1: error: duplicate name `C` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: fn C(c: (i32,)) -> {.c: i32};
 // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // CHECK:STDERR: fail_merge_reverse.carbon:[[@LINE+23]]:1: in import [InImport]
@@ -218,7 +218,7 @@ library "[[@TEST_NAME]]";
 // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // CHECK:STDERR:
 // CHECK:STDERR: fail_merge_reverse.carbon:[[@LINE+18]]:1: in import [InImport]
-// CHECK:STDERR: api.carbon:7:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: api.carbon:7:1: error: duplicate name `D` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: extern fn D();
 // CHECK:STDERR: ^~~~~~~~~~~~~~
 // CHECK:STDERR: fail_merge_reverse.carbon:[[@LINE+14]]:1: in import [InImport]
@@ -227,7 +227,7 @@ library "[[@TEST_NAME]]";
 // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // CHECK:STDERR:
 // CHECK:STDERR: fail_merge_reverse.carbon:[[@LINE+9]]:1: in import [InImport]
-// CHECK:STDERR: api.carbon:10:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: api.carbon:10:1: error: duplicate name `E` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: fn NS.E();
 // CHECK:STDERR: ^~~~~~~~~~
 // CHECK:STDERR: fail_merge_reverse.carbon:[[@LINE+5]]:1: in import [InImport]

+ 1 - 1
toolchain/check/testdata/function/declaration/no_prelude/extern_library.carbon

@@ -81,7 +81,7 @@ extern library "extern_library_owner" fn F();
 library "[[@TEST_NAME]]";
 
 // CHECK:STDERR: fail_extern_library_collision.carbon:[[@LINE+9]]:1: in import [InImport]
-// CHECK:STDERR: extern_library_copy.carbon:4:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: extern_library_copy.carbon:4:1: error: duplicate name `F` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: extern library "extern_library_owner" fn F();
 // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // CHECK:STDERR: fail_extern_library_collision.carbon:[[@LINE+5]]:1: in import [InImport]

+ 1 - 1
toolchain/check/testdata/function/definition/no_prelude/implicit_import.carbon

@@ -111,7 +111,7 @@ alias B = A;
 
 impl library "[[@TEST_NAME]]";
 
-// CHECK:STDERR: fail_def_alias.impl.carbon:[[@LINE+8]]:4: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_def_alias.impl.carbon:[[@LINE+8]]:4: error: duplicate name `B` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: fn B() {}
 // CHECK:STDERR:    ^
 // CHECK:STDERR: fail_def_alias.impl.carbon:[[@LINE-5]]:6: in import [InImport]

+ 1 - 1
toolchain/check/testdata/generic/local.carbon

@@ -25,7 +25,7 @@ library "[[@TEST_NAME]]";
 
 fn F() {
   // TODO: Decide on what behavior we want here. We don't reject the corresponding case outside of a function.
-  // CHECK:STDERR: fail_param_shadows_class.carbon:[[@LINE+7]]:9: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+  // CHECK:STDERR: fail_param_shadows_class.carbon:[[@LINE+7]]:9: error: duplicate name `C` being declared in the same scope [NameDeclDuplicate]
   // CHECK:STDERR:   class C(C:! type) {
   // CHECK:STDERR:         ^
   // CHECK:STDERR: fail_param_shadows_class.carbon:[[@LINE+4]]:11: note: name is previously declared here [NameDeclPrevious]

+ 2 - 2
toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon

@@ -24,7 +24,7 @@ interface Interface {
   default fn G(a: i32, b: i32) -> i32;
 }
 
-// CHECK:STDERR: fail_todo_define_default_fn_out_of_line.carbon:[[@LINE+7]]:14: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_todo_define_default_fn_out_of_line.carbon:[[@LINE+7]]:14: error: duplicate name `F` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: fn Interface.F() {}
 // CHECK:STDERR:              ^
 // CHECK:STDERR: fail_todo_define_default_fn_out_of_line.carbon:[[@LINE-12]]:3: note: name is previously declared here [NameDeclPrevious]
@@ -33,7 +33,7 @@ interface Interface {
 // CHECK:STDERR:
 fn Interface.F() {}
 
-// CHECK:STDERR: fail_todo_define_default_fn_out_of_line.carbon:[[@LINE+7]]:14: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_todo_define_default_fn_out_of_line.carbon:[[@LINE+7]]:14: error: duplicate name `G` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: fn Interface.G(a: i32, b: i32) -> i32 = "int.sadd";
 // CHECK:STDERR:              ^
 // CHECK:STDERR: fail_todo_define_default_fn_out_of_line.carbon:[[@LINE-15]]:3: note: name is previously declared here [NameDeclPrevious]

+ 1 - 1
toolchain/check/testdata/interface/no_prelude/fail_definition_imported.carbon

@@ -19,7 +19,7 @@ interface I;
 library "[[@TEST_NAME]]";
 import library "a";
 
-// CHECK:STDERR: fail_b.carbon:[[@LINE+8]]:11: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_b.carbon:[[@LINE+8]]:11: error: duplicate name `I` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: interface I {}
 // CHECK:STDERR:           ^
 // CHECK:STDERR: fail_b.carbon:[[@LINE-5]]:1: in import [InImport]

+ 2 - 2
toolchain/check/testdata/interface/no_prelude/fail_duplicate.carbon

@@ -48,7 +48,7 @@ library "[[@TEST_NAME]]";
 
 fn Function();
 
-// CHECK:STDERR: fail_name_conflict_with_fn.carbon:[[@LINE+7]]:11: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_name_conflict_with_fn.carbon:[[@LINE+7]]:11: error: duplicate name `Function` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: interface Function;
 // CHECK:STDERR:           ^~~~~~~~
 // CHECK:STDERR: fail_name_conflict_with_fn.carbon:[[@LINE-5]]:1: note: name is previously declared here [NameDeclPrevious]
@@ -61,7 +61,7 @@ interface Function;
 
 class Class;
 
-// CHECK:STDERR: fail_name_conflict_with_class.carbon:[[@LINE+7]]:11: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_name_conflict_with_class.carbon:[[@LINE+7]]:11: error: duplicate name `Class` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: interface Class { }
 // CHECK:STDERR:           ^~~~~
 // CHECK:STDERR: fail_name_conflict_with_class.carbon:[[@LINE-5]]:1: note: name is previously declared here [NameDeclPrevious]

+ 1 - 1
toolchain/check/testdata/interface/no_prelude/fail_redeclare_member.carbon

@@ -10,7 +10,7 @@
 
 interface Interface {
   fn F();
-  // CHECK:STDERR: fail_redeclare_member.carbon:[[@LINE+7]]:6: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+  // CHECK:STDERR: fail_redeclare_member.carbon:[[@LINE+7]]:6: error: duplicate name `F` being declared in the same scope [NameDeclDuplicate]
   // CHECK:STDERR:   fn F();
   // CHECK:STDERR:      ^
   // CHECK:STDERR: fail_redeclare_member.carbon:[[@LINE-4]]:3: note: name is previously declared here [NameDeclPrevious]

+ 1 - 1
toolchain/check/testdata/interface/no_prelude/fail_todo_generic_default_fn.carbon

@@ -13,7 +13,7 @@ interface I(T:! type) {
   fn F[self: Self]() -> Self;
 }
 
-// CHECK:STDERR: fail_todo_generic_default_fn.carbon:[[@LINE+7]]:16: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_todo_generic_default_fn.carbon:[[@LINE+7]]:16: error: duplicate name `F` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: fn I(T:! type).F[self: Self]() -> Self { return self; }
 // CHECK:STDERR:                ^
 // CHECK:STDERR: fail_todo_generic_default_fn.carbon:[[@LINE-6]]:3: note: name is previously declared here [NameDeclPrevious]

+ 3 - 3
toolchain/check/testdata/interface/no_prelude/syntactic_merge.carbon

@@ -69,7 +69,7 @@ interface Bar(a:! D);
 
 impl library "[[@TEST_NAME]]";
 
-// CHECK:STDERR: fail_todo_two_file.impl.carbon:[[@LINE+8]]:11: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_todo_two_file.impl.carbon:[[@LINE+8]]:11: error: duplicate name `Foo` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: interface Foo(a:! C) {}
 // CHECK:STDERR:           ^~~
 // CHECK:STDERR: fail_todo_two_file.impl.carbon:[[@LINE-5]]:6: in import [InImport]
@@ -78,7 +78,7 @@ impl library "[[@TEST_NAME]]";
 // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~
 // CHECK:STDERR:
 interface Foo(a:! C) {}
-// CHECK:STDERR: fail_todo_two_file.impl.carbon:[[@LINE+8]]:11: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_todo_two_file.impl.carbon:[[@LINE+8]]:11: error: duplicate name `Bar` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: interface Bar(a:! D) {}
 // CHECK:STDERR:           ^~~
 // CHECK:STDERR: fail_todo_two_file.impl.carbon:[[@LINE-14]]:6: in import [InImport]
@@ -156,7 +156,7 @@ alias D = C;
 // TODO: This fails because importing interfaces doesn't work well. It should
 // fail due to `C` versus `D`, but may succeed if importing interfaces is fixed
 // before syntax matching on imports is supported.
-// CHECK:STDERR: fail_alias_two_file.impl.carbon:[[@LINE+8]]:11: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_alias_two_file.impl.carbon:[[@LINE+8]]:11: error: duplicate name `Foo` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: interface Foo(a:! D) {}
 // CHECK:STDERR:           ^~~
 // CHECK:STDERR: fail_alias_two_file.impl.carbon:[[@LINE-10]]:6: in import [InImport]

+ 1 - 1
toolchain/check/testdata/interop/cpp/no_prelude/cpp_namespace.carbon

@@ -16,7 +16,7 @@ library "[[@TEST_NAME]]";
 
 import Cpp library "header.h";
 
-// CHECK:STDERR: fail_duplicate_cpp_name.carbon:[[@LINE+7]]:11: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_duplicate_cpp_name.carbon:[[@LINE+7]]:11: error: duplicate name `Cpp` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: namespace Cpp;
 // CHECK:STDERR:           ^~~
 // CHECK:STDERR: fail_duplicate_cpp_name.carbon:[[@LINE-5]]:1: note: name is previously declared here [NameDeclPrevious]

+ 1 - 1
toolchain/check/testdata/let/fail_duplicate_decl.carbon

@@ -10,7 +10,7 @@
 
 fn F() {
   let a: i32 = 1;
-  // CHECK:STDERR: fail_duplicate_decl.carbon:[[@LINE+7]]:7: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+  // CHECK:STDERR: fail_duplicate_decl.carbon:[[@LINE+7]]:7: error: duplicate name `a` being declared in the same scope [NameDeclDuplicate]
   // CHECK:STDERR:   let a: i32 = 2;
   // CHECK:STDERR:       ^
   // CHECK:STDERR: fail_duplicate_decl.carbon:[[@LINE-4]]:7: note: name is previously declared here [NameDeclPrevious]

+ 2 - 2
toolchain/check/testdata/namespace/fail_conflict_after_merge.carbon

@@ -24,7 +24,7 @@ import library "namespace";
 // imported declaration.
 namespace NS;
 
-// CHECK:STDERR: fail_conflict.carbon:[[@LINE+8]]:4: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_conflict.carbon:[[@LINE+8]]:4: error: duplicate name `NS` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: fn NS();
 // CHECK:STDERR:    ^~
 // CHECK:STDERR: fail_conflict.carbon:[[@LINE-9]]:1: in import [InImport]
@@ -38,7 +38,7 @@ fn NS();
 // we don't move it.
 namespace NS;
 
-// CHECK:STDERR: fail_conflict.carbon:[[@LINE+8]]:4: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_conflict.carbon:[[@LINE+8]]:4: error: duplicate name `NS` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: fn NS();
 // CHECK:STDERR:    ^~
 // CHECK:STDERR: fail_conflict.carbon:[[@LINE-23]]:1: in import [InImport]

+ 1 - 1
toolchain/check/testdata/namespace/fail_conflict_imported_namespace_first.carbon

@@ -20,7 +20,7 @@ package Example;
 
 import library "namespace";
 
-// CHECK:STDERR: fail_conflict.carbon:[[@LINE+8]]:4: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_conflict.carbon:[[@LINE+8]]:4: error: duplicate name `NS` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: fn NS();
 // CHECK:STDERR:    ^~
 // CHECK:STDERR: fail_conflict.carbon:[[@LINE-5]]:1: in import [InImport]

+ 1 - 1
toolchain/check/testdata/namespace/fail_conflict_imported_namespace_nested.carbon

@@ -16,7 +16,7 @@ namespace Nested;
 // --- fail_conflict.carbon
 
 import Other;
-// CHECK:STDERR: fail_conflict.carbon:[[@LINE+7]]:11: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_conflict.carbon:[[@LINE+7]]:11: error: duplicate name `Other` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: namespace Other;
 // CHECK:STDERR:           ^~~~~
 // CHECK:STDERR: fail_conflict.carbon:[[@LINE-4]]:1: note: name is previously declared here [NameDeclPrevious]

+ 1 - 1
toolchain/check/testdata/namespace/fail_conflict_imported_namespace_second.carbon

@@ -20,7 +20,7 @@ package Example;
 
 import library "fn";
 
-// CHECK:STDERR: fail_conflict.carbon:[[@LINE+8]]:11: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_conflict.carbon:[[@LINE+8]]:11: error: duplicate name `NS` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: namespace NS;
 // CHECK:STDERR:           ^~
 // CHECK:STDERR: fail_conflict.carbon:[[@LINE-5]]:1: in import [InImport]

+ 1 - 1
toolchain/check/testdata/namespace/fail_conflict_in_imports_namespace_first.carbon

@@ -26,7 +26,7 @@ fn NS() {}
 package Example library "[[@TEST_NAME]]";
 
 // CHECK:STDERR: fail_conflict.carbon:[[@LINE+9]]:1: in import [InImport]
-// CHECK:STDERR: fn.carbon:4:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fn.carbon:4:1: error: duplicate name `NS` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: fn NS() {}
 // CHECK:STDERR: ^~~~~~~~~
 // CHECK:STDERR: fail_conflict.carbon:[[@LINE+5]]:1: in import [InImport]

+ 1 - 1
toolchain/check/testdata/namespace/fail_conflict_in_imports_namespace_second.carbon

@@ -26,7 +26,7 @@ fn NS.Foo() {}
 package Example library "[[@TEST_NAME]]";
 
 // CHECK:STDERR: fail_conflict.carbon:[[@LINE+9]]:1: in import [InImport]
-// CHECK:STDERR: namespace.carbon:4:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: namespace.carbon:4:1: error: duplicate name `NS` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: namespace NS;
 // CHECK:STDERR: ^~~~~~~~~~~~~
 // CHECK:STDERR: fail_conflict.carbon:[[@LINE+5]]:1: in import [InImport]

+ 1 - 1
toolchain/check/testdata/packages/fail_conflict_no_namespaces.carbon

@@ -25,7 +25,7 @@ var Foo: i32;
 package Example library "[[@TEST_NAME]]";
 
 // CHECK:STDERR: fail_conflict.carbon:[[@LINE+9]]:1: in import [InImport]
-// CHECK:STDERR: var.carbon:4:5: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: var.carbon:4:5: error: duplicate name `Foo` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: var Foo: i32;
 // CHECK:STDERR:     ^~~
 // CHECK:STDERR: fail_conflict.carbon:[[@LINE+5]]:1: in import [InImport]

+ 2 - 2
toolchain/check/testdata/packages/no_prelude/cross_package_export.carbon

@@ -154,7 +154,7 @@ import Other library "conflict";
 library "[[@TEST_NAME]]";
 
 // CHECK:STDERR: fail_conflict_on_export_import.carbon:[[@LINE+8]]:1: in import [InImport]
-// CHECK:STDERR: base.carbon:4:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: base.carbon:4:1: error: duplicate name `C` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: class C {
 // CHECK:STDERR: ^~~~~~~~~
 // CHECK:STDERR: fail_conflict_on_export_import.carbon:[[@LINE+4]]:1: in import [InImport]
@@ -175,7 +175,7 @@ alias C = Other.C;
 library "[[@TEST_NAME]]";
 
 // CHECK:STDERR: fail_conflict_on_export_name.carbon:[[@LINE+9]]:1: in import [InImport]
-// CHECK:STDERR: conflict.carbon:4:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: conflict.carbon:4:1: error: duplicate name `C` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: fn C() {}
 // CHECK:STDERR: ^~~~~~~~
 // CHECK:STDERR: fail_conflict_on_export_name.carbon:[[@LINE+5]]:1: in import [InImport]

+ 4 - 4
toolchain/check/testdata/packages/no_prelude/cross_package_import.carbon

@@ -71,7 +71,7 @@ fn Run() {
 library "[[@TEST_NAME]]";
 
 // CHECK:STDERR: fail_todo_main_use_other_extern.carbon:[[@LINE+8]]:1: in import [InImport]
-// CHECK:STDERR: other_fn_extern.carbon:4:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: other_fn_extern.carbon:4:1: error: duplicate name `F` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: extern fn F();
 // CHECK:STDERR: ^~~~~~~~~~~~~~
 // CHECK:STDERR: fail_todo_main_use_other_extern.carbon:[[@LINE+4]]:1: in import [InImport]
@@ -101,7 +101,7 @@ import Other library "other_fn_conflict";
 library "[[@TEST_NAME]]";
 
 // CHECK:STDERR: fail_main_use_other_ambiguous.carbon:[[@LINE+8]]:1: in import [InImport]
-// CHECK:STDERR: other_fn_conflict.carbon:4:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: other_fn_conflict.carbon:4:1: error: duplicate name `F` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: fn F(x: ()) {}
 // CHECK:STDERR: ^~~~~~~~~~~~~
 // CHECK:STDERR: fail_main_use_other_ambiguous.carbon:[[@LINE+4]]:1: in import [InImport]
@@ -124,7 +124,7 @@ fn Run() {
 library "[[@TEST_NAME]]";
 
 import library "main_other_ns";
-// CHECK:STDERR: fail_main_namespace_conflict.carbon:[[@LINE+8]]:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_main_namespace_conflict.carbon:[[@LINE+8]]:1: error: duplicate name `Other` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: import Other library "other_fn";
 // CHECK:STDERR: ^~~~~~
 // CHECK:STDERR: fail_main_namespace_conflict.carbon:[[@LINE-4]]:1: in import [InImport]
@@ -150,7 +150,7 @@ library "[[@TEST_NAME]]";
 
 import Other library "other_fn";
 
-// CHECK:STDERR: fail_main_reopen_other.carbon:[[@LINE+7]]:11: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_main_reopen_other.carbon:[[@LINE+7]]:11: error: duplicate name `Other` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: namespace Other;
 // CHECK:STDERR:           ^~~~~
 // CHECK:STDERR: fail_main_reopen_other.carbon:[[@LINE-5]]:1: note: name is previously declared here [NameDeclPrevious]

+ 2 - 2
toolchain/check/testdata/packages/no_prelude/implicit_imports_entities.carbon

@@ -132,7 +132,7 @@ import Other library "o1";
 // --- fail_import_conflict.impl.carbon
 
 // CHECK:STDERR: fail_import_conflict.impl.carbon:[[@LINE+9]]:6: in import [InImport]
-// CHECK:STDERR: import_conflict.carbon:4:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: import_conflict.carbon:4:1: error: duplicate name `Other` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: import Other library "o1";
 // CHECK:STDERR: ^~~~~~
 // CHECK:STDERR: fail_import_conflict.impl.carbon:[[@LINE+5]]:6: in import [InImport]
@@ -154,7 +154,7 @@ import library "local_other";
 
 impl library "[[@TEST_NAME]]";
 
-// CHECK:STDERR: fail_import_conflict_reverse.impl.carbon:[[@LINE+9]]:1: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_import_conflict_reverse.impl.carbon:[[@LINE+9]]:1: error: duplicate name `Other` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: import Other library "o1";
 // CHECK:STDERR: ^~~~~~
 // CHECK:STDERR: fail_import_conflict_reverse.impl.carbon:[[@LINE-5]]:6: in import [InImport]

+ 1 - 1
toolchain/check/testdata/var/no_prelude/fail_duplicate_decl.carbon

@@ -11,7 +11,7 @@
 
 fn Main() {
   var x: () = ();
-  // CHECK:STDERR: fail_duplicate_decl.carbon:[[@LINE+7]]:7: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+  // CHECK:STDERR: fail_duplicate_decl.carbon:[[@LINE+7]]:7: error: duplicate name `x` being declared in the same scope [NameDeclDuplicate]
   // CHECK:STDERR:   var x: () = ();
   // CHECK:STDERR:       ^
   // CHECK:STDERR: fail_duplicate_decl.carbon:[[@LINE-4]]:7: note: name is previously declared here [NameDeclPrevious]

+ 2 - 2
toolchain/check/testdata/var/no_prelude/fail_namespace_conflict.carbon

@@ -10,7 +10,7 @@
 
 namespace A;
 
-// CHECK:STDERR: fail_namespace_conflict.carbon:[[@LINE+7]]:5: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_namespace_conflict.carbon:[[@LINE+7]]:5: error: duplicate name `A` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: var A: ();
 // CHECK:STDERR:     ^
 // CHECK:STDERR: fail_namespace_conflict.carbon:[[@LINE-5]]:1: note: name is previously declared here [NameDeclPrevious]
@@ -19,7 +19,7 @@ namespace A;
 // CHECK:STDERR:
 var A: ();
 
-// CHECK:STDERR: fail_namespace_conflict.carbon:[[@LINE+7]]:5: error: duplicate name being declared in the same scope [NameDeclDuplicate]
+// CHECK:STDERR: fail_namespace_conflict.carbon:[[@LINE+7]]:5: error: duplicate name `A` being declared in the same scope [NameDeclDuplicate]
 // CHECK:STDERR: var A: () = ();
 // CHECK:STDERR:     ^
 // CHECK:STDERR: fail_namespace_conflict.carbon:[[@LINE-14]]:1: note: name is previously declared here [NameDeclPrevious]