|
@@ -65,29 +65,31 @@ fn G(T:! Generic(B)) {
|
|
|
// CHECK:STDOUT: %Simple.type: type = generic_interface_type @Simple [template]
|
|
// CHECK:STDOUT: %Simple.type: type = generic_interface_type @Simple [template]
|
|
|
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
|
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
|
|
// CHECK:STDOUT: %Simple: %Simple.type = struct_value () [template]
|
|
// CHECK:STDOUT: %Simple: %Simple.type = struct_value () [template]
|
|
|
-// CHECK:STDOUT: %Self.1: %Simple = bind_symbolic_name Self 1 [symbolic]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.2: type = interface_type @Simple, (%T.1) [symbolic]
|
|
|
|
|
+// CHECK:STDOUT: %Self.1: %.2 = bind_symbolic_name Self 1 [symbolic]
|
|
|
// CHECK:STDOUT: %X: type = class_type @X [template]
|
|
// CHECK:STDOUT: %X: type = class_type @X [template]
|
|
|
-// CHECK:STDOUT: %.2: type = struct_type {} [template]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.3: type = struct_type {} [template]
|
|
|
// CHECK:STDOUT: %WithAssocFn.type: type = generic_interface_type @WithAssocFn [template]
|
|
// CHECK:STDOUT: %WithAssocFn.type: type = generic_interface_type @WithAssocFn [template]
|
|
|
// CHECK:STDOUT: %WithAssocFn: %WithAssocFn.type = struct_value () [template]
|
|
// CHECK:STDOUT: %WithAssocFn: %WithAssocFn.type = struct_value () [template]
|
|
|
-// CHECK:STDOUT: %Self.2: %WithAssocFn = bind_symbolic_name Self 1 [symbolic]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.4: type = interface_type @WithAssocFn, (%T.1) [symbolic]
|
|
|
|
|
+// CHECK:STDOUT: %Self.2: %.4 = bind_symbolic_name Self 1 [symbolic]
|
|
|
// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template]
|
|
// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template]
|
|
|
// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template]
|
|
// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template]
|
|
|
-// CHECK:STDOUT: %.3: type = assoc_entity_type @WithAssocFn, %F.type.1 [template]
|
|
|
|
|
-// CHECK:STDOUT: %.4: %.3 = assoc_entity element0, @WithAssocFn.%F.decl [template]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.5: type = assoc_entity_type @WithAssocFn, %F.type.1 [template]
|
|
|
|
|
+// CHECK:STDOUT: %.6: %.5 = assoc_entity element0, @WithAssocFn.%F.decl [template]
|
|
|
// CHECK:STDOUT: %C: type = class_type @C [template]
|
|
// CHECK:STDOUT: %C: type = class_type @C [template]
|
|
|
-// CHECK:STDOUT: %.5: type = interface_type @Simple, (%C) [template]
|
|
|
|
|
-// CHECK:STDOUT: %.6: <witness> = interface_witness () [template]
|
|
|
|
|
-// CHECK:STDOUT: %.7: type = interface_type @WithAssocFn, (%C) [template]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.7: type = interface_type @Simple, (%C) [template]
|
|
|
|
|
+// CHECK:STDOUT: %.8: <witness> = interface_witness () [template]
|
|
|
|
|
+// CHECK:STDOUT: %.9: type = interface_type @WithAssocFn, (%C) [template]
|
|
|
// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [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.2: %F.type.2 = struct_value () [template]
|
|
|
-// CHECK:STDOUT: %.8: <witness> = interface_witness (%F.2) [template]
|
|
|
|
|
-// CHECK:STDOUT: %.9: type = ptr_type %.2 [template]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.10: <witness> = interface_witness (%F.2) [template]
|
|
|
|
|
+// CHECK:STDOUT: %.11: type = ptr_type %.3 [template]
|
|
|
// CHECK:STDOUT: %struct: %X = struct_value () [template]
|
|
// CHECK:STDOUT: %struct: %X = struct_value () [template]
|
|
|
// CHECK:STDOUT: %N: %T.1 = bind_symbolic_name N 1 [symbolic]
|
|
// CHECK:STDOUT: %N: %T.1 = bind_symbolic_name N 1 [symbolic]
|
|
|
// CHECK:STDOUT: %WithImplicitArgs.type: type = generic_interface_type @WithImplicitArgs [template]
|
|
// CHECK:STDOUT: %WithImplicitArgs.type: type = generic_interface_type @WithImplicitArgs [template]
|
|
|
// CHECK:STDOUT: %WithImplicitArgs: %WithImplicitArgs.type = struct_value () [template]
|
|
// CHECK:STDOUT: %WithImplicitArgs: %WithImplicitArgs.type = struct_value () [template]
|
|
|
-// CHECK:STDOUT: %T.2: %.5 = bind_symbolic_name T 0 [symbolic]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.2: %.7 = bind_symbolic_name T 0 [symbolic]
|
|
|
// CHECK:STDOUT: %Receive.type: type = fn_type @Receive [template]
|
|
// CHECK:STDOUT: %Receive.type: type = fn_type @Receive [template]
|
|
|
// CHECK:STDOUT: %Receive: %Receive.type = struct_value () [template]
|
|
// CHECK:STDOUT: %Receive: %Receive.type = struct_value () [template]
|
|
|
// CHECK:STDOUT: %Pass.type: type = fn_type @Pass [template]
|
|
// CHECK:STDOUT: %Pass.type: type = fn_type @Pass [template]
|
|
@@ -124,26 +126,26 @@ fn G(T:! Generic(B)) {
|
|
|
// CHECK:STDOUT: %Receive.decl: %Receive.type = fn_decl @Receive [template = constants.%Receive] {
|
|
// CHECK:STDOUT: %Receive.decl: %Receive.type = fn_decl @Receive [template = constants.%Receive] {
|
|
|
// CHECK:STDOUT: %Simple.ref.loc24: %Simple.type = name_ref Simple, %Simple.decl [template = constants.%Simple]
|
|
// CHECK:STDOUT: %Simple.ref.loc24: %Simple.type = name_ref Simple, %Simple.decl [template = constants.%Simple]
|
|
|
// CHECK:STDOUT: %C.ref.loc24: type = name_ref C, %C.decl [template = constants.%C]
|
|
// CHECK:STDOUT: %C.ref.loc24: type = name_ref C, %C.decl [template = constants.%C]
|
|
|
-// CHECK:STDOUT: %.loc24_22: init type = call %Simple.ref.loc24(%C.ref.loc24) [template = constants.%.5]
|
|
|
|
|
-// CHECK:STDOUT: %.loc24_24.1: type = value_of_initializer %.loc24_22 [template = constants.%.5]
|
|
|
|
|
-// CHECK:STDOUT: %.loc24_24.2: type = converted %.loc24_22, %.loc24_24.1 [template = constants.%.5]
|
|
|
|
|
-// CHECK:STDOUT: %T.loc24_12.1: %.5 = param T
|
|
|
|
|
-// CHECK:STDOUT: @Receive.%T: %.5 = bind_symbolic_name T 0, %T.loc24_12.1 [symbolic = constants.%T.2]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc24_22: init type = call %Simple.ref.loc24(%C.ref.loc24) [template = constants.%.7]
|
|
|
|
|
+// CHECK:STDOUT: %.loc24_24.1: type = value_of_initializer %.loc24_22 [template = constants.%.7]
|
|
|
|
|
+// CHECK:STDOUT: %.loc24_24.2: type = converted %.loc24_22, %.loc24_24.1 [template = constants.%.7]
|
|
|
|
|
+// CHECK:STDOUT: %T.loc24_12.1: %.7 = param T
|
|
|
|
|
+// CHECK:STDOUT: @Receive.%T: %.7 = bind_symbolic_name T 0, %T.loc24_12.1 [symbolic = constants.%T.2]
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: %Pass.decl: %Pass.type = fn_decl @Pass [template = constants.%Pass] {
|
|
// CHECK:STDOUT: %Pass.decl: %Pass.type = fn_decl @Pass [template = constants.%Pass] {
|
|
|
// CHECK:STDOUT: %Simple.ref.loc25: %Simple.type = name_ref Simple, %Simple.decl [template = constants.%Simple]
|
|
// CHECK:STDOUT: %Simple.ref.loc25: %Simple.type = name_ref Simple, %Simple.decl [template = constants.%Simple]
|
|
|
// CHECK:STDOUT: %C.ref.loc25: type = name_ref C, %C.decl [template = constants.%C]
|
|
// CHECK:STDOUT: %C.ref.loc25: type = name_ref C, %C.decl [template = constants.%C]
|
|
|
-// CHECK:STDOUT: %.loc25_19: init type = call %Simple.ref.loc25(%C.ref.loc25) [template = constants.%.5]
|
|
|
|
|
-// CHECK:STDOUT: %.loc25_21.1: type = value_of_initializer %.loc25_19 [template = constants.%.5]
|
|
|
|
|
-// CHECK:STDOUT: %.loc25_21.2: type = converted %.loc25_19, %.loc25_21.1 [template = constants.%.5]
|
|
|
|
|
-// CHECK:STDOUT: %T.loc25_9.1: %.5 = param T
|
|
|
|
|
-// CHECK:STDOUT: @Pass.%T: %.5 = bind_symbolic_name T 0, %T.loc25_9.1 [symbolic = constants.%T.2]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc25_19: init type = call %Simple.ref.loc25(%C.ref.loc25) [template = constants.%.7]
|
|
|
|
|
+// CHECK:STDOUT: %.loc25_21.1: type = value_of_initializer %.loc25_19 [template = constants.%.7]
|
|
|
|
|
+// CHECK:STDOUT: %.loc25_21.2: type = converted %.loc25_19, %.loc25_21.1 [template = constants.%.7]
|
|
|
|
|
+// CHECK:STDOUT: %T.loc25_9.1: %.7 = param T
|
|
|
|
|
+// CHECK:STDOUT: @Pass.%T: %.7 = bind_symbolic_name T 0, %T.loc25_9.1 [symbolic = constants.%T.2]
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: interface @Simple
|
|
// CHECK:STDOUT: interface @Simple
|
|
|
// CHECK:STDOUT: generic [file.%T.loc4_18.2: type] {
|
|
// CHECK:STDOUT: generic [file.%T.loc4_18.2: type] {
|
|
|
-// CHECK:STDOUT: %Self: %Simple = bind_symbolic_name Self 1 [symbolic = constants.%Self.1]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %Self: %.2 = bind_symbolic_name Self 1 [symbolic = constants.%Self.1]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: .Self = %Self
|
|
// CHECK:STDOUT: .Self = %Self
|
|
@@ -152,12 +154,12 @@ fn G(T:! Generic(B)) {
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: interface @WithAssocFn
|
|
// CHECK:STDOUT: interface @WithAssocFn
|
|
|
// CHECK:STDOUT: generic [file.%T.loc8_23.2: type] {
|
|
// CHECK:STDOUT: generic [file.%T.loc8_23.2: type] {
|
|
|
-// CHECK:STDOUT: %Self: %WithAssocFn = bind_symbolic_name Self 1 [symbolic = constants.%Self.2]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %Self: %.4 = bind_symbolic_name Self 1 [symbolic = constants.%Self.2]
|
|
|
// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {
|
|
// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {
|
|
|
// CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X]
|
|
// CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X]
|
|
|
// CHECK:STDOUT: %return.var: ref %X = var <return slot>
|
|
// CHECK:STDOUT: %return.var: ref %X = var <return slot>
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %.loc10: %.3 = assoc_entity element0, %F.decl [template = constants.%.4]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc10: %.5 = assoc_entity element0, %F.decl [template = constants.%.6]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: .Self = %Self
|
|
// CHECK:STDOUT: .Self = %Self
|
|
@@ -168,19 +170,19 @@ fn G(T:! Generic(B)) {
|
|
|
// CHECK:STDOUT: interface @WithImplicitArgs
|
|
// CHECK:STDOUT: interface @WithImplicitArgs
|
|
|
// CHECK:STDOUT: generic [file.%T.loc22_28.2: type, file.%N.loc22_38.2: %T.1];
|
|
// CHECK:STDOUT: generic [file.%T.loc22_28.2: type, file.%N.loc22_38.2: %T.1];
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: impl @impl.1: %C as %.5 {
|
|
|
|
|
-// CHECK:STDOUT: %.1: <witness> = interface_witness () [template = constants.%.6]
|
|
|
|
|
|
|
+// CHECK:STDOUT: impl @impl.1: %C as %.7 {
|
|
|
|
|
+// CHECK:STDOUT: %.1: <witness> = interface_witness () [template = constants.%.8]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: witness = %.1
|
|
// CHECK:STDOUT: witness = %.1
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: impl @impl.2: %C as %.7 {
|
|
|
|
|
|
|
+// CHECK:STDOUT: impl @impl.2: %C as %.9 {
|
|
|
// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {
|
|
// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {
|
|
|
// CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X]
|
|
// CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X]
|
|
|
// CHECK:STDOUT: %return.var: ref %X = var <return slot>
|
|
// CHECK:STDOUT: %return.var: ref %X = var <return slot>
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %.1: <witness> = interface_witness (%F.decl) [template = constants.%.8]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.1: <witness> = interface_witness (%F.decl) [template = constants.%.10]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: .F = %F.decl
|
|
// CHECK:STDOUT: .F = %F.decl
|
|
@@ -193,19 +195,19 @@ fn G(T:! Generic(B)) {
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: class @C {
|
|
// CHECK:STDOUT: class @C {
|
|
|
-// CHECK:STDOUT: %.loc14_19.1: type = value_of_initializer %.loc14_17 [template = constants.%.5]
|
|
|
|
|
-// CHECK:STDOUT: %.loc14_19.2: type = converted %.loc14_17, %.loc14_19.1 [template = constants.%.5]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc14_19.1: type = value_of_initializer %.loc14_17 [template = constants.%.7]
|
|
|
|
|
+// CHECK:STDOUT: %.loc14_19.2: type = converted %.loc14_17, %.loc14_19.1 [template = constants.%.7]
|
|
|
// CHECK:STDOUT: impl_decl @impl.1 {
|
|
// CHECK:STDOUT: impl_decl @impl.1 {
|
|
|
// CHECK:STDOUT: %Simple.ref: %Simple.type = name_ref Simple, file.%Simple.decl [template = constants.%Simple]
|
|
// CHECK:STDOUT: %Simple.ref: %Simple.type = name_ref Simple, file.%Simple.decl [template = constants.%Simple]
|
|
|
// CHECK:STDOUT: %C.ref.loc14: type = name_ref C, file.%C.decl [template = constants.%C]
|
|
// CHECK:STDOUT: %C.ref.loc14: type = name_ref C, file.%C.decl [template = constants.%C]
|
|
|
-// CHECK:STDOUT: %.loc14_17: init type = call %Simple.ref(%C.ref.loc14) [template = constants.%.5]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc14_17: init type = call %Simple.ref(%C.ref.loc14) [template = constants.%.7]
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %.loc15_24.1: type = value_of_initializer %.loc15_22 [template = constants.%.7]
|
|
|
|
|
-// CHECK:STDOUT: %.loc15_24.2: type = converted %.loc15_22, %.loc15_24.1 [template = constants.%.7]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc15_24.1: type = value_of_initializer %.loc15_22 [template = constants.%.9]
|
|
|
|
|
+// CHECK:STDOUT: %.loc15_24.2: type = converted %.loc15_22, %.loc15_24.1 [template = constants.%.9]
|
|
|
// CHECK:STDOUT: impl_decl @impl.2 {
|
|
// CHECK:STDOUT: impl_decl @impl.2 {
|
|
|
// CHECK:STDOUT: %WithAssocFn.ref: %WithAssocFn.type = name_ref WithAssocFn, file.%WithAssocFn.decl [template = constants.%WithAssocFn]
|
|
// CHECK:STDOUT: %WithAssocFn.ref: %WithAssocFn.type = name_ref WithAssocFn, file.%WithAssocFn.decl [template = constants.%WithAssocFn]
|
|
|
// CHECK:STDOUT: %C.ref.loc15: type = name_ref C, file.%C.decl [template = constants.%C]
|
|
// CHECK:STDOUT: %C.ref.loc15: type = name_ref C, file.%C.decl [template = constants.%C]
|
|
|
-// CHECK:STDOUT: %.loc15_22: init type = call %WithAssocFn.ref(%C.ref.loc15) [template = constants.%.7]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc15_22: init type = call %WithAssocFn.ref(%C.ref.loc15) [template = constants.%.9]
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
// CHECK:STDOUT: !members:
|
|
@@ -213,24 +215,24 @@ fn G(T:! Generic(B)) {
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: fn @F.1() -> %X
|
|
// CHECK:STDOUT: fn @F.1() -> %X
|
|
|
-// CHECK:STDOUT: generic [file.%T.loc8_23.2: type, @WithAssocFn.%Self: %WithAssocFn];
|
|
|
|
|
|
|
+// CHECK:STDOUT: generic [file.%T.loc8_23.2: type, @WithAssocFn.%Self: %.4];
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: fn @F.2() -> @impl.2.%return.var: %X {
|
|
// CHECK:STDOUT: fn @F.2() -> @impl.2.%return.var: %X {
|
|
|
// CHECK:STDOUT: !entry:
|
|
// CHECK:STDOUT: !entry:
|
|
|
-// CHECK:STDOUT: %.loc17_15.1: %.2 = struct_literal ()
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc17_15.1: %.3 = struct_literal ()
|
|
|
// CHECK:STDOUT: %.loc17_15.2: init %X = class_init (), @impl.2.%return.var [template = constants.%struct]
|
|
// CHECK:STDOUT: %.loc17_15.2: init %X = class_init (), @impl.2.%return.var [template = constants.%struct]
|
|
|
// CHECK:STDOUT: %.loc17_16: init %X = converted %.loc17_15.1, %.loc17_15.2 [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 @impl.2.%return.var
|
|
// CHECK:STDOUT: return %.loc17_16 to @impl.2.%return.var
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: fn @Receive(%T: %.5)
|
|
|
|
|
-// CHECK:STDOUT: generic [%T: %.5];
|
|
|
|
|
|
|
+// CHECK:STDOUT: fn @Receive(%T: %.7)
|
|
|
|
|
+// CHECK:STDOUT: generic [%T: %.7];
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: fn @Pass(%T: %.5)
|
|
|
|
|
-// CHECK:STDOUT: generic [%T: %.5] {
|
|
|
|
|
|
|
+// CHECK:STDOUT: fn @Pass(%T: %.7)
|
|
|
|
|
+// CHECK:STDOUT: generic [%T: %.7] {
|
|
|
// CHECK:STDOUT: !entry:
|
|
// CHECK:STDOUT: !entry:
|
|
|
// CHECK:STDOUT: %Receive.ref: %Receive.type = name_ref Receive, file.%Receive.decl [template = constants.%Receive]
|
|
// CHECK:STDOUT: %Receive.ref: %Receive.type = name_ref Receive, file.%Receive.decl [template = constants.%Receive]
|
|
|
-// CHECK:STDOUT: %T.ref: %.5 = name_ref T, %T [symbolic = constants.%T.2]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.ref: %.7 = name_ref T, %T [symbolic = constants.%T.2]
|
|
|
// CHECK:STDOUT: %Receive.call: init %.1 = call %Receive.ref(%T.ref)
|
|
// CHECK:STDOUT: %Receive.call: init %.1 = call %Receive.ref(%T.ref)
|
|
|
// CHECK:STDOUT: return
|
|
// CHECK:STDOUT: return
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
@@ -242,16 +244,17 @@ fn G(T:! Generic(B)) {
|
|
|
// CHECK:STDOUT: %Generic.type: type = generic_interface_type @Generic [template]
|
|
// CHECK:STDOUT: %Generic.type: type = generic_interface_type @Generic [template]
|
|
|
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
|
// CHECK:STDOUT: %.1: type = tuple_type () [template]
|
|
|
// CHECK:STDOUT: %Generic: %Generic.type = struct_value () [template]
|
|
// CHECK:STDOUT: %Generic: %Generic.type = struct_value () [template]
|
|
|
-// CHECK:STDOUT: %Self: %Generic = bind_symbolic_name Self 1 [symbolic]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.2: type = interface_type @Generic, (%T.1) [symbolic]
|
|
|
|
|
+// CHECK:STDOUT: %Self: %.2 = bind_symbolic_name Self 1 [symbolic]
|
|
|
// CHECK:STDOUT: %A: type = class_type @A [template]
|
|
// CHECK:STDOUT: %A: type = class_type @A [template]
|
|
|
-// CHECK:STDOUT: %.2: type = struct_type {} [template]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.3: type = struct_type {} [template]
|
|
|
// CHECK:STDOUT: %B: type = class_type @B [template]
|
|
// CHECK:STDOUT: %B: type = class_type @B [template]
|
|
|
-// CHECK:STDOUT: %.3: type = interface_type @Generic, (%A) [template]
|
|
|
|
|
-// CHECK:STDOUT: %T.2: %.3 = bind_symbolic_name T 0 [symbolic]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.4: type = interface_type @Generic, (%A) [template]
|
|
|
|
|
+// CHECK:STDOUT: %T.2: %.4 = bind_symbolic_name T 0 [symbolic]
|
|
|
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
|
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
|
|
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
|
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
|
|
-// CHECK:STDOUT: %.4: type = interface_type @Generic, (%B) [template]
|
|
|
|
|
-// CHECK:STDOUT: %T.3: %.4 = bind_symbolic_name T 0 [symbolic]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.5: type = interface_type @Generic, (%B) [template]
|
|
|
|
|
+// CHECK:STDOUT: %T.3: %.5 = bind_symbolic_name T 0 [symbolic]
|
|
|
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
|
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
|
|
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
|
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
@@ -273,26 +276,26 @@ fn G(T:! Generic(B)) {
|
|
|
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
|
|
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
|
|
|
// CHECK:STDOUT: %Generic.ref.loc9: %Generic.type = name_ref Generic, %Generic.decl [template = constants.%Generic]
|
|
// CHECK:STDOUT: %Generic.ref.loc9: %Generic.type = name_ref Generic, %Generic.decl [template = constants.%Generic]
|
|
|
// CHECK:STDOUT: %A.ref: type = name_ref A, %A.decl [template = constants.%A]
|
|
// CHECK:STDOUT: %A.ref: type = name_ref A, %A.decl [template = constants.%A]
|
|
|
-// CHECK:STDOUT: %.loc9_17: init type = call %Generic.ref.loc9(%A.ref) [template = constants.%.3]
|
|
|
|
|
-// CHECK:STDOUT: %.loc9_19.1: type = value_of_initializer %.loc9_17 [template = constants.%.3]
|
|
|
|
|
-// CHECK:STDOUT: %.loc9_19.2: type = converted %.loc9_17, %.loc9_19.1 [template = constants.%.3]
|
|
|
|
|
-// CHECK:STDOUT: %T.loc9_6.1: %.3 = param T
|
|
|
|
|
-// CHECK:STDOUT: @F.%T: %.3 = bind_symbolic_name T 0, %T.loc9_6.1 [symbolic = constants.%T.2]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc9_17: init type = call %Generic.ref.loc9(%A.ref) [template = constants.%.4]
|
|
|
|
|
+// CHECK:STDOUT: %.loc9_19.1: type = value_of_initializer %.loc9_17 [template = constants.%.4]
|
|
|
|
|
+// CHECK:STDOUT: %.loc9_19.2: type = converted %.loc9_17, %.loc9_19.1 [template = constants.%.4]
|
|
|
|
|
+// CHECK:STDOUT: %T.loc9_6.1: %.4 = param T
|
|
|
|
|
+// CHECK:STDOUT: @F.%T: %.4 = bind_symbolic_name T 0, %T.loc9_6.1 [symbolic = constants.%T.2]
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
|
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
|
|
// CHECK:STDOUT: %Generic.ref.loc10: %Generic.type = name_ref Generic, %Generic.decl [template = constants.%Generic]
|
|
// CHECK:STDOUT: %Generic.ref.loc10: %Generic.type = name_ref Generic, %Generic.decl [template = constants.%Generic]
|
|
|
// CHECK:STDOUT: %B.ref: type = name_ref B, %B.decl [template = constants.%B]
|
|
// CHECK:STDOUT: %B.ref: type = name_ref B, %B.decl [template = constants.%B]
|
|
|
-// CHECK:STDOUT: %.loc10_17: init type = call %Generic.ref.loc10(%B.ref) [template = constants.%.4]
|
|
|
|
|
-// CHECK:STDOUT: %.loc10_19.1: type = value_of_initializer %.loc10_17 [template = constants.%.4]
|
|
|
|
|
-// CHECK:STDOUT: %.loc10_19.2: type = converted %.loc10_17, %.loc10_19.1 [template = constants.%.4]
|
|
|
|
|
-// CHECK:STDOUT: %T.loc10_6.1: %.4 = param T
|
|
|
|
|
-// CHECK:STDOUT: @G.%T: %.4 = bind_symbolic_name T 0, %T.loc10_6.1 [symbolic = constants.%T.3]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc10_17: init type = call %Generic.ref.loc10(%B.ref) [template = constants.%.5]
|
|
|
|
|
+// CHECK:STDOUT: %.loc10_19.1: type = value_of_initializer %.loc10_17 [template = constants.%.5]
|
|
|
|
|
+// CHECK:STDOUT: %.loc10_19.2: type = converted %.loc10_17, %.loc10_19.1 [template = constants.%.5]
|
|
|
|
|
+// CHECK:STDOUT: %T.loc10_6.1: %.5 = param T
|
|
|
|
|
+// CHECK:STDOUT: @G.%T: %.5 = bind_symbolic_name T 0, %T.loc10_6.1 [symbolic = constants.%T.3]
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: interface @Generic
|
|
// CHECK:STDOUT: interface @Generic
|
|
|
// CHECK:STDOUT: generic [file.%T.loc4_19.2: type] {
|
|
// CHECK:STDOUT: generic [file.%T.loc4_19.2: type] {
|
|
|
-// CHECK:STDOUT: %Self: %Generic = bind_symbolic_name Self 1 [symbolic = constants.%Self]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %Self: %.2 = bind_symbolic_name Self 1 [symbolic = constants.%Self]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: .Self = %Self
|
|
// CHECK:STDOUT: .Self = %Self
|
|
@@ -309,14 +312,14 @@ fn G(T:! Generic(B)) {
|
|
|
// CHECK:STDOUT: .Self = constants.%B
|
|
// CHECK:STDOUT: .Self = constants.%B
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: fn @F(%T: %.3)
|
|
|
|
|
-// CHECK:STDOUT: generic [%T: %.3];
|
|
|
|
|
|
|
+// CHECK:STDOUT: fn @F(%T: %.4)
|
|
|
|
|
+// CHECK:STDOUT: generic [%T: %.4];
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: fn @G(%T: %.4)
|
|
|
|
|
-// CHECK:STDOUT: generic [%T: %.4] {
|
|
|
|
|
|
|
+// CHECK:STDOUT: fn @G(%T: %.5)
|
|
|
|
|
+// CHECK:STDOUT: generic [%T: %.5] {
|
|
|
// CHECK:STDOUT: !entry:
|
|
// CHECK:STDOUT: !entry:
|
|
|
// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F]
|
|
// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F]
|
|
|
-// CHECK:STDOUT: %T.ref: %.4 = name_ref T, %T [symbolic = constants.%T.3]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.ref: %.5 = name_ref T, %T [symbolic = constants.%T.3]
|
|
|
// CHECK:STDOUT: %F.call: init %.1 = call %F.ref(<invalid>) [template = <error>]
|
|
// CHECK:STDOUT: %F.call: init %.1 = call %F.ref(<invalid>) [template = <error>]
|
|
|
// CHECK:STDOUT: return
|
|
// CHECK:STDOUT: return
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|