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
-3
View File
@@ -72,7 +72,6 @@ fn InstanceCallIndirect(p: i32*) {
// 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 {
@@ -190,8 +189,6 @@ fn InstanceCallIndirect(p: i32*) {
// CHECK:STDOUT: fn[%self.param_patt: @G.1.%Self (%Self)]();
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Int32() -> type = "int.make_type_32";
// CHECK:STDOUT:
// CHECK:STDOUT: fn @F.2();
// CHECK:STDOUT:
// CHECK:STDOUT: fn @G.2[%self.param_patt: i32]();
-4
View File
@@ -18,7 +18,6 @@ impl i32 as 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: }
// CHECK:STDOUT:
@@ -28,7 +27,6 @@ impl i32 as 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 {
@@ -56,5 +54,3 @@ impl i32 as I;
// CHECK:STDOUT:
// CHECK:STDOUT: impl @impl: %.loc13_6.2 as %I.ref;
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Int32() -> type = "int.make_type_32";
// CHECK:STDOUT:
-4
View File
@@ -20,7 +20,6 @@ impl i32 as Empty {
// CHECK:STDOUT: %Empty.type: type = facet_type <@Empty> [template]
// CHECK:STDOUT: %Self: %Empty.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: %.1: <witness> = interface_witness () [template]
// CHECK:STDOUT: }
@@ -31,7 +30,6 @@ impl i32 as Empty {
// 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 {
@@ -64,5 +62,3 @@ impl i32 as Empty {
// CHECK:STDOUT: witness = %.loc14_19
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Int32() -> type = "int.make_type_32";
// CHECK:STDOUT:
-1
View File
@@ -41,7 +41,6 @@ fn G(c: C) {
// CHECK:STDOUT: %.5: <witness> = complete_type_witness %.4 [template]
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
// CHECK:STDOUT: %.6: type = ptr_type %.4 [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
+3 -11
View File
@@ -53,7 +53,6 @@ class X(U:! type) {
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
// CHECK:STDOUT: %HasF.type.1: type = generic_interface_type @HasF [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %HasF: %HasF.type.1 = struct_value () [template]
// CHECK:STDOUT: %HasF.type.2: type = facet_type <@HasF, @HasF(%T)> [symbolic]
// CHECK:STDOUT: %Self: %HasF.type.2 = bind_symbolic_name Self, 1 [symbolic]
@@ -78,12 +77,10 @@ class X(U:! type) {
// CHECK:STDOUT: %.8: <witness> = interface_witness (%F.3) [template]
// CHECK:STDOUT: %.9: type = struct_type {} [template]
// CHECK:STDOUT: %.10: <witness> = complete_type_witness %.9 [template]
// CHECK:STDOUT: %.11: type = ptr_type %.4 [template]
// CHECK:STDOUT: %.12: i32 = int_value 2 [template]
// CHECK:STDOUT: %struct: %Param = struct_value (%.12) [template]
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
// CHECK:STDOUT: %.13: type = ptr_type %.9 [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
@@ -92,7 +89,6 @@ class X(U:! type) {
// 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 {
@@ -202,8 +198,6 @@ class X(U:! type) {
// CHECK:STDOUT: fn() -> @F.1.%T (%T);
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Int32() -> type = "int.make_type_32";
// CHECK:STDOUT:
// CHECK:STDOUT: fn @F.2() -> %return: %Param {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: %.loc15_20: i32 = int_value 2 [template = constants.%.12]
@@ -259,7 +253,7 @@ class X(U:! type) {
// CHECK:STDOUT: %T => constants.%T
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @HasF(@HasF.%T.loc4_16.2) {
// CHECK:STDOUT: specific @HasF(%T.loc4_16.2) {
// CHECK:STDOUT: %T.loc4_16.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc4_16.2 => constants.%T
// CHECK:STDOUT: }
@@ -287,7 +281,6 @@ class X(U:! type) {
// 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]
@@ -310,7 +303,6 @@ class X(U:! type) {
// CHECK:STDOUT: %.5: <witness> = interface_witness (%F.3) [symbolic]
// CHECK:STDOUT: %.6: type = struct_type {} [template]
// CHECK:STDOUT: %.7: <witness> = complete_type_witness %.6 [template]
// CHECK:STDOUT: %.8: type = ptr_type %.6 [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
@@ -474,7 +466,7 @@ class X(U:! type) {
// CHECK:STDOUT: %Self => constants.%Self
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @I(@I.%T.loc4_13.2) {
// CHECK:STDOUT: specific @I(%T.loc4_13.2) {
// CHECK:STDOUT: %T.loc4_13.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%T
// CHECK:STDOUT: }
@@ -537,7 +529,7 @@ class X(U:! type) {
// CHECK:STDOUT: %Self => constants.%X.2
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @impl(@impl.%U) {
// CHECK:STDOUT: specific @impl(%U) {
// CHECK:STDOUT: %U => constants.%U
// CHECK:STDOUT: %X => constants.%X.2
// CHECK:STDOUT: %I.type.loc9_19.2 => constants.%I.type.3
@@ -29,7 +29,6 @@ fn InstanceCall(n: i32) {
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [template]
// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %G.type.1: type = fn_type @G.1 [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %G.1: %G.type.1 = struct_value () [template]
// CHECK:STDOUT: %.1: type = assoc_entity_type %Simple.type, %G.type.1 [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @Simple.%G.decl [template]
@@ -47,7 +46,6 @@ fn InstanceCall(n: i32) {
// 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 {
@@ -118,8 +116,6 @@ fn InstanceCall(n: i32) {
// CHECK:STDOUT: fn[%self.param_patt: @G.1.%Self (%Self)]();
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Int32() -> type = "int.make_type_32";
// CHECK:STDOUT:
// CHECK:STDOUT: fn @G.2[%self.param_patt: <error>]();
// CHECK:STDOUT:
// CHECK:STDOUT: fn @InstanceCall(%n.param_patt: i32) {
@@ -27,7 +27,6 @@ class C {
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
// CHECK:STDOUT: %GenericInterface.type.1: type = generic_interface_type @GenericInterface [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %GenericInterface: %GenericInterface.type.1 = struct_value () [template]
// CHECK:STDOUT: %GenericInterface.type.2: type = facet_type <@GenericInterface, @GenericInterface(%T)> [symbolic]
// CHECK:STDOUT: %Self: %GenericInterface.type.2 = bind_symbolic_name Self, 1 [symbolic]
@@ -179,7 +178,7 @@ class C {
// CHECK:STDOUT: %T => constants.%T
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @GenericInterface(@GenericInterface.%T.loc11_28.2) {
// CHECK:STDOUT: specific @GenericInterface(%T.loc11_28.2) {
// CHECK:STDOUT: %T.loc11_28.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc11_28.2 => constants.%T
// CHECK:STDOUT: }
@@ -208,7 +207,7 @@ class C {
// CHECK:STDOUT: %T => constants.%T
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @impl(@impl.%T.loc19_23.2) {
// CHECK:STDOUT: specific @impl(%T.loc19_23.2) {
// CHECK:STDOUT: %T.loc19_23.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc19_23.2 => constants.%T
// CHECK:STDOUT: %GenericInterface.type.loc19_52.2 => constants.%GenericInterface.type.2
@@ -21,7 +21,6 @@ extend impl i32 as 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: %.1: <witness> = interface_witness () [template]
// CHECK:STDOUT: }
@@ -32,7 +31,6 @@ extend impl i32 as 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 {
@@ -65,5 +63,3 @@ extend impl i32 as I {}
// CHECK:STDOUT: witness = %.loc16_22
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Int32() -> type = "int.make_type_32";
// CHECK:STDOUT:
@@ -46,7 +46,6 @@ class E {
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %C: type = class_type @C [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: %.1: <witness> = interface_witness () [template]
// CHECK:STDOUT: %.2: type = struct_type {} [template]
@@ -61,7 +60,6 @@ class E {
// 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 {
@@ -141,5 +139,3 @@ class E {
// CHECK:STDOUT: extend @impl.3.%I.ref
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Int32() -> type = "int.make_type_32";
// CHECK:STDOUT:
@@ -20,7 +20,6 @@ class C {
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %C: type = class_type @C [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: %.1: type = struct_type {} [template]
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
@@ -32,7 +31,6 @@ class C {
// 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 {
@@ -60,5 +58,3 @@ class C {
// CHECK:STDOUT: has_error
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Int32() -> type = "int.make_type_32";
// CHECK:STDOUT:
@@ -27,7 +27,6 @@ interface I {
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %C.1: type = class_type @C [template]
// CHECK:STDOUT: %C.2: type = class_type @C, @C(%Self) [symbolic]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
// CHECK:STDOUT: }
@@ -50,12 +50,10 @@ fn F(c: C) {
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
// CHECK:STDOUT: %C: type = class_type @C [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: %.3: type = ptr_type %.1 [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
@@ -25,7 +25,6 @@ impl as Simple {
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [template]
// CHECK:STDOUT: %Self: %Simple.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 %Simple.type, %F.type.1 [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @Simple.%F.decl [template]
@@ -23,7 +23,6 @@ impl bool as I {}
// CHECK:STDOUT: %.1: type = assoc_entity_type %I.type, type [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @I.%T [template]
// CHECK:STDOUT: %Bool.type: type = fn_type @Bool [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Bool: %Bool.type = struct_value () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -33,7 +32,6 @@ impl bool as I {}
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -67,5 +65,3 @@ impl bool as I {}
// CHECK:STDOUT: witness = <error>
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Bool() -> type = "bool.make_type";
// CHECK:STDOUT:
@@ -219,7 +219,6 @@ class SelfNestedBadReturnType {
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
// CHECK:STDOUT: %Self.1: %I.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 %I.type, %F.type.1 [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @I.%F.decl [template]
@@ -308,8 +307,6 @@ class SelfNestedBadReturnType {
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool]
// CHECK:STDOUT: %import_ref.2: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -954,8 +951,6 @@ class SelfNestedBadReturnType {
// CHECK:STDOUT:
// CHECK:STDOUT: fn @PossiblyF();
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Bool() -> type = "bool.make_type";
// CHECK:STDOUT:
// CHECK:STDOUT: fn @F.2(%b.param_patt: bool);
// CHECK:STDOUT:
// CHECK:STDOUT: fn @F.3[%self.param_patt: %FExtraImplicitParam]();
@@ -981,8 +976,6 @@ class SelfNestedBadReturnType {
// CHECK:STDOUT:
// CHECK:STDOUT: fn @F.12[%self.param_patt: bool](%not_b.param_patt: bool) -> bool;
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Int32() -> type = "int.make_type_32";
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @F.13(@SelfNested.%Self: %SelfNested.type) {
// CHECK:STDOUT: %Self: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.3)]
// CHECK:STDOUT: %.loc188_16.1: type = ptr_type @F.13.%Self (%Self.3) [symbolic = %.loc188_16.1 (constants.%.7)]
@@ -47,26 +47,8 @@ impl f64 as type where .Self impls type {}
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// 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: %.1: bool = bool_literal false [template]
// CHECK:STDOUT: %ImplicitAs.type.1: type = generic_interface_type @ImplicitAs [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.1: @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.2: %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.6 [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.6 [template]
// CHECK:STDOUT: %.6: %.2 = assoc_entity element0, imports.%import_ref.7 [symbolic]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
@@ -76,13 +58,6 @@ impl f64 as type where .Self impls type {}
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.1: %Int32.type = import_ref Core//prelude/types, inst+15, loaded [template = constants.%Int32]
// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+48, loaded [template = constants.%ImplicitAs]
// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+54, unloaded
// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.2) = import_ref Core//prelude/operators/as, inst+76, loaded [symbolic = @ImplicitAs.%.2 (constants.%.6)]
// 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: %import_ref.7 = import_ref Core//prelude/operators/as, inst+69, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -99,80 +74,15 @@ impl f64 as type where .Self impls type {}
// CHECK:STDOUT: }
// 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.2)]
// 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.6 [symbolic = %.2 (constants.%.3)]
// CHECK:STDOUT:
// CHECK:STDOUT: interface {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%import_ref.3
// CHECK:STDOUT: .Convert = imports.%import_ref.4
// CHECK:STDOUT: witness = (imports.%import_ref.5)
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @impl: %.loc11_6.2 as <error> {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: witness = <error>
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Int32() -> type = "int.make_type_32";
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @Convert(constants.%Dest: type, constants.%Self.1: @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.2)]
// CHECK:STDOUT:
// CHECK:STDOUT: fn[%self.param_patt: @Convert.%Self (%Self.2)]() -> @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.1) {
// CHECK:STDOUT: %Dest => constants.%Dest
// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.2
// CHECK:STDOUT: %Self => constants.%Self.1
// 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.2
// 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:
// CHECK:STDOUT: --- fail_impl_as_type.carbon
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %Bool.type: type = fn_type @Bool [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Bool: %Bool.type = struct_value () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -182,7 +92,6 @@ impl f64 as type where .Self impls type {}
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -202,14 +111,11 @@ impl f64 as type where .Self impls type {}
// CHECK:STDOUT: witness = <error>
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Bool() -> type = "bool.make_type";
// CHECK:STDOUT:
// CHECK:STDOUT: --- fail_impl_as_type_where.carbon
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %.1: Core.IntLiteral = int_value 64 [template]
// CHECK:STDOUT: %Float.type: type = fn_type @Float [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Float: %Float.type = struct_value () [template]
// CHECK:STDOUT: %.Self: type = bind_symbolic_name .Self, 0 [symbolic]
// CHECK:STDOUT: %type_where: type = facet_type <type where TODO> [template]
@@ -221,7 +127,6 @@ impl f64 as type where .Self impls type {}
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref: %Float.type = import_ref Core//prelude/types, inst+60, loaded [template = constants.%Float]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -247,5 +152,3 @@ impl f64 as type where .Self impls type {}
// CHECK:STDOUT: witness = <error>
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Float(%size.param_patt: Core.IntLiteral) -> type = "float.make_type";
// CHECK:STDOUT:
@@ -26,9 +26,7 @@ impl i32 as 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: %.1: <witness> = interface_witness () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
@@ -37,7 +35,6 @@ impl i32 as 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 {
@@ -74,5 +71,3 @@ impl i32 as I {}
// CHECK:STDOUT: witness = <unexpected>.inst+20.loc13_15
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Int32() -> type = "int.make_type_32";
// CHECK:STDOUT:
@@ -30,26 +30,8 @@ impl bool as I where .T = bool {}
// CHECK:STDOUT: %.1: type = assoc_entity_type %I.type.1, type [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @I.%T [template]
// CHECK:STDOUT: %Bool.type: type = fn_type @Bool [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Bool: %Bool.type = struct_value () [template]
// CHECK:STDOUT: %.Self: %I.type.1 = bind_symbolic_name .Self, 0 [symbolic]
// CHECK:STDOUT: %ImplicitAs.type.1: type = generic_interface_type @ImplicitAs [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: %.3: type = assoc_entity_type %ImplicitAs.type.2, %Convert.type.1 [symbolic]
// CHECK:STDOUT: %.4: %.3 = assoc_entity element0, imports.%import_ref.6 [symbolic]
// CHECK:STDOUT: %ImplicitAs.type.3: type = facet_type <@ImplicitAs, @ImplicitAs(%.1)> [template]
// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert, @ImplicitAs(%.1) [template]
// CHECK:STDOUT: %Convert.2: %Convert.type.2 = struct_value () [template]
// CHECK:STDOUT: %.5: type = assoc_entity_type %ImplicitAs.type.3, %Convert.type.2 [template]
// CHECK:STDOUT: %.6: %.5 = assoc_entity element0, imports.%import_ref.6 [template]
// CHECK:STDOUT: %.7: %.3 = assoc_entity element0, imports.%import_ref.7 [symbolic]
// CHECK:STDOUT: %I.type.2: type = facet_type <@I where TODO> [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -60,13 +42,6 @@ impl bool as I where .T = bool {}
// CHECK:STDOUT: import Core//prelude
// CHECK:STDOUT: import Core//prelude/...
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.1: %Bool.type = import_ref Core//prelude/types/bool, inst+5, loaded [template = constants.%Bool]
// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+48, loaded [template = constants.%ImplicitAs]
// CHECK:STDOUT: %import_ref.3 = import_ref Core//prelude/operators/as, inst+54, unloaded
// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+76, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)]
// 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: %import_ref.7 = import_ref Core//prelude/operators/as, inst+69, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -103,72 +78,8 @@ impl bool as I where .T = bool {}
// 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.%.3)]
// CHECK:STDOUT: %.2: @ImplicitAs.%.1 (%.3) = assoc_entity element0, imports.%import_ref.6 [symbolic = %.2 (constants.%.4)]
// CHECK:STDOUT:
// CHECK:STDOUT: interface {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%import_ref.3
// CHECK:STDOUT: .Convert = imports.%import_ref.4
// CHECK:STDOUT: witness = (imports.%import_ref.5)
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @impl: %.loc23_6.2 as %.loc23_16 {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: witness = <error>
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Bool() -> type = "bool.make_type";
// 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(constants.%.1) {
// CHECK:STDOUT: %Dest => constants.%.1
// CHECK:STDOUT: %Dest.patt => constants.%.1
// 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.%.5
// CHECK:STDOUT: %.2 => constants.%.6
// CHECK:STDOUT: }
// CHECK:STDOUT:
-2
View File
@@ -27,7 +27,6 @@ class C {
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [template]
// CHECK:STDOUT: %Self: %Simple.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 %Simple.type, %F.type.1 [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @Simple.%F.decl [template]
@@ -37,7 +36,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:
+1 -2
View File
@@ -22,7 +22,6 @@ impl forall [T:! type] T as Simple {
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [template]
// CHECK:STDOUT: %Self: %Simple.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 %Simple.type, %F.type.1 [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @Simple.%F.decl [template]
@@ -118,7 +117,7 @@ impl forall [T:! type] T as Simple {
// CHECK:STDOUT:
// CHECK:STDOUT: specific @F.1(constants.%T) {}
// CHECK:STDOUT:
// CHECK:STDOUT: specific @impl(@impl.%T.loc15_14.2) {
// CHECK:STDOUT: specific @impl(%T.loc15_14.2) {
// CHECK:STDOUT: %T.loc15_14.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc15_14.2 => constants.%T
// CHECK:STDOUT: }
-1
View File
@@ -43,7 +43,6 @@ fn G(c: C) {
// CHECK:STDOUT: %.5: <witness> = interface_witness (%F.2) [template]
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
// CHECK:STDOUT: %.6: type = ptr_type %.3 [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
@@ -34,7 +34,6 @@ fn F(c: C) {
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
// CHECK:STDOUT: %Self: %I.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 %I.type, %F.type.1 [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @I.%F.decl [template]
@@ -43,7 +42,6 @@ fn F(c: C) {
// CHECK:STDOUT: %.4: <witness> = complete_type_witness %.3 [template]
// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template]
// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template]
// CHECK:STDOUT: %.5: type = ptr_type %.3 [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
@@ -34,7 +34,6 @@ impl C as 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.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 %I.type, %F.type.1 [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @I.%F.decl [template]
@@ -45,7 +44,6 @@ impl C as I {
// CHECK:STDOUT: %Int32: %Int32.type = struct_value () [template]
// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template]
// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template]
// CHECK:STDOUT: %.5: type = ptr_type %.3 [template]
// CHECK:STDOUT: %F.type.3: type = fn_type @F.3 [template]
// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template]
// CHECK:STDOUT: %.6: <witness> = interface_witness (%F.3) [template]
@@ -57,7 +55,6 @@ impl C as 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 {
@@ -125,8 +122,6 @@ impl C as I {
// CHECK:STDOUT: fn();
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Int32() -> type = "int.make_type_32";
// CHECK:STDOUT:
// CHECK:STDOUT: fn @F.2() -> i32 {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
+8 -13
View File
@@ -251,7 +251,7 @@ fn G(x: A) {
// CHECK:STDOUT:
// CHECK:STDOUT: specific @F.1(constants.%T) {}
// CHECK:STDOUT:
// CHECK:STDOUT: specific @impl(@impl.%T.loc8_14.2) {
// CHECK:STDOUT: specific @impl(%T.loc8_14.2) {
// CHECK:STDOUT: %T.loc8_14.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc8_14.2 => constants.%T
// CHECK:STDOUT: }
@@ -276,7 +276,6 @@ fn G(x: A) {
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template]
// CHECK:STDOUT: %Self: %HasF.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 %HasF.type, %F.type.1 [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @HasF.%F.decl [template]
@@ -449,7 +448,7 @@ fn G(x: A) {
// CHECK:STDOUT: %Self => constants.%T
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @impl(@impl.%T.loc8_14.2) {
// CHECK:STDOUT: specific @impl(%T.loc8_14.2) {
// CHECK:STDOUT: %T.loc8_14.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc8_14.2 => constants.%T
// CHECK:STDOUT: }
@@ -493,7 +492,6 @@ fn G(x: A) {
// CHECK:STDOUT: %C.3: type = class_type @C, @C(%.3) [template]
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
// CHECK:STDOUT: %.6: type = ptr_type %.3 [template]
// CHECK:STDOUT: %F.type.3: type = fn_type @F.2, @impl(%.3) [template]
// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template]
// CHECK:STDOUT: %.7: <witness> = interface_witness (%F.3) [template]
@@ -644,7 +642,7 @@ fn G(x: A) {
// CHECK:STDOUT:
// CHECK:STDOUT: specific @F.1(constants.%C.2) {}
// CHECK:STDOUT:
// CHECK:STDOUT: specific @impl(@impl.%T.loc10_14.2) {
// CHECK:STDOUT: specific @impl(%T.loc10_14.2) {
// CHECK:STDOUT: %T.loc10_14.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc10_14.2 => constants.%T
// CHECK:STDOUT: %C.loc10_25.2 => constants.%C.2
@@ -835,7 +833,7 @@ fn G(x: A) {
// CHECK:STDOUT:
// CHECK:STDOUT: specific @F.1(constants.%T, constants.%Self) {}
// CHECK:STDOUT:
// CHECK:STDOUT: specific @HasF(@HasF.%T.loc4_16.2) {
// CHECK:STDOUT: specific @HasF(%T.loc4_16.2) {
// CHECK:STDOUT: %T.loc4_16.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc4_16.2 => constants.%T
// CHECK:STDOUT: }
@@ -860,7 +858,7 @@ fn G(x: A) {
// CHECK:STDOUT:
// CHECK:STDOUT: specific @F.1(constants.%T, constants.%.3) {}
// CHECK:STDOUT:
// CHECK:STDOUT: specific @impl(@impl.%T.loc8_14.2) {
// CHECK:STDOUT: specific @impl(%T.loc8_14.2) {
// CHECK:STDOUT: %T.loc8_14.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc8_14.2 => constants.%T
// CHECK:STDOUT: %HasF.type.loc8_34.2 => constants.%HasF.type.2
@@ -900,7 +898,6 @@ fn G(x: A) {
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template]
// CHECK:STDOUT: %Self: %HasF.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 %HasF.type, %F.type.1 [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @HasF.%F.decl [template]
@@ -1027,7 +1024,7 @@ fn G(x: A) {
// CHECK:STDOUT:
// CHECK:STDOUT: specific @F.1(constants.%T) {}
// CHECK:STDOUT:
// CHECK:STDOUT: specific @impl(@impl.%T.loc9_14.2, @impl.%U.loc9_24.2) {
// CHECK:STDOUT: specific @impl(%T.loc9_14.2, %U.loc9_24.2) {
// CHECK:STDOUT: %T.loc9_14.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc9_14.2 => constants.%T
// CHECK:STDOUT: %U.loc9_24.2 => constants.%U
@@ -1040,7 +1037,6 @@ fn G(x: A) {
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
// CHECK:STDOUT: %HasF.type.1: type = generic_interface_type @HasF [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %HasF: %HasF.type.1 = struct_value () [template]
// CHECK:STDOUT: %HasF.type.2: type = facet_type <@HasF, @HasF(%T)> [symbolic]
// CHECK:STDOUT: %Self: %HasF.type.2 = bind_symbolic_name Self, 1 [symbolic]
@@ -1057,7 +1053,6 @@ fn G(x: A) {
// CHECK:STDOUT: %B: type = class_type @B [template]
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
// CHECK:STDOUT: %.6: type = ptr_type %.4 [template]
// CHECK:STDOUT: %HasF.type.3: type = facet_type <@HasF, @HasF(%B)> [template]
// CHECK:STDOUT: %F.type.3: type = fn_type @F.1, @HasF(%B) [template]
// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template]
@@ -1209,7 +1204,7 @@ fn G(x: A) {
// CHECK:STDOUT:
// CHECK:STDOUT: specific @F.1(constants.%T, constants.%Self) {}
// CHECK:STDOUT:
// CHECK:STDOUT: specific @HasF(@HasF.%T.loc4_16.2) {
// CHECK:STDOUT: specific @HasF(%T.loc4_16.2) {
// CHECK:STDOUT: %T.loc4_16.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc4_16.2 => constants.%T
// CHECK:STDOUT: }
@@ -1234,7 +1229,7 @@ fn G(x: A) {
// CHECK:STDOUT:
// CHECK:STDOUT: specific @F.1(constants.%T, constants.%T) {}
// CHECK:STDOUT:
// CHECK:STDOUT: specific @impl(@impl.%T.loc8_14.2) {
// CHECK:STDOUT: specific @impl(%T.loc8_14.2) {
// CHECK:STDOUT: %T.loc8_14.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc8_14.2 => constants.%T
// CHECK:STDOUT: %HasF.type.loc8_33.2 => constants.%HasF.type.2
@@ -31,7 +31,6 @@ fn F(c: C) -> i32 {
// 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: %F.type.1: type = fn_type @F.1 [template]
// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template]
@@ -44,7 +43,6 @@ fn F(c: C) -> i32 {
// CHECK:STDOUT: %.5: <witness> = complete_type_witness %.4 [template]
// CHECK:STDOUT: %F.type.3: type = fn_type @F.3 [template]
// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template]
// CHECK:STDOUT: %.6: type = ptr_type %.4 [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
@@ -53,7 +51,6 @@ fn F(c: C) -> i32 {
// 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 {
@@ -146,8 +143,6 @@ fn F(c: C) -> i32 {
// CHECK:STDOUT: extend @impl.%I.ref
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Int32() -> type = "int.make_type_32";
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @F.1(@I.%Self: %I.type) {
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)]
// CHECK:STDOUT:
@@ -38,7 +38,6 @@ fn TestSpecific(a: A({})) -> {} {
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
// CHECK:STDOUT: %A.type: type = generic_class_type @A [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %A.1: %A.type = struct_value () [template]
// CHECK:STDOUT: %A.2: type = class_type @A, @A(%T) [symbolic]
// CHECK:STDOUT: %.1: type = unbound_element_type %A.2, %T [symbolic]
@@ -68,7 +67,6 @@ fn TestSpecific(a: A({})) -> {} {
// CHECK:STDOUT: %.9: type = unbound_element_type %A.3, %V [symbolic]
// CHECK:STDOUT: %.10: type = struct_type {.n: %V} [symbolic]
// CHECK:STDOUT: %.11: <witness> = complete_type_witness %.10 [symbolic]
// CHECK:STDOUT: %.12: type = ptr_type %.10 [symbolic]
// CHECK:STDOUT: %W: type = bind_symbolic_name W, 0 [symbolic]
// CHECK:STDOUT: %W.patt: type = symbolic_binding_pattern W, 0 [symbolic]
// CHECK:STDOUT: %A.4: type = class_type @A, @A(%W) [symbolic]
@@ -77,7 +75,6 @@ fn TestSpecific(a: A({})) -> {} {
// CHECK:STDOUT: %.13: type = unbound_element_type %A.4, %W [symbolic]
// CHECK:STDOUT: %.14: type = struct_type {.n: %W} [symbolic]
// CHECK:STDOUT: %.15: <witness> = complete_type_witness %.14 [symbolic]
// CHECK:STDOUT: %.16: type = ptr_type %.14 [symbolic]
// CHECK:STDOUT: %I.type.4: type = facet_type <@I, @I(%W)> [symbolic]
// CHECK:STDOUT: %F.type.4: type = fn_type @F.1, @I(%W) [symbolic]
// CHECK:STDOUT: %F.4: %F.type.4 = struct_value () [symbolic]
@@ -93,8 +90,6 @@ fn TestSpecific(a: A({})) -> {} {
// CHECK:STDOUT: %.21: type = unbound_element_type %A.5, %.20 [template]
// CHECK:STDOUT: %.22: type = struct_type {.n: %.20} [template]
// CHECK:STDOUT: %.23: <witness> = complete_type_witness %.22 [template]
// CHECK:STDOUT: %.24: type = struct_type {.n: %empty_tuple.type} [template]
// CHECK:STDOUT: %.25: type = ptr_type %.22 [template]
// CHECK:STDOUT: %I.type.5: type = facet_type <@I, @I(%.20)> [template]
// CHECK:STDOUT: %F.type.6: type = fn_type @F.1, @I(%.20) [template]
// CHECK:STDOUT: %F.6: %F.type.6 = struct_value () [template]
@@ -352,7 +347,7 @@ fn TestSpecific(a: A({})) -> {} {
// CHECK:STDOUT: %T.patt.loc2_9.2 => constants.%T
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @A(@A.%T.loc2_9.2) {
// CHECK:STDOUT: specific @A(%T.loc2_9.2) {
// CHECK:STDOUT: %T.loc2_9.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc2_9.2 => constants.%T
// CHECK:STDOUT: }
@@ -373,7 +368,7 @@ fn TestSpecific(a: A({})) -> {} {
// CHECK:STDOUT: %Self => constants.%Self
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @I(@I.%U.loc6_13.2) {
// CHECK:STDOUT: specific @I(%U.loc6_13.2) {
// CHECK:STDOUT: %U.loc6_13.2 => constants.%U
// CHECK:STDOUT: %U.patt.loc6_13.2 => constants.%U
// CHECK:STDOUT: }
@@ -440,7 +435,7 @@ fn TestSpecific(a: A({})) -> {} {
// CHECK:STDOUT: %Self => constants.%A.3
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @impl(@impl.%V.loc10_14.2) {
// CHECK:STDOUT: specific @impl(%V.loc10_14.2) {
// CHECK:STDOUT: %V.loc10_14.2 => constants.%V
// CHECK:STDOUT: %V.patt.loc10_14.2 => constants.%V
// CHECK:STDOUT: %A.loc10_25.2 => constants.%A.3
@@ -199,7 +199,6 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template]
// CHECK:STDOUT: %Self: %HasF.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 %HasF.type, %F.type.1 [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @HasF.%F.decl [template]
@@ -271,7 +270,6 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %HasG.type: type = facet_type <@HasG> [template]
// CHECK:STDOUT: %Self.1: %HasG.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %G.type.1: type = fn_type @G.1 [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %G.1: %G.type.1 = struct_value () [template]
// CHECK:STDOUT: %.1: type = assoc_entity_type %HasG.type, %G.type.1 [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @HasG.%G.decl [template]
@@ -429,16 +427,12 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// 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: %TestCF.type: type = fn_type @TestCF [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %TestCF: %TestCF.type = struct_value () [template]
// CHECK:STDOUT: %.3: type = ptr_type %.1 [template]
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template]
// CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template]
// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template]
// CHECK:STDOUT: %.4: type = assoc_entity_type %HasF.type, %F.type.1 [template]
// CHECK:STDOUT: %.5: %.4 = assoc_entity element0, imports.%import_ref.7 [template]
// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template]
@@ -458,7 +452,6 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %import_ref.4 = import_ref PackageA//default, inst+3, unloaded
// CHECK:STDOUT: %import_ref.5: %.4 = import_ref PackageA//default, inst+10, loaded [template = constants.%.5]
// CHECK:STDOUT: %import_ref.6 = import_ref PackageA//default, inst+5, unloaded
// CHECK:STDOUT: %import_ref.7 = import_ref PackageA//default, inst+5, unloaded
// CHECK:STDOUT: %import_ref.8: type = import_ref PackageA//default, inst+17, loaded [template = constants.%C]
// CHECK:STDOUT: %import_ref.9: type = import_ref PackageA//default, inst+18, loaded [template = constants.%HasF.type]
// CHECK:STDOUT: %import_ref.10: <witness> = import_ref PackageA//default, inst+23, loaded [template = constants.%.6]
@@ -522,21 +515,16 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %D: type = class_type @D [template]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
// CHECK:STDOUT: %TestDF.type: type = fn_type @TestDF [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %TestDF: %TestDF.type = struct_value () [template]
// CHECK:STDOUT: %.3: type = ptr_type %.1 [template]
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template]
// CHECK:STDOUT: %Self.1: %HasF.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template]
// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template]
// CHECK:STDOUT: %.4: type = assoc_entity_type %HasF.type, %F.type.1 [template]
// CHECK:STDOUT: %.5: %.4 = assoc_entity element0, imports.%import_ref.7 [template]
// CHECK:STDOUT: %C: type = class_type @C [template]
// CHECK:STDOUT: %HasG.type: type = facet_type <@HasG> [template]
// CHECK:STDOUT: %Self.2: %HasG.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template]
// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template]
// CHECK:STDOUT: %.6: <witness> = interface_witness (%F.2) [template]
@@ -557,7 +545,6 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %import_ref.4 = import_ref PackageA//default, inst+3, unloaded
// CHECK:STDOUT: %import_ref.5: %.4 = import_ref PackageA//default, inst+10, loaded [template = constants.%.5]
// CHECK:STDOUT: %import_ref.6 = import_ref PackageA//default, inst+5, unloaded
// CHECK:STDOUT: %import_ref.7 = import_ref PackageA//default, inst+5, unloaded
// CHECK:STDOUT: %import_ref.8 = import_ref PackageA//default, inst+13, unloaded
// CHECK:STDOUT: %import_ref.9: type = import_ref PackageA//default, inst+17, loaded [template = constants.%C]
// CHECK:STDOUT: %import_ref.10: type = import_ref PackageA//default, inst+18, loaded [template = constants.%HasF.type]
@@ -663,20 +650,15 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// 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: %TestCG.type: type = fn_type @TestCG [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %TestCG: %TestCG.type = struct_value () [template]
// CHECK:STDOUT: %.3: type = ptr_type %.1 [template]
// CHECK:STDOUT: %HasG.type: type = facet_type <@HasG> [template]
// CHECK:STDOUT: %Self.1: %HasG.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %G.type.1: type = fn_type @G.1 [template]
// CHECK:STDOUT: %G.1: %G.type.1 = struct_value () [template]
// CHECK:STDOUT: %.4: type = assoc_entity_type %HasG.type, %G.type.1 [template]
// CHECK:STDOUT: %.5: %.4 = assoc_entity element0, imports.%import_ref.7 [template]
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template]
// CHECK:STDOUT: %Self.2: %HasF.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %D: type = class_type @D [template]
// CHECK:STDOUT: %G.type.2: type = fn_type @G.2 [template]
// CHECK:STDOUT: %G.2: %G.type.2 = struct_value () [template]
@@ -698,7 +680,6 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %import_ref.4 = import_ref PackageB//default, inst+5, unloaded
// CHECK:STDOUT: %import_ref.5: %.4 = import_ref PackageB//default, inst+12, loaded [template = constants.%.5]
// CHECK:STDOUT: %import_ref.6 = import_ref PackageB//default, inst+7, unloaded
// CHECK:STDOUT: %import_ref.7 = import_ref PackageB//default, inst+7, unloaded
// CHECK:STDOUT: %import_ref.8 = import_ref PackageA//default, inst+3, unloaded
// CHECK:STDOUT: %import_ref.9 = import_ref PackageA//default, inst+10, unloaded
// CHECK:STDOUT: %import_ref.10 = import_ref PackageA//default, inst+5, unloaded
@@ -804,21 +785,16 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %D: type = class_type @D [template]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
// CHECK:STDOUT: %TestDG.type: type = fn_type @TestDG [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %TestDG: %TestDG.type = struct_value () [template]
// CHECK:STDOUT: %.3: type = ptr_type %.1 [template]
// CHECK:STDOUT: %HasG.type: type = facet_type <@HasG> [template]
// CHECK:STDOUT: %Self.1: %HasG.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %G.type.1: type = fn_type @G.1 [template]
// CHECK:STDOUT: %G.1: %G.type.1 = struct_value () [template]
// CHECK:STDOUT: %.4: type = assoc_entity_type %HasG.type, %G.type.1 [template]
// CHECK:STDOUT: %.5: %.4 = assoc_entity element0, imports.%import_ref.7 [template]
// CHECK:STDOUT: %C: type = class_type @C [template]
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template]
// CHECK:STDOUT: %Self.2: %HasF.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %G.type.2: type = fn_type @G.2 [template]
// CHECK:STDOUT: %G.2: %G.type.2 = struct_value () [template]
// CHECK:STDOUT: %.6: <witness> = interface_witness (%G.2) [template]
@@ -836,7 +812,6 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %import_ref.4 = import_ref PackageB//default, inst+5, unloaded
// CHECK:STDOUT: %import_ref.5: %.4 = import_ref PackageB//default, inst+12, loaded [template = constants.%.5]
// CHECK:STDOUT: %import_ref.6 = import_ref PackageB//default, inst+7, unloaded
// CHECK:STDOUT: %import_ref.7 = import_ref PackageB//default, inst+7, unloaded
// CHECK:STDOUT: %import_ref.8 = import_ref PackageB//default, inst+23, unloaded
// CHECK:STDOUT: %import_ref.9: type = import_ref PackageB//default, inst+24, loaded [template = constants.%C]
// CHECK:STDOUT: %import_ref.10: type = import_ref PackageB//default, inst+25, loaded [template = constants.%HasG.type]
@@ -998,7 +973,6 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %Z.type: type = facet_type <@Z> [template]
// CHECK:STDOUT: %Self: %Z.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %H.type.1: type = fn_type @H.1 [template]
// CHECK:STDOUT: %H.1: %H.type.1 = struct_value () [template]
// CHECK:STDOUT: %.1: type = assoc_entity_type %Z.type, %H.type.1 [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, imports.%import_ref.5 [template]
// CHECK:STDOUT: %H.type.2: type = fn_type @H.2 [template]
@@ -1015,7 +989,6 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %import_ref.2 = import_ref PackageAssociatedInterface//default, inst+3, unloaded
// CHECK:STDOUT: %import_ref.3: %.1 = import_ref PackageAssociatedInterface//default, inst+10, loaded [template = constants.%.2]
// CHECK:STDOUT: %import_ref.4 = import_ref PackageAssociatedInterface//default, inst+5, unloaded
// CHECK:STDOUT: %import_ref.5 = import_ref PackageAssociatedInterface//default, inst+5, unloaded
// CHECK:STDOUT: %import_ref.6: type = import_ref PackageAssociatedInterface//default, inst+13, loaded [template = constants.%empty_tuple.type]
// CHECK:STDOUT: %import_ref.7: type = import_ref PackageAssociatedInterface//default, inst+14, loaded [template = constants.%Z.type]
// CHECK:STDOUT: %import_ref.8: <witness> = import_ref PackageAssociatedInterface//default, inst+19, loaded [template = constants.%.3]
@@ -1070,7 +1043,6 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %X: %T = bind_symbolic_name X, 1 [symbolic]
// CHECK:STDOUT: %X.patt: %T = symbolic_binding_pattern X, 1 [symbolic]
// CHECK:STDOUT: %AnyParam.type: type = generic_class_type @AnyParam [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %AnyParam.1: %AnyParam.type = struct_value () [template]
// CHECK:STDOUT: %AnyParam.2: type = class_type @AnyParam, @AnyParam(%T, %X) [symbolic]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
@@ -1161,12 +1133,9 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %AnyParam.type: type = generic_class_type @AnyParam [template]
// CHECK:STDOUT: %AnyParam.1: %AnyParam.type = struct_value () [template]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %X.1: %T = bind_symbolic_name X, 1 [symbolic]
// CHECK:STDOUT: %AnyParam.2: type = class_type @AnyParam, @AnyParam(%T, %X.1) [symbolic]
// CHECK:STDOUT: %X.2: @AnyParam.%T (%T) = bind_symbolic_name X, 1 [symbolic]
// CHECK:STDOUT: %X.patt.1: @AnyParam.%T (%T) = symbolic_binding_pattern X, 1 [symbolic]
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
// CHECK:STDOUT: %X.patt.2: %T = symbolic_binding_pattern X, 1 [symbolic]
// CHECK:STDOUT: %AnyParam.3: type = class_type @AnyParam, @AnyParam(%GenericInterface.type.1, %GenericInterface) [template]
@@ -1179,7 +1148,6 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %.3: <witness> = interface_witness (%K.1) [template]
// CHECK:STDOUT: %L.type: type = fn_type @L [template]
// CHECK:STDOUT: %L: %L.type = struct_value () [template]
// CHECK:STDOUT: %.4: type = ptr_type %.1 [template]
// CHECK:STDOUT: %struct: %AnyParam.3 = struct_value () [template]
// CHECK:STDOUT: %.5: type = assoc_entity_type %Y.type, %K.type.2 [template]
// CHECK:STDOUT: %.6: %.5 = assoc_entity element0, imports.%import_ref.7 [template]
@@ -1197,7 +1165,6 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %import_ref.4 = import_ref PackageHasParam//default, inst+28, unloaded
// CHECK:STDOUT: %import_ref.5: %.5 = import_ref PackageHasParam//default, inst+34, loaded [template = constants.%.6]
// CHECK:STDOUT: %import_ref.6: %K.type.2 = import_ref PackageHasParam//default, inst+30, loaded [template = constants.%K.2]
// CHECK:STDOUT: %import_ref.7 = import_ref PackageHasParam//default, inst+30, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -1309,7 +1276,7 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %U.patt.loc6_28.2 => constants.%U
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @GenericInterface(@GenericInterface.%U.loc6_28.2) {
// CHECK:STDOUT: specific @GenericInterface(%U.loc6_28.2) {
// CHECK:STDOUT: %U.loc6_28.2 => constants.%U
// CHECK:STDOUT: %U.patt.loc6_28.2 => constants.%U
// CHECK:STDOUT: }
@@ -1345,33 +1312,26 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %M.type: type = fn_type @M [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %M: %M.type = struct_value () [template]
// CHECK:STDOUT: %AnyParam.type: type = generic_class_type @AnyParam [template]
// CHECK:STDOUT: %AnyParam.1: %AnyParam.type = struct_value () [template]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %X.1: %T = bind_symbolic_name X, 1 [symbolic]
// CHECK:STDOUT: %AnyParam.2: type = class_type @AnyParam, @AnyParam(%T, %X.1) [symbolic]
// CHECK:STDOUT: %X.2: @AnyParam.%T (%T) = bind_symbolic_name X, 1 [symbolic]
// CHECK:STDOUT: %X.patt.1: @AnyParam.%T (%T) = symbolic_binding_pattern X, 1 [symbolic]
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
// CHECK:STDOUT: %X.patt.2: %T = symbolic_binding_pattern X, 1 [symbolic]
// CHECK:STDOUT: %GenericInterface.type.1: type = generic_interface_type @GenericInterface [template]
// CHECK:STDOUT: %GenericInterface: %GenericInterface.type.1 = struct_value () [template]
// CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic]
// CHECK:STDOUT: %GenericInterface.type.2: type = facet_type <@GenericInterface, @GenericInterface(%U)> [symbolic]
// CHECK:STDOUT: %Self.1: @GenericInterface.%GenericInterface.type (%GenericInterface.type.2) = bind_symbolic_name Self, 1 [symbolic]
// CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 0 [symbolic]
// CHECK:STDOUT: %Self.2: %GenericInterface.type.2 = bind_symbolic_name Self, 1 [symbolic]
// CHECK:STDOUT: %AnyParam.3: type = class_type @AnyParam, @AnyParam(%GenericInterface.type.1, %GenericInterface) [template]
// CHECK:STDOUT: %.3: type = ptr_type %.1 [template]
// CHECK:STDOUT: %struct: %AnyParam.3 = struct_value () [template]
// CHECK:STDOUT: %Y.type: type = facet_type <@Y> [template]
// CHECK:STDOUT: %Self.3: %Y.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %K.type: type = fn_type @K [template]
// CHECK:STDOUT: %K: %K.type = struct_value () [template]
// CHECK:STDOUT: %.4: type = assoc_entity_type %Y.type, %K.type [template]
// CHECK:STDOUT: %.5: %.4 = assoc_entity element0, imports.%import_ref.9 [template]
// CHECK:STDOUT: }
@@ -1394,7 +1354,6 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %import_ref.6 = import_ref PackageHasParam//default, inst+28, unloaded
// CHECK:STDOUT: %import_ref.7: %.4 = import_ref PackageHasParam//default, inst+34, loaded [template = constants.%.5]
// CHECK:STDOUT: %import_ref.8 = import_ref PackageHasParam//default, inst+30, unloaded
// CHECK:STDOUT: %import_ref.9 = import_ref PackageHasParam//default, inst+30, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -1489,7 +1448,7 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %U.patt => constants.%U
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @GenericInterface(@GenericInterface.%U) {
// CHECK:STDOUT: specific @GenericInterface(%U) {
// CHECK:STDOUT: %U => constants.%U
// CHECK:STDOUT: %U.patt => constants.%U
// CHECK:STDOUT: }
@@ -1527,7 +1486,6 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
// CHECK:STDOUT: %C.type: type = generic_class_type @C [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %C.1: %C.type = struct_value () [template]
// CHECK:STDOUT: %C.2: type = class_type @C, @C(%T) [symbolic]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
@@ -1718,39 +1676,25 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %C.type: type = generic_class_type @C [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %C.1: %C.type = struct_value () [template]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %C.2: type = class_type @C, @C(%T) [symbolic]
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
// CHECK:STDOUT: %C.3: type = class_type @C, @C(type) [template]
// CHECK:STDOUT: %Test.type: type = fn_type @Test [template]
// CHECK:STDOUT: %Test: %Test.type = struct_value () [template]
// CHECK:STDOUT: %.3: type = ptr_type %.1 [template]
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
// CHECK:STDOUT: %Self.1: %I.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: %.4: type = assoc_entity_type %I.type, %F.type [template]
// CHECK:STDOUT: %.5: %.4 = assoc_entity element0, imports.%import_ref.7 [template]
// CHECK:STDOUT: %Extra8.type: type = facet_type <@Extra8> [template]
// CHECK:STDOUT: %Self.2: %Extra8.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %Extra7.type: type = facet_type <@Extra7> [template]
// CHECK:STDOUT: %Self.3: %Extra7.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %Extra6.type: type = facet_type <@Extra6> [template]
// CHECK:STDOUT: %Self.4: %Extra6.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %Extra5.type: type = facet_type <@Extra5> [template]
// CHECK:STDOUT: %Self.5: %Extra5.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %Extra4.type: type = facet_type <@Extra4> [template]
// CHECK:STDOUT: %Self.6: %Extra4.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %Extra3.type: type = facet_type <@Extra3> [template]
// CHECK:STDOUT: %Self.7: %Extra3.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %Extra2.type: type = facet_type <@Extra2> [template]
// CHECK:STDOUT: %Self.8: %Extra2.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %Extra1.type: type = facet_type <@Extra1> [template]
// CHECK:STDOUT: %Self.9: %Extra1.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %tuple.type: type = tuple_type (%Extra1.type, %Extra2.type, %Extra3.type, %Extra4.type, %Extra5.type, %Extra6.type, %Extra7.type, %Extra8.type) [template]
// CHECK:STDOUT: %C.4: type = class_type @C, @C(%tuple.type) [template]
// CHECK:STDOUT: }
@@ -1767,7 +1711,6 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: %import_ref.4 = import_ref HasExtraInterfaces//default, inst+51, unloaded
// CHECK:STDOUT: %import_ref.5: %.4 = import_ref HasExtraInterfaces//default, inst+57, loaded [template = constants.%.5]
// CHECK:STDOUT: %import_ref.6 = import_ref HasExtraInterfaces//default, inst+53, unloaded
// CHECK:STDOUT: %import_ref.7 = import_ref HasExtraInterfaces//default, inst+53, unloaded
// CHECK:STDOUT: %import_ref.8 = import_ref HasExtraInterfaces//default, inst+31, unloaded
// CHECK:STDOUT: %import_ref.9 = import_ref HasExtraInterfaces//default, inst+27, unloaded
// CHECK:STDOUT: %import_ref.10 = import_ref HasExtraInterfaces//default, inst+23, unloaded
-13
View File
@@ -186,7 +186,6 @@ fn P(o: O) {
// CHECK:STDOUT: %.8: <witness> = complete_type_witness %.7 [template]
// CHECK:STDOUT: %H.type: type = fn_type @H [template]
// CHECK:STDOUT: %H: %H.type = struct_value () [template]
// CHECK:STDOUT: %.9: type = ptr_type %.7 [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
@@ -330,7 +329,6 @@ fn P(o: O) {
// CHECK:STDOUT: %HasA1.type: type = facet_type <@HasA1> [template]
// CHECK:STDOUT: %Self.1: %HasA1.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %A.type.1: type = fn_type @A.1 [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %A.1: %A.type.1 = struct_value () [template]
// CHECK:STDOUT: %.1: type = assoc_entity_type %HasA1.type, %A.type.1 [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @HasA1.%A.decl [template]
@@ -351,7 +349,6 @@ fn P(o: O) {
// CHECK:STDOUT: %.8: <witness> = complete_type_witness %.7 [template]
// CHECK:STDOUT: %B.type: type = fn_type @B [template]
// CHECK:STDOUT: %B: %B.type = struct_value () [template]
// CHECK:STDOUT: %.9: type = ptr_type %.7 [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
@@ -493,7 +490,6 @@ fn P(o: O) {
// CHECK:STDOUT: %.3: type = struct_type {} [template]
// CHECK:STDOUT: %.4: <witness> = complete_type_witness %.3 [template]
// CHECK:STDOUT: %E: type = class_type @E [template]
// CHECK:STDOUT: %.5: type = ptr_type %.3 [template]
// CHECK:STDOUT: %.6: type = unbound_element_type %E, %B [template]
// CHECK:STDOUT: %I.type.2: type = fn_type @I.2 [template]
// CHECK:STDOUT: %I.2: %I.type.2 = struct_value () [template]
@@ -502,8 +498,6 @@ fn P(o: O) {
// CHECK:STDOUT: %.9: <witness> = complete_type_witness %.8 [template]
// CHECK:STDOUT: %H.type: type = fn_type @H [template]
// CHECK:STDOUT: %H: %H.type = struct_value () [template]
// CHECK:STDOUT: %.10: type = struct_type {.base: %.5} [template]
// CHECK:STDOUT: %.11: type = ptr_type %.8 [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
@@ -623,7 +617,6 @@ fn P(o: O) {
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %Base: type = class_type @Base [template]
// CHECK:STDOUT: %K.type.1: type = fn_type @K.1 [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %K.1: %K.type.1 = struct_value () [template]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
@@ -634,7 +627,6 @@ fn P(o: O) {
// CHECK:STDOUT: %.3: type = assoc_entity_type %HasK.type, %K.type.2 [template]
// CHECK:STDOUT: %.4: %.3 = assoc_entity element0, @HasK.%K.decl [template]
// CHECK:STDOUT: %L: type = class_type @L [template]
// CHECK:STDOUT: %.5: type = ptr_type %.1 [template]
// CHECK:STDOUT: %.6: type = unbound_element_type %L, %Base [template]
// CHECK:STDOUT: %K.type.3: type = fn_type @K.3 [template]
// CHECK:STDOUT: %K.3: %K.type.3 = struct_value () [template]
@@ -643,8 +635,6 @@ fn P(o: O) {
// CHECK:STDOUT: %.9: <witness> = complete_type_witness %.8 [template]
// CHECK:STDOUT: %M.type: type = fn_type @M [template]
// CHECK:STDOUT: %M: %M.type = struct_value () [template]
// CHECK:STDOUT: %.10: type = struct_type {.base: %.5} [template]
// CHECK:STDOUT: %.11: type = ptr_type %.8 [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
@@ -771,7 +761,6 @@ fn P(o: O) {
// CHECK:STDOUT: %.5: type = assoc_entity_type %HasN2.type, %N.type.3 [template]
// CHECK:STDOUT: %.6: %.5 = assoc_entity element0, @HasN2.%N.decl [template]
// CHECK:STDOUT: %O: type = class_type @O [template]
// CHECK:STDOUT: %.7: type = ptr_type %.1 [template]
// CHECK:STDOUT: %.8: type = unbound_element_type %O, %NBase [template]
// CHECK:STDOUT: %N.type.4: type = fn_type @N.4 [template]
// CHECK:STDOUT: %N.4: %N.type.4 = struct_value () [template]
@@ -785,8 +774,6 @@ fn P(o: O) {
// CHECK:STDOUT: %.12: <witness> = complete_type_witness %.11 [template]
// CHECK:STDOUT: %P.type: type = fn_type @P [template]
// CHECK:STDOUT: %P: %P.type = struct_value () [template]
// CHECK:STDOUT: %.13: type = struct_type {.base: %.7} [template]
// CHECK:STDOUT: %.14: type = ptr_type %.11 [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
-1
View File
@@ -24,7 +24,6 @@ impl C as Simple {
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [template]
// CHECK:STDOUT: %Self: %Simple.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 %Simple.type, %F.type.1 [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @Simple.%F.decl [template]
@@ -32,8 +32,6 @@ impl AC as AI {}
// 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: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %.3: <witness> = interface_witness () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -21,7 +21,6 @@ impl true as I {}
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %.1: bool = bool_literal true [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %.2: <witness> = interface_witness () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -41,7 +41,6 @@ impl C as J {}
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -70,7 +69,6 @@ impl C as J {}
// 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: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -84,7 +84,6 @@ impl (C, C).0 as I {}
// CHECK:STDOUT: %T.patt.3: %K.type = symbolic_binding_pattern T, 0 [symbolic]
// CHECK:STDOUT: %T.4: %L.type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %T.patt.4: %L.type = symbolic_binding_pattern T, 0 [symbolic]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %.1: <witness> = interface_witness () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -372,8 +371,6 @@ impl (C, C).0 as I {}
// CHECK:STDOUT: %Self.2: %J.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %T: %I.type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %T.patt: %I.type = symbolic_binding_pattern T, 0 [symbolic]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %.1: <witness> = interface_witness () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -448,11 +445,9 @@ impl (C, C).0 as I {}
// CHECK:STDOUT: %C: type = class_type @C [template]
// 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: %.1: <witness> = interface_witness () [template]
// CHECK:STDOUT: %tuple.type: type = tuple_type (type, type) [template]
// CHECK:STDOUT: %.2: i32 = int_value 0 [template]
// CHECK:STDOUT: %.3: type = ptr_type %tuple.type [template]
// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%C, %C) [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -46,7 +46,6 @@ fn G(c: C) {
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
// CHECK:STDOUT: %Self: %I.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 %I.type, %F.type.1 [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @I.%F.decl [template]
@@ -117,12 +116,8 @@ fn G(c: 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: %G.type: type = fn_type @G [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
// CHECK:STDOUT: %.3: type = ptr_type %.1 [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: imports {
@@ -46,7 +46,6 @@ impl forall [T:! type] C as I(T*) {}
// 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]
@@ -146,7 +145,7 @@ impl forall [T:! type] C as I(T*) {}
// CHECK:STDOUT: %T.patt.loc5_13.2 => constants.%T
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @I(@I.%T.loc5_13.2) {
// CHECK:STDOUT: specific @I(%T.loc5_13.2) {
// CHECK:STDOUT: %T.loc5_13.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc5_13.2 => constants.%T
// CHECK:STDOUT: }
@@ -188,14 +187,10 @@ impl forall [T:! type] C as I(T*) {}
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %T: type = bind_symbolic_name 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.1: @I.%I.type (%I.type.2) = bind_symbolic_name Self, 1 [symbolic]
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
// 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: %Self.2: %I.type.2 = bind_symbolic_name Self, 1 [symbolic]
// CHECK:STDOUT: %.3: type = ptr_type %T [symbolic]
// CHECK:STDOUT: %I.type.3: type = facet_type <@I, @I(%.3)> [symbolic]
@@ -289,7 +284,7 @@ impl forall [T:! type] C as I(T*) {}
// CHECK:STDOUT: %Self => constants.%Self.2
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @I(@I.%T) {
// CHECK:STDOUT: specific @I(%T) {
// CHECK:STDOUT: %T => constants.%T
// CHECK:STDOUT: %T.patt => constants.%T
// CHECK:STDOUT: }
@@ -327,14 +322,10 @@ impl forall [T:! type] C as I(T*) {}
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %T: type = bind_symbolic_name 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.1: @I.%I.type (%I.type.2) = bind_symbolic_name Self, 1 [symbolic]
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
// 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: %Self.2: %I.type.2 = bind_symbolic_name Self, 1 [symbolic]
// CHECK:STDOUT: %.3: type = ptr_type %T [symbolic]
// CHECK:STDOUT: %I.type.3: type = facet_type <@I, @I(%.3)> [symbolic]
@@ -417,7 +408,7 @@ impl forall [T:! type] C as I(T*) {}
// CHECK:STDOUT: %T.patt => constants.%T
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @I(@I.%T) {
// CHECK:STDOUT: specific @I(%T) {
// CHECK:STDOUT: %T => constants.%T
// CHECK:STDOUT: %T.patt => constants.%T
// CHECK:STDOUT: }
@@ -36,7 +36,6 @@ fn F(x: (), y: ()) -> () {
// CHECK:STDOUT: %Add.type: type = facet_type <@Add> [template]
// CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %Op.type: type = fn_type @Op [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Op: %Op.type = struct_value () [template]
// CHECK:STDOUT: %.1: type = assoc_entity_type %Add.type, %Op.type [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @Add.%Op.decl [template]
@@ -116,7 +115,6 @@ fn F(x: (), y: ()) -> () {
// CHECK:STDOUT: %import_ref.2 = import_ref Main//a, inst+3, unloaded
// CHECK:STDOUT: %import_ref.3: %.2 = import_ref Main//a, inst+32, loaded [template = constants.%.3]
// CHECK:STDOUT: %import_ref.4: %Op.type.2 = import_ref Main//a, inst+26, loaded [template = constants.%Op.2]
// CHECK:STDOUT: %import_ref.5 = import_ref Main//a, inst+26, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -45,7 +45,6 @@ fn F() -> c.(I.F)() {}
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
// CHECK:STDOUT: %C.type: type = generic_class_type @C [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %C.1: %C.type = struct_value () [template]
// CHECK:STDOUT: %C.2: type = class_type @C, @C(%T) [symbolic]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
@@ -173,7 +172,7 @@ fn F() -> c.(I.F)() {}
// CHECK:STDOUT:
// CHECK:STDOUT: specific @F.1(constants.%C.2) {}
// CHECK:STDOUT:
// CHECK:STDOUT: specific @impl(@impl.%T.loc10_14.2) {
// CHECK:STDOUT: specific @impl(%T.loc10_14.2) {
// CHECK:STDOUT: %T.loc10_14.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc10_14.2 => constants.%T
// CHECK:STDOUT: %C.loc10_25.2 => constants.%C.2
@@ -186,17 +185,14 @@ fn F() -> c.(I.F)() {}
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %C.1: %C.type = struct_value () [template]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %C.2: type = class_type @C, @C(%T) [symbolic]
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
// CHECK:STDOUT: %C.3: type = class_type @C, @C(%.1) [template]
// CHECK:STDOUT: %.3: type = ptr_type %.1 [template]
// CHECK:STDOUT: %struct: %C.3 = struct_value () [template]
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template]
// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template]
// CHECK:STDOUT: %.4: type = assoc_entity_type %I.type, %F.type.1 [template]
// CHECK:STDOUT: %.5: %.4 = assoc_entity element0, imports.%import_ref.7 [template]
// CHECK:STDOUT: %F.type.2: type = fn_type @F.2, @impl(%T) [symbolic]
@@ -217,7 +213,6 @@ fn F() -> c.(I.F)() {}
// CHECK:STDOUT: %import_ref.4 = import_ref Main//import_generic, inst+19, unloaded
// CHECK:STDOUT: %import_ref.5: %.4 = import_ref Main//import_generic, inst+25, loaded [template = constants.%.5]
// CHECK:STDOUT: %import_ref.6 = import_ref Main//import_generic, inst+21, unloaded
// CHECK:STDOUT: %import_ref.7 = import_ref Main//import_generic, inst+21, unloaded
// CHECK:STDOUT: %import_ref.8: type = import_ref Main//import_generic, inst+32, loaded [symbolic = @impl.%C (constants.%C.2)]
// CHECK:STDOUT: %import_ref.9: type = import_ref Main//import_generic, inst+33, loaded [template = constants.%I.type]
// CHECK:STDOUT: %import_ref.10: <witness> = import_ref Main//import_generic, inst+42, loaded [symbolic = @impl.%.1 (constants.%.6)]
@@ -344,7 +339,7 @@ fn F() -> c.(I.F)() {}
// CHECK:STDOUT: %.1 => constants.%.6
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @impl(@impl.%T) {
// CHECK:STDOUT: specific @impl(%T) {
// CHECK:STDOUT: %T => constants.%T
// CHECK:STDOUT: %T.patt => constants.%T
// CHECK:STDOUT: %C => constants.%C.2
@@ -107,7 +107,6 @@ fn MakeC(a: A) -> C {
// CHECK:STDOUT: %.7: <witness> = interface_witness (%Op.2) [template]
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
// CHECK:STDOUT: %.8: type = ptr_type %.3 [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -228,7 +227,7 @@ fn MakeC(a: A) -> C {
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Op.1(constants.%T, constants.%Self) {}
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Action(@Action.%T.loc4_18.2) {
// CHECK:STDOUT: specific @Action(%T.loc4_18.2) {
// CHECK:STDOUT: %T.loc4_18.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc4_18.2 => constants.%T
// CHECK:STDOUT: }
@@ -252,8 +251,6 @@ fn MakeC(a: A) -> C {
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %B: type = class_type @B [template]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
// CHECK:STDOUT: %Action.type.1: type = generic_interface_type @Action [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Action: %Action.type.1 = struct_value () [template]
@@ -274,7 +271,6 @@ fn MakeC(a: A) -> C {
// CHECK:STDOUT: %.6: %.5 = assoc_entity element0, imports.%import_ref.16 [template]
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
// CHECK:STDOUT: %.7: type = ptr_type %.1 [template]
// CHECK:STDOUT: %.8: %.3 = assoc_entity element0, imports.%import_ref.17 [symbolic]
// CHECK:STDOUT: %Op.type.3: type = fn_type @Op.2 [template]
// CHECK:STDOUT: %Op.3: %Op.type.3 = struct_value () [template]
@@ -297,8 +293,6 @@ fn MakeC(a: A) -> C {
// CHECK:STDOUT: %import_ref.13: <witness> = import_ref Main//action, inst+52, loaded [template = constants.%.9]
// CHECK:STDOUT: %import_ref.14 = import_ref Main//action, inst+45, unloaded
// CHECK:STDOUT: %import_ref.15 = import_ref Main//action, inst+16, unloaded
// CHECK:STDOUT: %import_ref.16 = import_ref Main//action, inst+16, unloaded
// CHECK:STDOUT: %import_ref.17 = import_ref Main//action, inst+16, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -396,7 +390,7 @@ fn MakeC(a: A) -> C {
// CHECK:STDOUT: %.2 => constants.%.6
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Action(@Action.%T) {
// CHECK:STDOUT: specific @Action(%T) {
// CHECK:STDOUT: %T => constants.%T
// CHECK:STDOUT: %T.patt => constants.%T
// CHECK:STDOUT: }
@@ -407,10 +401,7 @@ fn MakeC(a: A) -> C {
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %B: type = class_type @B [template]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
// CHECK:STDOUT: %Action.type.1: type = generic_interface_type @Action [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Action: %Action.type.1 = struct_value () [template]
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %Action.type.2: type = facet_type <@Action, @Action(%T)> [symbolic]
@@ -429,7 +420,6 @@ fn MakeC(a: A) -> C {
// CHECK:STDOUT: %.6: %.5 = assoc_entity element0, imports.%import_ref.16 [template]
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
// CHECK:STDOUT: %.7: type = ptr_type %.1 [template]
// CHECK:STDOUT: %C: type = class_type @C [template]
// CHECK:STDOUT: %Action.type.4: type = facet_type <@Action, @Action(%C)> [template]
// CHECK:STDOUT: %Op.type.3: type = fn_type @Op, @Action(%C) [template]
@@ -455,9 +445,7 @@ fn MakeC(a: A) -> C {
// CHECK:STDOUT: %import_ref.13 = import_ref Main//action, inst+52, unloaded
// CHECK:STDOUT: %import_ref.14 = import_ref Main//action, inst+45, unloaded
// CHECK:STDOUT: %import_ref.15 = import_ref Main//action, inst+16, unloaded
// CHECK:STDOUT: %import_ref.16 = import_ref Main//action, inst+16, unloaded
// CHECK:STDOUT: %import_ref.17 = import_ref Main//action, inst+37, unloaded
// CHECK:STDOUT: %import_ref.18 = import_ref Main//action, inst+16, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -556,7 +544,7 @@ fn MakeC(a: A) -> C {
// CHECK:STDOUT: %.2 => constants.%.6
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Action(@Action.%T) {
// CHECK:STDOUT: specific @Action(%T) {
// CHECK:STDOUT: %T => constants.%T
// CHECK:STDOUT: %T.patt => constants.%T
// CHECK:STDOUT: }
@@ -582,7 +570,6 @@ fn MakeC(a: A) -> C {
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
// CHECK:STDOUT: %Factory.type.1: type = generic_interface_type @Factory [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Factory: %Factory.type.1 = struct_value () [template]
// CHECK:STDOUT: %Factory.type.2: type = facet_type <@Factory, @Factory(%T)> [symbolic]
// CHECK:STDOUT: %Self: %Factory.type.2 = bind_symbolic_name Self, 1 [symbolic]
@@ -705,7 +692,7 @@ fn MakeC(a: A) -> C {
// CHECK:STDOUT: %T => constants.%T
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Factory(@Factory.%T.loc4_19.2) {
// CHECK:STDOUT: specific @Factory(%T.loc4_19.2) {
// CHECK:STDOUT: %T.loc4_19.2 => constants.%T
// CHECK:STDOUT: %T.patt.loc4_19.2 => constants.%T
// CHECK:STDOUT: }
@@ -731,10 +718,7 @@ fn MakeC(a: A) -> C {
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %B: type = class_type @B [template]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
// CHECK:STDOUT: %Factory.type.1: type = generic_interface_type @Factory [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Factory: %Factory.type.1 = struct_value () [template]
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %Factory.type.2: type = facet_type <@Factory, @Factory(%T)> [symbolic]
@@ -753,7 +737,6 @@ fn MakeC(a: A) -> C {
// CHECK:STDOUT: %.6: %.5 = assoc_entity element0, imports.%import_ref.14 [template]
// CHECK:STDOUT: %MakeB.type: type = fn_type @MakeB [template]
// CHECK:STDOUT: %MakeB: %MakeB.type = struct_value () [template]
// CHECK:STDOUT: %.7: type = ptr_type %.1 [template]
// CHECK:STDOUT: %.8: %.3 = assoc_entity element0, imports.%import_ref.15 [symbolic]
// CHECK:STDOUT: %Make.type.3: type = fn_type @Make.2 [template]
// CHECK:STDOUT: %Make.3: %Make.type.3 = struct_value () [template]
@@ -774,8 +757,6 @@ fn MakeC(a: A) -> C {
// CHECK:STDOUT: %import_ref.11: <witness> = import_ref Main//factory, inst+60, loaded [template = constants.%.9]
// CHECK:STDOUT: %import_ref.12 = import_ref Main//factory, inst+53, unloaded
// CHECK:STDOUT: %import_ref.13 = import_ref Main//factory, inst+21, unloaded
// CHECK:STDOUT: %import_ref.14 = import_ref Main//factory, inst+21, unloaded
// CHECK:STDOUT: %import_ref.15 = import_ref Main//factory, inst+21, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -878,7 +859,7 @@ fn MakeC(a: A) -> C {
// CHECK:STDOUT: %.2 => constants.%.6
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Factory(@Factory.%T) {
// CHECK:STDOUT: specific @Factory(%T) {
// CHECK:STDOUT: %T => constants.%T
// CHECK:STDOUT: %T.patt => constants.%T
// CHECK:STDOUT: }
@@ -894,7 +875,6 @@ fn MakeC(a: A) -> C {
// CHECK:STDOUT: %.1: type = struct_type {} [template]
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
// CHECK:STDOUT: %Factory.type.1: type = generic_interface_type @Factory [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Factory: %Factory.type.1 = struct_value () [template]
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
// CHECK:STDOUT: %Factory.type.2: type = facet_type <@Factory, @Factory(%T)> [symbolic]
@@ -914,7 +894,6 @@ fn MakeC(a: A) -> C {
// CHECK:STDOUT: %C: type = class_type @C [template]
// CHECK:STDOUT: %MakeC.type: type = fn_type @MakeC [template]
// CHECK:STDOUT: %MakeC: %MakeC.type = struct_value () [template]
// CHECK:STDOUT: %.7: type = ptr_type %.1 [template]
// CHECK:STDOUT: %Factory.type.4: type = facet_type <@Factory, @Factory(%C)> [template]
// CHECK:STDOUT: %Make.type.3: type = fn_type @Make, @Factory(%C) [template]
// CHECK:STDOUT: %Make.3: %Make.type.3 = struct_value () [template]
@@ -937,8 +916,6 @@ fn MakeC(a: A) -> C {
// CHECK:STDOUT: %import_ref.11 = import_ref Main//factory, inst+60, unloaded
// CHECK:STDOUT: %import_ref.12 = import_ref Main//factory, inst+53, unloaded
// CHECK:STDOUT: %import_ref.13 = import_ref Main//factory, inst+21, unloaded
// CHECK:STDOUT: %import_ref.14 = import_ref Main//factory, inst+21, unloaded
// CHECK:STDOUT: %import_ref.15 = import_ref Main//factory, inst+21, unloaded
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
@@ -1045,7 +1022,7 @@ fn MakeC(a: A) -> C {
// CHECK:STDOUT: %.2 => constants.%.6
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Factory(@Factory.%T) {
// CHECK:STDOUT: specific @Factory(%T) {
// CHECK:STDOUT: %T => constants.%T
// CHECK:STDOUT: %T.patt => constants.%T
// CHECK:STDOUT: }
@@ -113,7 +113,6 @@ impl () as D;
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %A.type: type = facet_type <@A> [template]
// CHECK:STDOUT: %Self: %A.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %.1: <witness> = interface_witness () [template]
// CHECK:STDOUT: }
@@ -210,7 +209,6 @@ impl () as D;
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %B.type: type = facet_type <@B> [template]
// CHECK:STDOUT: %Self: %B.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -271,7 +269,6 @@ impl () as D;
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %C.type: type = facet_type <@C> [template]
// CHECK:STDOUT: %Self: %C.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -28,7 +28,6 @@ class A {
// CHECK:STDOUT: %DefaultConstructible.type: type = facet_type <@DefaultConstructible> [template]
// CHECK:STDOUT: %Self: %DefaultConstructible.type = bind_symbolic_name Self, 0 [symbolic]
// CHECK:STDOUT: %Make.type.1: type = fn_type @Make.1 [template]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
// CHECK:STDOUT: %Make.1: %Make.type.1 = struct_value () [template]
// CHECK:STDOUT: %.1: type = assoc_entity_type %DefaultConstructible.type, %Make.type.1 [template]
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @DefaultConstructible.%Make.decl [template]
@@ -39,7 +38,6 @@ class A {
// CHECK:STDOUT: %Make.type.2: type = fn_type @Make.2 [template]
// CHECK:STDOUT: %Make.2: %Make.type.2 = struct_value () [template]
// CHECK:STDOUT: %.5: <witness> = interface_witness (%Make.2) [template]
// CHECK:STDOUT: %.6: type = ptr_type %.3 [template]
// CHECK:STDOUT: %struct: %C = struct_value () [template]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -53,7 +53,6 @@ impl D as SelfNested {
// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template]
// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template]
// CHECK:STDOUT: %.5: <witness> = interface_witness (%F.2) [template]
// CHECK:STDOUT: %.6: type = ptr_type %.3 [template]
// CHECK:STDOUT: %struct.1: %C = struct_value () [template]
// CHECK:STDOUT: %F.type.3: type = fn_type @F.3 [template]
// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template]
-4
View File
@@ -24,7 +24,6 @@ impl i32 as 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: %X: type = class_type @X [template]
// CHECK:STDOUT: %.1: type = struct_type {} [template]
@@ -38,7 +37,6 @@ impl i32 as 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 {
@@ -94,5 +92,3 @@ impl i32 as I {}
// CHECK:STDOUT: .Self = constants.%X
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Int32() -> type = "int.make_type_32";
// CHECK:STDOUT: