Explorar o código

If a SemIR instruction has a braced block and a constant value, print the constant value first. (#3734)

Richard Smith %!s(int64=2) %!d(string=hai) anos
pai
achega
064123d93f
Modificáronse 100 ficheiros con 616 adicións e 616 borrados
  1. 2 2
      toolchain/check/testdata/alias/alias_of_alias.carbon
  2. 2 2
      toolchain/check/testdata/alias/builtins.carbon
  3. 2 2
      toolchain/check/testdata/alias/fail_aliased_name_in_diag.carbon
  4. 2 2
      toolchain/check/testdata/alias/fail_bool_value.carbon
  5. 5 5
      toolchain/check/testdata/alias/fail_local_in_namespace.carbon
  6. 2 2
      toolchain/check/testdata/alias/fail_modifiers.carbon
  7. 2 2
      toolchain/check/testdata/alias/fail_name_conflict.carbon
  8. 3 3
      toolchain/check/testdata/alias/fail_not_constant.carbon
  9. 2 2
      toolchain/check/testdata/alias/fail_todo_private.carbon
  10. 4 4
      toolchain/check/testdata/alias/import.carbon
  11. 4 4
      toolchain/check/testdata/alias/import_order.carbon
  12. 6 6
      toolchain/check/testdata/alias/in_namespace.carbon
  13. 4 4
      toolchain/check/testdata/alias/local.carbon
  14. 5 5
      toolchain/check/testdata/array/array_in_place.carbon
  15. 3 3
      toolchain/check/testdata/array/array_vs_tuple.carbon
  16. 5 5
      toolchain/check/testdata/array/assign_return_value.carbon
  17. 2 2
      toolchain/check/testdata/array/assign_var.carbon
  18. 2 2
      toolchain/check/testdata/array/base.carbon
  19. 2 2
      toolchain/check/testdata/array/fail_bound_overflow.carbon
  20. 3 3
      toolchain/check/testdata/array/fail_incomplete_element.carbon
  21. 2 2
      toolchain/check/testdata/array/fail_invalid_type.carbon
  22. 2 2
      toolchain/check/testdata/array/fail_out_of_bound.carbon
  23. 2 2
      toolchain/check/testdata/array/fail_out_of_bound_non_literal.carbon
  24. 2 2
      toolchain/check/testdata/array/fail_type_mismatch.carbon
  25. 6 6
      toolchain/check/testdata/array/function_param.carbon
  26. 2 2
      toolchain/check/testdata/array/index_not_literal.carbon
  27. 2 2
      toolchain/check/testdata/array/nine_elements.carbon
  28. 1 1
      toolchain/check/testdata/as/as_type.carbon
  29. 4 4
      toolchain/check/testdata/as/basic.carbon
  30. 1 1
      toolchain/check/testdata/as/fail_no_conversion.carbon
  31. 1 1
      toolchain/check/testdata/as/fail_not_type.carbon
  32. 10 10
      toolchain/check/testdata/as/identity.carbon
  33. 7 7
      toolchain/check/testdata/as/tuple.carbon
  34. 2 2
      toolchain/check/testdata/basics/builtin_types.carbon
  35. 1 1
      toolchain/check/testdata/basics/empty.carbon
  36. 1 1
      toolchain/check/testdata/basics/empty_decl.carbon
  37. 4 4
      toolchain/check/testdata/basics/fail_bad_run.carbon
  38. 4 4
      toolchain/check/testdata/basics/fail_bad_run_2.carbon
  39. 3 3
      toolchain/check/testdata/basics/fail_name_lookup.carbon
  40. 2 2
      toolchain/check/testdata/basics/fail_non_type_as_type.carbon
  41. 2 2
      toolchain/check/testdata/basics/fail_qualifier_unsupported.carbon
  42. 6 6
      toolchain/check/testdata/basics/multifile.carbon
  43. 6 6
      toolchain/check/testdata/basics/multifile_raw_and_textual_ir.carbon
  44. 3 3
      toolchain/check/testdata/basics/numeric_literals.carbon
  45. 2 2
      toolchain/check/testdata/basics/parens.carbon
  46. 4 4
      toolchain/check/testdata/basics/raw_and_textual_ir.carbon
  47. 8 8
      toolchain/check/testdata/basics/raw_identifier.carbon
  48. 3 3
      toolchain/check/testdata/basics/run.carbon
  49. 4 4
      toolchain/check/testdata/basics/run_i32.carbon
  50. 4 4
      toolchain/check/testdata/basics/textual_ir.carbon
  51. 8 8
      toolchain/check/testdata/class/base.carbon
  52. 6 6
      toolchain/check/testdata/class/base_field.carbon
  53. 8 8
      toolchain/check/testdata/class/base_function_unqualified.carbon
  54. 10 10
      toolchain/check/testdata/class/base_method.carbon
  55. 14 14
      toolchain/check/testdata/class/base_method_shadow.carbon
  56. 11 11
      toolchain/check/testdata/class/basic.carbon
  57. 16 16
      toolchain/check/testdata/class/derived_to_base.carbon
  58. 8 8
      toolchain/check/testdata/class/fail_abstract.carbon
  59. 7 7
      toolchain/check/testdata/class/fail_addr_not_self.carbon
  60. 9 9
      toolchain/check/testdata/class/fail_addr_self.carbon
  61. 38 38
      toolchain/check/testdata/class/fail_base_bad_type.carbon
  62. 9 9
      toolchain/check/testdata/class/fail_base_method_define.carbon
  63. 7 7
      toolchain/check/testdata/class/fail_base_modifiers.carbon
  64. 4 4
      toolchain/check/testdata/class/fail_base_no_extend.carbon
  65. 6 6
      toolchain/check/testdata/class/fail_base_repeated.carbon
  66. 4 4
      toolchain/check/testdata/class/fail_base_unbound.carbon
  67. 5 5
      toolchain/check/testdata/class/fail_convert_to_invalid.carbon
  68. 10 10
      toolchain/check/testdata/class/fail_derived_to_base.carbon
  69. 3 3
      toolchain/check/testdata/class/fail_field_modifiers.carbon
  70. 10 10
      toolchain/check/testdata/class/fail_import_misuses.carbon
  71. 20 20
      toolchain/check/testdata/class/fail_incomplete.carbon
  72. 4 4
      toolchain/check/testdata/class/fail_init.carbon
  73. 6 6
      toolchain/check/testdata/class/fail_init_as_inplace.carbon
  74. 8 8
      toolchain/check/testdata/class/fail_memaccess_category.carbon
  75. 6 6
      toolchain/check/testdata/class/fail_member_of_let.carbon
  76. 8 8
      toolchain/check/testdata/class/fail_method.carbon
  77. 15 15
      toolchain/check/testdata/class/fail_method_modifiers.carbon
  78. 8 8
      toolchain/check/testdata/class/fail_modifiers.carbon
  79. 4 4
      toolchain/check/testdata/class/fail_out_of_line_decl.carbon
  80. 17 17
      toolchain/check/testdata/class/fail_redeclaration_introducer.carbon
  81. 11 11
      toolchain/check/testdata/class/fail_redeclaration_scope.carbon
  82. 9 9
      toolchain/check/testdata/class/fail_redefinition.carbon
  83. 7 7
      toolchain/check/testdata/class/fail_reorder.carbon
  84. 7 7
      toolchain/check/testdata/class/fail_scope.carbon
  85. 16 16
      toolchain/check/testdata/class/fail_self.carbon
  86. 3 3
      toolchain/check/testdata/class/fail_todo_generic.carbon
  87. 8 8
      toolchain/check/testdata/class/fail_todo_generic_method.carbon
  88. 8 8
      toolchain/check/testdata/class/fail_todo_import_forward_decl.carbon
  89. 12 12
      toolchain/check/testdata/class/fail_todo_modifiers.carbon
  90. 7 7
      toolchain/check/testdata/class/fail_unbound_field.carbon
  91. 5 5
      toolchain/check/testdata/class/fail_unknown_member.carbon
  92. 4 4
      toolchain/check/testdata/class/field_access.carbon
  93. 4 4
      toolchain/check/testdata/class/field_access_in_value.carbon
  94. 5 5
      toolchain/check/testdata/class/forward_declared.carbon
  95. 18 18
      toolchain/check/testdata/class/import.carbon
  96. 13 13
      toolchain/check/testdata/class/import_base.carbon
  97. 7 7
      toolchain/check/testdata/class/import_member_cycle.carbon
  98. 8 8
      toolchain/check/testdata/class/import_struct_cyle.carbon
  99. 7 7
      toolchain/check/testdata/class/init.carbon
  100. 5 5
      toolchain/check/testdata/class/init_as.carbon

+ 2 - 2
toolchain/check/testdata/alias/alias_of_alias.carbon

@@ -16,11 +16,11 @@ let d: c = false;
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .a = %a
 // CHECK:STDOUT:     .b = %b
 // CHECK:STDOUT:     .c = %c
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %a: type = bind_alias a, bool [template = bool]
 // CHECK:STDOUT:   %a.ref: type = name_ref a, %a [template = bool]
 // CHECK:STDOUT:   %b: type = bind_alias b, %a [template = bool]

+ 2 - 2
toolchain/check/testdata/alias/builtins.carbon

@@ -18,10 +18,10 @@ let b_test: b = false;
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .a = %a
 // CHECK:STDOUT:     .b = %b
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %a: type = bind_alias a, i32 [template = i32]
 // CHECK:STDOUT:   %a.ref: type = name_ref a, %a [template = i32]
 // CHECK:STDOUT:   %.loc8: i32 = int_literal 0 [template = constants.%.1]

+ 2 - 2
toolchain/check/testdata/alias/fail_aliased_name_in_diag.carbon

@@ -17,9 +17,9 @@ let c: b = 2;
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .b = %b
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %b: type = bind_alias b, bool [template = bool]
 // CHECK:STDOUT:   %b.ref: type = name_ref b, %b [template = bool]
 // CHECK:STDOUT:   %.loc11: i32 = int_literal 2 [template = constants.%.1]

+ 2 - 2
toolchain/check/testdata/alias/fail_bool_value.carbon

@@ -17,9 +17,9 @@ let a_test: bool = a;
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .a = %a
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %.loc10: bool = bool_literal false [template = constants.%.1]
 // CHECK:STDOUT:   %a: <error> = bind_alias a, <error> [template = <error>]
 // CHECK:STDOUT:   %a.ref: <error> = name_ref a, %a [template = <error>]

+ 5 - 5
toolchain/check/testdata/alias/fail_local_in_namespace.carbon

@@ -27,14 +27,14 @@ fn F() -> bool {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .NS = %.loc7
 // CHECK:STDOUT:     .F = %F
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %.loc7: <namespace> = namespace {} [template]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %.loc7: <namespace> = namespace [template] {}
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {
 // CHECK:STDOUT:     %return.var: ref bool = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @F() -> bool {

+ 2 - 2
toolchain/check/testdata/alias/fail_modifiers.carbon

@@ -35,10 +35,10 @@ impl alias B = i32;
 // CHECK:STDOUT: --- fail_modifiers.carbon
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .A = %A
 // CHECK:STDOUT:     .B = %B
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %A: type = bind_alias A, i32 [template = i32]
 // CHECK:STDOUT:   %B: type = bind_alias B, i32 [template = i32]
 // CHECK:STDOUT: }

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

@@ -30,10 +30,10 @@ alias b = i32;
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .a = %a.loc7
 // CHECK:STDOUT:     .b = %b
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %a.loc7: type = bind_alias a, i32 [template = i32]
 // CHECK:STDOUT:   %a.var: ref i32 = var a
 // CHECK:STDOUT:   %a.loc14: ref i32 = bind_name a, %a.var

+ 3 - 3
toolchain/check/testdata/alias/fail_not_constant.carbon

@@ -21,10 +21,10 @@ fn F() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .F = %F
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @F() {

+ 2 - 2
toolchain/check/testdata/alias/fail_todo_private.carbon

@@ -12,9 +12,9 @@ private alias A = i32;
 // CHECK:STDOUT: --- fail_todo_private.carbon
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .A = %A
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %A: type = bind_alias A, i32 [template = i32]
 // CHECK:STDOUT: }
 // CHECK:STDOUT:

+ 4 - 4
toolchain/check/testdata/alias/import.carbon

@@ -27,10 +27,10 @@ var c: i32 = b;
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .a = %a
 // CHECK:STDOUT:     .b = %b
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %a.var: ref i32 = var a
 // CHECK:STDOUT:   %a: ref i32 = bind_name a, %a.var
 // CHECK:STDOUT:   %a.ref: ref i32 = name_ref a, %a
@@ -47,11 +47,11 @@ var c: i32 = b;
 // CHECK:STDOUT: --- b.carbon
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .a = %import_ref.1
 // CHECK:STDOUT:     .b = %import_ref.2
 // CHECK:STDOUT:     .c = %c
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %import_ref.1 = import_ref ir1, inst+2, unused
 // CHECK:STDOUT:   %import_ref.2: ref i32 = import_ref ir1, inst+7, used
 // CHECK:STDOUT:   %c.var: ref i32 = var c

+ 4 - 4
toolchain/check/testdata/alias/import_order.carbon

@@ -29,12 +29,12 @@ var i32_val: i32 = a_val;
 // CHECK:STDOUT: --- a.carbon
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .a = %a
 // CHECK:STDOUT:     .b = %b
 // CHECK:STDOUT:     .c = %c
 // CHECK:STDOUT:     .d = %d
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %a: type = bind_alias a, i32 [template = i32]
 // CHECK:STDOUT:   %a.ref: type = name_ref a, %a [template = i32]
 // CHECK:STDOUT:   %b: type = bind_alias b, %a [template = i32]
@@ -51,7 +51,7 @@ var i32_val: i32 = a_val;
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .a = %import_ref.1
 // CHECK:STDOUT:     .b = %import_ref.2
 // CHECK:STDOUT:     .c = %import_ref.3
@@ -61,7 +61,7 @@ var i32_val: i32 = a_val;
 // CHECK:STDOUT:     .b_val = %b_val
 // CHECK:STDOUT:     .a_val = %a_val
 // CHECK:STDOUT:     .i32_val = %i32_val
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %import_ref.1: type = import_ref ir1, inst+1, used [template = i32]
 // CHECK:STDOUT:   %import_ref.2: type = import_ref ir1, inst+3, used [template = i32]
 // CHECK:STDOUT:   %import_ref.3: type = import_ref ir1, inst+5, used [template = i32]

+ 6 - 6
toolchain/check/testdata/alias/in_namespace.carbon

@@ -20,23 +20,23 @@ fn F() -> NS.a {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .NS = %.loc7
 // CHECK:STDOUT:     .F = %F
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %.loc7: <namespace> = namespace {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %.loc7: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .a = %a
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %a: type = bind_alias a, bool [template = bool]
 // CHECK:STDOUT:   %NS.ref.loc10: <namespace> = name_ref NS, %.loc7 [template = %.loc7]
 // CHECK:STDOUT:   %a.ref.loc10: type = name_ref a, %a [template = bool]
 // CHECK:STDOUT:   %.loc10: bool = bool_literal false [template = constants.%.1]
 // CHECK:STDOUT:   %b: bool = bind_name b, %.loc10
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {
 // CHECK:STDOUT:     %NS.ref.loc12: <namespace> = name_ref NS, %.loc7 [template = %.loc7]
 // CHECK:STDOUT:     %a.ref.loc12: type = name_ref a, %a [template = bool]
 // CHECK:STDOUT:     %return.var: ref bool = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @F() -> bool {

+ 4 - 4
toolchain/check/testdata/alias/local.carbon

@@ -17,12 +17,12 @@ fn F() -> i32 {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .F = %F
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {
 // CHECK:STDOUT:     %return.var: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @F() -> i32 {

+ 5 - 5
toolchain/check/testdata/array/array_in_place.carbon

@@ -25,16 +25,16 @@ fn G() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .F = %F
 // CHECK:STDOUT:     .G = %G
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {
 // CHECK:STDOUT:     %.loc7_25.1: (type, type, type) = tuple_literal (i32, i32, i32)
 // CHECK:STDOUT:     %.loc7_25.2: type = converted %.loc7_25.1, constants.%.2 [template = constants.%.2]
 // CHECK:STDOUT:     @F.%return: ref (i32, i32, i32) = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %G: <function> = fn_decl @G {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %G: <function> = fn_decl @G [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @F() -> %return: (i32, i32, i32);

+ 3 - 3
toolchain/check/testdata/array/array_vs_tuple.carbon

@@ -29,10 +29,10 @@ fn G() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .G = %G
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %G: <function> = fn_decl @G {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %G: <function> = fn_decl @G [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @G() {

+ 5 - 5
toolchain/check/testdata/array/assign_return_value.carbon

@@ -24,16 +24,16 @@ fn Run() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .F = %F
 // CHECK:STDOUT:     .Run = %Run
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {
 // CHECK:STDOUT:     %.loc7_16.1: (type,) = tuple_literal (i32)
 // CHECK:STDOUT:     %.loc7_16.2: type = converted %.loc7_16.1, constants.%.2 [template = constants.%.2]
 // CHECK:STDOUT:     %return.var: ref (i32,) = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Run: <function> = fn_decl @Run {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Run: <function> = fn_decl @Run [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @F() -> (i32,) {

+ 2 - 2
toolchain/check/testdata/array/assign_var.carbon

@@ -25,10 +25,10 @@ var b: [i32; 3] = a;
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .a = %a
 // CHECK:STDOUT:     .b = %b
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %.loc7_22.1: (type, type, type) = tuple_literal (i32, i32, i32)
 // CHECK:STDOUT:   %.loc7_22.2: type = converted %.loc7_22.1, constants.%.2 [template = constants.%.2]
 // CHECK:STDOUT:   %a.var: ref (i32, i32, i32) = var a

+ 2 - 2
toolchain/check/testdata/array/base.carbon

@@ -38,11 +38,11 @@ var c: [(); 5] = ((), (), (), (), (),);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .a = %a
 // CHECK:STDOUT:     .b = %b
 // CHECK:STDOUT:     .c = %c
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %.loc7_14: i32 = int_literal 1 [template = constants.%.1]
 // CHECK:STDOUT:   %.loc7_15: type = array_type %.loc7_14, i32 [template = constants.%.2]
 // CHECK:STDOUT:   %a.var: ref [i32; 1] = var a

+ 2 - 2
toolchain/check/testdata/array/fail_bound_overflow.carbon

@@ -25,10 +25,10 @@ var b: [1; 39999999999999999993];
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .a = %a
 // CHECK:STDOUT:     .b = %b
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %.loc10_14: i32 = int_literal 39999999999999999993 [template = constants.%.1]
 // CHECK:STDOUT:   %.loc10_34: type = array_type %.loc10_14, i32 [template = <error>]
 // CHECK:STDOUT:   %a.var: ref <error> = var a

+ 3 - 3
toolchain/check/testdata/array/fail_incomplete_element.carbon

@@ -27,12 +27,12 @@ var p: Incomplete* = &a[0];
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Incomplete = %Incomplete.decl
 // CHECK:STDOUT:     .a = %a
 // CHECK:STDOUT:     .p = %p
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Incomplete.decl = class_decl @Incomplete {} [template = constants.%Incomplete]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Incomplete.decl = class_decl @Incomplete [template = constants.%Incomplete] {}
 // CHECK:STDOUT:   %Incomplete.ref.loc15: type = name_ref Incomplete, %Incomplete.decl [template = constants.%Incomplete]
 // CHECK:STDOUT:   %.loc15_21: i32 = int_literal 1 [template = constants.%.1]
 // CHECK:STDOUT:   %.loc15_22: type = array_type %.loc15_21, Incomplete [template = constants.%.2]

+ 2 - 2
toolchain/check/testdata/array/fail_invalid_type.carbon

@@ -16,9 +16,9 @@ var a: [1; 1];
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .a = %a
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %.loc10_9: i32 = int_literal 1 [template = constants.%.1]
 // CHECK:STDOUT:   %.loc10_12: i32 = int_literal 1 [template = constants.%.1]
 // CHECK:STDOUT:   %.loc10_13: type = array_type %.loc10_12, <error> [template = <error>]

+ 2 - 2
toolchain/check/testdata/array/fail_out_of_bound.carbon

@@ -21,9 +21,9 @@ var a: [i32; 1] = (1, 2, 3);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .a = %a
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %.loc10_14: i32 = int_literal 1 [template = constants.%.1]
 // CHECK:STDOUT:   %.loc10_15: type = array_type %.loc10_14, i32 [template = constants.%.2]
 // CHECK:STDOUT:   %a.var: ref [i32; 1] = var a

+ 2 - 2
toolchain/check/testdata/array/fail_out_of_bound_non_literal.carbon

@@ -28,10 +28,10 @@ var b: i32 = a[{.index = 3}.index];
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .a = %a
 // CHECK:STDOUT:     .b = %b
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %.loc7_14: i32 = int_literal 3 [template = constants.%.1]
 // CHECK:STDOUT:   %.loc7_15: type = array_type %.loc7_14, i32 [template = constants.%.2]
 // CHECK:STDOUT:   %a.var: ref [i32; 3] = var a

+ 2 - 2
toolchain/check/testdata/array/fail_type_mismatch.carbon

@@ -49,14 +49,14 @@ var d: [i32; 3] = t2;
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .a = %a
 // CHECK:STDOUT:     .t1 = %t1
 // CHECK:STDOUT:     .b = %b
 // CHECK:STDOUT:     .c = %c
 // CHECK:STDOUT:     .t2 = %t2
 // CHECK:STDOUT:     .d = %d
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %.loc10_14: i32 = int_literal 3 [template = constants.%.1]
 // CHECK:STDOUT:   %.loc10_15: type = array_type %.loc10_14, i32 [template = constants.%.2]
 // CHECK:STDOUT:   %a.var: ref [i32; 3] = var a

+ 6 - 6
toolchain/check/testdata/array/function_param.carbon

@@ -28,11 +28,11 @@ fn G() -> i32 {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .F = %F
 // CHECK:STDOUT:     .G = %G
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {
 // CHECK:STDOUT:     %.loc7_17: i32 = int_literal 3 [template = constants.%.1]
 // CHECK:STDOUT:     %.loc7_18: type = array_type %.loc7_17, i32 [template = constants.%.2]
 // CHECK:STDOUT:     %arr.loc7_6.1: [i32; 3] = param arr
@@ -40,10 +40,10 @@ fn G() -> i32 {
 // CHECK:STDOUT:     %i.loc7_21.1: i32 = param i
 // CHECK:STDOUT:     @F.%i: i32 = bind_name i, %i.loc7_21.1
 // CHECK:STDOUT:     %return.var.loc7: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %G: <function> = fn_decl @G {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %G: <function> = fn_decl @G [template] {
 // CHECK:STDOUT:     %return.var.loc11: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @F(%arr: [i32; 3], %i: i32) -> i32 {

+ 2 - 2
toolchain/check/testdata/array/index_not_literal.carbon

@@ -25,10 +25,10 @@ var b: i32 = a[{.index = 2}.index];
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .a = %a
 // CHECK:STDOUT:     .b = %b
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %.loc7_14: i32 = int_literal 3 [template = constants.%.1]
 // CHECK:STDOUT:   %.loc7_15: type = array_type %.loc7_14, i32 [template = constants.%.2]
 // CHECK:STDOUT:   %a.var: ref [i32; 3] = var a

+ 2 - 2
toolchain/check/testdata/array/nine_elements.carbon

@@ -34,9 +34,9 @@ var a: [i32; 9] = (1, 2, 3, 4, 5, 6, 7, 8, 9);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .a = %a
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %.loc7_14: i32 = int_literal 9 [template = constants.%.1]
 // CHECK:STDOUT:   %.loc7_15: type = array_type %.loc7_14, i32 [template = constants.%.2]
 // CHECK:STDOUT:   %a.var: ref [i32; 9] = var a

+ 1 - 1
toolchain/check/testdata/as/as_type.carbon

@@ -14,7 +14,7 @@ let t: type = (i32, i32) as type;
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {} [template]
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {}
 // CHECK:STDOUT:   %.loc7_24.1: (type, type) = tuple_literal (i32, i32)
 // CHECK:STDOUT:   %.loc7_24.2: type = converted %.loc7_24.1, constants.%.2 [template = constants.%.2]
 // CHECK:STDOUT:   %t: type = bind_name t, %.loc7_24.2

+ 4 - 4
toolchain/check/testdata/as/basic.carbon

@@ -15,12 +15,12 @@ fn Main() -> i32 {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Main = %Main
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Main: <function> = fn_decl @Main {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Main: <function> = fn_decl @Main [template] {
 // CHECK:STDOUT:     %return.var: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @Main() -> i32 {

+ 1 - 1
toolchain/check/testdata/as/fail_no_conversion.carbon

@@ -19,7 +19,7 @@ let n: (i32, i32) = 1 as (i32, i32);
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {} [template]
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {}
 // CHECK:STDOUT:   %.loc10_17.1: (type, type) = tuple_literal (i32, i32)
 // CHECK:STDOUT:   %.loc10_17.2: type = converted %.loc10_17.1, constants.%.2 [template = constants.%.2]
 // CHECK:STDOUT:   %.loc10_21: i32 = int_literal 1 [template = constants.%.4]

+ 1 - 1
toolchain/check/testdata/as/fail_not_type.carbon

@@ -17,7 +17,7 @@ let n: i32 = 1 as 2;
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {} [template]
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {}
 // CHECK:STDOUT:   %.loc10_14: i32 = int_literal 1 [template = constants.%.1]
 // CHECK:STDOUT:   %.loc10_19: i32 = int_literal 2 [template = constants.%.2]
 // CHECK:STDOUT:   %n: i32 = bind_name n, <error>

+ 10 - 10
toolchain/check/testdata/as/identity.carbon

@@ -35,30 +35,30 @@ fn Initializing() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .X = %X.decl
 // CHECK:STDOUT:     .Value = %Value
 // CHECK:STDOUT:     .Reference = %Reference
 // CHECK:STDOUT:     .Make = %Make
 // CHECK:STDOUT:     .Initializing = %Initializing
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %X.decl = class_decl @X {} [template = constants.%X]
-// CHECK:STDOUT:   %Value: <function> = fn_decl @Value {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %X.decl = class_decl @X [template = constants.%X] {}
+// CHECK:STDOUT:   %Value: <function> = fn_decl @Value [template] {
 // CHECK:STDOUT:     %X.ref.loc13: type = name_ref X, %X.decl [template = constants.%X]
 // CHECK:STDOUT:     %n.loc13_10.1: X = param n
 // CHECK:STDOUT:     @Value.%n: X = bind_name n, %n.loc13_10.1
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Reference: <function> = fn_decl @Reference {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Reference: <function> = fn_decl @Reference [template] {
 // CHECK:STDOUT:     %X.ref.loc17: type = name_ref X, %X.decl [template = constants.%X]
 // CHECK:STDOUT:     %.loc17: type = ptr_type X [template = constants.%.4]
 // CHECK:STDOUT:     %p.loc17_14.1: X* = param p
 // CHECK:STDOUT:     @Reference.%p: X* = bind_name p, %p.loc17_14.1
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Make: <function> = fn_decl @Make {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Make: <function> = fn_decl @Make [template] {
 // CHECK:STDOUT:     %X.ref.loc21: type = name_ref X, %X.decl [template = constants.%X]
 // CHECK:STDOUT:     @Make.%return: ref X = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Initializing: <function> = fn_decl @Initializing {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Initializing: <function> = fn_decl @Initializing [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @X {

+ 7 - 7
toolchain/check/testdata/as/tuple.carbon

@@ -34,19 +34,19 @@ fn Var() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .X = %X.decl
 // CHECK:STDOUT:     .Make = %Make
 // CHECK:STDOUT:     .Let = %Let
 // CHECK:STDOUT:     .Var = %Var
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %X.decl = class_decl @X {} [template = constants.%X]
-// CHECK:STDOUT:   %Make: <function> = fn_decl @Make {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %X.decl = class_decl @X [template = constants.%X] {}
+// CHECK:STDOUT:   %Make: <function> = fn_decl @Make [template] {
 // CHECK:STDOUT:     %X.ref: type = name_ref X, %X.decl [template = constants.%X]
 // CHECK:STDOUT:     @Make.%return: ref X = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Let: <function> = fn_decl @Let {} [template]
-// CHECK:STDOUT:   %Var: <function> = fn_decl @Var {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Let: <function> = fn_decl @Let [template] {}
+// CHECK:STDOUT:   %Var: <function> = fn_decl @Var [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @X {

+ 2 - 2
toolchain/check/testdata/basics/builtin_types.carbon

@@ -19,11 +19,11 @@ var test_type: type = i32;
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .test_i32 = %test_i32
 // CHECK:STDOUT:     .test_f64 = %test_f64
 // CHECK:STDOUT:     .test_type = %test_type
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %test_i32.var: ref i32 = var test_i32
 // CHECK:STDOUT:   %test_i32: ref i32 = bind_name test_i32, %test_i32.var
 // CHECK:STDOUT:   %test_f64.var: ref f64 = var test_f64

+ 1 - 1
toolchain/check/testdata/basics/empty.carbon

@@ -7,6 +7,6 @@
 // CHECK:STDOUT: --- empty.carbon
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {} [template]
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:

+ 1 - 1
toolchain/check/testdata/basics/empty_decl.carbon

@@ -9,6 +9,6 @@
 // CHECK:STDOUT: --- empty_decl.carbon
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {} [template]
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:

+ 4 - 4
toolchain/check/testdata/basics/fail_bad_run.carbon

@@ -20,12 +20,12 @@ fn Run() -> String {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Run = %Run
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Run: <function> = fn_decl @Run {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Run: <function> = fn_decl @Run [template] {
 // CHECK:STDOUT:     @Run.%return: ref String = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @Run() -> %return: String {

+ 4 - 4
toolchain/check/testdata/basics/fail_bad_run_2.carbon

@@ -12,13 +12,13 @@ fn Run(n: i32) {}
 // CHECK:STDOUT: --- fail_bad_run_2.carbon
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Run = %Run
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Run: <function> = fn_decl @Run {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Run: <function> = fn_decl @Run [template] {
 // CHECK:STDOUT:     %n.loc10_8.1: i32 = param n
 // CHECK:STDOUT:     @Run.%n: i32 = bind_name n, %n.loc10_8.1
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @Run(%n: i32) {

+ 3 - 3
toolchain/check/testdata/basics/fail_name_lookup.carbon

@@ -14,10 +14,10 @@ fn Main() {
 // CHECK:STDOUT: --- fail_name_lookup.carbon
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Main = %Main
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Main: <function> = fn_decl @Main {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Main: <function> = fn_decl @Main [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @Main() {

+ 2 - 2
toolchain/check/testdata/basics/fail_non_type_as_type.carbon

@@ -16,9 +16,9 @@ var x: type = 42;
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .x = %x
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %x.var: ref type = var x
 // CHECK:STDOUT:   %x: ref type = bind_name x, %x.var
 // CHECK:STDOUT: }

+ 2 - 2
toolchain/check/testdata/basics/fail_qualifier_unsupported.carbon

@@ -13,10 +13,10 @@ var y: i32 = x.b;
 // CHECK:STDOUT: --- fail_qualifier_unsupported.carbon
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .x = %x
 // CHECK:STDOUT:     .y = %y
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %x.var: ref i32 = var x
 // CHECK:STDOUT:   %x: ref i32 = bind_name x, %x.var
 // CHECK:STDOUT:   %y.var: ref i32 = var y

+ 6 - 6
toolchain/check/testdata/basics/multifile.carbon

@@ -17,10 +17,10 @@ fn B() {}
 // CHECK:STDOUT: --- a.carbon
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .A = %A
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %A: <function> = fn_decl @A {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %A: <function> = fn_decl @A [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @A() {
@@ -31,10 +31,10 @@ fn B() {}
 // CHECK:STDOUT: --- b.carbon
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .B = %B
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %B: <function> = fn_decl @B {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %B: <function> = fn_decl @B [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @B() {

+ 6 - 6
toolchain/check/testdata/basics/multifile_raw_and_textual_ir.carbon

@@ -54,10 +54,10 @@ fn B() {}
 // CHECK:STDOUT: --- a.carbon
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .A = %A
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %A: <function> = fn_decl @A {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %A: <function> = fn_decl @A [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @A() {
@@ -101,10 +101,10 @@ fn B() {}
 // CHECK:STDOUT: --- b.carbon
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .B = %B
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %B: <function> = fn_decl @B {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %B: <function> = fn_decl @B [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @B() {

+ 3 - 3
toolchain/check/testdata/basics/numeric_literals.carbon

@@ -58,10 +58,10 @@ fn F() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .F = %F
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @F() {

+ 2 - 2
toolchain/check/testdata/basics/parens.carbon

@@ -15,10 +15,10 @@ var b: i32 = ((2));
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .a = %a
 // CHECK:STDOUT:     .b = %b
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %a.var: ref i32 = var a
 // CHECK:STDOUT:   %a: ref i32 = bind_name a, %a.var
 // CHECK:STDOUT:   %b.var: ref i32 = var b

+ 4 - 4
toolchain/check/testdata/basics/raw_and_textual_ir.carbon

@@ -138,16 +138,16 @@ fn Foo(n: i32) -> (i32, i32, f64) {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Foo = %Foo
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Foo: <function> = fn_decl @Foo {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Foo: <function> = fn_decl @Foo [template] {
 // CHECK:STDOUT:     %n.loc11_8.1: i32 = param n
 // CHECK:STDOUT:     @Foo.%n: i32 = bind_name n, %n.loc11_8.1
 // CHECK:STDOUT:     %.loc11_33.1: (type, type, type) = tuple_literal (i32, i32, f64)
 // CHECK:STDOUT:     %.loc11_33.2: type = converted %.loc11_33.1, constants.%.2 [template = constants.%.2]
 // CHECK:STDOUT:     @Foo.%return: ref (i32, i32, f64) = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @Foo(%n: i32) -> %return: (i32, i32, f64) {

+ 8 - 8
toolchain/check/testdata/basics/raw_identifier.carbon

@@ -23,26 +23,26 @@ fn C(r#if: i32) -> i32 {
 // CHECK:STDOUT: --- raw_identifier.carbon
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .A = %A
 // CHECK:STDOUT:     .B = %B
 // CHECK:STDOUT:     .C = %C
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %A: <function> = fn_decl @A {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %A: <function> = fn_decl @A [template] {
 // CHECK:STDOUT:     %n.loc11_6.1: i32 = param n
 // CHECK:STDOUT:     @A.%n: i32 = bind_name n, %n.loc11_6.1
 // CHECK:STDOUT:     %return.var.loc11: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %B: <function> = fn_decl @B {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %B: <function> = fn_decl @B [template] {
 // CHECK:STDOUT:     %n.loc15_6.1: i32 = param n
 // CHECK:STDOUT:     @B.%n: i32 = bind_name n, %n.loc15_6.1
 // CHECK:STDOUT:     %return.var.loc15: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %C: <function> = fn_decl @C {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %C: <function> = fn_decl @C [template] {
 // CHECK:STDOUT:     %if.loc19_6.1: i32 = param r#if
 // CHECK:STDOUT:     @C.%if: i32 = bind_name r#if, %if.loc19_6.1
 // CHECK:STDOUT:     %return.var.loc19: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @A(%n: i32) -> i32 {

+ 3 - 3
toolchain/check/testdata/basics/run.carbon

@@ -9,10 +9,10 @@ fn Run() {}
 // CHECK:STDOUT: --- run.carbon
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Run = %Run
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Run: <function> = fn_decl @Run {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Run: <function> = fn_decl @Run [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @Run() {

+ 4 - 4
toolchain/check/testdata/basics/run_i32.carbon

@@ -13,12 +13,12 @@ fn Run() -> i32 { return 0; }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Run = %Run
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Run: <function> = fn_decl @Run {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Run: <function> = fn_decl @Run [template] {
 // CHECK:STDOUT:     %return.var: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @Run() -> i32 {

+ 4 - 4
toolchain/check/testdata/basics/textual_ir.carbon

@@ -23,16 +23,16 @@ fn Foo(n: i32) -> (i32, i32, f64) {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Foo = %Foo
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Foo: <function> = fn_decl @Foo {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Foo: <function> = fn_decl @Foo [template] {
 // CHECK:STDOUT:     %n.loc11_8.1: i32 = param n
 // CHECK:STDOUT:     @Foo.%n: i32 = bind_name n, %n.loc11_8.1
 // CHECK:STDOUT:     %.loc11_33.1: (type, type, type) = tuple_literal (i32, i32, f64)
 // CHECK:STDOUT:     %.loc11_33.2: type = converted %.loc11_33.1, constants.%.2 [template = constants.%.2]
 // CHECK:STDOUT:     @Foo.%return: ref (i32, i32, f64) = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @Foo(%n: i32) -> %return: (i32, i32, f64) {

+ 8 - 8
toolchain/check/testdata/class/base.carbon

@@ -47,26 +47,26 @@ fn Access(d: Derived) -> (i32, i32) {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Base = %Base.decl
 // CHECK:STDOUT:     .Derived = %Derived.decl
 // CHECK:STDOUT:     .Make = %Make
 // CHECK:STDOUT:     .Access = %Access
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Base.decl = class_decl @Base {} [template = constants.%Base]
-// CHECK:STDOUT:   %Derived.decl = class_decl @Derived {} [template = constants.%Derived]
-// CHECK:STDOUT:   %Make: <function> = fn_decl @Make {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Base.decl = class_decl @Base [template = constants.%Base] {}
+// CHECK:STDOUT:   %Derived.decl = class_decl @Derived [template = constants.%Derived] {}
+// CHECK:STDOUT:   %Make: <function> = fn_decl @Make [template] {
 // CHECK:STDOUT:     %Derived.ref.loc17: type = name_ref Derived, %Derived.decl [template = constants.%Derived]
 // CHECK:STDOUT:     @Make.%return: ref Derived = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Access: <function> = fn_decl @Access {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Access: <function> = fn_decl @Access [template] {
 // CHECK:STDOUT:     %Derived.ref.loc21: type = name_ref Derived, %Derived.decl [template = constants.%Derived]
 // CHECK:STDOUT:     %d.loc21_11.1: Derived = param d
 // CHECK:STDOUT:     @Access.%d: Derived = bind_name d, %d.loc21_11.1
 // CHECK:STDOUT:     %.loc21_35.1: (type, type) = tuple_literal (i32, i32)
 // CHECK:STDOUT:     %.loc21_35.2: type = converted %.loc21_35.1, constants.%.16 [template = constants.%.16]
 // CHECK:STDOUT:     @Access.%return: ref (i32, i32) = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Base {

+ 6 - 6
toolchain/check/testdata/class/base_field.carbon

@@ -40,21 +40,21 @@ fn Access(p: Derived*) -> i32* {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Base = %Base.decl
 // CHECK:STDOUT:     .Derived = %Derived.decl
 // CHECK:STDOUT:     .Access = %Access
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Base.decl = class_decl @Base {} [template = constants.%Base]
-// CHECK:STDOUT:   %Derived.decl = class_decl @Derived {} [template = constants.%Derived]
-// CHECK:STDOUT:   %Access: <function> = fn_decl @Access {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Base.decl = class_decl @Base [template = constants.%Base] {}
+// CHECK:STDOUT:   %Derived.decl = class_decl @Derived [template = constants.%Derived] {}
+// CHECK:STDOUT:   %Access: <function> = fn_decl @Access [template] {
 // CHECK:STDOUT:     %Derived.ref: type = name_ref Derived, %Derived.decl [template = constants.%Derived]
 // CHECK:STDOUT:     %.loc20_21: type = ptr_type Derived [template = constants.%.7]
 // CHECK:STDOUT:     %p.loc20_11.1: Derived* = param p
 // CHECK:STDOUT:     @Access.%p: Derived* = bind_name p, %p.loc20_11.1
 // CHECK:STDOUT:     %.loc20_30: type = ptr_type i32 [template = constants.%.8]
 // CHECK:STDOUT:     %return.var: ref i32* = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Base {

+ 8 - 8
toolchain/check/testdata/class/base_function_unqualified.carbon

@@ -32,17 +32,17 @@ fn Derived.H() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Base = %Base.decl
 // CHECK:STDOUT:     .Derived = %Derived.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Base.decl = class_decl @Base {} [template = constants.%Base]
-// CHECK:STDOUT:   %Derived.decl = class_decl @Derived {} [template = constants.%Derived]
-// CHECK:STDOUT:   %H: <function> = fn_decl @H {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Base.decl = class_decl @Base [template = constants.%Base] {}
+// CHECK:STDOUT:   %Derived.decl = class_decl @Derived [template = constants.%Derived] {}
+// CHECK:STDOUT:   %H: <function> = fn_decl @H [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Base {
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {} [template]
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {}
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%Base
@@ -52,8 +52,8 @@ fn Derived.H() {
 // CHECK:STDOUT: class @Derived {
 // CHECK:STDOUT:   %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base]
 // CHECK:STDOUT:   %.loc12: <unbound element of class Derived> = base_decl Base, element0 [template]
-// CHECK:STDOUT:   %G: <function> = fn_decl @G {} [template]
-// CHECK:STDOUT:   %H: <function> = fn_decl @H {} [template]
+// CHECK:STDOUT:   %G: <function> = fn_decl @G [template] {}
+// CHECK:STDOUT:   %H: <function> = fn_decl @H [template] {}
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%Derived

+ 10 - 10
toolchain/check/testdata/class/base_method.carbon

@@ -41,37 +41,37 @@ fn Call(p: Derived*) {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Base = %Base.decl
 // CHECK:STDOUT:     .Derived = %Derived.decl
 // CHECK:STDOUT:     .Call = %Call
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Base.decl = class_decl @Base {} [template = constants.%Base]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Base.decl = class_decl @Base [template = constants.%Base] {}
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {
 // CHECK:STDOUT:     %Base.ref: type = name_ref Base, %Base.decl [template = constants.%Base]
 // CHECK:STDOUT:     %.loc13_26: type = ptr_type Base [template = constants.%.2]
 // CHECK:STDOUT:     %self.loc13_16.1: Base* = param self
 // CHECK:STDOUT:     @F.%self: Base* = bind_name self, %self.loc13_16.1
 // CHECK:STDOUT:     @F.%.loc13: Base* = addr_pattern @F.%self
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Derived.decl = class_decl @Derived {} [template = constants.%Derived]
-// CHECK:STDOUT:   %Call: <function> = fn_decl @Call {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Derived.decl = class_decl @Derived [template = constants.%Derived] {}
+// CHECK:STDOUT:   %Call: <function> = fn_decl @Call [template] {
 // CHECK:STDOUT:     %Derived.ref: type = name_ref Derived, %Derived.decl [template = constants.%Derived]
 // CHECK:STDOUT:     %.loc21: type = ptr_type Derived [template = constants.%.8]
 // CHECK:STDOUT:     %p.loc21_9.1: Derived* = param p
 // CHECK:STDOUT:     @Call.%p: Derived* = bind_name p, %p.loc21_9.1
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Base {
 // CHECK:STDOUT:   %.loc8: <unbound element of class Base> = field_decl a, element0 [template]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {
 // CHECK:STDOUT:     %Self.ref: type = name_ref Self, constants.%Base [template = constants.%Base]
 // CHECK:STDOUT:     %.loc10_23: type = ptr_type Base [template = constants.%.2]
 // CHECK:STDOUT:     %self.loc10_13.1: Base* = param self
 // CHECK:STDOUT:     %self.loc10_13.3: Base* = bind_name self, %self.loc10_13.1
 // CHECK:STDOUT:     %.loc10_8: Base* = addr_pattern %self.loc10_13.3
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%Base

+ 14 - 14
toolchain/check/testdata/class/base_method_shadow.carbon

@@ -55,18 +55,18 @@ fn Call(a: A*, b: B*, c: C*, d: D*) {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .A = %A.decl
 // CHECK:STDOUT:     .B = %B.decl
 // CHECK:STDOUT:     .C = %C.decl
 // CHECK:STDOUT:     .D = %D.decl
 // CHECK:STDOUT:     .Call = %Call
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %A.decl = class_decl @A {} [template = constants.%A]
-// CHECK:STDOUT:   %B.decl = class_decl @B {} [template = constants.%B]
-// CHECK:STDOUT:   %C.decl = class_decl @C {} [template = constants.%C]
-// CHECK:STDOUT:   %D.decl = class_decl @D {} [template = constants.%D]
-// CHECK:STDOUT:   %Call: <function> = fn_decl @Call {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %A.decl = class_decl @A [template = constants.%A] {}
+// CHECK:STDOUT:   %B.decl = class_decl @B [template = constants.%B] {}
+// CHECK:STDOUT:   %C.decl = class_decl @C [template = constants.%C] {}
+// CHECK:STDOUT:   %D.decl = class_decl @D [template = constants.%D] {}
+// CHECK:STDOUT:   %Call: <function> = fn_decl @Call [template] {
 // CHECK:STDOUT:     %A.ref: type = name_ref A, %A.decl [template = constants.%A]
 // CHECK:STDOUT:     %.loc25_13: type = ptr_type A [template = constants.%.1]
 // CHECK:STDOUT:     %a.loc25_9.1: A* = param a
@@ -83,17 +83,17 @@ fn Call(a: A*, b: B*, c: C*, d: D*) {
 // CHECK:STDOUT:     %.loc25_34: type = ptr_type D [template = constants.%.14]
 // CHECK:STDOUT:     %d.loc25_30.1: D* = param d
 // CHECK:STDOUT:     @Call.%d: D* = bind_name d, %d.loc25_30.1
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @A {
-// CHECK:STDOUT:   %F: <function> = fn_decl @F.1 {
+// CHECK:STDOUT:   %F: <function> = fn_decl @F.1 [template] {
 // CHECK:STDOUT:     %Self.ref: type = name_ref Self, constants.%A [template = constants.%A]
 // CHECK:STDOUT:     %.loc8_23: type = ptr_type A [template = constants.%.1]
 // CHECK:STDOUT:     %self.loc8_13.1: A* = param self
 // CHECK:STDOUT:     %self.loc8_13.3: A* = bind_name self, %self.loc8_13.1
 // CHECK:STDOUT:     %.loc8_8: A* = addr_pattern %self.loc8_13.3
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%A
@@ -103,13 +103,13 @@ fn Call(a: A*, b: B*, c: C*, d: D*) {
 // CHECK:STDOUT: class @B {
 // CHECK:STDOUT:   %A.ref: type = name_ref A, file.%A.decl [template = constants.%A]
 // CHECK:STDOUT:   %.loc12: <unbound element of class B> = base_decl A, element0 [template]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F.2 {
+// CHECK:STDOUT:   %F: <function> = fn_decl @F.2 [template] {
 // CHECK:STDOUT:     %Self.ref: type = name_ref Self, constants.%B [template = constants.%B]
 // CHECK:STDOUT:     %.loc13_23: type = ptr_type B [template = constants.%.6]
 // CHECK:STDOUT:     %self.loc13_13.1: B* = param self
 // CHECK:STDOUT:     %self.loc13_13.3: B* = bind_name self, %self.loc13_13.1
 // CHECK:STDOUT:     %.loc13_8: B* = addr_pattern %self.loc13_13.3
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%B
@@ -121,13 +121,13 @@ fn Call(a: A*, b: B*, c: C*, d: D*) {
 // CHECK:STDOUT: class @C {
 // CHECK:STDOUT:   %B.ref: type = name_ref B, file.%B.decl [template = constants.%B]
 // CHECK:STDOUT:   %.loc17: <unbound element of class C> = base_decl B, element0 [template]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F.3 {
+// CHECK:STDOUT:   %F: <function> = fn_decl @F.3 [template] {
 // CHECK:STDOUT:     %Self.ref: type = name_ref Self, constants.%C [template = constants.%C]
 // CHECK:STDOUT:     %.loc18_23: type = ptr_type C [template = constants.%.11]
 // CHECK:STDOUT:     %self.loc18_13.1: C* = param self
 // CHECK:STDOUT:     %self.loc18_13.3: C* = bind_name self, %self.loc18_13.1
 // CHECK:STDOUT:     %.loc18_8: C* = addr_pattern %self.loc18_13.3
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%C

+ 11 - 11
toolchain/check/testdata/class/basic.carbon

@@ -32,32 +32,32 @@ fn Run() -> i32 {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl
 // CHECK:STDOUT:     .Run = %Run
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl = class_decl @Class {} [template = constants.%Class]
-// CHECK:STDOUT:   %G: <function> = fn_decl @G {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl = class_decl @Class [template = constants.%Class] {}
+// CHECK:STDOUT:   %G: <function> = fn_decl @G [template] {
 // CHECK:STDOUT:     %n.loc17_12.1: i32 = param n
 // CHECK:STDOUT:     @G.%n: i32 = bind_name n, %n.loc17_12.1
 // CHECK:STDOUT:     %return.var.loc17: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Run: <function> = fn_decl @Run {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Run: <function> = fn_decl @Run [template] {
 // CHECK:STDOUT:     %return.var.loc21: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class {
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {
 // CHECK:STDOUT:     %n.loc8_8.1: i32 = param n
 // CHECK:STDOUT:     %n.loc8_8.2: i32 = bind_name n, %n.loc8_8.1
 // CHECK:STDOUT:     %return.var.loc8: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %G: <function> = fn_decl @G {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %G: <function> = fn_decl @G [template] {
 // CHECK:STDOUT:     %n.loc12_8.1: i32 = param n
 // CHECK:STDOUT:     %n.loc12_8.2: i32 = bind_name n, %n.loc12_8.1
 // CHECK:STDOUT:     %return.var.loc12: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %.loc14: <unbound element of class Class> = field_decl k, element0 [template]
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:

+ 16 - 16
toolchain/check/testdata/class/derived_to_base.carbon

@@ -69,7 +69,7 @@ fn ConvertInit() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .A = %A.decl
 // CHECK:STDOUT:     .B = %B.decl
 // CHECK:STDOUT:     .C = %C.decl
@@ -79,11 +79,11 @@ fn ConvertInit() {
 // CHECK:STDOUT:     .ConvertValue = %ConvertValue
 // CHECK:STDOUT:     .ConvertRef = %ConvertRef
 // CHECK:STDOUT:     .ConvertInit = %ConvertInit
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %A.decl = class_decl @A {} [template = constants.%A]
-// CHECK:STDOUT:   %B.decl = class_decl @B {} [template = constants.%B]
-// CHECK:STDOUT:   %C.decl = class_decl @C {} [template = constants.%C]
-// CHECK:STDOUT:   %ConvertCToB: <function> = fn_decl @ConvertCToB {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %A.decl = class_decl @A [template = constants.%A] {}
+// CHECK:STDOUT:   %B.decl = class_decl @B [template = constants.%B] {}
+// CHECK:STDOUT:   %C.decl = class_decl @C [template = constants.%C] {}
+// CHECK:STDOUT:   %ConvertCToB: <function> = fn_decl @ConvertCToB [template] {
 // CHECK:STDOUT:     %C.ref.loc21: type = name_ref C, %C.decl [template = constants.%C]
 // CHECK:STDOUT:     %.loc21_20: type = ptr_type C [template = constants.%.13]
 // CHECK:STDOUT:     %p.loc21_16.1: C* = param p
@@ -91,8 +91,8 @@ fn ConvertInit() {
 // CHECK:STDOUT:     %B.ref.loc21: type = name_ref B, %B.decl [template = constants.%B]
 // CHECK:STDOUT:     %.loc21_27: type = ptr_type B [template = constants.%.14]
 // CHECK:STDOUT:     %return.var.loc21: ref B* = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %ConvertBToA: <function> = fn_decl @ConvertBToA {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %ConvertBToA: <function> = fn_decl @ConvertBToA [template] {
 // CHECK:STDOUT:     %B.ref.loc22: type = name_ref B, %B.decl [template = constants.%B]
 // CHECK:STDOUT:     %.loc22_20: type = ptr_type B [template = constants.%.14]
 // CHECK:STDOUT:     %p.loc22_16.1: B* = param p
@@ -100,8 +100,8 @@ fn ConvertInit() {
 // CHECK:STDOUT:     %A.ref.loc22: type = name_ref A, %A.decl [template = constants.%A]
 // CHECK:STDOUT:     %.loc22_27: type = ptr_type A [template = constants.%.18]
 // CHECK:STDOUT:     %return.var.loc22: ref A* = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %ConvertCToA: <function> = fn_decl @ConvertCToA {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %ConvertCToA: <function> = fn_decl @ConvertCToA [template] {
 // CHECK:STDOUT:     %C.ref.loc23: type = name_ref C, %C.decl [template = constants.%C]
 // CHECK:STDOUT:     %.loc23_20: type = ptr_type C [template = constants.%.13]
 // CHECK:STDOUT:     %p.loc23_16.1: C* = param p
@@ -109,13 +109,13 @@ fn ConvertInit() {
 // CHECK:STDOUT:     %A.ref.loc23: type = name_ref A, %A.decl [template = constants.%A]
 // CHECK:STDOUT:     %.loc23_27: type = ptr_type A [template = constants.%.18]
 // CHECK:STDOUT:     %return.var.loc23: ref A* = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %ConvertValue: <function> = fn_decl @ConvertValue {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %ConvertValue: <function> = fn_decl @ConvertValue [template] {
 // CHECK:STDOUT:     %C.ref.loc25: type = name_ref C, %C.decl [template = constants.%C]
 // CHECK:STDOUT:     %c.loc25_17.1: C = param c
 // CHECK:STDOUT:     @ConvertValue.%c: C = bind_name c, %c.loc25_17.1
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %ConvertRef: <function> = fn_decl @ConvertRef {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %ConvertRef: <function> = fn_decl @ConvertRef [template] {
 // CHECK:STDOUT:     %C.ref.loc29: type = name_ref C, %C.decl [template = constants.%C]
 // CHECK:STDOUT:     %.loc29_19: type = ptr_type C [template = constants.%.13]
 // CHECK:STDOUT:     %c.loc29_15.1: C* = param c
@@ -123,8 +123,8 @@ fn ConvertInit() {
 // CHECK:STDOUT:     %A.ref.loc29: type = name_ref A, %A.decl [template = constants.%A]
 // CHECK:STDOUT:     %.loc29_26: type = ptr_type A [template = constants.%.18]
 // CHECK:STDOUT:     %return.var.loc29: ref A* = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %ConvertInit: <function> = fn_decl @ConvertInit {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %ConvertInit: <function> = fn_decl @ConvertInit [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @A {

+ 8 - 8
toolchain/check/testdata/class/fail_abstract.carbon

@@ -49,26 +49,26 @@ fn Access(d: Derived) -> (i32, i32) {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Abstract = %Abstract.decl
 // CHECK:STDOUT:     .Derived = %Derived.decl
 // CHECK:STDOUT:     .Make = %Make
 // CHECK:STDOUT:     .Access = %Access
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Abstract.decl = class_decl @Abstract {} [template = constants.%Abstract]
-// CHECK:STDOUT:   %Derived.decl = class_decl @Derived {} [template = constants.%Derived]
-// CHECK:STDOUT:   %Make: <function> = fn_decl @Make {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Abstract.decl = class_decl @Abstract [template = constants.%Abstract] {}
+// CHECK:STDOUT:   %Derived.decl = class_decl @Derived [template = constants.%Derived] {}
+// CHECK:STDOUT:   %Make: <function> = fn_decl @Make [template] {
 // CHECK:STDOUT:     %Derived.ref.loc17: type = name_ref Derived, %Derived.decl [template = constants.%Derived]
 // CHECK:STDOUT:     @Make.%return: ref Derived = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Access: <function> = fn_decl @Access {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Access: <function> = fn_decl @Access [template] {
 // CHECK:STDOUT:     %Derived.ref.loc25: type = name_ref Derived, %Derived.decl [template = constants.%Derived]
 // CHECK:STDOUT:     %d.loc25_11.1: Derived = param d
 // CHECK:STDOUT:     @Access.%d: Derived = bind_name d, %d.loc25_11.1
 // CHECK:STDOUT:     %.loc25_35.1: (type, type) = tuple_literal (i32, i32)
 // CHECK:STDOUT:     %.loc25_35.2: type = converted %.loc25_35.1, constants.%.14 [template = constants.%.14]
 // CHECK:STDOUT:     @Access.%return: ref (i32, i32) = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Abstract {

+ 7 - 7
toolchain/check/testdata/class/fail_addr_not_self.carbon

@@ -25,25 +25,25 @@ class Class {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl = class_decl @Class {} [template = constants.%Class]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl = class_decl @Class [template = constants.%Class] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class {
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {
 // CHECK:STDOUT:     %Class.ref.loc11: type = name_ref Class, file.%Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     %.loc11: type = ptr_type Class [template = constants.%.1]
 // CHECK:STDOUT:     %a.loc11_13.1: Class* = param a
 // CHECK:STDOUT:     %a.loc11_13.2: Class* = bind_name a, %a.loc11_13.1
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %G: <function> = fn_decl @G {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %G: <function> = fn_decl @G [template] {
 // CHECK:STDOUT:     %Class.ref.loc16: type = name_ref Class, file.%Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     %.loc16: type = ptr_type Class [template = constants.%.1]
 // CHECK:STDOUT:     %b.loc16_13.1: Class* = param b
 // CHECK:STDOUT:     %b.loc16_13.2: Class* = bind_name b, %b.loc16_13.1
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%Class

+ 9 - 9
toolchain/check/testdata/class/fail_addr_self.carbon

@@ -49,12 +49,12 @@ fn F(c: Class, p: Class*) {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl
 // CHECK:STDOUT:     .F = %F
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl = class_decl @Class {} [template = constants.%Class]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F.2 {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl = class_decl @Class [template = constants.%Class] {}
+// CHECK:STDOUT:   %F: <function> = fn_decl @F.2 [template] {
 // CHECK:STDOUT:     %Class.ref.loc12_9: type = name_ref Class, %Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     %c.loc12_6.1: Class = param c
 // CHECK:STDOUT:     @F.2.%c: Class = bind_name c, %c.loc12_6.1
@@ -62,23 +62,23 @@ fn F(c: Class, p: Class*) {
 // CHECK:STDOUT:     %.loc12: type = ptr_type Class [template = constants.%.1]
 // CHECK:STDOUT:     %p.loc12_16.1: Class* = param p
 // CHECK:STDOUT:     @F.2.%p: Class* = bind_name p, %p.loc12_16.1
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class {
-// CHECK:STDOUT:   %F: <function> = fn_decl @F.1 {
+// CHECK:STDOUT:   %F: <function> = fn_decl @F.1 [template] {
 // CHECK:STDOUT:     %Class.ref.loc8: type = name_ref Class, file.%Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     %.loc8_24: type = ptr_type Class [template = constants.%.1]
 // CHECK:STDOUT:     %self.loc8_13.1: Class* = param self
 // CHECK:STDOUT:     %self.loc8_13.3: Class* = bind_name self, %self.loc8_13.1
 // CHECK:STDOUT:     %.loc8_8: Class* = addr_pattern %self.loc8_13.3
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %G: <function> = fn_decl @G {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %G: <function> = fn_decl @G [template] {
 // CHECK:STDOUT:     %Class.ref.loc9: type = name_ref Class, file.%Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     %self.loc9_13.1: Class = param self
 // CHECK:STDOUT:     %self.loc9_13.3: Class = bind_name self, %self.loc9_13.1
 // CHECK:STDOUT:     %.loc9: Class = addr_pattern %self.loc9_13.3
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%Class

+ 38 - 38
toolchain/check/testdata/class/fail_base_bad_type.carbon

@@ -160,7 +160,7 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Base = %Base.decl
 // CHECK:STDOUT:     .Final = %Final.decl
 // CHECK:STDOUT:     .DeriveFromError = %DeriveFromError.decl
@@ -184,43 +184,43 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
 // CHECK:STDOUT:     .ConvertToBadBaseFinal = %ConvertToBadBaseFinal
 // CHECK:STDOUT:     .AccessMemberWithInvalidBaseFinal_WithMember = %AccessMemberWithInvalidBaseFinal_WithMember
 // CHECK:STDOUT:     .AccessMemberWithInvalidBaseFinal_NoMember = %AccessMemberWithInvalidBaseFinal_NoMember
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Base.decl = class_decl @Base {} [template = constants.%Base]
-// CHECK:STDOUT:   %Final.decl = class_decl @Final {} [template = constants.%Final]
-// CHECK:STDOUT:   %DeriveFromError.decl = class_decl @DeriveFromError {} [template = constants.%DeriveFromError]
-// CHECK:STDOUT:   %AccessMemberWithInvalidBaseError: <function> = fn_decl @AccessMemberWithInvalidBaseError {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Base.decl = class_decl @Base [template = constants.%Base] {}
+// CHECK:STDOUT:   %Final.decl = class_decl @Final [template = constants.%Final] {}
+// CHECK:STDOUT:   %DeriveFromError.decl = class_decl @DeriveFromError [template = constants.%DeriveFromError] {}
+// CHECK:STDOUT:   %AccessMemberWithInvalidBaseError: <function> = fn_decl @AccessMemberWithInvalidBaseError [template] {
 // CHECK:STDOUT:     %DeriveFromError.ref: type = name_ref DeriveFromError, %DeriveFromError.decl [template = constants.%DeriveFromError]
 // CHECK:STDOUT:     %.loc20: type = ptr_type DeriveFromError [template = constants.%.4]
 // CHECK:STDOUT:     %p.loc20_37.1: DeriveFromError* = param p
 // CHECK:STDOUT:     @AccessMemberWithInvalidBaseError.%p: DeriveFromError* = bind_name p, %p.loc20_37.1
 // CHECK:STDOUT:     %return.var.loc20: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %DeriveFromNonType.decl = class_decl @DeriveFromNonType {} [template = constants.%DeriveFromNonType]
-// CHECK:STDOUT:   %AccessMemberWithInvalidBasNonType: <function> = fn_decl @AccessMemberWithInvalidBasNonType {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %DeriveFromNonType.decl = class_decl @DeriveFromNonType [template = constants.%DeriveFromNonType] {}
+// CHECK:STDOUT:   %AccessMemberWithInvalidBasNonType: <function> = fn_decl @AccessMemberWithInvalidBasNonType [template] {
 // CHECK:STDOUT:     %DeriveFromNonType.ref: type = name_ref DeriveFromNonType, %DeriveFromNonType.decl [template = constants.%DeriveFromNonType]
 // CHECK:STDOUT:     %.loc29: type = ptr_type DeriveFromNonType [template = constants.%.6]
 // CHECK:STDOUT:     %p.loc29_38.1: DeriveFromNonType* = param p
 // CHECK:STDOUT:     @AccessMemberWithInvalidBasNonType.%p: DeriveFromNonType* = bind_name p, %p.loc29_38.1
 // CHECK:STDOUT:     %return.var.loc29: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %DeriveFromi32.decl = class_decl @DeriveFromi32 {} [template = constants.%DeriveFromi32]
-// CHECK:STDOUT:   %ConvertToBadBasei32: <function> = fn_decl @ConvertToBadBasei32 {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %DeriveFromi32.decl = class_decl @DeriveFromi32 [template = constants.%DeriveFromi32] {}
+// CHECK:STDOUT:   %ConvertToBadBasei32: <function> = fn_decl @ConvertToBadBasei32 [template] {
 // CHECK:STDOUT:     %DeriveFromi32.ref.loc43: type = name_ref DeriveFromi32, %DeriveFromi32.decl [template = constants.%DeriveFromi32]
 // CHECK:STDOUT:     %.loc43_40: type = ptr_type DeriveFromi32 [template = constants.%.7]
 // CHECK:STDOUT:     %p.loc43_24.1: DeriveFromi32* = param p
 // CHECK:STDOUT:     @ConvertToBadBasei32.%p: DeriveFromi32* = bind_name p, %p.loc43_24.1
 // CHECK:STDOUT:     %.loc43_49: type = ptr_type i32 [template = constants.%.8]
 // CHECK:STDOUT:     %return.var.loc43: ref i32* = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %AccessMemberWithInvalidBasei32: <function> = fn_decl @AccessMemberWithInvalidBasei32 {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %AccessMemberWithInvalidBasei32: <function> = fn_decl @AccessMemberWithInvalidBasei32 [template] {
 // CHECK:STDOUT:     %DeriveFromi32.ref.loc45: type = name_ref DeriveFromi32, %DeriveFromi32.decl [template = constants.%DeriveFromi32]
 // CHECK:STDOUT:     %.loc45: type = ptr_type DeriveFromi32 [template = constants.%.7]
 // CHECK:STDOUT:     %p.loc45_35.1: DeriveFromi32* = param p
 // CHECK:STDOUT:     @AccessMemberWithInvalidBasei32.%p: DeriveFromi32* = bind_name p, %p.loc45_35.1
 // CHECK:STDOUT:     %return.var.loc45: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %DeriveFromTuple.decl = class_decl @DeriveFromTuple {} [template = constants.%DeriveFromTuple]
-// CHECK:STDOUT:   %ConvertToBadBaseTuple: <function> = fn_decl @ConvertToBadBaseTuple {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %DeriveFromTuple.decl = class_decl @DeriveFromTuple [template = constants.%DeriveFromTuple] {}
+// CHECK:STDOUT:   %ConvertToBadBaseTuple: <function> = fn_decl @ConvertToBadBaseTuple [template] {
 // CHECK:STDOUT:     %DeriveFromTuple.ref.loc57: type = name_ref DeriveFromTuple, %DeriveFromTuple.decl [template = constants.%DeriveFromTuple]
 // CHECK:STDOUT:     %.loc57_44: type = ptr_type DeriveFromTuple [template = constants.%.14]
 // CHECK:STDOUT:     %p.loc57_26.1: DeriveFromTuple* = param p
@@ -230,16 +230,16 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
 // CHECK:STDOUT:     %.loc57_56.2: type = converted %.loc57_56.1, constants.%.10 [template = constants.%.10]
 // CHECK:STDOUT:     %.loc57_57: type = ptr_type (Base,) [template = constants.%.15]
 // CHECK:STDOUT:     %return.var.loc57: ref (Base,)* = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %AccessMemberWithInvalidBaseTuple: <function> = fn_decl @AccessMemberWithInvalidBaseTuple {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %AccessMemberWithInvalidBaseTuple: <function> = fn_decl @AccessMemberWithInvalidBaseTuple [template] {
 // CHECK:STDOUT:     %DeriveFromTuple.ref.loc59: type = name_ref DeriveFromTuple, %DeriveFromTuple.decl [template = constants.%DeriveFromTuple]
 // CHECK:STDOUT:     %.loc59: type = ptr_type DeriveFromTuple [template = constants.%.14]
 // CHECK:STDOUT:     %p.loc59_37.1: DeriveFromTuple* = param p
 // CHECK:STDOUT:     @AccessMemberWithInvalidBaseTuple.%p: DeriveFromTuple* = bind_name p, %p.loc59_37.1
 // CHECK:STDOUT:     %return.var.loc59: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %DeriveFromStruct.decl = class_decl @DeriveFromStruct {} [template = constants.%DeriveFromStruct]
-// CHECK:STDOUT:   %ConvertToBadBaseStruct: <function> = fn_decl @ConvertToBadBaseStruct {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %DeriveFromStruct.decl = class_decl @DeriveFromStruct [template = constants.%DeriveFromStruct] {}
+// CHECK:STDOUT:   %ConvertToBadBaseStruct: <function> = fn_decl @ConvertToBadBaseStruct [template] {
 // CHECK:STDOUT:     %DeriveFromStruct.ref.loc73: type = name_ref DeriveFromStruct, %DeriveFromStruct.decl [template = constants.%DeriveFromStruct]
 // CHECK:STDOUT:     %.loc73_46: type = ptr_type DeriveFromStruct [template = constants.%.18]
 // CHECK:STDOUT:     %p.loc73_27.1: DeriveFromStruct* = param p
@@ -247,17 +247,17 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
 // CHECK:STDOUT:     %.loc73_69: type = struct_type {.a: i32, .b: i32} [template = constants.%.16]
 // CHECK:STDOUT:     %.loc73_70: type = ptr_type {.a: i32, .b: i32} [template = constants.%.17]
 // CHECK:STDOUT:     %return.var.loc73: ref {.a: i32, .b: i32}* = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %AccessMemberWithInvalidBaseStruct: <function> = fn_decl @AccessMemberWithInvalidBaseStruct {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %AccessMemberWithInvalidBaseStruct: <function> = fn_decl @AccessMemberWithInvalidBaseStruct [template] {
 // CHECK:STDOUT:     %DeriveFromStruct.ref.loc76: type = name_ref DeriveFromStruct, %DeriveFromStruct.decl [template = constants.%DeriveFromStruct]
 // CHECK:STDOUT:     %.loc76: type = ptr_type DeriveFromStruct [template = constants.%.18]
 // CHECK:STDOUT:     %p.loc76_38.1: DeriveFromStruct* = param p
 // CHECK:STDOUT:     @AccessMemberWithInvalidBaseStruct.%p: DeriveFromStruct* = bind_name p, %p.loc76_38.1
 // CHECK:STDOUT:     %return.var.loc76: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Incomplete.decl = class_decl @Incomplete {} [template = constants.%Incomplete]
-// CHECK:STDOUT:   %DeriveFromIncomplete.decl = class_decl @DeriveFromIncomplete {} [template = constants.%DeriveFromIncomplete]
-// CHECK:STDOUT:   %ConvertToBadBaseIncomplete: <function> = fn_decl @ConvertToBadBaseIncomplete {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Incomplete.decl = class_decl @Incomplete [template = constants.%Incomplete] {}
+// CHECK:STDOUT:   %DeriveFromIncomplete.decl = class_decl @DeriveFromIncomplete [template = constants.%DeriveFromIncomplete] {}
+// CHECK:STDOUT:   %ConvertToBadBaseIncomplete: <function> = fn_decl @ConvertToBadBaseIncomplete [template] {
 // CHECK:STDOUT:     %DeriveFromIncomplete.ref.loc93: type = name_ref DeriveFromIncomplete, %DeriveFromIncomplete.decl [template = constants.%DeriveFromIncomplete]
 // CHECK:STDOUT:     %.loc93_54: type = ptr_type DeriveFromIncomplete [template = constants.%.19]
 // CHECK:STDOUT:     %p.loc93_31.1: DeriveFromIncomplete* = param p
@@ -265,16 +265,16 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
 // CHECK:STDOUT:     %Incomplete.ref: type = name_ref Incomplete, %Incomplete.decl [template = constants.%Incomplete]
 // CHECK:STDOUT:     %.loc93_70: type = ptr_type Incomplete [template = constants.%.20]
 // CHECK:STDOUT:     %return.var.loc93: ref Incomplete* = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %AccessMemberWithInvalidBaseIncomplete: <function> = fn_decl @AccessMemberWithInvalidBaseIncomplete {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %AccessMemberWithInvalidBaseIncomplete: <function> = fn_decl @AccessMemberWithInvalidBaseIncomplete [template] {
 // CHECK:STDOUT:     %DeriveFromIncomplete.ref.loc95: type = name_ref DeriveFromIncomplete, %DeriveFromIncomplete.decl [template = constants.%DeriveFromIncomplete]
 // CHECK:STDOUT:     %.loc95: type = ptr_type DeriveFromIncomplete [template = constants.%.19]
 // CHECK:STDOUT:     %p.loc95_42.1: DeriveFromIncomplete* = param p
 // CHECK:STDOUT:     @AccessMemberWithInvalidBaseIncomplete.%p: DeriveFromIncomplete* = bind_name p, %p.loc95_42.1
 // CHECK:STDOUT:     %return.var.loc95: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %DeriveFromFinal.decl = class_decl @DeriveFromFinal {} [template = constants.%DeriveFromFinal]
-// CHECK:STDOUT:   %ConvertToBadBaseFinal: <function> = fn_decl @ConvertToBadBaseFinal {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %DeriveFromFinal.decl = class_decl @DeriveFromFinal [template = constants.%DeriveFromFinal] {}
+// CHECK:STDOUT:   %ConvertToBadBaseFinal: <function> = fn_decl @ConvertToBadBaseFinal [template] {
 // CHECK:STDOUT:     %DeriveFromFinal.ref.loc105: type = name_ref DeriveFromFinal, %DeriveFromFinal.decl [template = constants.%DeriveFromFinal]
 // CHECK:STDOUT:     %.loc105_44: type = ptr_type DeriveFromFinal [template = constants.%.24]
 // CHECK:STDOUT:     %p.loc105_26.1: DeriveFromFinal* = param p
@@ -282,21 +282,21 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 {
 // CHECK:STDOUT:     %Final.ref: type = name_ref Final, %Final.decl [template = constants.%Final]
 // CHECK:STDOUT:     %.loc105_55: type = ptr_type Final [template = constants.%.25]
 // CHECK:STDOUT:     %return.var.loc105: ref Final* = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %AccessMemberWithInvalidBaseFinal_WithMember: <function> = fn_decl @AccessMemberWithInvalidBaseFinal_WithMember {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %AccessMemberWithInvalidBaseFinal_WithMember: <function> = fn_decl @AccessMemberWithInvalidBaseFinal_WithMember [template] {
 // CHECK:STDOUT:     %DeriveFromFinal.ref.loc109: type = name_ref DeriveFromFinal, %DeriveFromFinal.decl [template = constants.%DeriveFromFinal]
 // CHECK:STDOUT:     %.loc109: type = ptr_type DeriveFromFinal [template = constants.%.24]
 // CHECK:STDOUT:     %p.loc109_48.1: DeriveFromFinal* = param p
 // CHECK:STDOUT:     @AccessMemberWithInvalidBaseFinal_WithMember.%p: DeriveFromFinal* = bind_name p, %p.loc109_48.1
 // CHECK:STDOUT:     %return.var.loc109: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %AccessMemberWithInvalidBaseFinal_NoMember: <function> = fn_decl @AccessMemberWithInvalidBaseFinal_NoMember {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %AccessMemberWithInvalidBaseFinal_NoMember: <function> = fn_decl @AccessMemberWithInvalidBaseFinal_NoMember [template] {
 // CHECK:STDOUT:     %DeriveFromFinal.ref.loc113: type = name_ref DeriveFromFinal, %DeriveFromFinal.decl [template = constants.%DeriveFromFinal]
 // CHECK:STDOUT:     %.loc113: type = ptr_type DeriveFromFinal [template = constants.%.24]
 // CHECK:STDOUT:     %p.loc113_46.1: DeriveFromFinal* = param p
 // CHECK:STDOUT:     @AccessMemberWithInvalidBaseFinal_NoMember.%p: DeriveFromFinal* = bind_name p, %p.loc113_46.1
 // CHECK:STDOUT:     %return.var.loc113: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Base {

+ 9 - 9
toolchain/check/testdata/class/fail_base_method_define.carbon

@@ -40,19 +40,19 @@ fn D.C.F() {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .B = %B.decl
 // CHECK:STDOUT:     .D = %D.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %B.decl = class_decl @B {} [template = constants.%B]
-// CHECK:STDOUT:   %D.decl = class_decl @D {} [template = constants.%D]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F.3 {} [template]
-// CHECK:STDOUT:   %.loc27: <function> = fn_decl @.1 {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %B.decl = class_decl @B [template = constants.%B] {}
+// CHECK:STDOUT:   %D.decl = class_decl @D [template = constants.%D] {}
+// CHECK:STDOUT:   %F: <function> = fn_decl @F.3 [template] {}
+// CHECK:STDOUT:   %.loc27: <function> = fn_decl @.1 [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @B {
-// CHECK:STDOUT:   %F: <function> = fn_decl @F.1 {} [template]
-// CHECK:STDOUT:   %C.decl = class_decl @C {} [template = constants.%C]
+// CHECK:STDOUT:   %F: <function> = fn_decl @F.1 [template] {}
+// CHECK:STDOUT:   %C.decl = class_decl @C [template = constants.%C] {}
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%B
@@ -61,7 +61,7 @@ fn D.C.F() {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @C {
-// CHECK:STDOUT:   %F: <function> = fn_decl @F.2 {} [template]
+// CHECK:STDOUT:   %F: <function> = fn_decl @F.2 [template] {}
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%C

+ 7 - 7
toolchain/check/testdata/class/fail_base_modifiers.carbon

@@ -62,18 +62,18 @@ class C4 {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .B = %B.decl
 // CHECK:STDOUT:     .C1 = %C1.decl
 // CHECK:STDOUT:     .C2 = %C2.decl
 // CHECK:STDOUT:     .C3 = %C3.decl
 // CHECK:STDOUT:     .C4 = %C4.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %B.decl = class_decl @B {} [template = constants.%B]
-// CHECK:STDOUT:   %C1.decl = class_decl @C1 {} [template = constants.%C1]
-// CHECK:STDOUT:   %C2.decl = class_decl @C2 {} [template = constants.%C2]
-// CHECK:STDOUT:   %C3.decl = class_decl @C3 {} [template = constants.%C3]
-// CHECK:STDOUT:   %C4.decl = class_decl @C4 {} [template = constants.%C4]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %B.decl = class_decl @B [template = constants.%B] {}
+// CHECK:STDOUT:   %C1.decl = class_decl @C1 [template = constants.%C1] {}
+// CHECK:STDOUT:   %C2.decl = class_decl @C2 [template = constants.%C2] {}
+// CHECK:STDOUT:   %C3.decl = class_decl @C3 [template = constants.%C3] {}
+// CHECK:STDOUT:   %C4.decl = class_decl @C4 [template = constants.%C4] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @B {

+ 4 - 4
toolchain/check/testdata/class/fail_base_no_extend.carbon

@@ -26,12 +26,12 @@ class C {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .B = %B.decl
 // CHECK:STDOUT:     .C = %C.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %B.decl = class_decl @B {} [template = constants.%B]
-// CHECK:STDOUT:   %C.decl = class_decl @C {} [template = constants.%C]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %B.decl = class_decl @B [template = constants.%B] {}
+// CHECK:STDOUT:   %C.decl = class_decl @C [template = constants.%C] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @B {

+ 6 - 6
toolchain/check/testdata/class/fail_base_repeated.carbon

@@ -46,16 +46,16 @@ class D {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .B1 = %B1.decl
 // CHECK:STDOUT:     .B2 = %B2.decl
 // CHECK:STDOUT:     .C = %C.decl
 // CHECK:STDOUT:     .D = %D.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %B1.decl = class_decl @B1 {} [template = constants.%B1]
-// CHECK:STDOUT:   %B2.decl = class_decl @B2 {} [template = constants.%B2]
-// CHECK:STDOUT:   %C.decl = class_decl @C {} [template = constants.%C]
-// CHECK:STDOUT:   %D.decl = class_decl @D {} [template = constants.%D]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %B1.decl = class_decl @B1 [template = constants.%B1] {}
+// CHECK:STDOUT:   %B2.decl = class_decl @B2 [template = constants.%B2] {}
+// CHECK:STDOUT:   %C.decl = class_decl @C [template = constants.%C] {}
+// CHECK:STDOUT:   %D.decl = class_decl @D [template = constants.%D] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @B1 {

+ 4 - 4
toolchain/check/testdata/class/fail_base_unbound.carbon

@@ -28,12 +28,12 @@ let b: B = C.base;
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .B = %B.decl
 // CHECK:STDOUT:     .C = %C.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %B.decl = class_decl @B {} [template = constants.%B]
-// CHECK:STDOUT:   %C.decl = class_decl @C {} [template = constants.%C]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %B.decl = class_decl @B [template = constants.%B] {}
+// CHECK:STDOUT:   %C.decl = class_decl @C [template = constants.%C] {}
 // CHECK:STDOUT:   %B.ref: type = name_ref B, %B.decl [template = constants.%B]
 // CHECK:STDOUT:   %C.ref: type = name_ref C, %C.decl [template = constants.%C]
 // CHECK:STDOUT:   %base.ref: <unbound element of class C> = name_ref base, @C.%.loc10 [template = @C.%.loc10]

+ 5 - 5
toolchain/check/testdata/class/fail_convert_to_invalid.carbon

@@ -24,15 +24,15 @@ fn Make() -> C {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .C = %C.decl
 // CHECK:STDOUT:     .Make = %Make
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %C.decl = class_decl @C {} [template = constants.%C]
-// CHECK:STDOUT:   %Make: <function> = fn_decl @Make {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %C.decl = class_decl @C [template = constants.%C] {}
+// CHECK:STDOUT:   %Make: <function> = fn_decl @Make [template] {
 // CHECK:STDOUT:     %C.ref: type = name_ref C, %C.decl [template = constants.%C]
 // CHECK:STDOUT:     @Make.%return: ref C = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @C {

+ 10 - 10
toolchain/check/testdata/class/fail_derived_to_base.carbon

@@ -53,18 +53,18 @@ fn ConvertIncomplete(p: Incomplete*) -> A2* { return p; }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .A1 = %A1.decl
 // CHECK:STDOUT:     .A2 = %A2.decl
 // CHECK:STDOUT:     .B2 = %B2.decl
 // CHECK:STDOUT:     .ConvertUnrelated = %ConvertUnrelated
 // CHECK:STDOUT:     .Incomplete = %Incomplete.decl
 // CHECK:STDOUT:     .ConvertIncomplete = %ConvertIncomplete
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %A1.decl = class_decl @A1 {} [template = constants.%A1]
-// CHECK:STDOUT:   %A2.decl = class_decl @A2 {} [template = constants.%A2]
-// CHECK:STDOUT:   %B2.decl = class_decl @B2 {} [template = constants.%B2]
-// CHECK:STDOUT:   %ConvertUnrelated: <function> = fn_decl @ConvertUnrelated {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %A1.decl = class_decl @A1 [template = constants.%A1] {}
+// CHECK:STDOUT:   %A2.decl = class_decl @A2 [template = constants.%A2] {}
+// CHECK:STDOUT:   %B2.decl = class_decl @B2 [template = constants.%B2] {}
+// CHECK:STDOUT:   %ConvertUnrelated: <function> = fn_decl @ConvertUnrelated [template] {
 // CHECK:STDOUT:     %B2.ref: type = name_ref B2, %B2.decl [template = constants.%B2]
 // CHECK:STDOUT:     %.loc23_26: type = ptr_type B2 [template = constants.%.8]
 // CHECK:STDOUT:     %p.loc23_21.1: B2* = param p
@@ -72,9 +72,9 @@ fn ConvertIncomplete(p: Incomplete*) -> A2* { return p; }
 // CHECK:STDOUT:     %A1.ref: type = name_ref A1, %A1.decl [template = constants.%A1]
 // CHECK:STDOUT:     %.loc23_34: type = ptr_type A1 [template = constants.%.9]
 // CHECK:STDOUT:     %return.var.loc23: ref A1* = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Incomplete.decl = class_decl @Incomplete {} [template = constants.%Incomplete]
-// CHECK:STDOUT:   %ConvertIncomplete: <function> = fn_decl @ConvertIncomplete {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Incomplete.decl = class_decl @Incomplete [template = constants.%Incomplete] {}
+// CHECK:STDOUT:   %ConvertIncomplete: <function> = fn_decl @ConvertIncomplete [template] {
 // CHECK:STDOUT:     %Incomplete.ref: type = name_ref Incomplete, %Incomplete.decl [template = constants.%Incomplete]
 // CHECK:STDOUT:     %.loc30_35: type = ptr_type Incomplete [template = constants.%.13]
 // CHECK:STDOUT:     %p.loc30_22.1: Incomplete* = param p
@@ -82,7 +82,7 @@ fn ConvertIncomplete(p: Incomplete*) -> A2* { return p; }
 // CHECK:STDOUT:     %A2.ref: type = name_ref A2, %A2.decl [template = constants.%A2]
 // CHECK:STDOUT:     %.loc30_43: type = ptr_type A2 [template = constants.%.14]
 // CHECK:STDOUT:     %return.var.loc30: ref A2* = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @A1 {

+ 3 - 3
toolchain/check/testdata/class/fail_field_modifiers.carbon

@@ -38,10 +38,10 @@ class Class {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl = class_decl @Class {} [template = constants.%Class]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl = class_decl @Class [template = constants.%Class] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class {

+ 10 - 10
toolchain/check/testdata/class/fail_import_misuses.carbon

@@ -43,12 +43,12 @@ var a: Incomplete;
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Empty = %Empty.decl
 // CHECK:STDOUT:     .Incomplete = %Incomplete.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Empty.decl = class_decl @Empty {} [template = constants.%Empty]
-// CHECK:STDOUT:   %Incomplete.decl = class_decl @Incomplete {} [template = constants.%Incomplete]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Empty.decl = class_decl @Empty [template = constants.%Empty] {}
+// CHECK:STDOUT:   %Incomplete.decl = class_decl @Incomplete [template = constants.%Incomplete] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Empty {
@@ -68,17 +68,17 @@ var a: Incomplete;
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Empty = %import_ref.1
 // CHECK:STDOUT:     .Incomplete = %import_ref.2
 // CHECK:STDOUT:     .a = %a
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %import_ref.1: type = import_ref ir1, inst+1, used [template = constants.%Empty]
 // CHECK:STDOUT:   %import_ref.2: type = import_ref ir1, inst+4, used [template = constants.%Incomplete]
-// CHECK:STDOUT:   %.decl = class_decl @.1 {
-// CHECK:STDOUT:     %Empty.decl = class_decl @Empty {} [template = constants.%Empty]
-// CHECK:STDOUT:   } [template = constants.%.2]
-// CHECK:STDOUT:   %Incomplete.decl = class_decl @Incomplete {} [template = constants.%Incomplete]
+// CHECK:STDOUT:   %.decl = class_decl @.1 [template = constants.%.2] {
+// CHECK:STDOUT:     %Empty.decl = class_decl @Empty [template = constants.%Empty] {}
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Incomplete.decl = class_decl @Incomplete [template = constants.%Incomplete] {}
 // CHECK:STDOUT:   %Incomplete.ref: type = name_ref Incomplete, %import_ref.2 [template = constants.%Incomplete]
 // CHECK:STDOUT:   %a.var: ref <error> = var a
 // CHECK:STDOUT:   %a: ref <error> = bind_name a, %a.var

+ 20 - 20
toolchain/check/testdata/class/fail_incomplete.carbon

@@ -125,7 +125,7 @@ fn CallReturnIncomplete() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl
 // CHECK:STDOUT:     .CallClassFunction = %CallClassFunction
 // CHECK:STDOUT:     .global_var = %global_var
@@ -137,54 +137,54 @@ fn CallReturnIncomplete() {
 // CHECK:STDOUT:     .ReturnIncomplete = %ReturnIncomplete
 // CHECK:STDOUT:     .CallTakeIncomplete = %CallTakeIncomplete
 // CHECK:STDOUT:     .CallReturnIncomplete = %CallReturnIncomplete
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl = class_decl @Class {} [template = constants.%Class]
-// CHECK:STDOUT:   %.loc15: <function> = fn_decl @.1 {} [template]
-// CHECK:STDOUT:   %CallClassFunction: <function> = fn_decl @CallClassFunction {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl = class_decl @Class [template = constants.%Class] {}
+// CHECK:STDOUT:   %.loc15: <function> = fn_decl @.1 [template] {}
+// CHECK:STDOUT:   %CallClassFunction: <function> = fn_decl @CallClassFunction [template] {}
 // CHECK:STDOUT:   %Class.ref.loc33: type = name_ref Class, %Class.decl [template = constants.%Class]
 // CHECK:STDOUT:   %global_var.var: ref <error> = var global_var
 // CHECK:STDOUT:   %global_var: ref <error> = bind_name global_var, %global_var.var
-// CHECK:STDOUT:   %ConvertFromStruct: <function> = fn_decl @ConvertFromStruct {
+// CHECK:STDOUT:   %ConvertFromStruct: <function> = fn_decl @ConvertFromStruct [template] {
 // CHECK:STDOUT:     %Class.ref.loc41: type = name_ref Class, %Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     %return.var.loc41: ref Class = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %MemberAccess: <function> = fn_decl @MemberAccess {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %MemberAccess: <function> = fn_decl @MemberAccess [template] {
 // CHECK:STDOUT:     %Class.ref.loc48: type = name_ref Class, %Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     %.loc48: type = ptr_type Class [template = constants.%.2]
 // CHECK:STDOUT:     %p.loc48_17.1: Class* = param p
 // CHECK:STDOUT:     @MemberAccess.%p: Class* = bind_name p, %p.loc48_17.1
 // CHECK:STDOUT:     %return.var.loc48: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Copy: <function> = fn_decl @Copy {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Copy: <function> = fn_decl @Copy [template] {
 // CHECK:STDOUT:     %Class.ref.loc64_12: type = name_ref Class, %Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     %.loc64: type = ptr_type Class [template = constants.%.2]
 // CHECK:STDOUT:     %p.loc64_9.1: Class* = param p
 // CHECK:STDOUT:     @Copy.%p: Class* = bind_name p, %p.loc64_9.1
 // CHECK:STDOUT:     %Class.ref.loc64_23: type = name_ref Class, %Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     %return.var.loc64: ref Class = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Let: <function> = fn_decl @Let {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Let: <function> = fn_decl @Let [template] {
 // CHECK:STDOUT:     %Class.ref.loc68: type = name_ref Class, %Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     %.loc68: type = ptr_type Class [template = constants.%.2]
 // CHECK:STDOUT:     %p.loc68_8.1: Class* = param p
 // CHECK:STDOUT:     @Let.%p: Class* = bind_name p, %p.loc68_8.1
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %TakeIncomplete: <function> = fn_decl @TakeIncomplete {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %TakeIncomplete: <function> = fn_decl @TakeIncomplete [template] {
 // CHECK:STDOUT:     %Class.ref.loc78: type = name_ref Class, %Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     %c.loc78_19.1: Class = param c
 // CHECK:STDOUT:     @TakeIncomplete.%c: Class = bind_name c, %c.loc78_19.1
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %ReturnIncomplete: <function> = fn_decl @ReturnIncomplete {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %ReturnIncomplete: <function> = fn_decl @ReturnIncomplete [template] {
 // CHECK:STDOUT:     %Class.ref.loc88: type = name_ref Class, %Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     %return.var.loc88: ref Class = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %CallTakeIncomplete: <function> = fn_decl @CallTakeIncomplete {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %CallTakeIncomplete: <function> = fn_decl @CallTakeIncomplete [template] {
 // CHECK:STDOUT:     %Class.ref.loc90: type = name_ref Class, %Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     %.loc90: type = ptr_type Class [template = constants.%.2]
 // CHECK:STDOUT:     %p.loc90_23.1: Class* = param p
 // CHECK:STDOUT:     @CallTakeIncomplete.%p: Class* = bind_name p, %p.loc90_23.1
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %CallReturnIncomplete: <function> = fn_decl @CallReturnIncomplete {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %CallReturnIncomplete: <function> = fn_decl @CallReturnIncomplete [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class;

+ 4 - 4
toolchain/check/testdata/class/fail_init.carbon

@@ -40,12 +40,12 @@ fn F() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl
 // CHECK:STDOUT:     .F = %F
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl = class_decl @Class {} [template = constants.%Class]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl = class_decl @Class [template = constants.%Class] {}
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class {

+ 6 - 6
toolchain/check/testdata/class/fail_init_as_inplace.carbon

@@ -37,19 +37,19 @@ fn F() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl
 // CHECK:STDOUT:     .G = %G
 // CHECK:STDOUT:     .F = %F
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl = class_decl @Class {} [template = constants.%Class]
-// CHECK:STDOUT:   %G: <function> = fn_decl @G {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl = class_decl @Class [template = constants.%Class] {}
+// CHECK:STDOUT:   %G: <function> = fn_decl @G [template] {
 // CHECK:STDOUT:     %Class.ref: type = name_ref Class, %Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     %.loc12: type = ptr_type Class [template = constants.%.3]
 // CHECK:STDOUT:     %p.loc12_6.1: Class* = param p
 // CHECK:STDOUT:     @G.%p: Class* = bind_name p, %p.loc12_6.1
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class {

+ 8 - 8
toolchain/check/testdata/class/fail_memaccess_category.carbon

@@ -49,14 +49,14 @@ fn F(s: {.a: A}, b: B) {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .A = %A.decl
 // CHECK:STDOUT:     .B = %B.decl
 // CHECK:STDOUT:     .F = %F
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %A.decl = class_decl @A {} [template = constants.%A]
-// CHECK:STDOUT:   %B.decl = class_decl @B {} [template = constants.%B]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F.2 {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %A.decl = class_decl @A [template = constants.%A] {}
+// CHECK:STDOUT:   %B.decl = class_decl @B [template = constants.%B] {}
+// CHECK:STDOUT:   %F: <function> = fn_decl @F.2 [template] {
 // CHECK:STDOUT:     %A.ref: type = name_ref A, %A.decl [template = constants.%A]
 // CHECK:STDOUT:     %.loc15: type = struct_type {.a: A} [template = constants.%.6]
 // CHECK:STDOUT:     %s.loc15_6.1: {.a: A} = param s
@@ -64,17 +64,17 @@ fn F(s: {.a: A}, b: B) {
 // CHECK:STDOUT:     %B.ref: type = name_ref B, %B.decl [template = constants.%B]
 // CHECK:STDOUT:     %b.loc15_18.1: B = param b
 // CHECK:STDOUT:     @F.2.%b: B = bind_name b, %b.loc15_18.1
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @A {
-// CHECK:STDOUT:   %F: <function> = fn_decl @F.1 {
+// CHECK:STDOUT:   %F: <function> = fn_decl @F.1 [template] {
 // CHECK:STDOUT:     %A.ref: type = name_ref A, file.%A.decl [template = constants.%A]
 // CHECK:STDOUT:     %.loc8_20: type = ptr_type A [template = constants.%.1]
 // CHECK:STDOUT:     %self.loc8_13.1: A* = param self
 // CHECK:STDOUT:     %self.loc8_13.3: A* = bind_name self, %self.loc8_13.1
 // CHECK:STDOUT:     %.loc8_8: A* = addr_pattern %self.loc8_13.3
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%A

+ 6 - 6
toolchain/check/testdata/class/fail_member_of_let.carbon

@@ -26,19 +26,19 @@ fn T.F() {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl = class_decl @Class {} [template = constants.%Class]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl = class_decl @Class [template = constants.%Class] {}
 // CHECK:STDOUT:   %Class.ref: type = name_ref Class, %Class.decl [template = constants.%Class]
 // CHECK:STDOUT:   %T: type = bind_name T, %Class.ref
-// CHECK:STDOUT:   %.loc19: <function> = fn_decl @.1 {} [template]
+// CHECK:STDOUT:   %.loc19: <function> = fn_decl @.1 [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class {
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {
 // CHECK:STDOUT:     %return.var: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%Class

+ 8 - 8
toolchain/check/testdata/class/fail_method.carbon

@@ -50,29 +50,29 @@ fn F(c: Class) {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl
 // CHECK:STDOUT:     .A = %A
 // CHECK:STDOUT:     .F = %F
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl = class_decl @Class {} [template = constants.%Class]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl = class_decl @Class [template = constants.%Class] {}
 // CHECK:STDOUT:   %Class.ref.loc12: type = name_ref Class, %Class.decl [template = constants.%Class]
 // CHECK:STDOUT:   %WithSelf.ref: <function> = name_ref WithSelf, @Class.%WithSelf [template = @Class.%WithSelf]
 // CHECK:STDOUT:   %A: <function> = bind_alias A, @Class.%WithSelf [template = @Class.%WithSelf]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {
 // CHECK:STDOUT:     %Class.ref.loc14: type = name_ref Class, %Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     %c.loc14_6.1: Class = param c
 // CHECK:STDOUT:     @F.%c: Class = bind_name c, %c.loc14_6.1
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class {
-// CHECK:STDOUT:   %NoSelf: <function> = fn_decl @NoSelf {} [template]
-// CHECK:STDOUT:   %WithSelf: <function> = fn_decl @WithSelf {
+// CHECK:STDOUT:   %NoSelf: <function> = fn_decl @NoSelf [template] {}
+// CHECK:STDOUT:   %WithSelf: <function> = fn_decl @WithSelf [template] {
 // CHECK:STDOUT:     %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     %self.loc9_15.1: Class = param self
 // CHECK:STDOUT:     %self.loc9_15.2: Class = bind_name self, %self.loc9_15.1
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%Class

+ 15 - 15
toolchain/check/testdata/class/fail_method_modifiers.carbon

@@ -57,27 +57,27 @@ base class BaseClass {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .FinalClass = %FinalClass.decl
 // CHECK:STDOUT:     .AbstractClass = %AbstractClass.decl
 // CHECK:STDOUT:     .BaseClass = %BaseClass.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %FinalClass.decl = class_decl @FinalClass {} [template = constants.%FinalClass]
-// CHECK:STDOUT:   %AbstractClass.decl = class_decl @AbstractClass {} [template = constants.%AbstractClass]
-// CHECK:STDOUT:   %BaseClass.decl = class_decl @BaseClass {} [template = constants.%BaseClass]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %FinalClass.decl = class_decl @FinalClass [template = constants.%FinalClass] {}
+// CHECK:STDOUT:   %AbstractClass.decl = class_decl @AbstractClass [template = constants.%AbstractClass] {}
+// CHECK:STDOUT:   %BaseClass.decl = class_decl @BaseClass [template = constants.%BaseClass] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @FinalClass {
-// CHECK:STDOUT:   %Abstract: <function> = fn_decl @Abstract.1 {
+// CHECK:STDOUT:   %Abstract: <function> = fn_decl @Abstract.1 [template] {
 // CHECK:STDOUT:     %Self.ref.loc15: type = name_ref Self, constants.%FinalClass [template = constants.%FinalClass]
 // CHECK:STDOUT:     %self.loc15_24.1: FinalClass = param self
 // CHECK:STDOUT:     %self.loc15_24.2: FinalClass = bind_name self, %self.loc15_24.1
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Virtual: <function> = fn_decl @Virtual {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Virtual: <function> = fn_decl @Virtual [template] {
 // CHECK:STDOUT:     %Self.ref.loc23: type = name_ref Self, constants.%FinalClass [template = constants.%FinalClass]
 // CHECK:STDOUT:     %self.loc23_22.1: FinalClass = param self
 // CHECK:STDOUT:     %self.loc23_22.2: FinalClass = bind_name self, %self.loc23_22.1
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%FinalClass
@@ -86,16 +86,16 @@ base class BaseClass {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @AbstractClass {
-// CHECK:STDOUT:   %Default: <function> = fn_decl @Default {
+// CHECK:STDOUT:   %Default: <function> = fn_decl @Default [template] {
 // CHECK:STDOUT:     %Self.ref.loc31: type = name_ref Self, constants.%AbstractClass [template = constants.%AbstractClass]
 // CHECK:STDOUT:     %self.loc31_22.1: AbstractClass = param self
 // CHECK:STDOUT:     %self.loc31_22.2: AbstractClass = bind_name self, %self.loc31_22.1
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Final: <function> = fn_decl @Final {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Final: <function> = fn_decl @Final [template] {
 // CHECK:STDOUT:     %Self.ref.loc36: type = name_ref Self, constants.%AbstractClass [template = constants.%AbstractClass]
 // CHECK:STDOUT:     %self.loc36_18.1: AbstractClass = param self
 // CHECK:STDOUT:     %self.loc36_18.2: AbstractClass = bind_name self, %self.loc36_18.1
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%AbstractClass
@@ -104,11 +104,11 @@ base class BaseClass {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @BaseClass {
-// CHECK:STDOUT:   %Abstract: <function> = fn_decl @Abstract.2 {
+// CHECK:STDOUT:   %Abstract: <function> = fn_decl @Abstract.2 [template] {
 // CHECK:STDOUT:     %Self.ref: type = name_ref Self, constants.%BaseClass [template = constants.%BaseClass]
 // CHECK:STDOUT:     %self.loc47_24.1: BaseClass = param self
 // CHECK:STDOUT:     %self.loc47_24.2: BaseClass = bind_name self, %self.loc47_24.1
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%BaseClass

+ 8 - 8
toolchain/check/testdata/class/fail_modifiers.carbon

@@ -77,20 +77,20 @@ abstract base class AbstractAndBase {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .DuplicatePrivate = %DuplicatePrivate.decl
 // CHECK:STDOUT:     .TwoAccess = %TwoAccess.decl
 // CHECK:STDOUT:     .TwoAbstract = %TwoAbstract.decl
 // CHECK:STDOUT:     .Virtual = %Virtual.decl
 // CHECK:STDOUT:     .WrongOrder = %WrongOrder.decl
 // CHECK:STDOUT:     .AbstractAndBase = %AbstractAndBase.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %DuplicatePrivate.decl = class_decl @DuplicatePrivate {} [template = constants.%DuplicatePrivate]
-// CHECK:STDOUT:   %TwoAccess.decl = class_decl @TwoAccess {} [template = constants.%TwoAccess]
-// CHECK:STDOUT:   %TwoAbstract.decl = class_decl @TwoAbstract {} [template = constants.%TwoAbstract]
-// CHECK:STDOUT:   %Virtual.decl = class_decl @Virtual {} [template = constants.%Virtual]
-// CHECK:STDOUT:   %WrongOrder.decl = class_decl @WrongOrder {} [template = constants.%WrongOrder]
-// CHECK:STDOUT:   %AbstractAndBase.decl = class_decl @AbstractAndBase {} [template = constants.%AbstractAndBase]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %DuplicatePrivate.decl = class_decl @DuplicatePrivate [template = constants.%DuplicatePrivate] {}
+// CHECK:STDOUT:   %TwoAccess.decl = class_decl @TwoAccess [template = constants.%TwoAccess] {}
+// CHECK:STDOUT:   %TwoAbstract.decl = class_decl @TwoAbstract [template = constants.%TwoAbstract] {}
+// CHECK:STDOUT:   %Virtual.decl = class_decl @Virtual [template = constants.%Virtual] {}
+// CHECK:STDOUT:   %WrongOrder.decl = class_decl @WrongOrder [template = constants.%WrongOrder] {}
+// CHECK:STDOUT:   %AbstractAndBase.decl = class_decl @AbstractAndBase [template = constants.%AbstractAndBase] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @DuplicatePrivate;

+ 4 - 4
toolchain/check/testdata/class/fail_out_of_line_decl.carbon

@@ -19,11 +19,11 @@ fn C.F() {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .C = %C.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %C.decl = class_decl @C {} [template = constants.%C]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %C.decl = class_decl @C [template = constants.%C] {}
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @C {

+ 17 - 17
toolchain/check/testdata/class/fail_redeclaration_introducer.carbon

@@ -88,7 +88,7 @@ base class G;
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .A = %A.decl.loc7
 // CHECK:STDOUT:     .B = %B.decl.loc16
 // CHECK:STDOUT:     .C = %C.decl.loc25
@@ -96,22 +96,22 @@ base class G;
 // CHECK:STDOUT:     .E = %E.decl.loc43
 // CHECK:STDOUT:     .F = %F.decl.loc52
 // CHECK:STDOUT:     .G = %G.decl.loc61
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %A.decl.loc7 = class_decl @A {} [template = constants.%A]
-// CHECK:STDOUT:   %A.decl.loc14 = class_decl @A {} [template = constants.%A]
-// CHECK:STDOUT:   %B.decl.loc16 = class_decl @B {} [template = constants.%B]
-// CHECK:STDOUT:   %B.decl.loc23 = class_decl @B {} [template = constants.%B]
-// CHECK:STDOUT:   %C.decl.loc25 = class_decl @C {} [template = constants.%C]
-// CHECK:STDOUT:   %C.decl.loc32 = class_decl @C {} [template = constants.%C]
-// CHECK:STDOUT:   %D.decl.loc34 = class_decl @D {} [template = constants.%D]
-// CHECK:STDOUT:   %D.decl.loc41 = class_decl @D {} [template = constants.%D]
-// CHECK:STDOUT:   %E.decl.loc43 = class_decl @E {} [template = constants.%E]
-// CHECK:STDOUT:   %E.decl.loc50 = class_decl @E {} [template = constants.%E]
-// CHECK:STDOUT:   %F.decl.loc52 = class_decl @F {} [template = constants.%F]
-// CHECK:STDOUT:   %F.decl.loc59 = class_decl @F {} [template = constants.%F]
-// CHECK:STDOUT:   %G.decl.loc61 = class_decl @G {} [template = constants.%G]
-// CHECK:STDOUT:   %G.decl.loc68 = class_decl @G {} [template = constants.%G]
-// CHECK:STDOUT:   %G.decl.loc75 = class_decl @G {} [template = constants.%G]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %A.decl.loc7 = class_decl @A [template = constants.%A] {}
+// CHECK:STDOUT:   %A.decl.loc14 = class_decl @A [template = constants.%A] {}
+// CHECK:STDOUT:   %B.decl.loc16 = class_decl @B [template = constants.%B] {}
+// CHECK:STDOUT:   %B.decl.loc23 = class_decl @B [template = constants.%B] {}
+// CHECK:STDOUT:   %C.decl.loc25 = class_decl @C [template = constants.%C] {}
+// CHECK:STDOUT:   %C.decl.loc32 = class_decl @C [template = constants.%C] {}
+// CHECK:STDOUT:   %D.decl.loc34 = class_decl @D [template = constants.%D] {}
+// CHECK:STDOUT:   %D.decl.loc41 = class_decl @D [template = constants.%D] {}
+// CHECK:STDOUT:   %E.decl.loc43 = class_decl @E [template = constants.%E] {}
+// CHECK:STDOUT:   %E.decl.loc50 = class_decl @E [template = constants.%E] {}
+// CHECK:STDOUT:   %F.decl.loc52 = class_decl @F [template = constants.%F] {}
+// CHECK:STDOUT:   %F.decl.loc59 = class_decl @F [template = constants.%F] {}
+// CHECK:STDOUT:   %G.decl.loc61 = class_decl @G [template = constants.%G] {}
+// CHECK:STDOUT:   %G.decl.loc68 = class_decl @G [template = constants.%G] {}
+// CHECK:STDOUT:   %G.decl.loc75 = class_decl @G [template = constants.%G] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @A {

+ 11 - 11
toolchain/check/testdata/class/fail_redeclaration_scope.carbon

@@ -35,19 +35,19 @@ class Y {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .A = %A.decl.loc7
 // CHECK:STDOUT:     .X = %X.decl
 // CHECK:STDOUT:     .Y = %Y.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %A.decl.loc7 = class_decl @A.1 {} [template = constants.%A.1]
-// CHECK:STDOUT:   %X.decl = class_decl @X {} [template = constants.%X]
-// CHECK:STDOUT:   %A.decl.loc15 = class_decl @A.1 {} [template = constants.%A.1]
-// CHECK:STDOUT:   %Y.decl = class_decl @Y {} [template = constants.%Y]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %A.decl.loc7 = class_decl @A.1 [template = constants.%A.1] {}
+// CHECK:STDOUT:   %X.decl = class_decl @X [template = constants.%X] {}
+// CHECK:STDOUT:   %A.decl.loc15 = class_decl @A.1 [template = constants.%A.1] {}
+// CHECK:STDOUT:   %Y.decl = class_decl @Y [template = constants.%Y] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @A.1 {
-// CHECK:STDOUT:   %B.decl = class_decl @B.2 {} [template = constants.%B.2]
+// CHECK:STDOUT:   %B.decl = class_decl @B.2 [template = constants.%B.2] {}
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%A.1
@@ -55,8 +55,8 @@ class Y {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @X {
-// CHECK:STDOUT:   %A.decl = class_decl @A.2 {} [template = constants.%A.2]
-// CHECK:STDOUT:   %B.decl = class_decl @B.1 {} [template = constants.%B.1]
+// CHECK:STDOUT:   %A.decl = class_decl @A.2 [template = constants.%A.2] {}
+// CHECK:STDOUT:   %B.decl = class_decl @B.1 [template = constants.%B.1] {}
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%X
@@ -64,7 +64,7 @@ class Y {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @A.2 {
-// CHECK:STDOUT:   %B.decl = class_decl @B.1 {} [template = constants.%B.1]
+// CHECK:STDOUT:   %B.decl = class_decl @B.1 [template = constants.%B.1] {}
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%A.2
@@ -79,7 +79,7 @@ class Y {
 // CHECK:STDOUT: class @B.2;
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Y {
-// CHECK:STDOUT:   %.decl = class_decl @.1 {} [template = constants.%.2]
+// CHECK:STDOUT:   %.decl = class_decl @.1 [template = constants.%.2] {}
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%Y

+ 9 - 9
toolchain/check/testdata/class/fail_redefinition.carbon

@@ -32,19 +32,19 @@ fn Class.H() {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl.loc7
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl.loc7 = class_decl @Class {} [template = constants.%Class]
-// CHECK:STDOUT:   %Class.decl.loc18 = class_decl @Class {} [template = constants.%Class]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {} [template]
-// CHECK:STDOUT:   %G: <function> = fn_decl @G {} [template]
-// CHECK:STDOUT:   %H: <function> = fn_decl @H {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl.loc7 = class_decl @Class [template = constants.%Class] {}
+// CHECK:STDOUT:   %Class.decl.loc18 = class_decl @Class [template = constants.%Class] {}
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {}
+// CHECK:STDOUT:   %G: <function> = fn_decl @G [template] {}
+// CHECK:STDOUT:   %H: <function> = fn_decl @H [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class {
-// CHECK:STDOUT:   %G: <function> = fn_decl @G {} [template]
-// CHECK:STDOUT:   %H: <function> = fn_decl @H {} [template]
+// CHECK:STDOUT:   %G: <function> = fn_decl @G [template] {}
+// CHECK:STDOUT:   %H: <function> = fn_decl @H [template] {}
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%Class

+ 7 - 7
toolchain/check/testdata/class/fail_reorder.carbon

@@ -34,19 +34,19 @@ class Class {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl = class_decl @Class {} [template = constants.%Class]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl = class_decl @Class [template = constants.%Class] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class {
-// CHECK:STDOUT:   %G: <function> = fn_decl @G {
+// CHECK:STDOUT:   %G: <function> = fn_decl @G [template] {
 // CHECK:STDOUT:     %return.var.loc8: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {
 // CHECK:STDOUT:     %return.var.loc23: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%Class

+ 7 - 7
toolchain/check/testdata/class/fail_scope.carbon

@@ -26,20 +26,20 @@ fn G() -> i32 {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl
 // CHECK:STDOUT:     .G = %G
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl = class_decl @Class {} [template = constants.%Class]
-// CHECK:STDOUT:   %G: <function> = fn_decl @G {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl = class_decl @Class [template = constants.%Class] {}
+// CHECK:STDOUT:   %G: <function> = fn_decl @G [template] {
 // CHECK:STDOUT:     %return.var: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class {
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {
 // CHECK:STDOUT:     %return.var: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%Class

+ 16 - 16
toolchain/check/testdata/class/fail_self.carbon

@@ -61,39 +61,39 @@ fn CallWrongSelf(ws: WrongSelf) {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl
 // CHECK:STDOUT:     .WrongSelf = %WrongSelf.decl
 // CHECK:STDOUT:     .CallWrongSelf = %CallWrongSelf
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl = class_decl @Class {} [template = constants.%Class]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F.1 {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl = class_decl @Class [template = constants.%Class] {}
+// CHECK:STDOUT:   %F: <function> = fn_decl @F.1 [template] {
 // CHECK:STDOUT:     %Self.ref.loc25: type = name_ref Self, constants.%Class [template = constants.%Class]
 // CHECK:STDOUT:     %self.loc25_12.1: Class = param self
 // CHECK:STDOUT:     @F.1.%self: Class = bind_name self, %self.loc25_12.1
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %G: <function> = fn_decl @G {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %G: <function> = fn_decl @G [template] {
 // CHECK:STDOUT:     %Self.ref.loc28: type = name_ref Self, constants.%Class [template = constants.%Class]
 // CHECK:STDOUT:     @G.%return: ref Class = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %WrongSelf.decl = class_decl @WrongSelf {} [template = constants.%WrongSelf]
-// CHECK:STDOUT:   %CallWrongSelf: <function> = fn_decl @CallWrongSelf {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %WrongSelf.decl = class_decl @WrongSelf [template = constants.%WrongSelf] {}
+// CHECK:STDOUT:   %CallWrongSelf: <function> = fn_decl @CallWrongSelf [template] {
 // CHECK:STDOUT:     %WrongSelf.ref: type = name_ref WrongSelf, %WrongSelf.decl [template = constants.%WrongSelf]
 // CHECK:STDOUT:     %ws.loc43_18.1: WrongSelf = param ws
 // CHECK:STDOUT:     @CallWrongSelf.%ws: WrongSelf = bind_name ws, %ws.loc43_18.1
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class {
-// CHECK:STDOUT:   %F: <function> = fn_decl @F.1 {
+// CHECK:STDOUT:   %F: <function> = fn_decl @F.1 [template] {
 // CHECK:STDOUT:     %Self.ref.loc11: type = name_ref Self, constants.%Class [template = constants.%Class]
 // CHECK:STDOUT:     %self.loc11_8.1: Class = param self
 // CHECK:STDOUT:     %self.loc11_8.2: Class = bind_name self, %self.loc11_8.1
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %G: <function> = fn_decl @G {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %G: <function> = fn_decl @G [template] {
 // CHECK:STDOUT:     %Self.ref.loc19: type = name_ref Self, constants.%Class [template = constants.%Class]
 // CHECK:STDOUT:     %return.var: ref Class = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%Class
@@ -102,11 +102,11 @@ fn CallWrongSelf(ws: WrongSelf) {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @WrongSelf {
-// CHECK:STDOUT:   %F: <function> = fn_decl @F.2 {
+// CHECK:STDOUT:   %F: <function> = fn_decl @F.2 [template] {
 // CHECK:STDOUT:     %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     %self.loc40_8.1: Class = param self
 // CHECK:STDOUT:     %self.loc40_8.2: Class = bind_name self, %self.loc40_8.1
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%WrongSelf

+ 3 - 3
toolchain/check/testdata/class/fail_todo_generic.carbon

@@ -19,10 +19,10 @@ class C[]();
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .C = %C.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %C.decl = class_decl @C {} [template = constants.%C]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %C.decl = class_decl @C [template = constants.%C] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @C;

+ 8 - 8
toolchain/check/testdata/class/fail_todo_generic_method.carbon

@@ -32,30 +32,30 @@ fn Class(T:! type).F[self: Self](n: T) {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl = class_decl @Class {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl = class_decl @Class [template = constants.%Class] {
 // CHECK:STDOUT:     %T.loc10_13.1: type = param T
 // CHECK:STDOUT:     %T.loc10_13.2: type = bind_symbolic_name T, %T.loc10_13.1 [symbolic]
-// CHECK:STDOUT:   } [template = constants.%Class]
-// CHECK:STDOUT:   %.loc24: <function> = fn_decl @.1 {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %.loc24: <function> = fn_decl @.1 [template] {
 // CHECK:STDOUT:     %T.loc24_10.1: type = param T
 // CHECK:STDOUT:     @.1.%T: type = bind_symbolic_name T, %T.loc24_10.1 [symbolic]
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class {
 // CHECK:STDOUT:   %T.ref.loc11: type = name_ref T, file.%T.loc10_13.2 [symbolic = file.%T.loc10_13.2]
 // CHECK:STDOUT:   %.loc11: <unbound element of class Class> = field_decl a, element0 [template]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {
 // CHECK:STDOUT:     %Self.ref: type = name_ref Self, constants.%Class [template = constants.%Class]
 // CHECK:STDOUT:     %self.loc12_8.1: Class = param self
 // CHECK:STDOUT:     %self.loc12_8.2: Class = bind_name self, %self.loc12_8.1
 // CHECK:STDOUT:     %T.ref.loc12: type = name_ref T, file.%T.loc10_13.2 [symbolic = file.%T.loc10_13.2]
 // CHECK:STDOUT:     %n.loc12_20.1: T = param n
 // CHECK:STDOUT:     %n.loc12_20.2: T = bind_name n, %n.loc12_20.1
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%Class

+ 8 - 8
toolchain/check/testdata/class/fail_todo_import_forward_decl.carbon

@@ -33,10 +33,10 @@ class ForwardDecl {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .ForwardDecl = %ForwardDecl.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %ForwardDecl.decl = class_decl @ForwardDecl {} [template = constants.%ForwardDecl]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %ForwardDecl.decl = class_decl @ForwardDecl [template = constants.%ForwardDecl] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @ForwardDecl;
@@ -50,13 +50,13 @@ class ForwardDecl {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .ForwardDecl = %import_ref
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %import_ref: type = import_ref ir1, inst+1, used [template = constants.%ForwardDecl]
-// CHECK:STDOUT:   %.decl = class_decl @.1 {
-// CHECK:STDOUT:     %ForwardDecl.decl = class_decl @ForwardDecl {} [template = constants.%ForwardDecl]
-// CHECK:STDOUT:   } [template = constants.%.1]
+// CHECK:STDOUT:   %.decl = class_decl @.1 [template = constants.%.1] {
+// CHECK:STDOUT:     %ForwardDecl.decl = class_decl @ForwardDecl [template = constants.%ForwardDecl] {}
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @ForwardDecl;

+ 12 - 12
toolchain/check/testdata/class/fail_todo_modifiers.carbon

@@ -70,19 +70,19 @@ abstract class Abstract {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Access = %Access.decl
 // CHECK:STDOUT:     .Base = %Base.decl
 // CHECK:STDOUT:     .Abstract = %Abstract.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Access.decl = class_decl @Access {} [template = constants.%Access]
-// CHECK:STDOUT:   %Base.decl = class_decl @Base {} [template = constants.%Base]
-// CHECK:STDOUT:   %Abstract.decl = class_decl @Abstract {} [template = constants.%Abstract]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Access.decl = class_decl @Access [template = constants.%Access] {}
+// CHECK:STDOUT:   %Base.decl = class_decl @Base [template = constants.%Base] {}
+// CHECK:STDOUT:   %Abstract.decl = class_decl @Abstract [template = constants.%Abstract] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Access {
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {} [template]
-// CHECK:STDOUT:   %G: <function> = fn_decl @G {} [template]
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {}
+// CHECK:STDOUT:   %G: <function> = fn_decl @G [template] {}
 // CHECK:STDOUT:   %.loc22: <unbound element of class Access> = field_decl k, element0 [template]
 // CHECK:STDOUT:   %.loc27: <unbound element of class Access> = field_decl l, element1 [template]
 // CHECK:STDOUT:
@@ -95,8 +95,8 @@ abstract class Abstract {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Base {
-// CHECK:STDOUT:   %H: <function> = fn_decl @H {} [template]
-// CHECK:STDOUT:   %I: <function> = fn_decl @I {} [template]
+// CHECK:STDOUT:   %H: <function> = fn_decl @H [template] {}
+// CHECK:STDOUT:   %I: <function> = fn_decl @I [template] {}
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%Base
@@ -105,9 +105,9 @@ abstract class Abstract {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Abstract {
-// CHECK:STDOUT:   %J: <function> = fn_decl @J {} [template]
-// CHECK:STDOUT:   %K: <function> = fn_decl @K {} [template]
-// CHECK:STDOUT:   %L: <function> = fn_decl @L {} [template]
+// CHECK:STDOUT:   %J: <function> = fn_decl @J [template] {}
+// CHECK:STDOUT:   %K: <function> = fn_decl @K [template] {}
+// CHECK:STDOUT:   %L: <function> = fn_decl @L [template] {}
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%Abstract

+ 7 - 7
toolchain/check/testdata/class/fail_unbound_field.carbon

@@ -30,21 +30,21 @@ fn G() -> i32 {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl
 // CHECK:STDOUT:     .G = %G
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl = class_decl @Class {} [template = constants.%Class]
-// CHECK:STDOUT:   %G: <function> = fn_decl @G {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl = class_decl @Class [template = constants.%Class] {}
+// CHECK:STDOUT:   %G: <function> = fn_decl @G [template] {
 // CHECK:STDOUT:     %return.var: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class {
 // CHECK:STDOUT:   %.loc8: <unbound element of class Class> = field_decl field, element0 [template]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {
 // CHECK:STDOUT:     %return.var: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%Class

+ 5 - 5
toolchain/check/testdata/class/fail_unknown_member.carbon

@@ -26,17 +26,17 @@ fn G(c: Class) -> i32 {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl
 // CHECK:STDOUT:     .G = %G
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl = class_decl @Class {} [template = constants.%Class]
-// CHECK:STDOUT:   %G: <function> = fn_decl @G {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl = class_decl @Class [template = constants.%Class] {}
+// CHECK:STDOUT:   %G: <function> = fn_decl @G [template] {
 // CHECK:STDOUT:     %Class.ref: type = name_ref Class, %Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     %c.loc11_6.1: Class = param c
 // CHECK:STDOUT:     @G.%c: Class = bind_name c, %c.loc11_6.1
 // CHECK:STDOUT:     %return.var: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class {

+ 4 - 4
toolchain/check/testdata/class/field_access.carbon

@@ -29,12 +29,12 @@ fn Run() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl
 // CHECK:STDOUT:     .Run = %Run
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl = class_decl @Class {} [template = constants.%Class]
-// CHECK:STDOUT:   %Run: <function> = fn_decl @Run {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl = class_decl @Class [template = constants.%Class] {}
+// CHECK:STDOUT:   %Run: <function> = fn_decl @Run [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class {

+ 4 - 4
toolchain/check/testdata/class/field_access_in_value.carbon

@@ -30,12 +30,12 @@ fn Test() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl
 // CHECK:STDOUT:     .Test = %Test
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl = class_decl @Class {} [template = constants.%Class]
-// CHECK:STDOUT:   %Test: <function> = fn_decl @Test {} [template]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl = class_decl @Class [template = constants.%Class] {}
+// CHECK:STDOUT:   %Test: <function> = fn_decl @Test [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class {

+ 5 - 5
toolchain/check/testdata/class/forward_declared.carbon

@@ -16,12 +16,12 @@ fn F(p: Class*) -> Class* { return p; }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl
 // CHECK:STDOUT:     .F = %F
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl = class_decl @Class {} [template = constants.%Class]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl = class_decl @Class [template = constants.%Class] {}
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {
 // CHECK:STDOUT:     %Class.ref.loc9_9: type = name_ref Class, %Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     %.loc9_14: type = ptr_type Class [template = constants.%.1]
 // CHECK:STDOUT:     %p.loc9_6.1: Class* = param p
@@ -29,7 +29,7 @@ fn F(p: Class*) -> Class* { return p; }
 // CHECK:STDOUT:     %Class.ref.loc9_20: type = name_ref Class, %Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     %.loc9_25: type = ptr_type Class [template = constants.%.1]
 // CHECK:STDOUT:     %return.var: ref Class* = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class;

+ 18 - 18
toolchain/check/testdata/class/import.carbon

@@ -59,17 +59,17 @@ fn Run() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Empty = %Empty.decl
 // CHECK:STDOUT:     .Field = %Field.decl
 // CHECK:STDOUT:     .ForwardDeclared = %ForwardDeclared.decl.loc11
 // CHECK:STDOUT:     .Incomplete = %Incomplete.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Empty.decl = class_decl @Empty {} [template = constants.%Empty]
-// CHECK:STDOUT:   %Field.decl = class_decl @Field {} [template = constants.%Field]
-// CHECK:STDOUT:   %ForwardDeclared.decl.loc11 = class_decl @ForwardDeclared {} [template = constants.%ForwardDeclared]
-// CHECK:STDOUT:   %ForwardDeclared.decl.loc13 = class_decl @ForwardDeclared {} [template = constants.%ForwardDeclared]
-// CHECK:STDOUT:   %Incomplete.decl = class_decl @Incomplete {} [template = constants.%Incomplete]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Empty.decl = class_decl @Empty [template = constants.%Empty] {}
+// CHECK:STDOUT:   %Field.decl = class_decl @Field [template = constants.%Field] {}
+// CHECK:STDOUT:   %ForwardDeclared.decl.loc11 = class_decl @ForwardDeclared [template = constants.%ForwardDeclared] {}
+// CHECK:STDOUT:   %ForwardDeclared.decl.loc13 = class_decl @ForwardDeclared [template = constants.%ForwardDeclared] {}
+// CHECK:STDOUT:   %Incomplete.decl = class_decl @Incomplete [template = constants.%Incomplete] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Empty {
@@ -86,18 +86,18 @@ fn Run() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @ForwardDeclared {
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {
 // CHECK:STDOUT:     %Self.ref.loc14: type = name_ref Self, constants.%ForwardDeclared [template = constants.%ForwardDeclared]
 // CHECK:STDOUT:     %self.loc14_8.1: ForwardDeclared = param self
 // CHECK:STDOUT:     %self.loc14_8.2: ForwardDeclared = bind_name self, %self.loc14_8.1
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %G: <function> = fn_decl @G {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %G: <function> = fn_decl @G [template] {
 // CHECK:STDOUT:     %Self.ref.loc15: type = name_ref Self, constants.%ForwardDeclared [template = constants.%ForwardDeclared]
 // CHECK:STDOUT:     %.loc15_23: type = ptr_type ForwardDeclared [template = constants.%.4]
 // CHECK:STDOUT:     %self.loc15_13.1: ForwardDeclared* = param self
 // CHECK:STDOUT:     %self.loc15_13.3: ForwardDeclared* = bind_name self, %self.loc15_13.1
 // CHECK:STDOUT:     %.loc15_8: ForwardDeclared* = addr_pattern %self.loc15_13.3
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:
 // CHECK:STDOUT: !members:
 // CHECK:STDOUT:   .Self = constants.%ForwardDeclared
@@ -134,18 +134,18 @@ fn Run() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Empty = %import_ref.1
 // CHECK:STDOUT:     .Field = %import_ref.2
 // CHECK:STDOUT:     .ForwardDeclared = %import_ref.3
 // CHECK:STDOUT:     .Incomplete = %import_ref.4
 // CHECK:STDOUT:     .Run = %Run
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %import_ref.1: type = import_ref ir1, inst+1, used [template = constants.%Empty]
 // CHECK:STDOUT:   %import_ref.2: type = import_ref ir1, inst+4, used [template = constants.%Field]
 // CHECK:STDOUT:   %import_ref.3: type = import_ref ir1, inst+11, used [template = constants.%ForwardDeclared]
 // CHECK:STDOUT:   %import_ref.4: type = import_ref ir1, inst+25, used [template = constants.%Incomplete]
-// CHECK:STDOUT:   %Run: <function> = fn_decl @Run {} [template]
+// CHECK:STDOUT:   %Run: <function> = fn_decl @Run [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Empty {
@@ -179,7 +179,7 @@ fn Run() {
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @Run() {
 // CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   %Empty.decl = class_decl @Empty {} [template = constants.%Empty]
+// CHECK:STDOUT:   %Empty.decl = class_decl @Empty [template = constants.%Empty] {}
 // CHECK:STDOUT:   %Empty.ref: type = name_ref Empty, file.%import_ref.1 [template = constants.%Empty]
 // CHECK:STDOUT:   %a.var: ref Empty = var a
 // CHECK:STDOUT:   %a: ref Empty = bind_name a, %a.var
@@ -187,7 +187,7 @@ fn Run() {
 // CHECK:STDOUT:   %.loc7_19.2: init Empty = class_init (), %a.var [template = constants.%.4]
 // CHECK:STDOUT:   %.loc7_19.3: init Empty = converted %.loc7_19.1, %.loc7_19.2 [template = constants.%.4]
 // CHECK:STDOUT:   assign %a.var, %.loc7_19.3
-// CHECK:STDOUT:   %Field.decl = class_decl @Field {} [template = constants.%Field]
+// CHECK:STDOUT:   %Field.decl = class_decl @Field [template = constants.%Field] {}
 // CHECK:STDOUT:   %Field.ref: type = name_ref Field, file.%import_ref.2 [template = constants.%Field]
 // CHECK:STDOUT:   %b.var: ref Field = var b
 // CHECK:STDOUT:   %b: ref Field = bind_name b, %b.var
@@ -202,7 +202,7 @@ fn Run() {
 // CHECK:STDOUT:   %.loc10_4: ref i32 = class_element_access %b.ref, element0
 // CHECK:STDOUT:   %.loc10_9: i32 = int_literal 2 [template = constants.%.10]
 // CHECK:STDOUT:   assign %.loc10_4, %.loc10_9
-// CHECK:STDOUT:   %ForwardDeclared.decl = class_decl @ForwardDeclared {} [template = constants.%ForwardDeclared]
+// CHECK:STDOUT:   %ForwardDeclared.decl = class_decl @ForwardDeclared [template = constants.%ForwardDeclared] {}
 // CHECK:STDOUT:   %ForwardDeclared.ref.loc12: type = name_ref ForwardDeclared, file.%import_ref.3 [template = constants.%ForwardDeclared]
 // CHECK:STDOUT:   %c.var: ref ForwardDeclared = var c
 // CHECK:STDOUT:   %c: ref ForwardDeclared = bind_name c, %c.var
@@ -225,7 +225,7 @@ fn Run() {
 // CHECK:STDOUT:   %c.ref.loc16: ref ForwardDeclared = name_ref c, %c
 // CHECK:STDOUT:   %.loc16_29: ForwardDeclared* = addr_of %c.ref.loc16
 // CHECK:STDOUT:   assign %d.var, %.loc16_29
-// CHECK:STDOUT:   %Incomplete.decl = class_decl @Incomplete {} [template = constants.%Incomplete]
+// CHECK:STDOUT:   %Incomplete.decl = class_decl @Incomplete [template = constants.%Incomplete] {}
 // CHECK:STDOUT:   %Incomplete.ref: type = name_ref Incomplete, file.%import_ref.4 [template = constants.%Incomplete]
 // CHECK:STDOUT:   %.loc18: type = ptr_type Incomplete [template = constants.%.13]
 // CHECK:STDOUT:   %e.var: ref Incomplete* = var e

+ 13 - 13
toolchain/check/testdata/class/import_base.carbon

@@ -45,25 +45,25 @@ fn Run() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Base = %Base.decl
 // CHECK:STDOUT:     .Child = %Child.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Base.decl = class_decl @Base {} [template = constants.%Base]
-// CHECK:STDOUT:   %Child.decl = class_decl @Child {} [template = constants.%Child]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Base.decl = class_decl @Base [template = constants.%Base] {}
+// CHECK:STDOUT:   %Child.decl = class_decl @Child [template = constants.%Child] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Base {
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {
 // CHECK:STDOUT:     %Self.ref.loc5: type = name_ref Self, constants.%Base [template = constants.%Base]
 // CHECK:STDOUT:     %self.loc5_8.1: Base = param self
 // CHECK:STDOUT:     %self.loc5_8.2: Base = bind_name self, %self.loc5_8.1
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Unused: <function> = fn_decl @Unused {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Unused: <function> = fn_decl @Unused [template] {
 // CHECK:STDOUT:     %Self.ref.loc6: type = name_ref Self, constants.%Base [template = constants.%Base]
 // CHECK:STDOUT:     %self.loc6_13.1: Base = param self
 // CHECK:STDOUT:     %self.loc6_13.2: Base = bind_name self, %self.loc6_13.1
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %.loc8: <unbound element of class Base> = field_decl x, element0 [template]
 // CHECK:STDOUT:   %.loc9: <unbound element of class Base> = field_decl unused, element1 [template]
 // CHECK:STDOUT:
@@ -111,14 +111,14 @@ fn Run() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Base = %import_ref.1
 // CHECK:STDOUT:     .Child = %import_ref.2
 // CHECK:STDOUT:     .Run = %Run
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %import_ref.1 = import_ref ir1, inst+1, unused
 // CHECK:STDOUT:   %import_ref.2: type = import_ref ir1, inst+19, used [template = constants.%Child]
-// CHECK:STDOUT:   %Run: <function> = fn_decl @Run {} [template]
+// CHECK:STDOUT:   %Run: <function> = fn_decl @Run [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Child {
@@ -148,8 +148,8 @@ fn Run() {
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @Run() {
 // CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   %Child.decl = class_decl @Child {} [template = constants.%Child]
-// CHECK:STDOUT:   %Base.decl = class_decl @Base {} [template = constants.%Base]
+// CHECK:STDOUT:   %Child.decl = class_decl @Child [template = constants.%Child] {}
+// CHECK:STDOUT:   %Base.decl = class_decl @Base [template = constants.%Base] {}
 // CHECK:STDOUT:   %Child.ref: type = name_ref Child, file.%import_ref.2 [template = constants.%Child]
 // CHECK:STDOUT:   %a.var: ref Child = var a
 // CHECK:STDOUT:   %a: ref Child = bind_name a, %a.var

+ 7 - 7
toolchain/check/testdata/class/import_member_cycle.carbon

@@ -32,10 +32,10 @@ fn Run() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Cycle = %Cycle.decl
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Cycle.decl = class_decl @Cycle {} [template = constants.%Cycle]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Cycle.decl = class_decl @Cycle [template = constants.%Cycle] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Cycle {
@@ -57,12 +57,12 @@ fn Run() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Cycle = %import_ref
 // CHECK:STDOUT:     .Run = %Run
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %import_ref: type = import_ref ir1, inst+1, used [template = constants.%Cycle]
-// CHECK:STDOUT:   %Run: <function> = fn_decl @Run {} [template]
+// CHECK:STDOUT:   %Run: <function> = fn_decl @Run [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Cycle {
@@ -76,7 +76,7 @@ fn Run() {
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @Run() {
 // CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   %Cycle.decl = class_decl @Cycle {} [template = constants.%Cycle]
+// CHECK:STDOUT:   %Cycle.decl = class_decl @Cycle [template = constants.%Cycle] {}
 // CHECK:STDOUT:   %Cycle.ref: type = name_ref Cycle, file.%import_ref [template = constants.%Cycle]
 // CHECK:STDOUT:   %.loc7: type = ptr_type Cycle [template = constants.%.1]
 // CHECK:STDOUT:   %a.var: ref Cycle* = var a

+ 8 - 8
toolchain/check/testdata/class/import_struct_cyle.carbon

@@ -38,17 +38,17 @@ fn Run() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Cycle = %Cycle.decl.loc4
 // CHECK:STDOUT:     .a = %a
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Cycle.decl.loc4 = class_decl @Cycle {} [template = constants.%Cycle]
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Cycle.decl.loc4 = class_decl @Cycle [template = constants.%Cycle] {}
 // CHECK:STDOUT:   %Cycle.ref: type = name_ref Cycle, %Cycle.decl.loc4 [template = constants.%Cycle]
 // CHECK:STDOUT:   %.loc6_18: type = ptr_type Cycle [template = constants.%.1]
 // CHECK:STDOUT:   %.loc6_19: type = struct_type {.b: Cycle*} [template = constants.%.2]
 // CHECK:STDOUT:   %a.var: ref {.b: Cycle*} = var a
 // CHECK:STDOUT:   %a: ref {.b: Cycle*} = bind_name a, %a.var
-// CHECK:STDOUT:   %Cycle.decl.loc8 = class_decl @Cycle {} [template = constants.%Cycle]
+// CHECK:STDOUT:   %Cycle.decl.loc8 = class_decl @Cycle [template = constants.%Cycle] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Cycle {
@@ -74,14 +74,14 @@ fn Run() {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Cycle = %import_ref.1
 // CHECK:STDOUT:     .a = %import_ref.2
 // CHECK:STDOUT:     .Run = %Run
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT:   %import_ref.1 = import_ref ir1, inst+1, unused
 // CHECK:STDOUT:   %import_ref.2: ref {.b: Cycle*} = import_ref ir1, inst+11, used
-// CHECK:STDOUT:   %Run: <function> = fn_decl @Run {} [template]
+// CHECK:STDOUT:   %Run: <function> = fn_decl @Run [template] {}
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Cycle {
@@ -95,7 +95,7 @@ fn Run() {
 // CHECK:STDOUT:
 // CHECK:STDOUT: fn @Run() {
 // CHECK:STDOUT: !entry:
-// CHECK:STDOUT:   %Cycle.decl = class_decl @Cycle {} [template = constants.%Cycle]
+// CHECK:STDOUT:   %Cycle.decl = class_decl @Cycle [template = constants.%Cycle] {}
 // CHECK:STDOUT:   %a.ref.loc7_3: ref {.b: Cycle*} = name_ref a, file.%import_ref.2
 // CHECK:STDOUT:   %.loc7_4: ref Cycle* = struct_access %a.ref.loc7_3, element0
 // CHECK:STDOUT:   %a.ref.loc7_11: ref {.b: Cycle*} = name_ref a, file.%import_ref.2

+ 7 - 7
toolchain/check/testdata/class/init.carbon

@@ -30,13 +30,13 @@ fn MakeReorder(n: i32, next: Class*) -> Class {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl
 // CHECK:STDOUT:     .Make = %Make
 // CHECK:STDOUT:     .MakeReorder = %MakeReorder
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl = class_decl @Class {} [template = constants.%Class]
-// CHECK:STDOUT:   %Make: <function> = fn_decl @Make {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl = class_decl @Class [template = constants.%Class] {}
+// CHECK:STDOUT:   %Make: <function> = fn_decl @Make [template] {
 // CHECK:STDOUT:     %n.loc12_9.1: i32 = param n
 // CHECK:STDOUT:     @Make.%n: i32 = bind_name n, %n.loc12_9.1
 // CHECK:STDOUT:     %Class.ref.loc12_23: type = name_ref Class, %Class.decl [template = constants.%Class]
@@ -45,8 +45,8 @@ fn MakeReorder(n: i32, next: Class*) -> Class {
 // CHECK:STDOUT:     @Make.%next: Class* = bind_name next, %next.loc12_17.1
 // CHECK:STDOUT:     %Class.ref.loc12_34: type = name_ref Class, %Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     @Make.%return: ref Class = var <return slot>
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %MakeReorder: <function> = fn_decl @MakeReorder {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %MakeReorder: <function> = fn_decl @MakeReorder [template] {
 // CHECK:STDOUT:     %n.loc16_16.1: i32 = param n
 // CHECK:STDOUT:     @MakeReorder.%n: i32 = bind_name n, %n.loc16_16.1
 // CHECK:STDOUT:     %Class.ref.loc16_30: type = name_ref Class, %Class.decl [template = constants.%Class]
@@ -55,7 +55,7 @@ fn MakeReorder(n: i32, next: Class*) -> Class {
 // CHECK:STDOUT:     @MakeReorder.%next: Class* = bind_name next, %next.loc16_24.1
 // CHECK:STDOUT:     %Class.ref.loc16_41: type = name_ref Class, %Class.decl [template = constants.%Class]
 // CHECK:STDOUT:     @MakeReorder.%return: ref Class = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class {

+ 5 - 5
toolchain/check/testdata/class/init_as.carbon

@@ -26,14 +26,14 @@ fn F() -> i32 {
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: file {
-// CHECK:STDOUT:   package: <namespace> = namespace {
+// CHECK:STDOUT:   package: <namespace> = namespace [template] {
 // CHECK:STDOUT:     .Class = %Class.decl
 // CHECK:STDOUT:     .F = %F
-// CHECK:STDOUT:   } [template]
-// CHECK:STDOUT:   %Class.decl = class_decl @Class {} [template = constants.%Class]
-// CHECK:STDOUT:   %F: <function> = fn_decl @F {
+// CHECK:STDOUT:   }
+// CHECK:STDOUT:   %Class.decl = class_decl @Class [template = constants.%Class] {}
+// CHECK:STDOUT:   %F: <function> = fn_decl @F [template] {
 // CHECK:STDOUT:     %return.var: ref i32 = var <return slot>
-// CHECK:STDOUT:   } [template]
+// CHECK:STDOUT:   }
 // CHECK:STDOUT: }
 // CHECK:STDOUT:
 // CHECK:STDOUT: class @Class {

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio