mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-06 07:54:41 +01:00
Name empty tuples distinctly in SemIR. (#4503)
Building on #4502, give empty tuple values a distinct name, and also explicitly name tuple types (previously values but not types were named).
This commit is contained in:
+4
-4
@@ -21,10 +21,10 @@ interface I {
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type %I.type, type [template]
|
||||
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @I.%T [template]
|
||||
// CHECK:STDOUT: %Int32.type: type = fn_type @Int32 [template]
|
||||
// CHECK:STDOUT: %.3: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Int32: %Int32.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.4: type = assoc_entity_type %I.type, i32 [template]
|
||||
// CHECK:STDOUT: %.5: %.4 = assoc_entity element1, @I.%N [template]
|
||||
// CHECK:STDOUT: %.3: type = assoc_entity_type %I.type, i32 [template]
|
||||
// CHECK:STDOUT: %.4: %.3 = assoc_entity element1, @I.%N [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -53,7 +53,7 @@ interface I {
|
||||
// CHECK:STDOUT: %.loc13_11.1: type = value_of_initializer %int.make_type_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc13_11.2: type = converted %int.make_type_32, %.loc13_11.1 [template = i32]
|
||||
// CHECK:STDOUT: %N: i32 = assoc_const_decl N [template]
|
||||
// CHECK:STDOUT: %.loc13_14: %.4 = assoc_entity element1, %N [template = constants.%.5]
|
||||
// CHECK:STDOUT: %.loc13_14: %.3 = assoc_entity element1, %N [template = constants.%.4]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
|
||||
@@ -25,7 +25,7 @@ interface I {
|
||||
// CHECK:STDOUT: %Self.1: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.1: i32 = int_value 42 [template]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.1: type = generic_interface_type @ImplicitAs [template]
|
||||
// CHECK:STDOUT: %.2: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %ImplicitAs: %ImplicitAs.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.2: type = interface_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic]
|
||||
@@ -34,16 +34,16 @@ interface I {
|
||||
// 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.5 [symbolic]
|
||||
// CHECK:STDOUT: %.2: type = assoc_entity_type %ImplicitAs.type.2, %Convert.type.1 [symbolic]
|
||||
// CHECK:STDOUT: %.3: %.2 = assoc_entity element0, imports.%import_ref.5 [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.3: type = interface_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: %.5: type = assoc_entity_type %ImplicitAs.type.3, %Convert.type.2 [template]
|
||||
// CHECK:STDOUT: %.6: %.5 = assoc_entity element0, imports.%import_ref.5 [template]
|
||||
// CHECK:STDOUT: %.7: %.3 = assoc_entity element0, imports.%import_ref.6 [symbolic]
|
||||
// CHECK:STDOUT: %.8: type = assoc_entity_type %I.type, type [template]
|
||||
// CHECK:STDOUT: %.9: %.8 = assoc_entity element0, @I.%T [template]
|
||||
// CHECK:STDOUT: %.4: type = assoc_entity_type %ImplicitAs.type.3, %Convert.type.2 [template]
|
||||
// CHECK:STDOUT: %.5: %.4 = assoc_entity element0, imports.%import_ref.5 [template]
|
||||
// CHECK:STDOUT: %.6: %.2 = assoc_entity element0, imports.%import_ref.6 [symbolic]
|
||||
// CHECK:STDOUT: %.7: type = assoc_entity_type %I.type, type [template]
|
||||
// CHECK:STDOUT: %.8: %.7 = assoc_entity element0, @I.%T [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -54,7 +54,7 @@ interface I {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.1: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, inst+49, loaded [template = constants.%ImplicitAs]
|
||||
// CHECK:STDOUT: %import_ref.2 = import_ref Core//prelude/operators/as, inst+55, unloaded
|
||||
// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.3) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.7)]
|
||||
// CHECK:STDOUT: %import_ref.3: @ImplicitAs.%.1 (%.2) = import_ref Core//prelude/operators/as, inst+77, loaded [symbolic = @ImplicitAs.%.2 (constants.%.6)]
|
||||
// CHECK:STDOUT: %import_ref.4 = import_ref Core//prelude/operators/as, inst+70, unloaded
|
||||
// CHECK:STDOUT: %import_ref.5 = import_ref Core//prelude/operators/as, inst+70, unloaded
|
||||
// CHECK:STDOUT: %import_ref.6 = import_ref Core//prelude/operators/as, inst+70, unloaded
|
||||
@@ -74,7 +74,7 @@ interface I {
|
||||
// CHECK:STDOUT: %.loc18_18: i32 = int_value 42 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %.loc18_20.1: type = converted %.loc18_18, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %T: type = assoc_const_decl T [template]
|
||||
// CHECK:STDOUT: %.loc18_20.2: %.8 = assoc_entity element0, %T [template = constants.%.9]
|
||||
// CHECK:STDOUT: %.loc18_20.2: %.7 = assoc_entity element0, %T [template = constants.%.8]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -91,8 +91,8 @@ interface I {
|
||||
// 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.5 [symbolic = %.2 (constants.%.4)]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2), @ImplicitAs.%Convert.type (%Convert.type.1) [symbolic = %.1 (constants.%.2)]
|
||||
// CHECK:STDOUT: %.2: @ImplicitAs.%.1 (%.2) = assoc_entity element0, imports.%import_ref.5 [symbolic = %.2 (constants.%.3)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface {
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -140,7 +140,7 @@ interface I {
|
||||
// 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: %.1 => constants.%.4
|
||||
// CHECK:STDOUT: %.2 => constants.%.5
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -26,15 +26,15 @@ interface I {
|
||||
// CHECK:STDOUT: %I.type: type = interface_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: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Int32: %Int32.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: type = tuple_type (type, type) [template]
|
||||
// CHECK:STDOUT: %.3: type = tuple_type (i32, i32) [template]
|
||||
// CHECK:STDOUT: %.4: type = assoc_entity_type %I.type, type [template]
|
||||
// CHECK:STDOUT: %.5: %.4 = assoc_entity element0, @I.%T [template]
|
||||
// CHECK:STDOUT: %.6: i32 = int_value 42 [template]
|
||||
// CHECK:STDOUT: %.7: type = assoc_entity_type %I.type, i32 [template]
|
||||
// CHECK:STDOUT: %.8: %.7 = assoc_entity element1, @I.%N [template]
|
||||
// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template]
|
||||
// CHECK:STDOUT: %tuple.type.2: type = tuple_type (i32, i32) [template]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type %I.type, type [template]
|
||||
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @I.%T [template]
|
||||
// CHECK:STDOUT: %.3: i32 = int_value 42 [template]
|
||||
// CHECK:STDOUT: %.4: type = assoc_entity_type %I.type, i32 [template]
|
||||
// CHECK:STDOUT: %.5: %.4 = assoc_entity element1, @I.%N [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -59,20 +59,20 @@ interface I {
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %int.make_type_32.loc16_27: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %int.make_type_32.loc16_32: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc16_35: %.2 = tuple_literal (%int.make_type_32.loc16_27, %int.make_type_32.loc16_32)
|
||||
// CHECK:STDOUT: %.loc16_35: %tuple.type.1 = tuple_literal (%int.make_type_32.loc16_27, %int.make_type_32.loc16_32)
|
||||
// CHECK:STDOUT: %.loc16_36.1: type = value_of_initializer %int.make_type_32.loc16_27 [template = i32]
|
||||
// CHECK:STDOUT: %.loc16_36.2: type = converted %int.make_type_32.loc16_27, %.loc16_36.1 [template = i32]
|
||||
// CHECK:STDOUT: %.loc16_36.3: type = value_of_initializer %int.make_type_32.loc16_32 [template = i32]
|
||||
// CHECK:STDOUT: %.loc16_36.4: type = converted %int.make_type_32.loc16_32, %.loc16_36.3 [template = i32]
|
||||
// CHECK:STDOUT: %.loc16_36.5: type = converted %.loc16_35, constants.%.3 [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc16_36.5: type = converted %.loc16_35, constants.%tuple.type.2 [template = constants.%tuple.type.2]
|
||||
// CHECK:STDOUT: %T: type = assoc_const_decl T [template]
|
||||
// CHECK:STDOUT: %.loc16_36.6: %.4 = assoc_entity element0, %T [template = constants.%.5]
|
||||
// CHECK:STDOUT: %.loc16_36.6: %.1 = assoc_entity element0, %T [template = constants.%.2]
|
||||
// CHECK:STDOUT: %int.make_type_32.loc20: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc20_19.1: type = value_of_initializer %int.make_type_32.loc20 [template = i32]
|
||||
// CHECK:STDOUT: %.loc20_19.2: type = converted %int.make_type_32.loc20, %.loc20_19.1 [template = i32]
|
||||
// CHECK:STDOUT: %.loc20_25: i32 = int_value 42 [template = constants.%.6]
|
||||
// CHECK:STDOUT: %.loc20_25: i32 = int_value 42 [template = constants.%.3]
|
||||
// CHECK:STDOUT: %N: i32 = assoc_const_decl N [template]
|
||||
// CHECK:STDOUT: %.loc20_27: %.7 = assoc_entity element1, %N [template = constants.%.8]
|
||||
// CHECK:STDOUT: %.loc20_27: %.4 = assoc_entity element1, %N [template = constants.%.5]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
|
||||
+7
-7
@@ -27,16 +27,16 @@ interface Interface {
|
||||
// CHECK:STDOUT: %Interface.type: type = interface_type @Interface [template]
|
||||
// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: type = assoc_entity_type %Interface.type, %F.type [template]
|
||||
// CHECK:STDOUT: %.3: %.2 = assoc_entity element0, @Interface.%F.decl [template]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type %Interface.type, %F.type [template]
|
||||
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @Interface.%F.decl [template]
|
||||
// CHECK:STDOUT: %Int32.type: type = fn_type @Int32 [template]
|
||||
// CHECK:STDOUT: %Int32: %Int32.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.4: type = assoc_entity_type %Interface.type, %G.type [template]
|
||||
// CHECK:STDOUT: %.5: %.4 = assoc_entity element1, @Interface.%G.decl [template]
|
||||
// CHECK:STDOUT: %.3: type = assoc_entity_type %Interface.type, %G.type [template]
|
||||
// CHECK:STDOUT: %.4: %.3 = assoc_entity element1, @Interface.%G.decl [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -60,7 +60,7 @@ interface Interface {
|
||||
// CHECK:STDOUT: interface @Interface {
|
||||
// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %.loc16: %.2 = assoc_entity element0, %F.decl [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc16: %.1 = assoc_entity element0, %F.decl [template = constants.%.2]
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: i32 = value_param_pattern %a.patt, runtime_param0
|
||||
@@ -85,7 +85,7 @@ interface Interface {
|
||||
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc21: %.4 = assoc_entity element1, %G.decl [template = constants.%.5]
|
||||
// CHECK:STDOUT: %.loc21: %.3 = assoc_entity element1, %G.decl [template = constants.%.4]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
|
||||
+16
-16
@@ -69,20 +69,20 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; }
|
||||
// CHECK:STDOUT: %Interface.type: type = interface_type @Interface [template]
|
||||
// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: type = assoc_entity_type %Interface.type, %F.type [template]
|
||||
// CHECK:STDOUT: %.3: %.2 = assoc_entity element0, @Interface.%F.decl [template]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type %Interface.type, %F.type [template]
|
||||
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @Interface.%F.decl [template]
|
||||
// CHECK:STDOUT: %Int32.type: type = fn_type @Int32 [template]
|
||||
// CHECK:STDOUT: %Int32: %Int32.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.4: type = assoc_entity_type %Interface.type, %G.type [template]
|
||||
// CHECK:STDOUT: %.5: %.4 = assoc_entity element1, @Interface.%G.decl [template]
|
||||
// CHECK:STDOUT: %.3: type = assoc_entity_type %Interface.type, %G.type [template]
|
||||
// CHECK:STDOUT: %.4: %.3 = assoc_entity element1, @Interface.%G.decl [template]
|
||||
// CHECK:STDOUT: %.type.1: type = fn_type @.1 [template]
|
||||
// CHECK:STDOUT: %.6: %.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.5: %.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.2: type = fn_type @.2 [template]
|
||||
// CHECK:STDOUT: %.7: %.type.2 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.6: %.type.2 = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -101,8 +101,8 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [template = constants.%Interface.type] {} {}
|
||||
// CHECK:STDOUT: %.decl.loc23: %.type.1 = fn_decl @.1 [template = constants.%.6] {} {}
|
||||
// CHECK:STDOUT: %.decl.loc31: %.type.2 = fn_decl @.2 [template = constants.%.7] {
|
||||
// CHECK:STDOUT: %.decl.loc23: %.type.1 = fn_decl @.1 [template = constants.%.5] {} {}
|
||||
// CHECK:STDOUT: %.decl.loc31: %.type.2 = fn_decl @.2 [template = constants.%.6] {
|
||||
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: i32 = value_param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: %b.patt: i32 = binding_pattern b
|
||||
@@ -131,7 +131,7 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; }
|
||||
// CHECK:STDOUT: interface @Interface {
|
||||
// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %.loc7: %.2 = assoc_entity element0, %F.decl [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc7: %.1 = assoc_entity element0, %F.decl [template = constants.%.2]
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: i32 = value_param_pattern %a.patt, runtime_param0
|
||||
@@ -156,7 +156,7 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; }
|
||||
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc13: %.4 = assoc_entity element1, %G.decl [template = constants.%.5]
|
||||
// CHECK:STDOUT: %.loc13: %.3 = assoc_entity element1, %G.decl [template = constants.%.4]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -209,12 +209,12 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; }
|
||||
// CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %U.patt.1: type = symbolic_binding_pattern U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F, @C(%Self) [symbolic]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %.2: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %.3: <witness> = complete_type_witness %.2 [template]
|
||||
// CHECK:STDOUT: %.1: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
|
||||
// CHECK:STDOUT: %U.patt.2: type = symbolic_binding_pattern U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %.4: type = ptr_type %.2 [template]
|
||||
// CHECK:STDOUT: %.3: type = ptr_type %.1 [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -296,7 +296,7 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; }
|
||||
// CHECK:STDOUT: %return.param.loc14: ref @F.%U.loc14_22.1 (%U) = out_param runtime_param2
|
||||
// CHECK:STDOUT: %.loc14_38: ref @F.%U.loc14_22.1 (%U) = return_slot %return.param.loc14
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc15: <witness> = complete_type_witness %.2 [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc15: <witness> = complete_type_witness %.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C.2
|
||||
|
||||
@@ -18,7 +18,7 @@ fn F(e: Empty) {}
|
||||
// CHECK:STDOUT: %Empty.type: type = interface_type @Empty [template]
|
||||
// CHECK:STDOUT: %Self: %Empty.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -22,7 +22,7 @@ fn F(T:! Empty) {
|
||||
// CHECK:STDOUT: %T: %Empty.type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: %Empty.type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+30
-30
@@ -29,7 +29,7 @@ fn H() {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.1: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %I.type.1: type = generic_interface_type @I [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [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 = interface_type @I, @I(%T) [symbolic]
|
||||
// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic]
|
||||
@@ -37,19 +37,19 @@ fn H() {
|
||||
// CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 2 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.1: type = fn_type @F, @I(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F: %F.type.1 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %.2: type = assoc_entity_type %I.type.2, %F.type.1 [symbolic]
|
||||
// CHECK:STDOUT: %.3: %.2 = assoc_entity element0, @I.%F.decl [symbolic]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type %I.type.2, %F.type.1 [symbolic]
|
||||
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @I.%F.decl [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.2: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %H.type: type = fn_type @H [template]
|
||||
// CHECK:STDOUT: %H: %H.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.4: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %.5: <specific function> = specific_function %G, @G(%.4) [template]
|
||||
// CHECK:STDOUT: %I.type.3: type = interface_type @I, @I(%.4) [template]
|
||||
// CHECK:STDOUT: %F.type.2: type = fn_type @F, @I(%.4) [template]
|
||||
// CHECK:STDOUT: %.6: type = assoc_entity_type %I.type.3, %F.type.2 [template]
|
||||
// CHECK:STDOUT: %.7: %.6 = assoc_entity element0, @I.%F.decl [template]
|
||||
// CHECK:STDOUT: %.3: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %.4: <specific function> = specific_function %G, @G(%.3) [template]
|
||||
// CHECK:STDOUT: %I.type.3: type = interface_type @I, @I(%.3) [template]
|
||||
// CHECK:STDOUT: %F.type.2: type = fn_type @F, @I(%.3) [template]
|
||||
// CHECK:STDOUT: %.5: type = assoc_entity_type %I.type.3, %F.type.2 [template]
|
||||
// CHECK:STDOUT: %.6: %.5 = assoc_entity element0, @I.%F.decl [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -84,8 +84,8 @@ fn H() {
|
||||
// CHECK:STDOUT: %Self.2: %I.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F, @I(%T.loc11_13.2) [symbolic = %F.type (constants.%F.type.1)]
|
||||
// CHECK:STDOUT: %F: @I.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F)]
|
||||
// CHECK:STDOUT: %.loc12_22.2: type = assoc_entity_type @I.%I.type (%I.type.2), @I.%F.type (%F.type.1) [symbolic = %.loc12_22.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %.loc12_22.3: @I.%.loc12_22.2 (%.2) = assoc_entity element0, %F.decl [symbolic = %.loc12_22.3 (constants.%.3)]
|
||||
// CHECK:STDOUT: %.loc12_22.2: type = assoc_entity_type @I.%I.type (%I.type.2), @I.%F.type (%F.type.1) [symbolic = %.loc12_22.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %.loc12_22.3: @I.%.loc12_22.2 (%.1) = assoc_entity element0, %F.decl [symbolic = %.loc12_22.3 (constants.%.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface {
|
||||
// CHECK:STDOUT: %Self.1: @I.%I.type (%I.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)]
|
||||
@@ -101,7 +101,7 @@ fn H() {
|
||||
// CHECK:STDOUT: %return.param: ref @F.%U.loc12_8.1 (%U) = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @F.%U.loc12_8.1 (%U) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc12_22.1: @I.%.loc12_22.2 (%.2) = assoc_entity element0, %F.decl [symbolic = %.loc12_22.3 (constants.%.3)]
|
||||
// CHECK:STDOUT: %.loc12_22.1: @I.%.loc12_22.2 (%.1) = assoc_entity element0, %F.decl [symbolic = %.loc12_22.3 (constants.%.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self.1
|
||||
@@ -124,16 +124,16 @@ fn H() {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %I.type.loc19_4.2: type = interface_type @I, @I(%T.loc15_6.2) [symbolic = %I.type.loc19_4.2 (constants.%I.type.2)]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F, @I(%T.loc15_6.2) [symbolic = %F.type (constants.%F.type.1)]
|
||||
// CHECK:STDOUT: %.loc19_7.2: type = assoc_entity_type @G.%I.type.loc19_4.2 (%I.type.2), @G.%F.type (%F.type.1) [symbolic = %.loc19_7.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %.loc19_7.3: @G.%.loc19_7.2 (%.2) = assoc_entity element0, @I.%F.decl [symbolic = %.loc19_7.3 (constants.%.3)]
|
||||
// CHECK:STDOUT: %.loc19_7.2: type = assoc_entity_type @G.%I.type.loc19_4.2 (%I.type.2), @G.%F.type (%F.type.1) [symbolic = %.loc19_7.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %.loc19_7.3: @G.%.loc19_7.2 (%.1) = assoc_entity element0, @I.%F.decl [symbolic = %.loc19_7.3 (constants.%.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%T.param_patt: type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %I.ref: %I.type.1 = name_ref I, file.%I.decl [template = constants.%I]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc15_6.1 [symbolic = %T.loc15_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %I.type.loc19_4.1: type = interface_type @I, @I(constants.%T) [symbolic = %I.type.loc19_4.2 (constants.%I.type.2)]
|
||||
// CHECK:STDOUT: %.loc19_7.1: @G.%.loc19_7.2 (%.2) = specific_constant @I.%.loc12_22.1, @I(constants.%T) [symbolic = %.loc19_7.3 (constants.%.3)]
|
||||
// CHECK:STDOUT: %F.ref: @G.%.loc19_7.2 (%.2) = name_ref F, %.loc19_7.1 [symbolic = %.loc19_7.3 (constants.%.3)]
|
||||
// CHECK:STDOUT: %.loc19_7.1: @G.%.loc19_7.2 (%.1) = specific_constant @I.%.loc12_22.1, @I(constants.%T) [symbolic = %.loc19_7.3 (constants.%.2)]
|
||||
// CHECK:STDOUT: %F.ref: @G.%.loc19_7.2 (%.1) = name_ref F, %.loc19_7.1 [symbolic = %.loc19_7.3 (constants.%.2)]
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -141,10 +141,10 @@ fn H() {
|
||||
// CHECK:STDOUT: fn @H() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %G.ref: %G.type = name_ref G, file.%G.decl [template = constants.%G]
|
||||
// CHECK:STDOUT: %.loc23_6: %.4 = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc23_4: type = converted %.loc23_6, constants.%.4 [template = constants.%.4]
|
||||
// CHECK:STDOUT: %.loc23_3: <specific function> = specific_function %G.ref, @G(constants.%.4) [template = constants.%.5]
|
||||
// CHECK:STDOUT: %G.call: init %.1 = call %.loc23_3()
|
||||
// CHECK:STDOUT: %.loc23_6: %.3 = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc23_4: type = converted %.loc23_6, constants.%.3 [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc23_3: <specific function> = specific_function %G.ref, @G(constants.%.3) [template = constants.%.4]
|
||||
// CHECK:STDOUT: %G.call: init %empty_tuple.type = call %.loc23_3()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -157,8 +157,8 @@ fn H() {
|
||||
// CHECK:STDOUT: %Self.2 => constants.%Self
|
||||
// CHECK:STDOUT: %F.type => constants.%F.type.1
|
||||
// CHECK:STDOUT: %F => constants.%F
|
||||
// CHECK:STDOUT: %.loc12_22.2 => constants.%.2
|
||||
// CHECK:STDOUT: %.loc12_22.3 => constants.%.3
|
||||
// CHECK:STDOUT: %.loc12_22.2 => constants.%.1
|
||||
// CHECK:STDOUT: %.loc12_22.3 => constants.%.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(constants.%T, constants.%Self, constants.%U) {
|
||||
@@ -181,19 +181,19 @@ fn H() {
|
||||
// CHECK:STDOUT: %T.patt.loc11_13.2 => constants.%T
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @G(constants.%.4) {
|
||||
// CHECK:STDOUT: %T.loc15_6.2 => constants.%.4
|
||||
// CHECK:STDOUT: %T.patt.loc15_6.2 => constants.%.4
|
||||
// CHECK:STDOUT: specific @G(constants.%.3) {
|
||||
// CHECK:STDOUT: %T.loc15_6.2 => constants.%.3
|
||||
// CHECK:STDOUT: %T.patt.loc15_6.2 => constants.%.3
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %I.type.loc19_4.2 => constants.%I.type.3
|
||||
// CHECK:STDOUT: %F.type => constants.%F.type.2
|
||||
// CHECK:STDOUT: %.loc19_7.2 => constants.%.6
|
||||
// CHECK:STDOUT: %.loc19_7.3 => constants.%.7
|
||||
// CHECK:STDOUT: %.loc19_7.2 => constants.%.5
|
||||
// CHECK:STDOUT: %.loc19_7.3 => constants.%.6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @I(constants.%.4) {
|
||||
// CHECK:STDOUT: %T.loc11_13.2 => constants.%.4
|
||||
// CHECK:STDOUT: %T.patt.loc11_13.2 => constants.%.4
|
||||
// CHECK:STDOUT: specific @I(constants.%.3) {
|
||||
// CHECK:STDOUT: %T.loc11_13.2 => constants.%.3
|
||||
// CHECK:STDOUT: %T.patt.loc11_13.2 => constants.%.3
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -25,10 +25,10 @@ interface ForwardDeclared {
|
||||
// CHECK:STDOUT: %ForwardDeclared.type: type = interface_type @ForwardDeclared [template]
|
||||
// CHECK:STDOUT: %Self.2: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: type = assoc_entity_type %ForwardDeclared.type, %F.type [template]
|
||||
// CHECK:STDOUT: %.3: %.2 = assoc_entity element0, @ForwardDeclared.%F.decl [template]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type %ForwardDeclared.type, %F.type [template]
|
||||
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @ForwardDeclared.%F.decl [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -52,7 +52,7 @@ interface ForwardDeclared {
|
||||
// CHECK:STDOUT: interface @ForwardDeclared {
|
||||
// CHECK:STDOUT: %Self: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %.loc17: %.2 = assoc_entity element0, %F.decl [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc17: %.1 = assoc_entity element0, %F.decl [template = constants.%.2]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
|
||||
+14
-14
@@ -30,16 +30,16 @@ class C {
|
||||
// CHECK:STDOUT: %I.type: type = interface_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: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: type = assoc_entity_type %I.type, %F.type.1 [template]
|
||||
// CHECK:STDOUT: %.3: %.2 = assoc_entity element0, @I.%F.decl [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]
|
||||
// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.4: <witness> = interface_witness (%F.2) [template]
|
||||
// CHECK:STDOUT: %.5: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %.6: <witness> = complete_type_witness %.5 [template]
|
||||
// CHECK:STDOUT: %.7: type = ptr_type %.5 [template]
|
||||
// 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:
|
||||
@@ -53,7 +53,7 @@ class C {
|
||||
// CHECK:STDOUT: interface @I {
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {}
|
||||
// CHECK:STDOUT: %.loc14: %.2 = assoc_entity element0, %F.decl [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc14: %.1 = assoc_entity element0, %F.decl [template = constants.%.2]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -63,7 +63,7 @@ class C {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %C.ref as %I.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {}
|
||||
// CHECK:STDOUT: %.loc21: <witness> = interface_witness (%F.decl) [template = constants.%.4]
|
||||
// CHECK:STDOUT: %.loc21: <witness> = interface_witness (%F.decl) [template = constants.%.3]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
@@ -76,7 +76,7 @@ class C {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, @C.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc24: <witness> = complete_type_witness %.5 [template = constants.%.6]
|
||||
// CHECK:STDOUT: %.loc24: <witness> = complete_type_witness %.4 [template = constants.%.5]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
@@ -91,15 +91,15 @@ class C {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %c.var: ref %C = var c
|
||||
// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var
|
||||
// CHECK:STDOUT: %.loc16_19.1: %.5 = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc16_19.1: %.4 = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc16_19.2: init %C = class_init (), %c.var [template = constants.%struct]
|
||||
// CHECK:STDOUT: %.loc16_20: init %C = converted %.loc16_19.1, %.loc16_19.2 [template = constants.%struct]
|
||||
// CHECK:STDOUT: assign %c.var, %.loc16_20
|
||||
// CHECK:STDOUT: %c.ref: ref %C = name_ref c, %c
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, @C.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %F.ref: %.2 = name_ref F, @I.%.loc14 [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc17: %F.type.1 = interface_witness_access constants.%.4, element0 [template = constants.%F.2]
|
||||
// CHECK:STDOUT: %F.call: init %.1 = call %.loc17()
|
||||
// CHECK:STDOUT: %F.ref: %.1 = name_ref F, @I.%.loc14 [template = constants.%.2]
|
||||
// CHECK:STDOUT: %.loc17: %F.type.1 = interface_witness_access constants.%.3, element0 [template = constants.%F.2]
|
||||
// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %.loc17()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -92,7 +92,7 @@ fn UseEmpty(i: I) {}
|
||||
// CHECK:STDOUT: %I.type: type = interface_type @I [template]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %UseEmpty.type: type = fn_type @UseEmpty [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %UseEmpty: %UseEmpty.type = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+5
-5
@@ -37,7 +37,7 @@ interface Outer {
|
||||
// CHECK:STDOUT: %Interface.type: type = interface_type @Interface [template]
|
||||
// CHECK:STDOUT: %Self.1: %Interface.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Outer.type: type = interface_type @Outer [template]
|
||||
// CHECK:STDOUT: %Self.2: %Outer.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
@@ -45,7 +45,7 @@ interface Outer {
|
||||
// CHECK:STDOUT: %Inner.type.2: type = interface_type @Inner, @Inner(%Self.2) [symbolic]
|
||||
// CHECK:STDOUT: %Self.3: %Inner.type.2 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %.type: type = fn_type @.1, @Inner(%Self.2) [symbolic]
|
||||
// CHECK:STDOUT: %.2: %.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %.1: %.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %F.type.2: type = fn_type @F.2, @Inner(%Self.2) [symbolic]
|
||||
// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -86,11 +86,11 @@ interface Outer {
|
||||
// CHECK:STDOUT: %Inner.type: type = interface_type @Inner, @Inner(%Self.2) [symbolic = %Inner.type (constants.%Inner.type.2)]
|
||||
// CHECK:STDOUT: %Self.3: %Inner.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.3 (constants.%Self.3)]
|
||||
// CHECK:STDOUT: %.type: type = fn_type @.1, @Inner(%Self.2) [symbolic = %.type (constants.%.type)]
|
||||
// CHECK:STDOUT: %.loc26: @Inner.%.type (%.type) = struct_value () [symbolic = %.loc26 (constants.%.2)]
|
||||
// CHECK:STDOUT: %.loc26: @Inner.%.type (%.type) = struct_value () [symbolic = %.loc26 (constants.%.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface {
|
||||
// CHECK:STDOUT: %Self.1: @Inner.%Inner.type (%Inner.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.3 (constants.%Self.3)]
|
||||
// CHECK:STDOUT: %.decl: @Inner.%.type (%.type) = fn_decl @.1 [symbolic = @Inner.%.loc26 (constants.%.2)] {} {}
|
||||
// CHECK:STDOUT: %.decl: @Inner.%.type (%.type) = fn_decl @.1 [symbolic = @Inner.%.loc26 (constants.%.1)] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self.1
|
||||
@@ -126,7 +126,7 @@ interface Outer {
|
||||
// CHECK:STDOUT: %Inner.type => constants.%Inner.type.2
|
||||
// CHECK:STDOUT: %Self.3 => constants.%Self.3
|
||||
// CHECK:STDOUT: %.type => constants.%.type
|
||||
// CHECK:STDOUT: %.loc26 => constants.%.2
|
||||
// CHECK:STDOUT: %.loc26 => constants.%.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @.1(constants.%Self.2, constants.%Self.3) {}
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ alias UseOther = I.other;
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = interface_type @I [template]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
|
||||
@@ -77,10 +77,10 @@ interface Class { }
|
||||
// CHECK:STDOUT: %.type: type = interface_type @.1 [template]
|
||||
// CHECK:STDOUT: %Self.2: %.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: type = assoc_entity_type %.type, %F.type [template]
|
||||
// CHECK:STDOUT: %.3: %.2 = assoc_entity element0, @.1.%F.decl [template]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type %.type, %F.type [template]
|
||||
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @.1.%F.decl [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -102,7 +102,7 @@ interface Class { }
|
||||
// CHECK:STDOUT: interface @.1 {
|
||||
// CHECK:STDOUT: %Self: %.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %.loc14: %.2 = assoc_entity element0, %F.decl [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc14: %.1 = assoc_entity element0, %F.decl [template = constants.%.2]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -125,10 +125,10 @@ interface Class { }
|
||||
// CHECK:STDOUT: %.type: type = interface_type @.1 [template]
|
||||
// CHECK:STDOUT: %Self.2: %.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: type = assoc_entity_type %.type, %F.type [template]
|
||||
// CHECK:STDOUT: %.3: %.2 = assoc_entity element0, @.1.%F.decl [template]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type %.type, %F.type [template]
|
||||
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @.1.%F.decl [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -159,7 +159,7 @@ interface Class { }
|
||||
// CHECK:STDOUT: %self.param: @F.%Self (%Self.2) = value_param runtime_param0
|
||||
// CHECK:STDOUT: %self: @F.%Self (%Self.2) = bind_name self, %self.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc14: %.2 = assoc_entity element0, %F.decl [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc14: %.1 = assoc_entity element0, %F.decl [template = constants.%.2]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -181,7 +181,7 @@ interface Class { }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Function.type: type = fn_type @Function [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Function: %Function.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type: type = interface_type @.1 [template]
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+16
-16
@@ -44,8 +44,8 @@ interface DifferentParams(T:! ()) {}
|
||||
// CHECK:STDOUT: %T.1: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.1: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %.2: %.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %.1: %.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.2: type = interface_type @.1, @.1(%T.1) [symbolic]
|
||||
// CHECK:STDOUT: %Self.1: %.type.2 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.2: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
@@ -56,10 +56,10 @@ interface DifferentParams(T:! ()) {}
|
||||
// CHECK:STDOUT: %T.patt.3: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %DifferentParams.type: type = generic_interface_type @DifferentParams [template]
|
||||
// CHECK:STDOUT: %DifferentParams: %DifferentParams.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %T.2: %.1 = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.4: %.1 = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.2: %empty_tuple.type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.4: %empty_tuple.type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.type.4: type = generic_interface_type @.3 [template]
|
||||
// CHECK:STDOUT: %.3: %.type.4 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: %.type.4 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.5: type = interface_type @.3, @.3(%T.2) [symbolic]
|
||||
// CHECK:STDOUT: %Self.3: %.type.5 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -71,7 +71,7 @@ interface DifferentParams(T:! ()) {}
|
||||
// CHECK:STDOUT: .DifferentParams = %DifferentParams.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %NotGeneric.decl: type = interface_decl @NotGeneric [template = constants.%NotGeneric.type] {} {}
|
||||
// CHECK:STDOUT: %.decl.loc19: %.type.1 = interface_decl @.1 [template = constants.%.2] {
|
||||
// CHECK:STDOUT: %.decl.loc19: %.type.1 = interface_decl @.1 [template = constants.%.1] {
|
||||
// CHECK:STDOUT: %T.patt.loc19_22.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc19_22.2 (constants.%T.patt.1)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc19_22.1, runtime_param<invalid> [symbolic = %T.patt.loc19_22.2 (constants.%T.patt.1)]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -93,14 +93,14 @@ interface DifferentParams(T:! ()) {}
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc31_27.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc31_27.2 (constants.%T.1)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl.loc38: %.type.4 = interface_decl @.3 [template = constants.%.3] {
|
||||
// CHECK:STDOUT: %T.patt.loc38_27.1: %.1 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc38_27.2 (constants.%T.patt.4)]
|
||||
// CHECK:STDOUT: %T.param_patt: %.1 = value_param_pattern %T.patt.loc38_27.1, runtime_param<invalid> [symbolic = %T.patt.loc38_27.2 (constants.%T.patt.4)]
|
||||
// CHECK:STDOUT: %.decl.loc38: %.type.4 = interface_decl @.3 [template = constants.%.2] {
|
||||
// CHECK:STDOUT: %T.patt.loc38_27.1: %empty_tuple.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc38_27.2 (constants.%T.patt.4)]
|
||||
// CHECK:STDOUT: %T.param_patt: %empty_tuple.type = value_param_pattern %T.patt.loc38_27.1, runtime_param<invalid> [symbolic = %T.patt.loc38_27.2 (constants.%T.patt.4)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc38_32.1: %.1 = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc38_32.2: type = converted %.loc38_32.1, constants.%.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %T.param: %.1 = value_param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc38_27.1: %.1 = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc38_27.2 (constants.%T.2)]
|
||||
// CHECK:STDOUT: %.loc38_32.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc38_32.2: type = converted %.loc38_32.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %T.param: %empty_tuple.type = value_param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc38_27.1: %empty_tuple.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc38_27.2 (constants.%T.2)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -145,9 +145,9 @@ interface DifferentParams(T:! ()) {}
|
||||
// CHECK:STDOUT: interface;
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic interface @.3(%T.loc38_27.1: %.1) {
|
||||
// CHECK:STDOUT: %T.loc38_27.2: %.1 = bind_symbolic_name T, 0 [symbolic = %T.loc38_27.2 (constants.%T.2)]
|
||||
// CHECK:STDOUT: %T.patt.loc38_27.2: %.1 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc38_27.2 (constants.%T.patt.4)]
|
||||
// CHECK:STDOUT: generic interface @.3(%T.loc38_27.1: %empty_tuple.type) {
|
||||
// CHECK:STDOUT: %T.loc38_27.2: %empty_tuple.type = bind_symbolic_name T, 0 [symbolic = %T.loc38_27.2 (constants.%T.2)]
|
||||
// CHECK:STDOUT: %T.patt.loc38_27.2: %empty_tuple.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc38_27.2 (constants.%T.patt.4)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %.type: type = interface_type @.3, @.3(%T.loc38_27.2) [symbolic = %.type (constants.%.type.5)]
|
||||
|
||||
@@ -54,18 +54,18 @@ interface BeingDefined {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Undefined.type: type = interface_type @Undefined [template]
|
||||
// CHECK:STDOUT: %.type.1: type = fn_type @.1 [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %.2: %.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %.1: %.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Test.type: type = fn_type @Test [template]
|
||||
// CHECK:STDOUT: %Test: %Test.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %BeingDefined.type: type = interface_type @BeingDefined [template]
|
||||
// CHECK:STDOUT: %Self: %BeingDefined.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %H.type: type = fn_type @H [template]
|
||||
// CHECK:STDOUT: %H: %H.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.3: type = assoc_entity_type %BeingDefined.type, %H.type [template]
|
||||
// CHECK:STDOUT: %.4: %.3 = assoc_entity element0, @BeingDefined.%H.decl [template]
|
||||
// CHECK:STDOUT: %.2: type = assoc_entity_type %BeingDefined.type, %H.type [template]
|
||||
// CHECK:STDOUT: %.3: %.2 = assoc_entity element0, @BeingDefined.%H.decl [template]
|
||||
// CHECK:STDOUT: %.type.2: type = fn_type @.2 [template]
|
||||
// CHECK:STDOUT: %.5: %.type.2 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.4: %.type.2 = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -75,7 +75,7 @@ interface BeingDefined {
|
||||
// CHECK:STDOUT: .BeingDefined = %BeingDefined.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Undefined.decl: type = interface_decl @Undefined [template = constants.%Undefined.type] {} {}
|
||||
// CHECK:STDOUT: %.decl: %.type.1 = fn_decl @.1 [template = constants.%.2] {} {}
|
||||
// CHECK:STDOUT: %.decl: %.type.1 = fn_decl @.1 [template = constants.%.1] {} {}
|
||||
// CHECK:STDOUT: %Test.decl: %Test.type = fn_decl @Test [template = constants.%Test] {} {}
|
||||
// CHECK:STDOUT: %BeingDefined.decl: type = interface_decl @BeingDefined [template = constants.%BeingDefined.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
@@ -93,8 +93,8 @@ interface BeingDefined {
|
||||
// CHECK:STDOUT: %return.param: ref <error> = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref <error> = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc45: %.3 = assoc_entity element0, %H.decl [template = constants.%.4]
|
||||
// CHECK:STDOUT: %.decl: %.type.2 = fn_decl @.2 [template = constants.%.5] {} {}
|
||||
// CHECK:STDOUT: %.loc45: %.2 = assoc_entity element0, %H.decl [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.decl: %.type.2 = fn_decl @.2 [template = constants.%.4] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
|
||||
@@ -33,12 +33,12 @@ fn F() {
|
||||
// CHECK:STDOUT: %Interface.type: type = interface_type @Interface [template]
|
||||
// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: type = assoc_entity_type %Interface.type, %F.type.1 [template]
|
||||
// CHECK:STDOUT: %.3: %.2 = assoc_entity element0, @Interface.%F.decl [template]
|
||||
// CHECK:STDOUT: %.4: type = assoc_entity_type %Interface.type, type [template]
|
||||
// CHECK:STDOUT: %.5: %.4 = assoc_entity element1, @Interface.%T [template]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type %Interface.type, %F.type.1 [template]
|
||||
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @Interface.%F.decl [template]
|
||||
// CHECK:STDOUT: %.3: type = assoc_entity_type %Interface.type, type [template]
|
||||
// CHECK:STDOUT: %.4: %.3 = assoc_entity element1, @Interface.%T [template]
|
||||
// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -55,9 +55,9 @@ fn F() {
|
||||
// CHECK:STDOUT: interface @Interface {
|
||||
// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {}
|
||||
// CHECK:STDOUT: %.loc12: %.2 = assoc_entity element0, %F.decl [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc12: %.1 = assoc_entity element0, %F.decl [template = constants.%.2]
|
||||
// CHECK:STDOUT: %T: type = assoc_const_decl T [template]
|
||||
// CHECK:STDOUT: %.loc14: %.4 = assoc_entity element1, %T [template = constants.%.5]
|
||||
// CHECK:STDOUT: %.loc14: %.3 = assoc_entity element1, %T [template = constants.%.4]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -74,9 +74,9 @@ fn F() {
|
||||
// CHECK:STDOUT: fn @F.2() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Interface.ref.loc22: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %F.ref: %.2 = name_ref F, @Interface.%.loc12 [template = constants.%.3]
|
||||
// CHECK:STDOUT: %F.ref: %.1 = name_ref F, @Interface.%.loc12 [template = constants.%.2]
|
||||
// CHECK:STDOUT: %Interface.ref.loc27: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %T.ref: %.4 = name_ref T, @Interface.%.loc14 [template = constants.%.5]
|
||||
// CHECK:STDOUT: %T.ref: %.3 = name_ref T, @Interface.%.loc14 [template = constants.%.4]
|
||||
// CHECK:STDOUT: %.loc27: type = converted %T.ref, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %v.var: ref <error> = var v
|
||||
// CHECK:STDOUT: %v: ref <error> = bind_name v, %v.var
|
||||
|
||||
@@ -25,12 +25,12 @@ interface Interface {
|
||||
// CHECK:STDOUT: %Interface.type: type = interface_type @Interface [template]
|
||||
// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: type = assoc_entity_type %Interface.type, %F.type [template]
|
||||
// CHECK:STDOUT: %.3: %.2 = assoc_entity element0, @Interface.%F.decl [template]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type %Interface.type, %F.type [template]
|
||||
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @Interface.%F.decl [template]
|
||||
// CHECK:STDOUT: %.type: type = fn_type @.1 [template]
|
||||
// CHECK:STDOUT: %.4: %.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.3: %.type = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -43,8 +43,8 @@ interface Interface {
|
||||
// CHECK:STDOUT: interface @Interface {
|
||||
// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %.loc12: %.2 = assoc_entity element0, %F.decl [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.4] {} {}
|
||||
// CHECK:STDOUT: %.loc12: %.1 = assoc_entity element0, %F.decl [template = constants.%.2]
|
||||
// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.3] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
|
||||
+5
-5
@@ -31,10 +31,10 @@ fn CallFacet(T:! Interface, x: T) {
|
||||
// CHECK:STDOUT: %Interface.type: type = interface_type @Interface [template]
|
||||
// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: type = assoc_entity_type %Interface.type, %F.type [template]
|
||||
// CHECK:STDOUT: %.3: %.2 = assoc_entity element0, @Interface.%F.decl [template]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type %Interface.type, %F.type [template]
|
||||
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @Interface.%F.decl [template]
|
||||
// CHECK:STDOUT: %T: %Interface.type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.1: %Interface.type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %CallStatic.type: type = fn_type @CallStatic [template]
|
||||
@@ -79,7 +79,7 @@ fn CallFacet(T:! Interface, x: T) {
|
||||
// CHECK:STDOUT: interface @Interface {
|
||||
// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %.loc11: %.2 = assoc_entity element0, %F.decl [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc11: %.1 = assoc_entity element0, %F.decl [template = constants.%.2]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -101,7 +101,7 @@ fn CallFacet(T:! Interface, x: T) {
|
||||
// CHECK:STDOUT: fn(%T.param_patt: %Interface.type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %T.ref: %Interface.type = name_ref T, %T.loc13_15.1 [symbolic = %T.loc13_15.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %F.ref: %.2 = name_ref F, @Interface.%.loc11 [template = constants.%.3]
|
||||
// CHECK:STDOUT: %F.ref: %.1 = name_ref F, @Interface.%.loc11 [template = constants.%.2]
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+10
-10
@@ -27,17 +27,17 @@ fn I(T:! type).F[self: Self]() -> Self { return self; }
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.1: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %I.type.1: type = generic_interface_type @I [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [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 = interface_type @I, @I(%T) [symbolic]
|
||||
// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F, @I(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %.2: type = assoc_entity_type %I.type.2, %F.type [symbolic]
|
||||
// CHECK:STDOUT: %.3: %.2 = assoc_entity element0, @I.%F.decl [symbolic]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type %I.type.2, %F.type [symbolic]
|
||||
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @I.%F.decl [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.2: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.type: type = fn_type @.1, @I(%T) [symbolic]
|
||||
// CHECK:STDOUT: %.4: %.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %.3: %.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -51,7 +51,7 @@ fn I(T:! type).F[self: Self]() -> Self { return self; }
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc11_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [symbolic = constants.%.4] {
|
||||
// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [symbolic = constants.%.3] {
|
||||
// CHECK:STDOUT: %self.patt: @.1.%Self (%Self) = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: @.1.%Self (%Self) = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @.1.%Self (%Self) = return_slot_pattern
|
||||
@@ -83,8 +83,8 @@ fn I(T:! type).F[self: Self]() -> Self { return self; }
|
||||
// CHECK:STDOUT: %Self.2: %I.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F, @I(%T.loc11_13.2) [symbolic = %F.type (constants.%F.type)]
|
||||
// CHECK:STDOUT: %F: @I.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)]
|
||||
// CHECK:STDOUT: %.loc13_29.2: type = assoc_entity_type @I.%I.type (%I.type.2), @I.%F.type (%F.type) [symbolic = %.loc13_29.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %.loc13_29.3: @I.%.loc13_29.2 (%.2) = assoc_entity element0, %F.decl [symbolic = %.loc13_29.3 (constants.%.3)]
|
||||
// CHECK:STDOUT: %.loc13_29.2: type = assoc_entity_type @I.%I.type (%I.type.2), @I.%F.type (%F.type) [symbolic = %.loc13_29.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %.loc13_29.3: @I.%.loc13_29.2 (%.1) = assoc_entity element0, %F.decl [symbolic = %.loc13_29.3 (constants.%.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface {
|
||||
// CHECK:STDOUT: %Self.1: @I.%I.type (%I.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)]
|
||||
@@ -107,7 +107,7 @@ fn I(T:! type).F[self: Self]() -> Self { return self; }
|
||||
// CHECK:STDOUT: %return.param: ref @F.%Self (%Self) = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @F.%Self (%Self) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc13_29.1: @I.%.loc13_29.2 (%.2) = assoc_entity element0, %F.decl [symbolic = %.loc13_29.3 (constants.%.3)]
|
||||
// CHECK:STDOUT: %.loc13_29.1: @I.%.loc13_29.2 (%.1) = assoc_entity element0, %F.decl [symbolic = %.loc13_29.3 (constants.%.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self.1
|
||||
@@ -148,8 +148,8 @@ fn I(T:! type).F[self: Self]() -> Self { return self; }
|
||||
// CHECK:STDOUT: %Self.2 => constants.%Self
|
||||
// CHECK:STDOUT: %F.type => constants.%F.type
|
||||
// CHECK:STDOUT: %F => constants.%F
|
||||
// CHECK:STDOUT: %.loc13_29.2 => constants.%.2
|
||||
// CHECK:STDOUT: %.loc13_29.3 => constants.%.3
|
||||
// CHECK:STDOUT: %.loc13_29.2 => constants.%.1
|
||||
// CHECK:STDOUT: %.loc13_29.3 => constants.%.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @I(@F.%T) {
|
||||
|
||||
@@ -26,14 +26,14 @@ interface Modifiers {
|
||||
// CHECK:STDOUT: %Modifiers.type: type = interface_type @Modifiers [template]
|
||||
// CHECK:STDOUT: %Self: %Modifiers.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Final.type: type = fn_type @Final [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Final: %Final.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: type = assoc_entity_type %Modifiers.type, %Final.type [template]
|
||||
// CHECK:STDOUT: %.3: %.2 = assoc_entity element0, @Modifiers.%Final.decl [template]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type %Modifiers.type, %Final.type [template]
|
||||
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @Modifiers.%Final.decl [template]
|
||||
// CHECK:STDOUT: %Default.type: type = fn_type @Default [template]
|
||||
// CHECK:STDOUT: %Default: %Default.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.4: type = assoc_entity_type %Modifiers.type, %Default.type [template]
|
||||
// CHECK:STDOUT: %.5: %.4 = assoc_entity element1, @Modifiers.%Default.decl [template]
|
||||
// CHECK:STDOUT: %.3: type = assoc_entity_type %Modifiers.type, %Default.type [template]
|
||||
// CHECK:STDOUT: %.4: %.3 = assoc_entity element1, @Modifiers.%Default.decl [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -46,9 +46,9 @@ interface Modifiers {
|
||||
// CHECK:STDOUT: interface @Modifiers {
|
||||
// CHECK:STDOUT: %Self: %Modifiers.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %Final.decl: %Final.type = fn_decl @Final [template = constants.%Final] {} {}
|
||||
// CHECK:STDOUT: %.loc16: %.2 = assoc_entity element0, %Final.decl [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc16: %.1 = assoc_entity element0, %Final.decl [template = constants.%.2]
|
||||
// CHECK:STDOUT: %Default.decl: %Default.type = fn_decl @Default [template = constants.%Default] {} {}
|
||||
// CHECK:STDOUT: %.loc20: %.4 = assoc_entity element1, %Default.decl [template = constants.%.5]
|
||||
// CHECK:STDOUT: %.loc20: %.3 = assoc_entity element1, %Default.decl [template = constants.%.4]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
|
||||
+29
-29
@@ -64,13 +64,13 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT: %T.1: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.1: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Simple.type.1: type = generic_interface_type @Simple [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Simple: %Simple.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Simple.type.2: type = interface_type @Simple, @Simple(%T.1) [symbolic]
|
||||
// CHECK:STDOUT: %Self.1: %Simple.type.2 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %X: type = class_type @X [template]
|
||||
// CHECK:STDOUT: %.2: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %.3: <witness> = complete_type_witness %.2 [template]
|
||||
// CHECK:STDOUT: %.1: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
|
||||
// CHECK:STDOUT: %T.patt.2: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %WithAssocFn.type.1: type = generic_interface_type @WithAssocFn [template]
|
||||
// CHECK:STDOUT: %WithAssocFn: %WithAssocFn.type.1 = struct_value () [template]
|
||||
@@ -78,20 +78,20 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT: %Self.2: %WithAssocFn.type.2 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.1: type = fn_type @F.1, @WithAssocFn(%T.1) [symbolic]
|
||||
// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %.4: type = assoc_entity_type %WithAssocFn.type.2, %F.type.1 [symbolic]
|
||||
// CHECK:STDOUT: %.5: %.4 = assoc_entity element0, @WithAssocFn.%F.decl [symbolic]
|
||||
// CHECK:STDOUT: %.3: type = assoc_entity_type %WithAssocFn.type.2, %F.type.1 [symbolic]
|
||||
// CHECK:STDOUT: %.4: %.3 = assoc_entity element0, @WithAssocFn.%F.decl [symbolic]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %Simple.type.3: type = interface_type @Simple, @Simple(%C) [template]
|
||||
// CHECK:STDOUT: %.6: <witness> = interface_witness () [template]
|
||||
// CHECK:STDOUT: %.5: <witness> = interface_witness () [template]
|
||||
// CHECK:STDOUT: %WithAssocFn.type.3: type = interface_type @WithAssocFn, @WithAssocFn(%C) [template]
|
||||
// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template]
|
||||
// CHECK:STDOUT: %F.type.3: type = fn_type @F.1, @WithAssocFn(%C) [template]
|
||||
// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.7: type = assoc_entity_type %WithAssocFn.type.3, %F.type.3 [template]
|
||||
// CHECK:STDOUT: %.8: %.7 = assoc_entity element0, @WithAssocFn.%F.decl [template]
|
||||
// CHECK:STDOUT: %.9: <witness> = interface_witness (%F.2) [template]
|
||||
// CHECK:STDOUT: %.10: type = ptr_type %.2 [template]
|
||||
// CHECK:STDOUT: %.6: type = assoc_entity_type %WithAssocFn.type.3, %F.type.3 [template]
|
||||
// CHECK:STDOUT: %.7: %.6 = assoc_entity element0, @WithAssocFn.%F.decl [template]
|
||||
// CHECK:STDOUT: %.8: <witness> = interface_witness (%F.2) [template]
|
||||
// CHECK:STDOUT: %.9: type = ptr_type %.1 [template]
|
||||
// CHECK:STDOUT: %struct: %X = struct_value () [template]
|
||||
// CHECK:STDOUT: %T.patt.3: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %N: %T.1 = bind_symbolic_name N, 1 [symbolic]
|
||||
@@ -105,7 +105,7 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT: %T.patt.5: %Simple.type.3 = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Pass.type: type = fn_type @Pass [template]
|
||||
// CHECK:STDOUT: %Pass: %Pass.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.11: <specific function> = specific_function %Receive, @Receive(%T.2) [symbolic]
|
||||
// CHECK:STDOUT: %.10: <specific function> = specific_function %Receive, @Receive(%T.2) [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -194,8 +194,8 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT: %Self.2: %WithAssocFn.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.2)]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F.1, @WithAssocFn(%T.loc8_23.2) [symbolic = %F.type (constants.%F.type.1)]
|
||||
// CHECK:STDOUT: %F: @WithAssocFn.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)]
|
||||
// CHECK:STDOUT: %.loc10_14.2: type = assoc_entity_type @WithAssocFn.%WithAssocFn.type (%WithAssocFn.type.2), @WithAssocFn.%F.type (%F.type.1) [symbolic = %.loc10_14.2 (constants.%.4)]
|
||||
// CHECK:STDOUT: %.loc10_14.3: @WithAssocFn.%.loc10_14.2 (%.4) = assoc_entity element0, %F.decl [symbolic = %.loc10_14.3 (constants.%.5)]
|
||||
// CHECK:STDOUT: %.loc10_14.2: type = assoc_entity_type @WithAssocFn.%WithAssocFn.type (%WithAssocFn.type.2), @WithAssocFn.%F.type (%F.type.1) [symbolic = %.loc10_14.2 (constants.%.3)]
|
||||
// CHECK:STDOUT: %.loc10_14.3: @WithAssocFn.%.loc10_14.2 (%.3) = assoc_entity element0, %F.decl [symbolic = %.loc10_14.3 (constants.%.4)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface {
|
||||
// CHECK:STDOUT: %Self.1: @WithAssocFn.%WithAssocFn.type (%WithAssocFn.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.2)]
|
||||
@@ -207,7 +207,7 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT: %return.param: ref %X = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %X = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc10_14.1: @WithAssocFn.%.loc10_14.2 (%.4) = assoc_entity element0, %F.decl [symbolic = %.loc10_14.3 (constants.%.5)]
|
||||
// CHECK:STDOUT: %.loc10_14.1: @WithAssocFn.%.loc10_14.2 (%.3) = assoc_entity element0, %F.decl [symbolic = %.loc10_14.3 (constants.%.4)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self.1
|
||||
@@ -226,7 +226,7 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.1: %Self.ref as %Simple.type {
|
||||
// CHECK:STDOUT: %.loc14: <witness> = interface_witness () [template = constants.%.6]
|
||||
// CHECK:STDOUT: %.loc14: <witness> = interface_witness () [template = constants.%.5]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: witness = %.loc14
|
||||
@@ -241,7 +241,7 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT: %return.param: ref %X = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %X = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc15: <witness> = interface_witness (%F.decl) [template = constants.%.9]
|
||||
// CHECK:STDOUT: %.loc15: <witness> = interface_witness (%F.decl) [template = constants.%.8]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
@@ -249,7 +249,7 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @X {
|
||||
// CHECK:STDOUT: %.loc6: <witness> = complete_type_witness %.2 [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc6: <witness> = complete_type_witness %.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%X
|
||||
@@ -268,7 +268,7 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %WithAssocFn.type: type = interface_type @WithAssocFn, @WithAssocFn(constants.%C) [template = constants.%WithAssocFn.type.3]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc20: <witness> = complete_type_witness %.2 [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc20: <witness> = complete_type_witness %.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C
|
||||
@@ -281,7 +281,7 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F.2() -> %return: %X {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc17_15.1: %.2 = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc17_15.1: %.1 = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc17_15.2: init %X = class_init (), %return [template = constants.%struct]
|
||||
// CHECK:STDOUT: %.loc17_16: init %X = converted %.loc17_15.1, %.loc17_15.2 [template = constants.%struct]
|
||||
// CHECK:STDOUT: return %.loc17_16 to %return
|
||||
@@ -304,14 +304,14 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT: %T.patt.loc25_9.2: %Simple.type.3 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc25_9.2 (constants.%T.patt.5)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %.loc26_3.2: <specific function> = specific_function constants.%Receive, @Receive(%T.loc25_9.2) [symbolic = %.loc26_3.2 (constants.%.11)]
|
||||
// CHECK:STDOUT: %.loc26_3.2: <specific function> = specific_function constants.%Receive, @Receive(%T.loc25_9.2) [symbolic = %.loc26_3.2 (constants.%.10)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%T.param_patt: %Simple.type.3) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Receive.ref: %Receive.type = name_ref Receive, file.%Receive.decl [template = constants.%Receive]
|
||||
// CHECK:STDOUT: %T.ref: %Simple.type.3 = name_ref T, %T.loc25_9.1 [symbolic = %T.loc25_9.2 (constants.%T.2)]
|
||||
// CHECK:STDOUT: %.loc26_3.1: <specific function> = specific_function %Receive.ref, @Receive(constants.%T.2) [symbolic = %.loc26_3.2 (constants.%.11)]
|
||||
// CHECK:STDOUT: %Receive.call: init %.1 = call %.loc26_3.1()
|
||||
// CHECK:STDOUT: %.loc26_3.1: <specific function> = specific_function %Receive.ref, @Receive(constants.%T.2) [symbolic = %.loc26_3.2 (constants.%.10)]
|
||||
// CHECK:STDOUT: %Receive.call: init %empty_tuple.type = call %.loc26_3.1()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -356,8 +356,8 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT: %Self.2 => constants.%Self.2
|
||||
// CHECK:STDOUT: %F.type => constants.%F.type.3
|
||||
// CHECK:STDOUT: %F => constants.%F.3
|
||||
// CHECK:STDOUT: %.loc10_14.2 => constants.%.7
|
||||
// CHECK:STDOUT: %.loc10_14.3 => constants.%.8
|
||||
// CHECK:STDOUT: %.loc10_14.2 => constants.%.6
|
||||
// CHECK:STDOUT: %.loc10_14.3 => constants.%.7
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F.1(constants.%C, constants.%C) {}
|
||||
@@ -392,13 +392,13 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT: %T.1: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.1: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Generic.type.1: type = generic_interface_type @Generic [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Generic: %Generic.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Generic.type.2: type = interface_type @Generic, @Generic(%T.1) [symbolic]
|
||||
// CHECK:STDOUT: %Self: %Generic.type.2 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %A: type = class_type @A [template]
|
||||
// CHECK:STDOUT: %.2: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %.3: <witness> = complete_type_witness %.2 [template]
|
||||
// CHECK:STDOUT: %.1: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
|
||||
// CHECK:STDOUT: %B: type = class_type @B [template]
|
||||
// CHECK:STDOUT: %Generic.type.3: type = interface_type @Generic, @Generic(%A) [template]
|
||||
// CHECK:STDOUT: %T.2: %Generic.type.3 = bind_symbolic_name T, 0 [symbolic]
|
||||
@@ -469,14 +469,14 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @A {
|
||||
// CHECK:STDOUT: %.loc6: <witness> = complete_type_witness %.2 [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc6: <witness> = complete_type_witness %.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%A
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @B {
|
||||
// CHECK:STDOUT: %.loc7: <witness> = complete_type_witness %.2 [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc7: <witness> = complete_type_witness %.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%B
|
||||
|
||||
+10
-10
@@ -24,17 +24,17 @@ interface I {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 1 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.1: type = symbolic_binding_pattern T, 1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: type = assoc_entity_type %I.type, %F.type [template]
|
||||
// CHECK:STDOUT: %.3: %.2 = assoc_entity element0, @I.%F.decl [template]
|
||||
// CHECK:STDOUT: %.4: type = assoc_entity_type %I.type, type [template]
|
||||
// CHECK:STDOUT: %.5: %.4 = assoc_entity element1, @I.%U [template]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type %I.type, %F.type [template]
|
||||
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @I.%F.decl [template]
|
||||
// CHECK:STDOUT: %.3: type = assoc_entity_type %I.type, type [template]
|
||||
// CHECK:STDOUT: %.4: %.3 = assoc_entity element1, @I.%U [template]
|
||||
// CHECK:STDOUT: %T.patt.2: type = symbolic_binding_pattern T, 1 [symbolic]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.6: type = assoc_entity_type %I.type, %G.type [template]
|
||||
// CHECK:STDOUT: %.7: %.6 = assoc_entity element2, @I.%G.decl [template]
|
||||
// CHECK:STDOUT: %.5: type = assoc_entity_type %I.type, %G.type [template]
|
||||
// CHECK:STDOUT: %.6: %.5 = assoc_entity element2, @I.%G.decl [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -53,9 +53,9 @@ interface I {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc12_8.2: type = bind_symbolic_name T, 1, %T.param [symbolic = %T.loc12_8.1 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc12: %.2 = assoc_entity element0, %F.decl [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc12: %.1 = assoc_entity element0, %F.decl [template = constants.%.2]
|
||||
// CHECK:STDOUT: %U: type = assoc_const_decl U [template]
|
||||
// CHECK:STDOUT: %.loc13: %.4 = assoc_entity element1, %U [template = constants.%.5]
|
||||
// CHECK:STDOUT: %.loc13: %.3 = assoc_entity element1, %U [template = constants.%.4]
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %T.patt.loc16_8.2: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc16_8.1 (constants.%T.patt.2)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc16_8.2, runtime_param<invalid> [symbolic = %T.patt.loc16_8.1 (constants.%T.patt.2)]
|
||||
@@ -63,7 +63,7 @@ interface I {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %T.loc16_8.2: type = bind_symbolic_name T, 1, %T.param [symbolic = %T.loc16_8.1 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc16: %.6 = assoc_entity element2, %G.decl [template = constants.%.7]
|
||||
// CHECK:STDOUT: %.loc16: %.5 = assoc_entity element2, %G.decl [template = constants.%.6]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
|
||||
@@ -33,14 +33,14 @@ impl C as AddWith(C) {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %AddWith.type.1: type = generic_interface_type @AddWith [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %AddWith: %AddWith.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %AddWith.type.2: type = interface_type @AddWith, @AddWith(%T) [symbolic]
|
||||
// CHECK:STDOUT: %Self: %AddWith.type.2 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F, @AddWith(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %.2: type = assoc_entity_type %AddWith.type.2, %F.type [symbolic]
|
||||
// CHECK:STDOUT: %.3: %.2 = assoc_entity element0, @AddWith.%F.decl [symbolic]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type %AddWith.type.2, %F.type [symbolic]
|
||||
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @AddWith.%F.decl [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -65,13 +65,13 @@ impl C as AddWith(C) {
|
||||
// CHECK:STDOUT: %Self.2: %AddWith.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F, @AddWith(%T.loc4_19.2) [symbolic = %F.type (constants.%F.type)]
|
||||
// CHECK:STDOUT: %F: @AddWith.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)]
|
||||
// CHECK:STDOUT: %.loc5_9.2: type = assoc_entity_type @AddWith.%AddWith.type (%AddWith.type.2), @AddWith.%F.type (%F.type) [symbolic = %.loc5_9.2 (constants.%.2)]
|
||||
// CHECK:STDOUT: %.loc5_9.3: @AddWith.%.loc5_9.2 (%.2) = assoc_entity element0, %F.decl [symbolic = %.loc5_9.3 (constants.%.3)]
|
||||
// CHECK:STDOUT: %.loc5_9.2: type = assoc_entity_type @AddWith.%AddWith.type (%AddWith.type.2), @AddWith.%F.type (%F.type) [symbolic = %.loc5_9.2 (constants.%.1)]
|
||||
// CHECK:STDOUT: %.loc5_9.3: @AddWith.%.loc5_9.2 (%.1) = assoc_entity element0, %F.decl [symbolic = %.loc5_9.3 (constants.%.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface {
|
||||
// CHECK:STDOUT: %Self.1: @AddWith.%AddWith.type (%AddWith.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)]
|
||||
// CHECK:STDOUT: %F.decl: @AddWith.%F.type (%F.type) = fn_decl @F [symbolic = @AddWith.%F (constants.%F)] {} {}
|
||||
// CHECK:STDOUT: %.loc5_9.1: @AddWith.%.loc5_9.2 (%.2) = assoc_entity element0, %F.decl [symbolic = %.loc5_9.3 (constants.%.3)]
|
||||
// CHECK:STDOUT: %.loc5_9.1: @AddWith.%.loc5_9.2 (%.1) = assoc_entity element0, %F.decl [symbolic = %.loc5_9.3 (constants.%.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self.1
|
||||
@@ -104,7 +104,7 @@ impl C as AddWith(C) {
|
||||
// CHECK:STDOUT: %.1: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
|
||||
// CHECK:STDOUT: %AddWith.type.1: type = generic_interface_type @AddWith [template]
|
||||
// CHECK:STDOUT: %.3: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %AddWith: %AddWith.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %AddWith.type.2: type = interface_type @AddWith, @AddWith(%T) [symbolic]
|
||||
@@ -113,16 +113,16 @@ impl C as AddWith(C) {
|
||||
// CHECK:STDOUT: %Self.2: %AddWith.type.2 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.1: type = fn_type @F.1, @AddWith(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %.4: type = assoc_entity_type %AddWith.type.2, %F.type.1 [symbolic]
|
||||
// CHECK:STDOUT: %.5: %.4 = assoc_entity element0, imports.%import_ref.5 [symbolic]
|
||||
// CHECK:STDOUT: %.3: type = assoc_entity_type %AddWith.type.2, %F.type.1 [symbolic]
|
||||
// CHECK:STDOUT: %.4: %.3 = assoc_entity element0, imports.%import_ref.5 [symbolic]
|
||||
// CHECK:STDOUT: %AddWith.type.3: type = interface_type @AddWith, @AddWith(%C) [template]
|
||||
// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template]
|
||||
// CHECK:STDOUT: %F.type.3: type = fn_type @F.1, @AddWith(%C) [template]
|
||||
// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.6: type = assoc_entity_type %AddWith.type.3, %F.type.3 [template]
|
||||
// CHECK:STDOUT: %.7: %.6 = assoc_entity element0, imports.%import_ref.5 [template]
|
||||
// CHECK:STDOUT: %.8: <witness> = interface_witness (%F.2) [template]
|
||||
// CHECK:STDOUT: %.5: type = assoc_entity_type %AddWith.type.3, %F.type.3 [template]
|
||||
// CHECK:STDOUT: %.6: %.5 = assoc_entity element0, imports.%import_ref.5 [template]
|
||||
// CHECK:STDOUT: %.7: <witness> = interface_witness (%F.2) [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -157,8 +157,8 @@ impl C as AddWith(C) {
|
||||
// CHECK:STDOUT: %Self: %AddWith.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.2)]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F.1, @AddWith(%T) [symbolic = %F.type (constants.%F.type.1)]
|
||||
// CHECK:STDOUT: %F: @AddWith.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type @AddWith.%AddWith.type (%AddWith.type.2), @AddWith.%F.type (%F.type.1) [symbolic = %.1 (constants.%.4)]
|
||||
// CHECK:STDOUT: %.2: @AddWith.%.1 (%.4) = assoc_entity element0, imports.%import_ref.5 [symbolic = %.2 (constants.%.5)]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type @AddWith.%AddWith.type (%AddWith.type.2), @AddWith.%F.type (%F.type.1) [symbolic = %.1 (constants.%.3)]
|
||||
// CHECK:STDOUT: %.2: @AddWith.%.1 (%.3) = assoc_entity element0, imports.%import_ref.5 [symbolic = %.2 (constants.%.4)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface {
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -170,7 +170,7 @@ impl C as AddWith(C) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %C.ref.loc7_6 as %AddWith.type {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {}
|
||||
// CHECK:STDOUT: %.loc7: <witness> = interface_witness (%F.decl) [template = constants.%.8]
|
||||
// CHECK:STDOUT: %.loc7: <witness> = interface_witness (%F.decl) [template = constants.%.7]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
@@ -215,8 +215,8 @@ impl C as AddWith(C) {
|
||||
// CHECK:STDOUT: %Self => constants.%Self.2
|
||||
// CHECK:STDOUT: %F.type => constants.%F.type.3
|
||||
// CHECK:STDOUT: %F => constants.%F.3
|
||||
// CHECK:STDOUT: %.1 => constants.%.6
|
||||
// CHECK:STDOUT: %.2 => constants.%.7
|
||||
// CHECK:STDOUT: %.1 => constants.%.5
|
||||
// CHECK:STDOUT: %.2 => constants.%.6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F.1(constants.%C, constants.%C) {}
|
||||
|
||||
@@ -53,7 +53,7 @@ interface A(T: type) {}
|
||||
// CHECK:STDOUT: %NotGenericNoParams.type: type = interface_type @NotGenericNoParams [template]
|
||||
// CHECK:STDOUT: %Self.1: %NotGenericNoParams.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %NotGenericButParams.type.1: type = generic_interface_type @NotGenericButParams [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %NotGenericButParams: %NotGenericButParams.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %NotGenericButParams.type.2: type = interface_type @NotGenericButParams [template]
|
||||
// CHECK:STDOUT: %Self.2: %NotGenericButParams.type.2 = bind_symbolic_name Self, 0 [symbolic]
|
||||
@@ -76,15 +76,15 @@ interface A(T: type) {}
|
||||
// CHECK:STDOUT: %GenericAndParams.2: %GenericAndParams.type.3 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %GenericAndParams.type.4: type = interface_type @GenericAndParams.2, @GenericAndParams.2(%T, %U) [symbolic]
|
||||
// CHECK:STDOUT: %Self.5: %GenericAndParams.type.4 = bind_symbolic_name Self, 2 [symbolic]
|
||||
// CHECK:STDOUT: %.2: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %.3: <witness> = complete_type_witness %.2 [template]
|
||||
// CHECK:STDOUT: %.1: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %.2: <witness> = complete_type_witness %.1 [template]
|
||||
// CHECK:STDOUT: %X: type = class_type @X [template]
|
||||
// CHECK:STDOUT: %.4: <witness> = interface_witness () [template]
|
||||
// CHECK:STDOUT: %.3: <witness> = interface_witness () [template]
|
||||
// CHECK:STDOUT: %GenericAndParams.type.5: type = interface_type @GenericAndParams.1, @GenericAndParams.1(%X) [template]
|
||||
// CHECK:STDOUT: %C.3: type = class_type @C, @C(%X) [template]
|
||||
// CHECK:STDOUT: %GenericAndParams.type.6: type = generic_interface_type @GenericAndParams.2, @C(%X) [template]
|
||||
// CHECK:STDOUT: %GenericAndParams.3: %GenericAndParams.type.6 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.5: type = ptr_type %.2 [template]
|
||||
// CHECK:STDOUT: %.4: type = ptr_type %.1 [template]
|
||||
// CHECK:STDOUT: %GenericAndParams.type.7: type = interface_type @GenericAndParams.2, @GenericAndParams.2(%X, %X) [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -214,35 +214,35 @@ interface A(T: type) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.1: %X.ref as %NotGenericNoParams.ref {
|
||||
// CHECK:STDOUT: %.loc14: <witness> = interface_witness () [template = constants.%.4]
|
||||
// CHECK:STDOUT: %.loc14: <witness> = interface_witness () [template = constants.%.3]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: witness = %.loc14
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.2: %X.ref as %NotGenericButParams.type {
|
||||
// CHECK:STDOUT: %.loc15: <witness> = interface_witness () [template = constants.%.4]
|
||||
// CHECK:STDOUT: %.loc15: <witness> = interface_witness () [template = constants.%.3]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: witness = %.loc15
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.3: %X.ref.loc16_6 as %GenericAndParams.type {
|
||||
// CHECK:STDOUT: %.loc16: <witness> = interface_witness () [template = constants.%.4]
|
||||
// CHECK:STDOUT: %.loc16: <witness> = interface_witness () [template = constants.%.3]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: witness = %.loc16
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.4: %X.ref.loc17_6 as %GenericNoParams.ref {
|
||||
// CHECK:STDOUT: %.loc17: <witness> = interface_witness () [template = constants.%.4]
|
||||
// CHECK:STDOUT: %.loc17: <witness> = interface_witness () [template = constants.%.3]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: witness = %.loc17
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.5: %X.ref.loc18_6 as %GenericAndParams.type {
|
||||
// CHECK:STDOUT: %.loc18_36: <witness> = interface_witness () [template = constants.%.4]
|
||||
// CHECK:STDOUT: %.loc18_36: <witness> = interface_witness () [template = constants.%.3]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: witness = %.loc18_36
|
||||
@@ -265,7 +265,7 @@ interface A(T: type) {}
|
||||
// CHECK:STDOUT: %U.param: type = value_param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %U.loc10_30.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc10_30.2 (constants.%U)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc11: <witness> = complete_type_witness %.2 [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc11: <witness> = complete_type_witness %.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%C.2
|
||||
@@ -275,7 +275,7 @@ interface A(T: type) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @X {
|
||||
// CHECK:STDOUT: %.loc13: <witness> = complete_type_witness %.2 [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc13: <witness> = complete_type_witness %.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%X
|
||||
@@ -347,7 +347,7 @@ interface A(T: type) {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %A.type.1: type = generic_interface_type @A [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %A: %A.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %A.type.2: type = interface_type @A [template]
|
||||
// CHECK:STDOUT: %Self: %A.type.2 = bind_symbolic_name Self, 0 [symbolic]
|
||||
@@ -372,7 +372,7 @@ interface A(T: type) {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %A.type.1: type = generic_interface_type @A [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %A: %A.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %A.type.2: type = interface_type @A [template]
|
||||
// CHECK:STDOUT: %Self: %A.type.2 = bind_symbolic_name Self, 0 [symbolic]
|
||||
|
||||
+45
-45
@@ -58,20 +58,20 @@ var f: ForwardDeclared* = &f_ref.f;
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type %Basic.type, type [template]
|
||||
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @Basic.%T [template]
|
||||
// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %.3: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.4: type = assoc_entity_type %Basic.type, %F.type.1 [template]
|
||||
// CHECK:STDOUT: %.5: %.4 = assoc_entity element1, @Basic.%F.decl [template]
|
||||
// CHECK:STDOUT: %.3: type = assoc_entity_type %Basic.type, %F.type.1 [template]
|
||||
// CHECK:STDOUT: %.4: %.3 = assoc_entity element1, @Basic.%F.decl [template]
|
||||
// CHECK:STDOUT: %ForwardDeclared.type: type = interface_type @ForwardDeclared [template]
|
||||
// CHECK:STDOUT: %Self.3: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.6: type = assoc_entity_type %ForwardDeclared.type, type [template]
|
||||
// CHECK:STDOUT: %.7: %.6 = assoc_entity element0, @ForwardDeclared.%T [template]
|
||||
// CHECK:STDOUT: %.5: type = assoc_entity_type %ForwardDeclared.type, type [template]
|
||||
// CHECK:STDOUT: %.6: %.5 = assoc_entity element0, @ForwardDeclared.%T [template]
|
||||
// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.8: type = assoc_entity_type %ForwardDeclared.type, %F.type.2 [template]
|
||||
// CHECK:STDOUT: %.9: %.8 = assoc_entity element1, @ForwardDeclared.%F.decl [template]
|
||||
// CHECK:STDOUT: %.10: type = struct_type {.f: %ForwardDeclared.type} [template]
|
||||
// CHECK:STDOUT: %.11: type = struct_type {.f: %.3} [template]
|
||||
// CHECK:STDOUT: %.7: type = assoc_entity_type %ForwardDeclared.type, %F.type.2 [template]
|
||||
// CHECK:STDOUT: %.8: %.7 = assoc_entity element1, @ForwardDeclared.%F.decl [template]
|
||||
// CHECK:STDOUT: %.9: type = struct_type {.f: %ForwardDeclared.type} [template]
|
||||
// CHECK:STDOUT: %.10: type = struct_type {.f: %empty_tuple.type} [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -85,9 +85,9 @@ var f: ForwardDeclared* = &f_ref.f;
|
||||
// CHECK:STDOUT: %Basic.decl: type = interface_decl @Basic [template = constants.%Basic.type] {} {}
|
||||
// CHECK:STDOUT: %ForwardDeclared.decl: type = interface_decl @ForwardDeclared [template = constants.%ForwardDeclared.type] {} {}
|
||||
// CHECK:STDOUT: %ForwardDeclared.ref: type = name_ref ForwardDeclared, %ForwardDeclared.decl [template = constants.%ForwardDeclared.type]
|
||||
// CHECK:STDOUT: %.loc20: type = struct_type {.f: %ForwardDeclared.type} [template = constants.%.10]
|
||||
// CHECK:STDOUT: %f_ref.var: ref %.10 = var f_ref
|
||||
// CHECK:STDOUT: %f_ref: ref %.10 = bind_name f_ref, %f_ref.var
|
||||
// CHECK:STDOUT: %.loc20: type = struct_type {.f: %ForwardDeclared.type} [template = constants.%.9]
|
||||
// CHECK:STDOUT: %f_ref.var: ref %.9 = var f_ref
|
||||
// CHECK:STDOUT: %f_ref: ref %.9 = bind_name f_ref, %f_ref.var
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Empty {
|
||||
@@ -103,7 +103,7 @@ var f: ForwardDeclared* = &f_ref.f;
|
||||
// CHECK:STDOUT: %T: type = assoc_const_decl T [template]
|
||||
// CHECK:STDOUT: %.loc8: %.1 = assoc_entity element0, %T [template = constants.%.2]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {}
|
||||
// CHECK:STDOUT: %.loc9: %.4 = assoc_entity element1, %F.decl [template = constants.%.5]
|
||||
// CHECK:STDOUT: %.loc9: %.3 = assoc_entity element1, %F.decl [template = constants.%.4]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -115,9 +115,9 @@ var f: ForwardDeclared* = &f_ref.f;
|
||||
// CHECK:STDOUT: interface @ForwardDeclared {
|
||||
// CHECK:STDOUT: %Self: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.3]
|
||||
// CHECK:STDOUT: %T: type = assoc_const_decl T [template]
|
||||
// CHECK:STDOUT: %.loc16: %.6 = assoc_entity element0, %T [template = constants.%.7]
|
||||
// CHECK:STDOUT: %.loc16: %.5 = assoc_entity element0, %T [template = constants.%.6]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {}
|
||||
// CHECK:STDOUT: %.loc17: %.8 = assoc_entity element1, %F.decl [template = constants.%.9]
|
||||
// CHECK:STDOUT: %.loc17: %.7 = assoc_entity element1, %F.decl [template = constants.%.8]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -146,7 +146,7 @@ var f: ForwardDeclared* = &f_ref.f;
|
||||
// CHECK:STDOUT: %Empty.type: type = interface_type @Empty [template]
|
||||
// CHECK:STDOUT: %Self.1: %Empty.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %UseEmpty.type: type = fn_type @UseEmpty [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %UseEmpty: %UseEmpty.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Basic.type: type = interface_type @Basic [template]
|
||||
// CHECK:STDOUT: %Self.2: %Basic.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
@@ -156,37 +156,37 @@ var f: ForwardDeclared* = &f_ref.f;
|
||||
// CHECK:STDOUT: %Self.3: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %UseForwardDeclared.type: type = fn_type @UseForwardDeclared [template]
|
||||
// CHECK:STDOUT: %UseForwardDeclared: %UseForwardDeclared.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: type = assoc_entity_type %Basic.type, type [template]
|
||||
// CHECK:STDOUT: %.3: %.2 = assoc_entity element0, imports.%import_ref.16 [template]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type %Basic.type, type [template]
|
||||
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, imports.%import_ref.16 [template]
|
||||
// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.4: type = assoc_entity_type %Basic.type, %F.type.1 [template]
|
||||
// CHECK:STDOUT: %.5: %.4 = assoc_entity element1, imports.%import_ref.17 [template]
|
||||
// CHECK:STDOUT: %.6: type = assoc_entity_type %ForwardDeclared.type, type [template]
|
||||
// CHECK:STDOUT: %.7: %.6 = assoc_entity element0, imports.%import_ref.18 [template]
|
||||
// CHECK:STDOUT: %.3: type = assoc_entity_type %Basic.type, %F.type.1 [template]
|
||||
// CHECK:STDOUT: %.4: %.3 = assoc_entity element1, imports.%import_ref.17 [template]
|
||||
// CHECK:STDOUT: %.5: type = assoc_entity_type %ForwardDeclared.type, type [template]
|
||||
// CHECK:STDOUT: %.6: %.5 = assoc_entity element0, imports.%import_ref.18 [template]
|
||||
// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.8: type = assoc_entity_type %ForwardDeclared.type, %F.type.2 [template]
|
||||
// CHECK:STDOUT: %.9: %.8 = assoc_entity element1, imports.%import_ref.19 [template]
|
||||
// CHECK:STDOUT: %.10: type = ptr_type %ForwardDeclared.type [template]
|
||||
// CHECK:STDOUT: %.11: type = struct_type {.f: %ForwardDeclared.type} [template]
|
||||
// CHECK:STDOUT: %.12: type = struct_type {.f: %.1} [template]
|
||||
// CHECK:STDOUT: %.7: type = assoc_entity_type %ForwardDeclared.type, %F.type.2 [template]
|
||||
// CHECK:STDOUT: %.8: %.7 = assoc_entity element1, imports.%import_ref.19 [template]
|
||||
// CHECK:STDOUT: %.9: type = ptr_type %ForwardDeclared.type [template]
|
||||
// CHECK:STDOUT: %.10: type = struct_type {.f: %ForwardDeclared.type} [template]
|
||||
// CHECK:STDOUT: %.11: type = struct_type {.f: %empty_tuple.type} [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %import_ref.1: type = import_ref Main//a, inst+1, loaded [template = constants.%Empty.type]
|
||||
// CHECK:STDOUT: %import_ref.2: type = import_ref Main//a, inst+5, loaded [template = constants.%Basic.type]
|
||||
// CHECK:STDOUT: %import_ref.3: type = import_ref Main//a, inst+20, loaded [template = constants.%ForwardDeclared.type]
|
||||
// CHECK:STDOUT: %import_ref.4: ref %.11 = import_ref Main//a, inst+39, loaded
|
||||
// CHECK:STDOUT: %import_ref.4: ref %.10 = import_ref Main//a, inst+39, loaded
|
||||
// CHECK:STDOUT: %import_ref.5 = import_ref Main//a, inst+3, unloaded
|
||||
// CHECK:STDOUT: %import_ref.6 = import_ref Main//a, inst+7, unloaded
|
||||
// CHECK:STDOUT: %import_ref.7: %.2 = import_ref Main//a, inst+11, loaded [template = constants.%.3]
|
||||
// CHECK:STDOUT: %import_ref.8: %.4 = import_ref Main//a, inst+18, loaded [template = constants.%.5]
|
||||
// CHECK:STDOUT: %import_ref.7: %.1 = import_ref Main//a, inst+11, loaded [template = constants.%.2]
|
||||
// CHECK:STDOUT: %import_ref.8: %.3 = import_ref Main//a, inst+18, loaded [template = constants.%.4]
|
||||
// CHECK:STDOUT: %import_ref.9 = import_ref Main//a, inst+9, unloaded
|
||||
// CHECK:STDOUT: %import_ref.10 = import_ref Main//a, inst+13, unloaded
|
||||
// CHECK:STDOUT: %import_ref.11 = import_ref Main//a, inst+22, unloaded
|
||||
// CHECK:STDOUT: %import_ref.12: %.6 = import_ref Main//a, inst+26, loaded [template = constants.%.7]
|
||||
// CHECK:STDOUT: %import_ref.13: %.8 = import_ref Main//a, inst+32, loaded [template = constants.%.9]
|
||||
// CHECK:STDOUT: %import_ref.12: %.5 = import_ref Main//a, inst+26, loaded [template = constants.%.6]
|
||||
// CHECK:STDOUT: %import_ref.13: %.7 = import_ref Main//a, inst+32, loaded [template = constants.%.8]
|
||||
// CHECK:STDOUT: %import_ref.14 = import_ref Main//a, inst+24, unloaded
|
||||
// CHECK:STDOUT: %import_ref.15 = import_ref Main//a, inst+28, unloaded
|
||||
// CHECK:STDOUT: %import_ref.16 = import_ref Main//a, inst+9, unloaded
|
||||
@@ -236,21 +236,21 @@ var f: ForwardDeclared* = &f_ref.f;
|
||||
// CHECK:STDOUT: %f: %ForwardDeclared.type = bind_name f, %f.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Basic.ref.loc10: type = name_ref Basic, imports.%import_ref.2 [template = constants.%Basic.type]
|
||||
// CHECK:STDOUT: %T.ref.loc10: %.2 = name_ref T, imports.%import_ref.7 [template = constants.%.3]
|
||||
// CHECK:STDOUT: %UseBasicT: %.2 = bind_alias UseBasicT, imports.%import_ref.7 [template = constants.%.3]
|
||||
// CHECK:STDOUT: %T.ref.loc10: %.1 = name_ref T, imports.%import_ref.7 [template = constants.%.2]
|
||||
// CHECK:STDOUT: %UseBasicT: %.1 = bind_alias UseBasicT, imports.%import_ref.7 [template = constants.%.2]
|
||||
// CHECK:STDOUT: %Basic.ref.loc11: type = name_ref Basic, imports.%import_ref.2 [template = constants.%Basic.type]
|
||||
// CHECK:STDOUT: %F.ref.loc11: %.4 = name_ref F, imports.%import_ref.8 [template = constants.%.5]
|
||||
// CHECK:STDOUT: %UseBasicF: %.4 = bind_alias UseBasicF, imports.%import_ref.8 [template = constants.%.5]
|
||||
// CHECK:STDOUT: %F.ref.loc11: %.3 = name_ref F, imports.%import_ref.8 [template = constants.%.4]
|
||||
// CHECK:STDOUT: %UseBasicF: %.3 = bind_alias UseBasicF, imports.%import_ref.8 [template = constants.%.4]
|
||||
// CHECK:STDOUT: %ForwardDeclared.ref.loc13: type = name_ref ForwardDeclared, imports.%import_ref.3 [template = constants.%ForwardDeclared.type]
|
||||
// CHECK:STDOUT: %T.ref.loc13: %.6 = name_ref T, imports.%import_ref.12 [template = constants.%.7]
|
||||
// CHECK:STDOUT: %UseForwardDeclaredT: %.6 = bind_alias UseForwardDeclaredT, imports.%import_ref.12 [template = constants.%.7]
|
||||
// CHECK:STDOUT: %T.ref.loc13: %.5 = name_ref T, imports.%import_ref.12 [template = constants.%.6]
|
||||
// CHECK:STDOUT: %UseForwardDeclaredT: %.5 = bind_alias UseForwardDeclaredT, imports.%import_ref.12 [template = constants.%.6]
|
||||
// CHECK:STDOUT: %ForwardDeclared.ref.loc14: type = name_ref ForwardDeclared, imports.%import_ref.3 [template = constants.%ForwardDeclared.type]
|
||||
// CHECK:STDOUT: %F.ref.loc14: %.8 = name_ref F, imports.%import_ref.13 [template = constants.%.9]
|
||||
// CHECK:STDOUT: %UseForwardDeclaredF: %.8 = bind_alias UseForwardDeclaredF, imports.%import_ref.13 [template = constants.%.9]
|
||||
// CHECK:STDOUT: %F.ref.loc14: %.7 = name_ref F, imports.%import_ref.13 [template = constants.%.8]
|
||||
// CHECK:STDOUT: %UseForwardDeclaredF: %.7 = bind_alias UseForwardDeclaredF, imports.%import_ref.13 [template = constants.%.8]
|
||||
// CHECK:STDOUT: %ForwardDeclared.ref.loc16: type = name_ref ForwardDeclared, imports.%import_ref.3 [template = constants.%ForwardDeclared.type]
|
||||
// CHECK:STDOUT: %.loc16: type = ptr_type %ForwardDeclared.type [template = constants.%.10]
|
||||
// CHECK:STDOUT: %f.var: ref %.10 = var f
|
||||
// CHECK:STDOUT: %f: ref %.10 = bind_name f, %f.var
|
||||
// CHECK:STDOUT: %.loc16: type = ptr_type %ForwardDeclared.type [template = constants.%.9]
|
||||
// CHECK:STDOUT: %f.var: ref %.9 = var f
|
||||
// CHECK:STDOUT: %f: ref %.9 = bind_name f, %f.var
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Empty {
|
||||
@@ -302,9 +302,9 @@ var f: ForwardDeclared* = &f_ref.f;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %f_ref.ref: ref %.11 = name_ref f_ref, imports.%import_ref.4
|
||||
// CHECK:STDOUT: %f_ref.ref: ref %.10 = name_ref f_ref, imports.%import_ref.4
|
||||
// CHECK:STDOUT: %.loc16_33: ref %ForwardDeclared.type = struct_access %f_ref.ref, element0
|
||||
// CHECK:STDOUT: %.loc16_27: %.10 = addr_of %.loc16_33
|
||||
// CHECK:STDOUT: %.loc16_27: %.9 = addr_of %.loc16_33
|
||||
// CHECK:STDOUT: assign file.%f.var, %.loc16_27
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -197,7 +197,7 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT: %Def.type: type = interface_type @Def [template]
|
||||
// CHECK:STDOUT: %Self: %Def.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -238,7 +238,7 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -266,7 +266,7 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -304,7 +304,7 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT: %ForwardWithDef.type: type = interface_type @ForwardWithDef [template]
|
||||
// CHECK:STDOUT: %Self: %ForwardWithDef.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -345,7 +345,7 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -373,7 +373,7 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -409,7 +409,7 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Forward.type: type = interface_type @Forward [template]
|
||||
// CHECK:STDOUT: %Self: %Forward.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
@@ -451,7 +451,7 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -480,7 +480,7 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -21,7 +21,7 @@ impl library "[[@TEST_NAME]]";
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %A.type: type = interface_type @A [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -30,8 +30,8 @@ impl library "[[@TEST_NAME]]";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %A.decl: type = interface_decl @A [template = constants.%A.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %.loc3_7.1: %.1 = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc3_7.2: type = converted %.loc3_7.1, constants.%.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %.loc3_7.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc3_7.2: type = converted %.loc3_7.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -44,12 +44,12 @@ impl library "[[@TEST_NAME]]";
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %A.type: type = interface_type @A [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %import_ref.1 = import_ref Main//a, inst+1, unloaded
|
||||
// CHECK:STDOUT: %import_ref.2: type = import_ref Main//a, inst+5, loaded [template = constants.%.1]
|
||||
// CHECK:STDOUT: %import_ref.2: type = import_ref Main//a, inst+5, loaded [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %import_ref.3: type = import_ref Main//a, inst+6, loaded [template = constants.%A.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -18,10 +18,10 @@ interface UseSelf {
|
||||
// CHECK:STDOUT: %UseSelf.type: type = interface_type @UseSelf [template]
|
||||
// CHECK:STDOUT: %Self: %UseSelf.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: type = assoc_entity_type %UseSelf.type, %F.type [template]
|
||||
// CHECK:STDOUT: %.3: %.2 = assoc_entity element0, @UseSelf.%F.decl [template]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type %UseSelf.type, %F.type [template]
|
||||
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @UseSelf.%F.decl [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -50,7 +50,7 @@ interface UseSelf {
|
||||
// CHECK:STDOUT: %return.param: ref @F.%Self (%Self) = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @F.%Self (%Self) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc12: %.2 = assoc_entity element0, %F.decl [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc12: %.1 = assoc_entity element0, %F.decl [template = constants.%.2]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
|
||||
@@ -194,7 +194,7 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt.1: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type.1: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %.3: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %a.patt.2: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type.2: type = interface_type @Foo, @Foo(%a) [symbolic]
|
||||
@@ -321,7 +321,7 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt.1: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type.1: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %.3: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %a.patt.2: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type.2: type = interface_type @Foo, @Foo(%a) [symbolic]
|
||||
@@ -395,11 +395,11 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt.1: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %.3: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %a.patt.2: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template]
|
||||
// CHECK:STDOUT: %.4: %.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.3: %.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.2: type = interface_type @.1, @.1(%a) [symbolic]
|
||||
// CHECK:STDOUT: %Self: %.type.2 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -418,7 +418,7 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: %a.param: %C = value_param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %a.loc6_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc6_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.4] {
|
||||
// CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.3] {
|
||||
// CHECK:STDOUT: %a.patt.loc14_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc14_15.2 (constants.%a.patt.2)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc14_15.1, runtime_param<invalid> [symbolic = %a.patt.loc14_15.2 (constants.%a.patt.2)]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -483,7 +483,7 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt.1: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type.1: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %.3: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %a.patt.2: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type.2: type = interface_type @Foo, @Foo(%a) [symbolic]
|
||||
@@ -557,7 +557,7 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt.1: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %.3: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %a.patt.2: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Bar.type: type = generic_interface_type @Bar [template]
|
||||
@@ -632,18 +632,18 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt.1: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %.3: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %a.patt.2: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template]
|
||||
// CHECK:STDOUT: %.4: %.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.3: %.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.2: type = interface_type @.1, @.1(%a) [symbolic]
|
||||
// CHECK:STDOUT: %Self.1: %.type.2 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt.3: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Bar.type: type = generic_interface_type @Bar [template]
|
||||
// CHECK:STDOUT: %Bar: %Bar.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.3: type = generic_interface_type @.2 [template]
|
||||
// CHECK:STDOUT: %.5: %.type.3 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.4: %.type.3 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.4: type = interface_type @.2, @.2(%a) [symbolic]
|
||||
// CHECK:STDOUT: %Self.2: %.type.4 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -665,7 +665,7 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import.loc2_6.1 = import <invalid>
|
||||
// CHECK:STDOUT: %default.import.loc2_6.2 = import <invalid>
|
||||
// CHECK:STDOUT: %.decl.loc12: %.type.1 = interface_decl @.1 [template = constants.%.4] {
|
||||
// CHECK:STDOUT: %.decl.loc12: %.type.1 = interface_decl @.1 [template = constants.%.3] {
|
||||
// CHECK:STDOUT: %a.patt.loc12_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc12_15.2 (constants.%a.patt.1)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc12_15.1, runtime_param<invalid> [symbolic = %a.patt.loc12_15.2 (constants.%a.patt.1)]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -673,7 +673,7 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: %a.param: %C = value_param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %a.loc12_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc12_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl.loc21: %.type.3 = interface_decl @.2 [template = constants.%.5] {
|
||||
// CHECK:STDOUT: %.decl.loc21: %.type.3 = interface_decl @.2 [template = constants.%.4] {
|
||||
// CHECK:STDOUT: %a.patt.loc21_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc21_15.2 (constants.%a.patt.3)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc21_15.1, runtime_param<invalid> [symbolic = %a.patt.loc21_15.2 (constants.%a.patt.3)]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -775,12 +775,12 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %.3: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %b: %C = bind_symbolic_name b, 0 [symbolic]
|
||||
// CHECK:STDOUT: %b.patt: %C = symbolic_binding_pattern b, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template]
|
||||
// CHECK:STDOUT: %.4: %.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.3: %.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.2: type = interface_type @.1, @.1(%b) [symbolic]
|
||||
// CHECK:STDOUT: %Self: %.type.2 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -802,7 +802,7 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: %a.param: %C = value_param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.4] {
|
||||
// CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.3] {
|
||||
// CHECK:STDOUT: %b.patt.loc15_15.1: %C = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc15_15.2 (constants.%b.patt)]
|
||||
// CHECK:STDOUT: %b.param_patt: %C = value_param_pattern %b.patt.loc15_15.1, runtime_param<invalid> [symbolic = %b.patt.loc15_15.2 (constants.%b.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -867,11 +867,11 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt.1: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %.3: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %a.patt.2: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template]
|
||||
// CHECK:STDOUT: %.4: %.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.3: %.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.2: type = interface_type @.1, @.1(%a) [symbolic]
|
||||
// CHECK:STDOUT: %Self: %.type.2 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -893,7 +893,7 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: %a.param: %C = value_param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.4] {
|
||||
// CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.3] {
|
||||
// CHECK:STDOUT: %a.patt.loc15_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_15.2 (constants.%a.patt.2)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc15_15.1, runtime_param<invalid> [symbolic = %a.patt.loc15_15.2 (constants.%a.patt.2)]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -958,11 +958,11 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt.1: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %.3: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %a.patt.2: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template]
|
||||
// CHECK:STDOUT: %.4: %.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.3: %.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.2: type = interface_type @.1, @.1(%a) [symbolic]
|
||||
// CHECK:STDOUT: %Self: %.type.2 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -984,7 +984,7 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: %a.param: %C = value_param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.4] {
|
||||
// CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.3] {
|
||||
// CHECK:STDOUT: %a.patt.loc15_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_15.2 (constants.%a.patt.2)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc15_15.1, runtime_param<invalid> [symbolic = %a.patt.loc15_15.2 (constants.%a.patt.2)]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -1049,7 +1049,7 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %.3: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -1097,11 +1097,11 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt.1: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %.3: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %a.patt.2: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template]
|
||||
// CHECK:STDOUT: %.4: %.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.3: %.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.2: type = interface_type @.1, @.1(%a) [symbolic]
|
||||
// CHECK:STDOUT: %Self: %.type.2 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1122,7 +1122,7 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: %default.import.loc2_6.2 = import <invalid>
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = bind_alias D, imports.%import_ref.1 [template = constants.%C]
|
||||
// CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.4] {
|
||||
// CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.3] {
|
||||
// CHECK:STDOUT: %a.patt.loc17_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc17_15.2 (constants.%a.patt.1)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc17_15.1, runtime_param<invalid> [symbolic = %a.patt.loc17_15.2 (constants.%a.patt.1)]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -1186,11 +1186,11 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: %a: %.3 = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt.1: %.3 = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %.4: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %a.patt.2: %.3 = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template]
|
||||
// CHECK:STDOUT: %.5: %.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.4: %.type.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.2: type = interface_type @.1, @.1(%a) [symbolic]
|
||||
// CHECK:STDOUT: %Self: %.type.2 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1210,7 +1210,7 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: %a.param: %.3 = value_param runtime_param<invalid>
|
||||
// CHECK:STDOUT: %a.loc6_15.1: %.3 = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc6_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.5] {
|
||||
// CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.4] {
|
||||
// CHECK:STDOUT: %a.patt.loc17_15.1: %.3 = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc17_15.2 (constants.%a.patt.2)]
|
||||
// CHECK:STDOUT: %a.param_patt: %.3 = value_param_pattern %a.patt.loc17_15.1, runtime_param<invalid> [symbolic = %a.patt.loc17_15.2 (constants.%a.patt.2)]
|
||||
// CHECK:STDOUT: } {
|
||||
|
||||
@@ -25,23 +25,23 @@ interface I {
|
||||
// CHECK:STDOUT: %I.type: type = interface_type @I [template]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.2: type = assoc_entity_type %I.type, %F.type [template]
|
||||
// CHECK:STDOUT: %.3: %.2 = assoc_entity element0, @I.%F.decl [template]
|
||||
// CHECK:STDOUT: %.1: type = assoc_entity_type %I.type, %F.type [template]
|
||||
// CHECK:STDOUT: %.2: %.1 = assoc_entity element0, @I.%F.decl [template]
|
||||
// CHECK:STDOUT: %Int32.type: type = fn_type @Int32 [template]
|
||||
// CHECK:STDOUT: %Int32: %Int32.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.4: type = assoc_entity_type %I.type, %G.type [template]
|
||||
// CHECK:STDOUT: %.5: %.4 = assoc_entity element1, @I.%G.decl [template]
|
||||
// CHECK:STDOUT: %.6: type = tuple_type (type, type) [template]
|
||||
// CHECK:STDOUT: %.7: type = tuple_type (i32, i32) [template]
|
||||
// CHECK:STDOUT: %.8: type = assoc_entity_type %I.type, type [template]
|
||||
// CHECK:STDOUT: %.9: %.8 = assoc_entity element2, @I.%T [template]
|
||||
// CHECK:STDOUT: %.10: i32 = int_value 42 [template]
|
||||
// CHECK:STDOUT: %.11: type = assoc_entity_type %I.type, i32 [template]
|
||||
// CHECK:STDOUT: %.12: %.11 = assoc_entity element3, @I.%N [template]
|
||||
// CHECK:STDOUT: %.3: type = assoc_entity_type %I.type, %G.type [template]
|
||||
// CHECK:STDOUT: %.4: %.3 = assoc_entity element1, @I.%G.decl [template]
|
||||
// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template]
|
||||
// CHECK:STDOUT: %tuple.type.2: type = tuple_type (i32, i32) [template]
|
||||
// CHECK:STDOUT: %.5: type = assoc_entity_type %I.type, type [template]
|
||||
// CHECK:STDOUT: %.6: %.5 = assoc_entity element2, @I.%T [template]
|
||||
// CHECK:STDOUT: %.7: i32 = int_value 42 [template]
|
||||
// CHECK:STDOUT: %.8: type = assoc_entity_type %I.type, i32 [template]
|
||||
// CHECK:STDOUT: %.9: %.8 = assoc_entity element3, @I.%N [template]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -65,7 +65,7 @@ interface I {
|
||||
// CHECK:STDOUT: interface @I {
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %.loc13: %.2 = assoc_entity element0, %F.decl [template = constants.%.3]
|
||||
// CHECK:STDOUT: %.loc13: %.1 = assoc_entity element0, %F.decl [template = constants.%.2]
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %a.patt: i32 = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: i32 = value_param_pattern %a.patt, runtime_param0
|
||||
@@ -90,23 +90,23 @@ interface I {
|
||||
// CHECK:STDOUT: %return.param: ref i32 = out_param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc14: %.4 = assoc_entity element1, %G.decl [template = constants.%.5]
|
||||
// CHECK:STDOUT: %.loc14: %.3 = assoc_entity element1, %G.decl [template = constants.%.4]
|
||||
// CHECK:STDOUT: %int.make_type_32.loc18_19: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %int.make_type_32.loc18_24: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc18_27: %.6 = tuple_literal (%int.make_type_32.loc18_19, %int.make_type_32.loc18_24)
|
||||
// CHECK:STDOUT: %.loc18_27: %tuple.type.1 = tuple_literal (%int.make_type_32.loc18_19, %int.make_type_32.loc18_24)
|
||||
// CHECK:STDOUT: %.loc18_28.1: type = value_of_initializer %int.make_type_32.loc18_19 [template = i32]
|
||||
// CHECK:STDOUT: %.loc18_28.2: type = converted %int.make_type_32.loc18_19, %.loc18_28.1 [template = i32]
|
||||
// CHECK:STDOUT: %.loc18_28.3: type = value_of_initializer %int.make_type_32.loc18_24 [template = i32]
|
||||
// CHECK:STDOUT: %.loc18_28.4: type = converted %int.make_type_32.loc18_24, %.loc18_28.3 [template = i32]
|
||||
// CHECK:STDOUT: %.loc18_28.5: type = converted %.loc18_27, constants.%.7 [template = constants.%.7]
|
||||
// CHECK:STDOUT: %.loc18_28.5: type = converted %.loc18_27, constants.%tuple.type.2 [template = constants.%tuple.type.2]
|
||||
// CHECK:STDOUT: %T: type = assoc_const_decl T [template]
|
||||
// CHECK:STDOUT: %.loc18_28.6: %.8 = assoc_entity element2, %T [template = constants.%.9]
|
||||
// CHECK:STDOUT: %.loc18_28.6: %.5 = assoc_entity element2, %T [template = constants.%.6]
|
||||
// CHECK:STDOUT: %int.make_type_32.loc19: init type = call constants.%Int32() [template = i32]
|
||||
// CHECK:STDOUT: %.loc19_11.1: type = value_of_initializer %int.make_type_32.loc19 [template = i32]
|
||||
// CHECK:STDOUT: %.loc19_11.2: type = converted %int.make_type_32.loc19, %.loc19_11.1 [template = i32]
|
||||
// CHECK:STDOUT: %.loc19_17: i32 = int_value 42 [template = constants.%.10]
|
||||
// CHECK:STDOUT: %.loc19_17: i32 = int_value 42 [template = constants.%.7]
|
||||
// CHECK:STDOUT: %N: i32 = assoc_const_decl N [template]
|
||||
// CHECK:STDOUT: %.loc19_19: %.11 = assoc_entity element3, %N [template = constants.%.12]
|
||||
// CHECK:STDOUT: %.loc19_19: %.8 = assoc_entity element3, %N [template = constants.%.9]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
|
||||
Reference in New Issue
Block a user