From 962defd1e8a792b3477804f30fedce99f3cf065d Mon Sep 17 00:00:00 2001 From: Jon Ross-Perkins Date: Fri, 1 Dec 2023 16:44:57 -0800 Subject: [PATCH] Associate a name with ClassDecl (#3447) Note generics will probably need different behavior. --------- Co-authored-by: Richard Smith --- .../array/fail_incomplete_element.carbon | 2 +- toolchain/check/testdata/as/identity.carbon | 2 +- toolchain/check/testdata/as/tuple.carbon | 2 +- toolchain/check/testdata/class/basic.carbon | 2 +- .../check/testdata/class/fail_abstract.carbon | 2 +- .../testdata/class/fail_addr_not_self.carbon | 2 +- .../testdata/class/fail_addr_self.carbon | 2 +- .../testdata/class/fail_incomplete.carbon | 2 +- .../check/testdata/class/fail_init.carbon | 2 +- .../class/fail_init_as_inplace.carbon | 2 +- .../class/fail_memaccess_category.carbon | 4 +-- .../testdata/class/fail_member_of_let.carbon | 2 +- .../check/testdata/class/fail_method.carbon | 2 +- .../fail_redeclaration_introducer.carbon | 30 +++++++++---------- .../class/fail_redeclaration_scope.carbon | 24 +++++++-------- .../testdata/class/fail_redefinition.carbon | 4 +-- .../check/testdata/class/fail_reorder.carbon | 2 +- .../check/testdata/class/fail_scope.carbon | 2 +- .../check/testdata/class/fail_self.carbon | 4 +-- .../testdata/class/fail_unbound_field.carbon | 2 +- .../testdata/class/fail_unknown_member.carbon | 2 +- .../check/testdata/class/field_access.carbon | 2 +- .../class/field_access_in_value.carbon | 2 +- .../testdata/class/forward_declared.carbon | 2 +- toolchain/check/testdata/class/init.carbon | 2 +- toolchain/check/testdata/class/init_as.carbon | 2 +- .../check/testdata/class/init_nested.carbon | 4 +-- toolchain/check/testdata/class/method.carbon | 2 +- toolchain/check/testdata/class/nested.carbon | 6 ++-- .../check/testdata/class/nested_name.carbon | 6 ++-- .../check/testdata/class/raw_self.carbon | 2 +- .../check/testdata/class/raw_self_type.carbon | 2 +- .../check/testdata/class/redeclaration.carbon | 4 +-- .../class/redeclaration_introducer.carbon | 12 ++++---- .../check/testdata/class/reenter_scope.carbon | 2 +- toolchain/check/testdata/class/scope.carbon | 2 +- toolchain/check/testdata/class/self.carbon | 2 +- .../check/testdata/class/self_type.carbon | 2 +- .../check/testdata/class/static_method.carbon | 2 +- .../if_expr/fail_not_in_function.carbon | 2 +- .../fail_return_with_returned_var.carbon | 2 +- .../check/testdata/return/returned_var.carbon | 2 +- .../struct/fail_nested_incomplete.carbon | 2 +- .../tuples/fail_nested_incomplete.carbon | 2 +- .../testdata/var/fail_not_copyable.carbon | 2 +- toolchain/sem_ir/formatter.cpp | 12 ++++++++ 46 files changed, 96 insertions(+), 84 deletions(-) diff --git a/toolchain/check/testdata/array/fail_incomplete_element.carbon b/toolchain/check/testdata/array/fail_incomplete_element.carbon index 9bb41f23147d..a5a8a268f493 100644 --- a/toolchain/check/testdata/array/fail_incomplete_element.carbon +++ b/toolchain/check/testdata/array/fail_incomplete_element.carbon @@ -26,7 +26,7 @@ var p: Incomplete* = &a[0]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Incomplete, () +// CHECK:STDOUT: %Incomplete.decl = class_decl @Incomplete, () // CHECK:STDOUT: %Incomplete: type = class_type @Incomplete // CHECK:STDOUT: %Incomplete.ref.loc15: type = name_ref Incomplete, %Incomplete // CHECK:STDOUT: %.loc15_21: i32 = int_literal 1 diff --git a/toolchain/check/testdata/as/identity.carbon b/toolchain/check/testdata/as/identity.carbon index a47a70da3523..48d0e1292dc4 100644 --- a/toolchain/check/testdata/as/identity.carbon +++ b/toolchain/check/testdata/as/identity.carbon @@ -33,7 +33,7 @@ fn Initializing() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @X, () +// CHECK:STDOUT: %X.decl = class_decl @X, () // CHECK:STDOUT: %X: type = class_type @X // CHECK:STDOUT: %Value: = fn_decl @Value // CHECK:STDOUT: %Reference: = fn_decl @Reference diff --git a/toolchain/check/testdata/as/tuple.carbon b/toolchain/check/testdata/as/tuple.carbon index aca1a2cf081e..fe1c4162d461 100644 --- a/toolchain/check/testdata/as/tuple.carbon +++ b/toolchain/check/testdata/as/tuple.carbon @@ -33,7 +33,7 @@ fn Var() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @X, () +// CHECK:STDOUT: %X.decl = class_decl @X, () // CHECK:STDOUT: %X: type = class_type @X // CHECK:STDOUT: %Make: = fn_decl @Make // CHECK:STDOUT: %Let: = fn_decl @Let diff --git a/toolchain/check/testdata/class/basic.carbon b/toolchain/check/testdata/class/basic.carbon index f5bf5372a79d..557393369a63 100644 --- a/toolchain/check/testdata/class/basic.carbon +++ b/toolchain/check/testdata/class/basic.carbon @@ -29,7 +29,7 @@ fn Run() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: %Run: = fn_decl @Run diff --git a/toolchain/check/testdata/class/fail_abstract.carbon b/toolchain/check/testdata/class/fail_abstract.carbon index 5a21212b8221..8b777ad3a794 100644 --- a/toolchain/check/testdata/class/fail_abstract.carbon +++ b/toolchain/check/testdata/class/fail_abstract.carbon @@ -23,7 +23,7 @@ fn Make() -> Class { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %Make: = fn_decl @Make // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/fail_addr_not_self.carbon b/toolchain/check/testdata/class/fail_addr_not_self.carbon index 27d357078eca..6e92eff9a9a7 100644 --- a/toolchain/check/testdata/class/fail_addr_not_self.carbon +++ b/toolchain/check/testdata/class/fail_addr_not_self.carbon @@ -23,7 +23,7 @@ class Class { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_addr_self.carbon b/toolchain/check/testdata/class/fail_addr_self.carbon index 7396eb9f67c2..081430b11ee5 100644 --- a/toolchain/check/testdata/class/fail_addr_self.carbon +++ b/toolchain/check/testdata/class/fail_addr_self.carbon @@ -47,7 +47,7 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F.2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/fail_incomplete.carbon b/toolchain/check/testdata/class/fail_incomplete.carbon index ca0d465ea3a8..4f1707e115ae 100644 --- a/toolchain/check/testdata/class/fail_incomplete.carbon +++ b/toolchain/check/testdata/class/fail_incomplete.carbon @@ -123,7 +123,7 @@ fn CallReturnIncomplete() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %.loc15: = fn_decl @.1 // CHECK:STDOUT: %CallClassFunction: = fn_decl @CallClassFunction diff --git a/toolchain/check/testdata/class/fail_init.carbon b/toolchain/check/testdata/class/fail_init.carbon index b628bb84dd8d..669d67cb6933 100644 --- a/toolchain/check/testdata/class/fail_init.carbon +++ b/toolchain/check/testdata/class/fail_init.carbon @@ -35,7 +35,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/fail_init_as_inplace.carbon b/toolchain/check/testdata/class/fail_init_as_inplace.carbon index 0d4e197def2b..0a43201d8943 100644 --- a/toolchain/check/testdata/class/fail_init_as_inplace.carbon +++ b/toolchain/check/testdata/class/fail_init_as_inplace.carbon @@ -31,7 +31,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: %F: = fn_decl @F diff --git a/toolchain/check/testdata/class/fail_memaccess_category.carbon b/toolchain/check/testdata/class/fail_memaccess_category.carbon index 4e4a838c8b60..9a6b11f2e833 100644 --- a/toolchain/check/testdata/class/fail_memaccess_category.carbon +++ b/toolchain/check/testdata/class/fail_memaccess_category.carbon @@ -45,9 +45,9 @@ fn F(s: {.a: A}, b: B) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @A, () +// CHECK:STDOUT: %A.decl = class_decl @A, () // CHECK:STDOUT: %A: type = class_type @A -// CHECK:STDOUT: class_decl @B, () +// CHECK:STDOUT: %B.decl = class_decl @B, () // CHECK:STDOUT: %B: type = class_type @B // CHECK:STDOUT: %F: = fn_decl @F.2 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/fail_member_of_let.carbon b/toolchain/check/testdata/class/fail_member_of_let.carbon index e468ead20dcb..145a9000e120 100644 --- a/toolchain/check/testdata/class/fail_member_of_let.carbon +++ b/toolchain/check/testdata/class/fail_member_of_let.carbon @@ -28,7 +28,7 @@ fn T.F() {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %Class.ref: type = name_ref Class, %Class // CHECK:STDOUT: %T: type = bind_name T, %Class.ref diff --git a/toolchain/check/testdata/class/fail_method.carbon b/toolchain/check/testdata/class/fail_method.carbon index 587f05d4c954..4be3b5e2311a 100644 --- a/toolchain/check/testdata/class/fail_method.carbon +++ b/toolchain/check/testdata/class/fail_method.carbon @@ -39,7 +39,7 @@ fn F(c: Class) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/fail_redeclaration_introducer.carbon b/toolchain/check/testdata/class/fail_redeclaration_introducer.carbon index b5dfbe662ee0..343855b9582b 100644 --- a/toolchain/check/testdata/class/fail_redeclaration_introducer.carbon +++ b/toolchain/check/testdata/class/fail_redeclaration_introducer.carbon @@ -81,28 +81,28 @@ base class G; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @A, () +// CHECK:STDOUT: %A.decl.loc7 = class_decl @A, () // CHECK:STDOUT: %A: type = class_type @A -// CHECK:STDOUT: class_decl @A, () -// CHECK:STDOUT: class_decl @B, () +// CHECK:STDOUT: %A.decl.loc14 = class_decl @A, () +// CHECK:STDOUT: %B.decl.loc16 = class_decl @B, () // CHECK:STDOUT: %B: type = class_type @B -// CHECK:STDOUT: class_decl @B, () -// CHECK:STDOUT: class_decl @C, () +// CHECK:STDOUT: %B.decl.loc23 = class_decl @B, () +// CHECK:STDOUT: %C.decl.loc25 = class_decl @C, () // CHECK:STDOUT: %C: type = class_type @C -// CHECK:STDOUT: class_decl @C, () -// CHECK:STDOUT: class_decl @D, () +// CHECK:STDOUT: %C.decl.loc32 = class_decl @C, () +// CHECK:STDOUT: %D.decl.loc34 = class_decl @D, () // CHECK:STDOUT: %D: type = class_type @D -// CHECK:STDOUT: class_decl @D, () -// CHECK:STDOUT: class_decl @E, () +// CHECK:STDOUT: %D.decl.loc41 = class_decl @D, () +// CHECK:STDOUT: %E.decl.loc43 = class_decl @E, () // CHECK:STDOUT: %E: type = class_type @E -// CHECK:STDOUT: class_decl @E, () -// CHECK:STDOUT: class_decl @F, () +// CHECK:STDOUT: %E.decl.loc50 = class_decl @E, () +// CHECK:STDOUT: %F.decl.loc52 = class_decl @F, () // CHECK:STDOUT: %F: type = class_type @F -// CHECK:STDOUT: class_decl @F, () -// CHECK:STDOUT: class_decl @G, () +// CHECK:STDOUT: %F.decl.loc59 = class_decl @F, () +// CHECK:STDOUT: %G.decl.loc61 = class_decl @G, () // CHECK:STDOUT: %G: type = class_type @G -// CHECK:STDOUT: class_decl @G, () -// CHECK:STDOUT: class_decl @G, () +// CHECK:STDOUT: %G.decl.loc68 = class_decl @G, () +// CHECK:STDOUT: %G.decl.loc75 = class_decl @G, () // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { diff --git a/toolchain/check/testdata/class/fail_redeclaration_scope.carbon b/toolchain/check/testdata/class/fail_redeclaration_scope.carbon index b810195afa00..23ced33e9a3e 100644 --- a/toolchain/check/testdata/class/fail_redeclaration_scope.carbon +++ b/toolchain/check/testdata/class/fail_redeclaration_scope.carbon @@ -28,38 +28,38 @@ class Y { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @A.1, () +// CHECK:STDOUT: %A.decl.loc7 = class_decl @A.1, () // CHECK:STDOUT: %A: type = class_type @A.1 -// CHECK:STDOUT: class_decl @X, () +// CHECK:STDOUT: %X.decl = class_decl @X, () // CHECK:STDOUT: %X: type = class_type @X -// CHECK:STDOUT: class_decl @A.1, () -// CHECK:STDOUT: class_decl @Y, () +// CHECK:STDOUT: %A.decl.loc15 = class_decl @A.1, () +// CHECK:STDOUT: %Y.decl = class_decl @Y, () // CHECK:STDOUT: %Y: type = class_type @Y // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A.1 { -// CHECK:STDOUT: class_decl @B.2, () +// CHECK:STDOUT: %B.decl = class_decl @B.2, () // CHECK:STDOUT: %B: type = class_type @B.2 // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .B = +// CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @X { -// CHECK:STDOUT: class_decl @A.2, () +// CHECK:STDOUT: %A.decl = class_decl @A.2, () // CHECK:STDOUT: %A: type = class_type @A.2 -// CHECK:STDOUT: class_decl @B.1, () +// CHECK:STDOUT: %B.decl = class_decl @B.1, () // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .A = +// CHECK:STDOUT: .A = %A.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A.2 { -// CHECK:STDOUT: class_decl @B.1, () +// CHECK:STDOUT: %B.decl = class_decl @B.1, () // CHECK:STDOUT: %B: type = class_type @B.1 // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .B = +// CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B.1 { @@ -70,7 +70,7 @@ class Y { // CHECK:STDOUT: class @B.2; // CHECK:STDOUT: // CHECK:STDOUT: class @Y { -// CHECK:STDOUT: class_decl @.1, () +// CHECK:STDOUT: %.decl = class_decl @.1, () // CHECK:STDOUT: %.loc21: type = class_type @.1 // CHECK:STDOUT: // CHECK:STDOUT: !members: diff --git a/toolchain/check/testdata/class/fail_redefinition.carbon b/toolchain/check/testdata/class/fail_redefinition.carbon index a3ed259792dd..186332cc4751 100644 --- a/toolchain/check/testdata/class/fail_redefinition.carbon +++ b/toolchain/check/testdata/class/fail_redefinition.carbon @@ -31,9 +31,9 @@ fn Class.H() {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl.loc7 = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl.loc18 = class_decl @Class, () // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: %H: = fn_decl @H diff --git a/toolchain/check/testdata/class/fail_reorder.carbon b/toolchain/check/testdata/class/fail_reorder.carbon index 20705e7bcab4..9f61b5d373b4 100644 --- a/toolchain/check/testdata/class/fail_reorder.carbon +++ b/toolchain/check/testdata/class/fail_reorder.carbon @@ -32,7 +32,7 @@ class Class { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_scope.carbon b/toolchain/check/testdata/class/fail_scope.carbon index fcb3c118e8f5..eb1590e6d1fd 100644 --- a/toolchain/check/testdata/class/fail_scope.carbon +++ b/toolchain/check/testdata/class/fail_scope.carbon @@ -24,7 +24,7 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/fail_self.carbon b/toolchain/check/testdata/class/fail_self.carbon index 74ab187e02c3..2cf2928e50de 100644 --- a/toolchain/check/testdata/class/fail_self.carbon +++ b/toolchain/check/testdata/class/fail_self.carbon @@ -59,11 +59,11 @@ fn CallWrongSelf(ws: WrongSelf) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F.1 // CHECK:STDOUT: %G: = fn_decl @G -// CHECK:STDOUT: class_decl @WrongSelf, () +// CHECK:STDOUT: %WrongSelf.decl = class_decl @WrongSelf, () // CHECK:STDOUT: %WrongSelf: type = class_type @WrongSelf // CHECK:STDOUT: %CallWrongSelf: = fn_decl @CallWrongSelf // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/fail_unbound_field.carbon b/toolchain/check/testdata/class/fail_unbound_field.carbon index 1dec25b95e69..54fa2b9284f6 100644 --- a/toolchain/check/testdata/class/fail_unbound_field.carbon +++ b/toolchain/check/testdata/class/fail_unbound_field.carbon @@ -28,7 +28,7 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/fail_unknown_member.carbon b/toolchain/check/testdata/class/fail_unknown_member.carbon index 1ee43d952d95..8ab5087ce4a8 100644 --- a/toolchain/check/testdata/class/fail_unknown_member.carbon +++ b/toolchain/check/testdata/class/fail_unknown_member.carbon @@ -24,7 +24,7 @@ fn G(c: Class) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/field_access.carbon b/toolchain/check/testdata/class/field_access.carbon index e7585824073c..71cccca80545 100644 --- a/toolchain/check/testdata/class/field_access.carbon +++ b/toolchain/check/testdata/class/field_access.carbon @@ -24,7 +24,7 @@ fn Run() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %Run: = fn_decl @Run // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/field_access_in_value.carbon b/toolchain/check/testdata/class/field_access_in_value.carbon index 008992e2f239..a0fd97825174 100644 --- a/toolchain/check/testdata/class/field_access_in_value.carbon +++ b/toolchain/check/testdata/class/field_access_in_value.carbon @@ -25,7 +25,7 @@ fn Run() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %Run: = fn_decl @Run // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/forward_declared.carbon b/toolchain/check/testdata/class/forward_declared.carbon index 21f0559cfd7a..f44853a28c6e 100644 --- a/toolchain/check/testdata/class/forward_declared.carbon +++ b/toolchain/check/testdata/class/forward_declared.carbon @@ -11,7 +11,7 @@ fn F(p: Class*) -> Class* { return p; } // CHECK:STDOUT: --- forward_declared.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/init.carbon b/toolchain/check/testdata/class/init.carbon index c04bfc0654d7..f03f76c51728 100644 --- a/toolchain/check/testdata/class/init.carbon +++ b/toolchain/check/testdata/class/init.carbon @@ -26,7 +26,7 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %Make: = fn_decl @Make // CHECK:STDOUT: %MakeReorder: = fn_decl @MakeReorder diff --git a/toolchain/check/testdata/class/init_as.carbon b/toolchain/check/testdata/class/init_as.carbon index c4bc96986868..f6b2ca20b0d6 100644 --- a/toolchain/check/testdata/class/init_as.carbon +++ b/toolchain/check/testdata/class/init_as.carbon @@ -21,7 +21,7 @@ fn F() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/init_nested.carbon b/toolchain/check/testdata/class/init_nested.carbon index 656b0eeb8b92..aed385303448 100644 --- a/toolchain/check/testdata/class/init_nested.carbon +++ b/toolchain/check/testdata/class/init_nested.carbon @@ -32,10 +32,10 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Inner, () +// CHECK:STDOUT: %Inner.decl = class_decl @Inner, () // CHECK:STDOUT: %Inner: type = class_type @Inner // CHECK:STDOUT: %MakeInner: = fn_decl @MakeInner -// CHECK:STDOUT: class_decl @Outer, () +// CHECK:STDOUT: %Outer.decl = class_decl @Outer, () // CHECK:STDOUT: %Outer: type = class_type @Outer // CHECK:STDOUT: %MakeOuter: = fn_decl @MakeOuter // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/method.carbon b/toolchain/check/testdata/class/method.carbon index 4128b31358dc..76627d0e82c1 100644 --- a/toolchain/check/testdata/class/method.carbon +++ b/toolchain/check/testdata/class/method.carbon @@ -52,7 +52,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %Call: = fn_decl @Call diff --git a/toolchain/check/testdata/class/nested.carbon b/toolchain/check/testdata/class/nested.carbon index 60016d8ea295..e7d229db450d 100644 --- a/toolchain/check/testdata/class/nested.carbon +++ b/toolchain/check/testdata/class/nested.carbon @@ -38,13 +38,13 @@ fn F(a: Outer*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Outer, () +// CHECK:STDOUT: %Outer.decl = class_decl @Outer, () // CHECK:STDOUT: %Outer: type = class_type @Outer // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Outer { -// CHECK:STDOUT: class_decl @Inner, () +// CHECK:STDOUT: %Inner.decl = class_decl @Inner, () // CHECK:STDOUT: %Inner: type = class_type @Inner // CHECK:STDOUT: %Self.ref: type = name_ref Self, file.%Outer // CHECK:STDOUT: %.loc14_15: type = ptr_type Outer @@ -63,7 +63,7 @@ fn F(a: Outer*) { // CHECK:STDOUT: %pi: = bind_name pi, %.loc16_9.2 // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Inner = +// CHECK:STDOUT: .Inner = %Inner.decl // CHECK:STDOUT: .po = %po // CHECK:STDOUT: .qo = %qo // CHECK:STDOUT: .pi = %pi diff --git a/toolchain/check/testdata/class/nested_name.carbon b/toolchain/check/testdata/class/nested_name.carbon index 8bc021e5365e..c093f169635a 100644 --- a/toolchain/check/testdata/class/nested_name.carbon +++ b/toolchain/check/testdata/class/nested_name.carbon @@ -29,18 +29,18 @@ fn G(o: Outer) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Outer, () +// CHECK:STDOUT: %Outer.decl = class_decl @Outer, () // CHECK:STDOUT: %Outer: type = class_type @Outer // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Outer { -// CHECK:STDOUT: class_decl @Inner, () +// CHECK:STDOUT: %Inner.decl = class_decl @Inner, () // CHECK:STDOUT: %Inner: type = class_type @Inner // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Inner = +// CHECK:STDOUT: .Inner = %Inner.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Inner { diff --git a/toolchain/check/testdata/class/raw_self.carbon b/toolchain/check/testdata/class/raw_self.carbon index d2287b87605a..929e27216df8 100644 --- a/toolchain/check/testdata/class/raw_self.carbon +++ b/toolchain/check/testdata/class/raw_self.carbon @@ -29,7 +29,7 @@ fn Class.G[self: Class](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %G: = fn_decl @G diff --git a/toolchain/check/testdata/class/raw_self_type.carbon b/toolchain/check/testdata/class/raw_self_type.carbon index dd407d6896b4..c43dd980a1d9 100644 --- a/toolchain/check/testdata/class/raw_self_type.carbon +++ b/toolchain/check/testdata/class/raw_self_type.carbon @@ -18,7 +18,7 @@ class Class { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/redeclaration.carbon b/toolchain/check/testdata/class/redeclaration.carbon index 8eb71e33eb2e..7ff76843f616 100644 --- a/toolchain/check/testdata/class/redeclaration.carbon +++ b/toolchain/check/testdata/class/redeclaration.carbon @@ -19,9 +19,9 @@ fn Class.F() {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl.loc7 = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl.loc9 = class_decl @Class, () // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/redeclaration_introducer.carbon b/toolchain/check/testdata/class/redeclaration_introducer.carbon index ef58cfbf0c1a..0e11667bf344 100644 --- a/toolchain/check/testdata/class/redeclaration_introducer.carbon +++ b/toolchain/check/testdata/class/redeclaration_introducer.carbon @@ -19,15 +19,15 @@ abstract class C {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @A, () +// CHECK:STDOUT: %A.decl.loc7 = class_decl @A, () // CHECK:STDOUT: %A: type = class_type @A -// CHECK:STDOUT: class_decl @B, () +// CHECK:STDOUT: %B.decl.loc8 = class_decl @B, () // CHECK:STDOUT: %B: type = class_type @B -// CHECK:STDOUT: class_decl @C, () +// CHECK:STDOUT: %C.decl.loc9 = class_decl @C, () // CHECK:STDOUT: %C: type = class_type @C -// CHECK:STDOUT: class_decl @A, () -// CHECK:STDOUT: class_decl @B, () -// CHECK:STDOUT: class_decl @C, () +// CHECK:STDOUT: %A.decl.loc11 = class_decl @A, () +// CHECK:STDOUT: %B.decl.loc12 = class_decl @B, () +// CHECK:STDOUT: %C.decl.loc13 = class_decl @C, () // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { diff --git a/toolchain/check/testdata/class/reenter_scope.carbon b/toolchain/check/testdata/class/reenter_scope.carbon index 6fab97837044..e9b10ed1d0fc 100644 --- a/toolchain/check/testdata/class/reenter_scope.carbon +++ b/toolchain/check/testdata/class/reenter_scope.carbon @@ -20,7 +20,7 @@ fn Class.F() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/scope.carbon b/toolchain/check/testdata/class/scope.carbon index a78d67e42f03..26da34a10225 100644 --- a/toolchain/check/testdata/class/scope.carbon +++ b/toolchain/check/testdata/class/scope.carbon @@ -29,7 +29,7 @@ fn Run() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F.2 // CHECK:STDOUT: %Run: = fn_decl @Run diff --git a/toolchain/check/testdata/class/self.carbon b/toolchain/check/testdata/class/self.carbon index b921e820e821..60208f739b26 100644 --- a/toolchain/check/testdata/class/self.carbon +++ b/toolchain/check/testdata/class/self.carbon @@ -27,7 +27,7 @@ fn Class.G[addr self: Class*]() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %G: = fn_decl @G diff --git a/toolchain/check/testdata/class/self_type.carbon b/toolchain/check/testdata/class/self_type.carbon index c8f6f837d3b8..309e80514fa7 100644 --- a/toolchain/check/testdata/class/self_type.carbon +++ b/toolchain/check/testdata/class/self_type.carbon @@ -24,7 +24,7 @@ fn Class.F[self: Class]() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/static_method.carbon b/toolchain/check/testdata/class/static_method.carbon index 3510992d0fff..7b59a4c2037f 100644 --- a/toolchain/check/testdata/class/static_method.carbon +++ b/toolchain/check/testdata/class/static_method.carbon @@ -22,7 +22,7 @@ fn Run() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Class, () +// CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %Run: = fn_decl @Run // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/if_expr/fail_not_in_function.carbon b/toolchain/check/testdata/if_expr/fail_not_in_function.carbon index 10583cc9bb69..b9451f0d164b 100644 --- a/toolchain/check/testdata/if_expr/fail_not_in_function.carbon +++ b/toolchain/check/testdata/if_expr/fail_not_in_function.carbon @@ -42,7 +42,7 @@ class C { // CHECK:STDOUT: file { // CHECK:STDOUT: %.loc17: i32 = block_arg // CHECK:STDOUT: %x: i32 = bind_name x, %.loc17 -// CHECK:STDOUT: class_decl @C, () +// CHECK:STDOUT: %C.decl = class_decl @C, () // CHECK:STDOUT: %C: type = class_type @C // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_return_with_returned_var.carbon b/toolchain/check/testdata/return/fail_return_with_returned_var.carbon index 1760d1af0ef9..62d9bd756d3a 100644 --- a/toolchain/check/testdata/return/fail_return_with_returned_var.carbon +++ b/toolchain/check/testdata/return/fail_return_with_returned_var.carbon @@ -36,7 +36,7 @@ fn G() -> C { // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: %F: = fn_decl @F -// CHECK:STDOUT: class_decl @C, () +// CHECK:STDOUT: %C.decl = class_decl @C, () // CHECK:STDOUT: %C: type = class_type @C // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/returned_var.carbon b/toolchain/check/testdata/return/returned_var.carbon index 95c2ebc252d9..b768f24d0603 100644 --- a/toolchain/check/testdata/return/returned_var.carbon +++ b/toolchain/check/testdata/return/returned_var.carbon @@ -27,7 +27,7 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @C, () +// CHECK:STDOUT: %C.decl = class_decl @C, () // CHECK:STDOUT: %C: type = class_type @C // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %G: = fn_decl @G diff --git a/toolchain/check/testdata/struct/fail_nested_incomplete.carbon b/toolchain/check/testdata/struct/fail_nested_incomplete.carbon index 39982d8e4915..b5a0a79b9fd1 100644 --- a/toolchain/check/testdata/struct/fail_nested_incomplete.carbon +++ b/toolchain/check/testdata/struct/fail_nested_incomplete.carbon @@ -26,7 +26,7 @@ var p: Incomplete* = &s.a; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Incomplete, () +// CHECK:STDOUT: %Incomplete.decl = class_decl @Incomplete, () // CHECK:STDOUT: %Incomplete: type = class_type @Incomplete // CHECK:STDOUT: %Incomplete.ref.loc15: type = name_ref Incomplete, %Incomplete // CHECK:STDOUT: %.loc15: type = struct_type {.a: Incomplete} diff --git a/toolchain/check/testdata/tuples/fail_nested_incomplete.carbon b/toolchain/check/testdata/tuples/fail_nested_incomplete.carbon index 0580411ba94a..8e03c5206f05 100644 --- a/toolchain/check/testdata/tuples/fail_nested_incomplete.carbon +++ b/toolchain/check/testdata/tuples/fail_nested_incomplete.carbon @@ -28,7 +28,7 @@ var p: Incomplete* = &t[1]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @Incomplete, () +// CHECK:STDOUT: %Incomplete.decl = class_decl @Incomplete, () // CHECK:STDOUT: %Incomplete: type = class_type @Incomplete // CHECK:STDOUT: %Incomplete.ref.loc15: type = name_ref Incomplete, %Incomplete // CHECK:STDOUT: %.loc15_24.1: (type, type) = tuple_literal (i32, %Incomplete.ref.loc15) diff --git a/toolchain/check/testdata/var/fail_not_copyable.carbon b/toolchain/check/testdata/var/fail_not_copyable.carbon index 7121c6ded818..341eea270666 100644 --- a/toolchain/check/testdata/var/fail_not_copyable.carbon +++ b/toolchain/check/testdata/var/fail_not_copyable.carbon @@ -32,7 +32,7 @@ fn F(x: X) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { -// CHECK:STDOUT: class_decl @X, () +// CHECK:STDOUT: %X.decl = class_decl @X, () // CHECK:STDOUT: %X: type = class_type @X // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } diff --git a/toolchain/sem_ir/formatter.cpp b/toolchain/sem_ir/formatter.cpp index 87aeffe15ea6..ba53b5a44d33 100644 --- a/toolchain/sem_ir/formatter.cpp +++ b/toolchain/sem_ir/formatter.cpp @@ -437,6 +437,12 @@ class InstNamer { .name_id); continue; } + case ClassDecl::Kind: { + add_inst_name_id( + sem_ir_.classes().Get(inst.As().class_id).name_id, + ".decl"); + continue; + } case ClassType::Kind: { add_inst_name_id( sem_ir_.classes().Get(inst.As().class_id).name_id); @@ -710,6 +716,12 @@ class Formatter { } } + // Print ClassDecl with type-like semantics even though it lacks a type_id. + auto FormatInstructionLHS(InstId inst_id, ClassDecl /*inst*/) -> void { + FormatInstName(inst_id); + out_ << " = "; + } + template auto FormatInstructionRHS(InstT inst) -> void { // By default, an instruction has a comma-separated argument list.