Reduce the size of formatted SemIR. (#4534)

- Do not include entities imported from files that we are not dumping.
- Do not include constants and import_refs that are not referenced by
something that we are including in the formatted output.

---------

Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
Co-authored-by: Carbon Infra Bot <carbon-external-infra@google.com>
This commit is contained in:
Richard Smith
2024-11-15 21:00:26 +00:00
committed by GitHub
co-authored by Jon Ross-Perkins Carbon Infra Bot
parent 3c18a6c477
commit 4ee65ef58a
557 changed files with 319 additions and 11200 deletions
-4
View File
@@ -21,7 +21,6 @@ interface I {
// CHECK:STDOUT: %.1: type = assoc_entity_type %I.type, type [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @I.%T [template]
// CHECK:STDOUT: %Int32.type: type = fn_type @Int32 [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Int32: %Int32.type = struct_value () [template]
// CHECK:STDOUT: %.3: type = assoc_entity_type %I.type, i32 [template]
// CHECK:STDOUT: %.4: %.3 = assoc_entity element1, @I.%N [template]
@@ -33,7 +32,6 @@ interface I {
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -62,5 +60,3 @@ interface I {
// CHECK:STDOUT: witness = (%T, %N)
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Int32() -> type = "int.make_type_32";
// CHECK:STDOUT:
@@ -24,24 +24,6 @@ interface I {
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
// CHECK:STDOUT: %Self.1: %I.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %.1: i32 = int_value 42 [template]
// CHECK:STDOUT: %ImplicitAs.type.1: type = generic_interface_type @ImplicitAs [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %ImplicitAs: %ImplicitAs.type.1 = struct_value () [template]
// CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic]
// CHECK:STDOUT: %ImplicitAs.type.2: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic]
// CHECK:STDOUT: %Self.2: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2) = bind_symbolic_name Self, 1 [symbolic]
// CHECK:STDOUT: %Dest.patt: type = symbolic_binding_pattern Dest, 0 [symbolic]
// CHECK:STDOUT: %Self.3: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic]
// CHECK:STDOUT: %Convert.type.1: type = fn_type @Convert, @ImplicitAs(%Dest) [symbolic]
// CHECK:STDOUT: %Convert.1: %Convert.type.1 = struct_value () [symbolic]
// CHECK:STDOUT: %.2: type = assoc_entity_type %ImplicitAs.type.2, %Convert.type.1 [symbolic]
// CHECK:STDOUT: %.3: %.2 = assoc_entity element0, imports.%import_ref.5 [symbolic]
// CHECK:STDOUT: %ImplicitAs.type.3: type = facet_type <@ImplicitAs, @ImplicitAs(type)> [template]
// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert, @ImplicitAs(type) [template]
// CHECK:STDOUT: %Convert.2: %Convert.type.2 = struct_value () [template]
// CHECK:STDOUT: %.4: type = assoc_entity_type %ImplicitAs.type.3, %Convert.type.2 [template]
// CHECK:STDOUT: %.5: %.4 = assoc_entity element0, imports.%import_ref.5 [template]
// CHECK:STDOUT: %.6: %.2 = assoc_entity element0, imports.%import_ref.6 [symbolic]
// CHECK:STDOUT: %.7: type = assoc_entity_type %I.type, type [template]
// CHECK:STDOUT: %.8: %.7 = assoc_entity element0, @I.%T [template]
// CHECK:STDOUT: }
@@ -52,12 +34,6 @@ interface I {
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+48, loaded [template = constants.%ImplicitAs]
// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+54, unloaded
// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.2) = import_ref Core//prelude/operators/as, inst+76, loaded [symbolic = @ImplicitAs.%.2 (constants.%.6)]
// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+69, unloaded
// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+69, unloaded
// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+69, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -82,65 +58,3 @@ interface I {
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic interface @ImplicitAs(constants.%Dest: type) {
// CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic = %Dest (constants.%Dest)]
// CHECK:STDOUT: %Dest.patt: type = symbolic_binding_pattern Dest, 0 [symbolic = %Dest.patt (constants.%Dest.patt)]
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.2)]
// CHECK:STDOUT: %Self: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.3)]
// CHECK:STDOUT: %Convert.type: type = fn_type @Convert, @ImplicitAs(%Dest) [symbolic = %Convert.type (constants.%Convert.type.1)]
// CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type.1) = struct_value () [symbolic = %Convert (constants.%Convert.1)]
// CHECK:STDOUT: %.1: type = assoc_entity_type @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2), @ImplicitAs.%Convert.type (%Convert.type.1) [symbolic = %.1 (constants.%.2)]
// CHECK:STDOUT: %.2: @ImplicitAs.%.1 (%.2) = assoc_entity element0, imports.%import_ref.5 [symbolic = %.2 (constants.%.3)]
// CHECK:STDOUT:
// CHECK:STDOUT: interface {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%import_ref.2
// CHECK:STDOUT: .Convert = imports.%import_ref.3
// CHECK:STDOUT: witness = (imports.%import_ref.4)
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @Convert(constants.%Dest: type, constants.%Self.2: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2)) {
// CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic = %Dest (constants.%Dest)]
// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%Dest)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.2)]
// CHECK:STDOUT: %Self: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.3)]
// CHECK:STDOUT:
// CHECK:STDOUT: fn[%self.param_patt: @Convert.%Self (%Self.3)]() -> @Convert.%Dest (%Dest);
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @ImplicitAs(constants.%Dest) {
// CHECK:STDOUT: %Dest => constants.%Dest
// CHECK:STDOUT: %Dest.patt => constants.%Dest
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @ImplicitAs(@ImplicitAs.%Dest) {
// CHECK:STDOUT: %Dest => constants.%Dest
// CHECK:STDOUT: %Dest.patt => constants.%Dest
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @ImplicitAs(@Convert.%Dest) {
// CHECK:STDOUT: %Dest => constants.%Dest
// CHECK:STDOUT: %Dest.patt => constants.%Dest
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Convert(constants.%Dest, constants.%Self.2) {
// CHECK:STDOUT: %Dest => constants.%Dest
// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.2
// CHECK:STDOUT: %Self => constants.%Self.2
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @ImplicitAs(type) {
// CHECK:STDOUT: %Dest => type
// CHECK:STDOUT: %Dest.patt => type
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.3
// CHECK:STDOUT: %Self => constants.%Self.3
// CHECK:STDOUT: %Convert.type => constants.%Convert.type.2
// CHECK:STDOUT: %Convert => constants.%Convert.2
// CHECK:STDOUT: %.1 => constants.%.4
// CHECK:STDOUT: %.2 => constants.%.5
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -26,7 +26,6 @@ interface I {
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %Int32.type: type = fn_type @Int32 [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Int32: %Int32.type = struct_value () [template]
// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template]
// CHECK:STDOUT: %tuple.type.2: type = tuple_type (i32, i32) [template]
@@ -43,7 +42,6 @@ interface I {
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -81,5 +79,3 @@ interface I {
// CHECK:STDOUT: witness = (%T, %N)
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Int32() -> type = "int.make_type_32";
// CHECK:STDOUT:
@@ -27,7 +27,6 @@ interface Interface {
// CHECK:STDOUT: %Interface.type: type = facet_type <@Interface> [template]
// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: %.1: type = assoc_entity_type %Interface.type, %F.type [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @Interface.%F.decl [template]
@@ -45,7 +44,6 @@ interface Interface {
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -103,8 +101,6 @@ interface Interface {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Int32() -> type = "int.make_type_32";
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @G(@Interface.%Self: %Interface.type) {
// CHECK:STDOUT:
// CHECK:STDOUT: fn(%a.param_patt: i32, %b.param_patt: i32) -> i32 = "int.sadd";
@@ -69,7 +69,6 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; }
// CHECK:STDOUT: %Interface.type: type = facet_type <@Interface> [template]
// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: %.1: type = assoc_entity_type %Interface.type, %F.type [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @Interface.%F.decl [template]
@@ -91,7 +90,6 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; }
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -170,8 +168,6 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; }
// CHECK:STDOUT: fn();
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Int32() -> type = "int.make_type_32";
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @G(@Interface.%Self: %Interface.type) {
// CHECK:STDOUT:
// CHECK:STDOUT: fn(%a.param_patt: i32, %b.param_patt: i32) -> i32;
@@ -209,11 +205,9 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; }
// CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic]
// CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 1 [symbolic]
// CHECK:STDOUT: %F.type: type = fn_type @F, @C(%Self) [symbolic]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [symbolic]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
// CHECK:STDOUT: %.3: type = ptr_type %.1 [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
@@ -334,5 +328,5 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; }
// CHECK:STDOUT: %U.patt.loc14 => constants.%U
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @C(@C.%Self) {}
// CHECK:STDOUT: specific @C(%Self) {}
// CHECK:STDOUT:
@@ -18,7 +18,6 @@ fn F(e: Empty) {}
// CHECK:STDOUT: %Empty.type: type = facet_type <@Empty> [template]
// CHECK:STDOUT: %Self: %Empty.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -22,7 +22,6 @@ fn F(T:! Empty) {
// CHECK:STDOUT: %T: %Empty.type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %T.patt: %Empty.type = symbolic_binding_pattern T, 0 [symbolic]
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -165,7 +165,7 @@ fn H() {
// CHECK:STDOUT: %U.patt.loc12_8.1 => constants.%U
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @I(@I.%T.loc11_13.2) {
// CHECK:STDOUT: specific @I(%T.loc11_13.2) {
// CHECK:STDOUT: %T.loc11_13.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc11_13.2 => constants.%T
// CHECK:STDOUT: }
@@ -25,7 +25,6 @@ interface ForwardDeclared {
// CHECK:STDOUT: %ForwardDeclared.type: type = facet_type <@ForwardDeclared> [template]
// CHECK:STDOUT: %Self.2: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: %.1: type = assoc_entity_type %ForwardDeclared.type, %F.type [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @ForwardDeclared.%F.decl [template]
@@ -39,7 +39,6 @@ class C {
// CHECK:STDOUT: %.3: <witness> = interface_witness (%F.2) [template]
// CHECK:STDOUT: %.4: type = struct_type {} [template]
// CHECK:STDOUT: %.5: <witness> = complete_type_witness %.4 [template]
// CHECK:STDOUT: %.6: type = ptr_type %.4 [template]
// CHECK:STDOUT: %struct: %C = struct_value () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -64,7 +64,6 @@ fn UseEmpty(i: I) {}
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
@@ -90,9 +89,7 @@ fn UseEmpty(i: I) {}
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %UseEmpty.type: type = fn_type @UseEmpty [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %UseEmpty: %UseEmpty.type = struct_value () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -37,7 +37,6 @@ interface Outer {
// CHECK:STDOUT: %Interface.type: type = facet_type <@Interface> [template]
// CHECK:STDOUT: %Self.1: %Interface.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template]
// CHECK:STDOUT: %Outer.type: type = facet_type <@Outer> [template]
// CHECK:STDOUT: %Self.2: %Outer.type = bind_symbolic_name Self, 0 [symbolic]
@@ -131,7 +130,7 @@ interface Outer {
// CHECK:STDOUT:
// CHECK:STDOUT: specific @.1(constants.%Self.2, constants.%Self.3) {}
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Inner(@Inner.%Self.2) {}
// CHECK:STDOUT: specific @Inner(%Self.2) {}
// CHECK:STDOUT:
// CHECK:STDOUT: specific @F.2(constants.%Self.2, constants.%Self.3) {}
// CHECK:STDOUT:
@@ -18,12 +18,6 @@ interface I {
// CHECK:STDOUT: --- fail_assoc_const_not_binding.carbon
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %T: type = bind_symbolic_name T [symbolic]
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T [symbolic]
// CHECK:STDOUT: %U: type = bind_symbolic_name U [symbolic]
// CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U [symbolic]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {}
@@ -30,7 +30,6 @@ alias UseOther = I.other;
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -18,8 +18,6 @@ interface I {
// CHECK:STDOUT: --- fail_assoc_const_template.carbon
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {}
@@ -77,7 +77,6 @@ interface Class { }
// CHECK:STDOUT: %.type: type = facet_type <@.1> [template]
// CHECK:STDOUT: %Self.2: %.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: %.1: type = assoc_entity_type %.type, %F.type [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @.1.%F.decl [template]
@@ -125,7 +124,6 @@ interface Class { }
// CHECK:STDOUT: %.type: type = facet_type <@.1> [template]
// CHECK:STDOUT: %Self.2: %.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: %.1: type = assoc_entity_type %.type, %F.type [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @.1.%F.decl [template]
@@ -181,7 +179,6 @@ interface Class { }
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %Function.type: type = fn_type @Function [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Function: %Function.type = struct_value () [template]
// CHECK:STDOUT: %.type: type = facet_type <@.1> [template]
// CHECK:STDOUT: }
@@ -165,7 +165,7 @@ interface DifferentParams(T:! ()) {}
// CHECK:STDOUT: %T.patt.loc19_22.2 => constants.%T.1
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @.1(@.1.%T.loc19_22.2) {
// CHECK:STDOUT: specific @.1(%T.loc19_22.2) {
// CHECK:STDOUT: %T.loc19_22.2 => constants.%T.1
// CHECK:STDOUT: %T.patt.loc19_22.2 => constants.%T.1
// CHECK:STDOUT: }
@@ -185,7 +185,7 @@ interface DifferentParams(T:! ()) {}
// CHECK:STDOUT: %T.patt.loc38_27.2 => constants.%T.2
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @.3(@.3.%T.loc38_27.2) {
// CHECK:STDOUT: specific @.3(%T.loc38_27.2) {
// CHECK:STDOUT: %T.loc38_27.2 => constants.%T.2
// CHECK:STDOUT: %T.patt.loc38_27.2 => constants.%T.2
// CHECK:STDOUT: }
@@ -51,7 +51,6 @@ let U: (type where .Self impls type).missing = {};
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %.Self: type = bind_symbolic_name .Self, 0 [symbolic]
// CHECK:STDOUT: %type_where: type = facet_type <type where TODO> [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -54,7 +54,6 @@ interface BeingDefined {
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %Undefined.type: type = facet_type <@Undefined> [template]
// CHECK:STDOUT: %.type.1: type = fn_type @.1 [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %.1: %.type.1 = struct_value () [template]
// CHECK:STDOUT: %Test.type: type = fn_type @Test [template]
// CHECK:STDOUT: %Test: %Test.type = struct_value () [template]
@@ -33,7 +33,6 @@ fn F() {
// CHECK:STDOUT: %Interface.type: type = facet_type <@Interface> [template]
// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template]
// CHECK:STDOUT: %.1: type = assoc_entity_type %Interface.type, %F.type.1 [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @Interface.%F.decl [template]
@@ -153,7 +153,6 @@ interface I {
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: %.1: type = assoc_entity_type %I.type, %F.type [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @I.%F.decl [template]
@@ -202,7 +201,6 @@ interface I {
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: %.1: type = assoc_entity_type %I.type, %F.type [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @I.%F.decl [template]
@@ -25,7 +25,6 @@ interface Interface {
// CHECK:STDOUT: %Interface.type: type = facet_type <@Interface> [template]
// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: %.1: type = assoc_entity_type %Interface.type, %F.type [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @Interface.%F.decl [template]
@@ -31,7 +31,6 @@ fn CallFacet(T:! Interface, x: T) {
// CHECK:STDOUT: %Interface.type: type = facet_type <@Interface> [template]
// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: %.1: type = assoc_entity_type %Interface.type, %F.type [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @Interface.%F.decl [template]
@@ -27,7 +27,6 @@ fn I(T:! type).F[self: Self]() -> Self { return self; }
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
// CHECK:STDOUT: %I.type.1: type = generic_interface_type @I [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %I: %I.type.1 = struct_value () [template]
// CHECK:STDOUT: %I.type.2: type = facet_type <@I, @I(%T)> [symbolic]
// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic]
@@ -162,7 +161,7 @@ fn I(T:! type).F[self: Self]() -> Self { return self; }
// CHECK:STDOUT: %Self => constants.%Self
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @I(@I.%T.loc11_13.2) {
// CHECK:STDOUT: specific @I(%T.loc11_13.2) {
// CHECK:STDOUT: %T.loc11_13.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc11_13.2 => constants.%T
// CHECK:STDOUT: }
@@ -26,7 +26,6 @@ interface Modifiers {
// CHECK:STDOUT: %Modifiers.type: type = facet_type <@Modifiers> [template]
// CHECK:STDOUT: %Self: %Modifiers.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %Final.type: type = fn_type @Final [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Final: %Final.type = struct_value () [template]
// CHECK:STDOUT: %.1: type = assoc_entity_type %Modifiers.type, %Final.type [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @Modifiers.%Final.decl [template]
@@ -90,7 +90,6 @@ fn G(T:! Generic(B)) {
// CHECK:STDOUT: %.6: type = assoc_entity_type %WithAssocFn.type.3, %F.type.3 [template]
// CHECK:STDOUT: %.7: %.6 = assoc_entity element0, @WithAssocFn.%F.decl [template]
// CHECK:STDOUT: %.8: <witness> = interface_witness (%F.2) [template]
// CHECK:STDOUT: %.9: type = ptr_type %.1 [template]
// CHECK:STDOUT: %struct: %X = struct_value () [template]
// CHECK:STDOUT: %N: %T.1 = bind_symbolic_name N, 1 [symbolic]
// CHECK:STDOUT: %N.patt: %T.1 = symbolic_binding_pattern N, 1 [symbolic]
@@ -318,7 +317,7 @@ fn G(T:! Generic(B)) {
// CHECK:STDOUT: %T.patt.loc4_18.2 => constants.%T.1
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Simple(@Simple.%T.loc4_18.2) {
// CHECK:STDOUT: specific @Simple(%T.loc4_18.2) {
// CHECK:STDOUT: %T.loc4_18.2 => constants.%T.1
// CHECK:STDOUT: %T.patt.loc4_18.2 => constants.%T.1
// CHECK:STDOUT: }
@@ -330,7 +329,7 @@ fn G(T:! Generic(B)) {
// CHECK:STDOUT:
// CHECK:STDOUT: specific @F.1(constants.%T.1, constants.%Self.2) {}
// CHECK:STDOUT:
// CHECK:STDOUT: specific @WithAssocFn(@WithAssocFn.%T.loc8_23.2) {
// CHECK:STDOUT: specific @WithAssocFn(%T.loc8_23.2) {
// CHECK:STDOUT: %T.loc8_23.2 => constants.%T.1
// CHECK:STDOUT: %T.patt.loc8_23.2 => constants.%T.1
// CHECK:STDOUT: }
@@ -389,7 +388,6 @@ fn G(T:! Generic(B)) {
// CHECK:STDOUT: %T.1: type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %T.patt.1: type = symbolic_binding_pattern T, 0 [symbolic]
// CHECK:STDOUT: %Generic.type.1: type = generic_interface_type @Generic [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Generic: %Generic.type.1 = struct_value () [template]
// CHECK:STDOUT: %Generic.type.2: type = facet_type <@Generic, @Generic(%T.1)> [symbolic]
// CHECK:STDOUT: %Self: %Generic.type.2 = bind_symbolic_name Self, 1 [symbolic]
@@ -506,7 +504,7 @@ fn G(T:! Generic(B)) {
// CHECK:STDOUT: %T.patt.loc4_19.2 => constants.%T.1
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Generic(@Generic.%T.loc4_19.2) {
// CHECK:STDOUT: specific @Generic(%T.loc4_19.2) {
// CHECK:STDOUT: %T.loc4_19.2 => constants.%T.1
// CHECK:STDOUT: %T.patt.loc4_19.2 => constants.%T.1
// CHECK:STDOUT: }
@@ -24,7 +24,6 @@ interface I {
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 1 [symbolic]
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 1 [symbolic]
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: %.1: type = assoc_entity_type %I.type, %F.type [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @I.%F.decl [template]
@@ -33,7 +33,6 @@ impl C as AddWith(C) {
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
// CHECK:STDOUT: %AddWith.type.1: type = generic_interface_type @AddWith [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %AddWith: %AddWith.type.1 = struct_value () [template]
// CHECK:STDOUT: %AddWith.type.2: type = facet_type <@AddWith, @AddWith(%T)> [symbolic]
// CHECK:STDOUT: %Self: %AddWith.type.2 = bind_symbolic_name Self, 1 [symbolic]
@@ -92,7 +91,7 @@ impl C as AddWith(C) {
// CHECK:STDOUT:
// CHECK:STDOUT: specific @F(constants.%T, constants.%Self) {}
// CHECK:STDOUT:
// CHECK:STDOUT: specific @AddWith(@AddWith.%T.loc4_19.2) {
// CHECK:STDOUT: specific @AddWith(%T.loc4_19.2) {
// CHECK:STDOUT: %T.loc4_19.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc4_19.2 => constants.%T
// CHECK:STDOUT: }
@@ -104,7 +103,6 @@ impl C as AddWith(C) {
// CHECK:STDOUT: %.1: type = struct_type {} [template]
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
// CHECK:STDOUT: %AddWith.type.1: type = generic_interface_type @AddWith [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %AddWith: %AddWith.type.1 = struct_value () [template]
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %AddWith.type.2: type = facet_type <@AddWith, @AddWith(%T)> [symbolic]
@@ -199,7 +197,7 @@ impl C as AddWith(C) {
// CHECK:STDOUT: %T.patt => constants.%T
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @AddWith(@AddWith.%T) {
// CHECK:STDOUT: specific @AddWith(%T) {
// CHECK:STDOUT: %T => constants.%T
// CHECK:STDOUT: %T.patt => constants.%T
// CHECK:STDOUT: }
@@ -53,7 +53,6 @@ interface A(T: type) {}
// CHECK:STDOUT: %NotGenericNoParams.type: type = facet_type <@NotGenericNoParams> [template]
// CHECK:STDOUT: %Self.1: %NotGenericNoParams.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %NotGenericButParams.type.1: type = generic_interface_type @NotGenericButParams [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %NotGenericButParams: %NotGenericButParams.type.1 = struct_value () [template]
// CHECK:STDOUT: %NotGenericButParams.type.2: type = facet_type <@NotGenericButParams> [template]
// CHECK:STDOUT: %Self.2: %NotGenericButParams.type.2 = bind_symbolic_name Self, 0 [symbolic]
@@ -83,7 +82,6 @@ interface A(T: type) {}
// CHECK:STDOUT: %C.3: type = class_type @C, @C(%X) [template]
// CHECK:STDOUT: %GenericAndParams.type.6: type = generic_interface_type @GenericAndParams.2, @C(%X) [template]
// CHECK:STDOUT: %GenericAndParams.3: %GenericAndParams.type.6 = struct_value () [template]
// CHECK:STDOUT: %.4: type = ptr_type %.1 [template]
// CHECK:STDOUT: %GenericAndParams.type.7: type = facet_type <@GenericAndParams.2, @GenericAndParams.2(%X, %X)> [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -285,7 +283,7 @@ interface A(T: type) {}
// CHECK:STDOUT: %T.patt.loc6_28.2 => constants.%T
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @GenericAndParams.1(@GenericAndParams.1.%T.loc6_28.2) {
// CHECK:STDOUT: specific @GenericAndParams.1(%T.loc6_28.2) {
// CHECK:STDOUT: %T.loc6_28.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc6_28.2 => constants.%T
// CHECK:STDOUT: }
@@ -297,19 +295,19 @@ interface A(T: type) {}
// CHECK:STDOUT:
// CHECK:STDOUT: specific @GenericNoParams(constants.%T) {}
// CHECK:STDOUT:
// CHECK:STDOUT: specific @GenericNoParams(@GenericNoParams.%T) {}
// CHECK:STDOUT: specific @GenericNoParams(%T) {}
// CHECK:STDOUT:
// CHECK:STDOUT: specific @GenericAndParams.2(constants.%T, constants.%U) {
// CHECK:STDOUT: %U.loc10_30.2 => constants.%U
// CHECK:STDOUT: %U.patt.loc10_30.2 => constants.%U
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @GenericAndParams.2(@GenericAndParams.2.%T, @GenericAndParams.2.%U.loc10_30.2) {
// CHECK:STDOUT: specific @GenericAndParams.2(%T, %U.loc10_30.2) {
// CHECK:STDOUT: %U.loc10_30.2 => constants.%U
// CHECK:STDOUT: %U.patt.loc10_30.2 => constants.%U
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @C(@C.%T.loc8_9.2) {
// CHECK:STDOUT: specific @C(%T.loc8_9.2) {
// CHECK:STDOUT: %T.loc8_9.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc8_9.2 => constants.%T
// CHECK:STDOUT: }
@@ -346,7 +344,6 @@ interface A(T: type) {}
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %A.type.1: type = generic_interface_type @A [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %A: %A.type.1 = struct_value () [template]
// CHECK:STDOUT: %A.type.2: type = facet_type <@A> [template]
// CHECK:STDOUT: %Self: %A.type.2 = bind_symbolic_name Self, 0 [symbolic]
@@ -371,7 +368,6 @@ interface A(T: type) {}
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %A.type.1: type = generic_interface_type @A [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %A: %A.type.1 = struct_value () [template]
// CHECK:STDOUT: %A.type.2: type = facet_type <@A> [template]
// CHECK:STDOUT: %Self: %A.type.2 = bind_symbolic_name Self, 0 [symbolic]
@@ -58,7 +58,6 @@ var f: ForwardDeclared* = &f_ref.f;
// CHECK:STDOUT: %.1: type = assoc_entity_type %Basic.type, type [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @Basic.%T [template]
// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template]
// CHECK:STDOUT: %.3: type = assoc_entity_type %Basic.type, %F.type.1 [template]
// CHECK:STDOUT: %.4: %.3 = assoc_entity element1, @Basic.%F.decl [template]
@@ -71,7 +70,6 @@ var f: ForwardDeclared* = &f_ref.f;
// CHECK:STDOUT: %.7: type = assoc_entity_type %ForwardDeclared.type, %F.type.2 [template]
// CHECK:STDOUT: %.8: %.7 = assoc_entity element1, @ForwardDeclared.%F.decl [template]
// CHECK:STDOUT: %.9: type = struct_type {.f: %ForwardDeclared.type} [template]
// CHECK:STDOUT: %.10: type = struct_type {.f: %empty_tuple.type} [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -144,9 +142,7 @@ var f: ForwardDeclared* = &f_ref.f;
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %Empty.type: type = facet_type <@Empty> [template]
// CHECK:STDOUT: %Self.1: %Empty.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %UseEmpty.type: type = fn_type @UseEmpty [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %UseEmpty: %UseEmpty.type = struct_value () [template]
// CHECK:STDOUT: %Basic.type: type = facet_type <@Basic> [template]
// CHECK:STDOUT: %Self.2: %Basic.type = bind_symbolic_name Self, 0 [symbolic]
@@ -159,18 +155,15 @@ var f: ForwardDeclared* = &f_ref.f;
// CHECK:STDOUT: %.1: type = assoc_entity_type %Basic.type, type [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, imports.%import_ref.16 [template]
// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template]
// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template]
// CHECK:STDOUT: %.3: type = assoc_entity_type %Basic.type, %F.type.1 [template]
// CHECK:STDOUT: %.4: %.3 = assoc_entity element1, imports.%import_ref.17 [template]
// CHECK:STDOUT: %.5: type = assoc_entity_type %ForwardDeclared.type, type [template]
// CHECK:STDOUT: %.6: %.5 = assoc_entity element0, imports.%import_ref.18 [template]
// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template]
// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template]
// CHECK:STDOUT: %.7: type = assoc_entity_type %ForwardDeclared.type, %F.type.2 [template]
// CHECK:STDOUT: %.8: %.7 = assoc_entity element1, imports.%import_ref.19 [template]
// CHECK:STDOUT: %.9: type = ptr_type %ForwardDeclared.type [template]
// CHECK:STDOUT: %.10: type = struct_type {.f: %ForwardDeclared.type} [template]
// CHECK:STDOUT: %.11: type = struct_type {.f: %empty_tuple.type} [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
@@ -189,10 +182,6 @@ var f: ForwardDeclared* = &f_ref.f;
// CHECK:STDOUT: %import_ref.13: %.7 = import_ref Main//a, inst+32, loaded [template = constants.%.8]
// CHECK:STDOUT: %import_ref.14 = import_ref Main//a, inst+24, unloaded
// CHECK:STDOUT: %import_ref.15 = import_ref Main//a, inst+28, unloaded
// CHECK:STDOUT: %import_ref.16 = import_ref Main//a, inst+9, unloaded
// CHECK:STDOUT: %import_ref.17 = import_ref Main//a, inst+13, unloaded
// CHECK:STDOUT: %import_ref.18 = import_ref Main//a, inst+24, unloaded
// CHECK:STDOUT: %import_ref.19 = import_ref Main//a, inst+28, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -195,9 +195,7 @@ private interface Redecl {}
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %Def.type: type = facet_type <@Def> [template]
// CHECK:STDOUT: %Self: %Def.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -238,7 +236,6 @@ private interface Redecl {}
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -266,7 +263,6 @@ private interface Redecl {}
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -302,9 +298,7 @@ private interface Redecl {}
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %ForwardWithDef.type: type = facet_type <@ForwardWithDef> [template]
// CHECK:STDOUT: %Self: %ForwardWithDef.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -345,7 +339,6 @@ private interface Redecl {}
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -373,7 +366,6 @@ private interface Redecl {}
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -409,7 +401,6 @@ private interface Redecl {}
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: %Forward.type: type = facet_type <@Forward> [template]
// CHECK:STDOUT: %Self: %Forward.type = bind_symbolic_name Self, 0 [symbolic]
@@ -451,7 +442,6 @@ private interface Redecl {}
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -480,7 +470,6 @@ private interface Redecl {}
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -18,7 +18,6 @@ interface UseSelf {
// CHECK:STDOUT: %UseSelf.type: type = facet_type <@UseSelf> [template]
// CHECK:STDOUT: %Self: %UseSelf.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: %.1: type = assoc_entity_type %UseSelf.type, %F.type [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @UseSelf.%F.decl [template]
@@ -194,7 +194,6 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
// CHECK:STDOUT: %Foo.type.1: type = generic_interface_type @Foo [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Foo: %Foo.type.1 = struct_value () [template]
// CHECK:STDOUT: %Foo.type.2: type = facet_type <@Foo, @Foo(%a)> [symbolic]
// CHECK:STDOUT: %Self.1: %Foo.type.2 = bind_symbolic_name Self, 1 [symbolic]
@@ -294,7 +293,7 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a.patt.loc7_15.2 => constants.%a
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Foo(@Foo.%a.loc7_15.2) {
// CHECK:STDOUT: specific @Foo(%a.loc7_15.2) {
// CHECK:STDOUT: %a.loc7_15.2 => constants.%a
// CHECK:STDOUT: %a.patt.loc7_15.2 => constants.%a
// CHECK:STDOUT: }
@@ -304,7 +303,7 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a.patt.loc10_15.2 => constants.%a
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Bar(@Bar.%a.loc10_15.2) {
// CHECK:STDOUT: specific @Bar(%a.loc10_15.2) {
// CHECK:STDOUT: %a.loc10_15.2 => constants.%a
// CHECK:STDOUT: %a.patt.loc10_15.2 => constants.%a
// CHECK:STDOUT: }
@@ -318,7 +317,6 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
// CHECK:STDOUT: %Foo.type.1: type = generic_interface_type @Foo [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Foo: %Foo.type.1 = struct_value () [template]
// CHECK:STDOUT: %Foo.type.2: type = facet_type <@Foo, @Foo(%a)> [symbolic]
// CHECK:STDOUT: %Self: %Foo.type.2 = bind_symbolic_name Self, 1 [symbolic]
@@ -377,7 +375,7 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a.patt.loc6_21.2 => constants.%a
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Foo(@Foo.%a.loc6_21.2) {
// CHECK:STDOUT: specific @Foo(%a.loc6_21.2) {
// CHECK:STDOUT: %a.loc6_21.2 => constants.%a
// CHECK:STDOUT: %a.patt.loc6_21.2 => constants.%a
// CHECK:STDOUT: }
@@ -391,7 +389,6 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template]
// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template]
// CHECK:STDOUT: %.3: %.type.1 = struct_value () [template]
@@ -464,7 +461,7 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a.patt.loc14_15.2 => constants.%a
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @.1(@.1.%a.loc14_15.2) {
// CHECK:STDOUT: specific @.1(%a.loc14_15.2) {
// CHECK:STDOUT: %a.loc14_15.2 => constants.%a
// CHECK:STDOUT: %a.patt.loc14_15.2 => constants.%a
// CHECK:STDOUT: }
@@ -478,7 +475,6 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
// CHECK:STDOUT: %Foo.type.1: type = generic_interface_type @Foo [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Foo: %Foo.type.1 = struct_value () [template]
// CHECK:STDOUT: %Foo.type.2: type = facet_type <@Foo, @Foo(%a)> [symbolic]
// CHECK:STDOUT: %Self: %Foo.type.2 = bind_symbolic_name Self, 1 [symbolic]
@@ -537,7 +533,7 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a.patt.loc6_15.2 => constants.%a
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Foo(@Foo.%a.loc6_15.2) {
// CHECK:STDOUT: specific @Foo(%a.loc6_15.2) {
// CHECK:STDOUT: %a.loc6_15.2 => constants.%a
// CHECK:STDOUT: %a.patt.loc6_15.2 => constants.%a
// CHECK:STDOUT: }
@@ -551,7 +547,6 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template]
// CHECK:STDOUT: %Bar.type: type = generic_interface_type @Bar [template]
// CHECK:STDOUT: %Bar: %Bar.type = struct_value () [template]
@@ -620,12 +615,9 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %C: type = class_type @C [template]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template]
// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template]
// CHECK:STDOUT: %.3: %.type.1 = struct_value () [template]
@@ -737,7 +729,7 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a.patt.loc12_15.2 => constants.%a
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @.1(@.1.%a.loc12_15.2) {
// CHECK:STDOUT: specific @.1(%a.loc12_15.2) {
// CHECK:STDOUT: %a.loc12_15.2 => constants.%a
// CHECK:STDOUT: %a.patt.loc12_15.2 => constants.%a
// CHECK:STDOUT: }
@@ -752,7 +744,7 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a.patt.loc21_15.2 => constants.%a
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @.2(@.2.%a.loc21_15.2) {
// CHECK:STDOUT: specific @.2(%a.loc21_15.2) {
// CHECK:STDOUT: %a.loc21_15.2 => constants.%a
// CHECK:STDOUT: %a.patt.loc21_15.2 => constants.%a
// CHECK:STDOUT: }
@@ -766,7 +758,6 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template]
// CHECK:STDOUT: %b: %C = bind_symbolic_name b, 0 [symbolic]
// CHECK:STDOUT: %b.patt: %C = symbolic_binding_pattern b, 0 [symbolic]
@@ -844,7 +835,7 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %b.patt.loc15_15.2 => constants.%b
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @.1(@.1.%b.loc15_15.2) {
// CHECK:STDOUT: specific @.1(%b.loc15_15.2) {
// CHECK:STDOUT: %b.loc15_15.2 => constants.%b
// CHECK:STDOUT: %b.patt.loc15_15.2 => constants.%b
// CHECK:STDOUT: }
@@ -858,7 +849,6 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template]
// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template]
// CHECK:STDOUT: %.3: %.type.1 = struct_value () [template]
@@ -934,7 +924,7 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a.patt.loc15_15.2 => constants.%a
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @.1(@.1.%a.loc15_15.2) {
// CHECK:STDOUT: specific @.1(%a.loc15_15.2) {
// CHECK:STDOUT: %a.loc15_15.2 => constants.%a
// CHECK:STDOUT: %a.patt.loc15_15.2 => constants.%a
// CHECK:STDOUT: }
@@ -948,7 +938,6 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template]
// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template]
// CHECK:STDOUT: %.3: %.type.1 = struct_value () [template]
@@ -1024,7 +1013,7 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a.patt.loc15_15.2 => constants.%a
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @.1(@.1.%a.loc15_15.2) {
// CHECK:STDOUT: specific @.1(%a.loc15_15.2) {
// CHECK:STDOUT: %a.loc15_15.2 => constants.%a
// CHECK:STDOUT: %a.patt.loc15_15.2 => constants.%a
// CHECK:STDOUT: }
@@ -1038,7 +1027,6 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -1081,12 +1069,9 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %C: type = class_type @C [template]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template]
// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template]
// CHECK:STDOUT: %.3: %.type.1 = struct_value () [template]
@@ -1159,7 +1144,7 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a.patt.loc17_15.2 => constants.%a
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @.1(@.1.%a.loc17_15.2) {
// CHECK:STDOUT: specific @.1(%a.loc17_15.2) {
// CHECK:STDOUT: %a.loc17_15.2 => constants.%a
// CHECK:STDOUT: %a.patt.loc17_15.2 => constants.%a
// CHECK:STDOUT: }
@@ -1174,7 +1159,6 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a: %.3 = bind_symbolic_name a, 0 [symbolic]
// CHECK:STDOUT: %a.patt: %.3 = symbolic_binding_pattern a, 0 [symbolic]
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template]
// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template]
// CHECK:STDOUT: %.4: %.type.1 = struct_value () [template]
@@ -1250,7 +1234,7 @@ interface Foo(a:! const (const C)) {}
// CHECK:STDOUT: %a.patt.loc17_15.2 => constants.%a
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @.1(@.1.%a.loc17_15.2) {
// CHECK:STDOUT: specific @.1(%a.loc17_15.2) {
// CHECK:STDOUT: %a.loc17_15.2 => constants.%a
// CHECK:STDOUT: %a.patt.loc17_15.2 => constants.%a
// CHECK:STDOUT: }
@@ -25,7 +25,6 @@ interface I {
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: %.1: type = assoc_entity_type %I.type, %F.type [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @I.%F.decl [template]
@@ -50,7 +49,6 @@ interface I {
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -126,8 +124,6 @@ interface I {
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Int32() -> type = "int.make_type_32";
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @G(@I.%Self: %I.type) {
// CHECK:STDOUT:
// CHECK:STDOUT: fn(%a.param_patt: i32, %b.param_patt: i32) -> i32 = "int.sadd";