|
@@ -168,8 +168,8 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0
|
|
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0
|
|
|
// CHECK:STDOUT: } {
|
|
// CHECK:STDOUT: } {
|
|
|
// CHECK:STDOUT: %T.param: type = param T, runtime_param<invalid>
|
|
// CHECK:STDOUT: %T.param: type = param T, runtime_param<invalid>
|
|
|
-// CHECK:STDOUT: %T.loc8: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
-// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8 [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)]
|
|
|
|
|
+// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)]
|
|
|
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type]
|
|
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type]
|
|
|
// 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] {
|
|
@@ -193,21 +193,21 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: witness = (%F.decl)
|
|
// CHECK:STDOUT: witness = (%F.decl)
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: generic impl @impl(%T.loc8: type) {
|
|
|
|
|
-// CHECK:STDOUT: %T.1: type = bind_symbolic_name T, 0 [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: generic impl @impl(%T.loc8_14.1: type) {
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
-// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.1) [symbolic = %F.type (constants.%F.type.2)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc8_14.2) [symbolic = %F.type (constants.%F.type.2)]
|
|
|
// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)]
|
|
// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)]
|
|
|
-// CHECK:STDOUT: %.1: <witness> = interface_witness (%F) [symbolic = %.1 (constants.%.4)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc8_34.2: <witness> = interface_witness (%F) [symbolic = %.loc8_34.2 (constants.%.4)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: impl: %T.ref as %HasF.ref {
|
|
// CHECK:STDOUT: impl: %T.ref as %HasF.ref {
|
|
|
// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] {} {}
|
|
// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] {} {}
|
|
|
-// CHECK:STDOUT: %.loc8: <witness> = interface_witness (%F.decl) [symbolic = %.1 (constants.%.4)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc8_34.1: <witness> = interface_witness (%F.decl) [symbolic = %.loc8_34.2 (constants.%.4)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: .F = %F.decl
|
|
// CHECK:STDOUT: .F = %F.decl
|
|
|
-// CHECK:STDOUT: witness = %.loc8
|
|
|
|
|
|
|
+// CHECK:STDOUT: witness = %.loc8_34.1
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
@@ -216,7 +216,7 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: fn();
|
|
// CHECK:STDOUT: fn();
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: generic fn @F.2(@impl.%T.loc8: type) {
|
|
|
|
|
|
|
+// CHECK:STDOUT: generic fn @F.2(@impl.%T.loc8_14.1: type) {
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: fn() {
|
|
// CHECK:STDOUT: fn() {
|
|
@@ -238,29 +238,29 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: specific @F.1(constants.%Self) {}
|
|
// CHECK:STDOUT: specific @F.1(constants.%Self) {}
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @impl(constants.%T) {
|
|
// CHECK:STDOUT: specific @impl(constants.%T) {
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%T
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_14.2 => constants.%T
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.2
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.2
|
|
|
// CHECK:STDOUT: %F => constants.%F.2
|
|
// CHECK:STDOUT: %F => constants.%F.2
|
|
|
-// CHECK:STDOUT: %.1 => constants.%.4
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc8_34.2 => constants.%.4
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @F.2(constants.%T) {}
|
|
// CHECK:STDOUT: specific @F.2(constants.%T) {}
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @F.1(constants.%T) {}
|
|
// CHECK:STDOUT: specific @F.1(constants.%T) {}
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: specific @impl(@impl.%T.1) {
|
|
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%T
|
|
|
|
|
|
|
+// CHECK:STDOUT: specific @impl(@impl.%T.loc8_14.2) {
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_14.2 => constants.%T
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @impl(constants.%.5) {
|
|
// CHECK:STDOUT: specific @impl(constants.%.5) {
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%.5
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_14.2 => constants.%.5
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.3
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.3
|
|
|
// CHECK:STDOUT: %F => constants.%F.3
|
|
// CHECK:STDOUT: %F => constants.%F.3
|
|
|
-// CHECK:STDOUT: %.1 => constants.%.6
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc8_34.2 => constants.%.6
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @F.2(constants.%.5) {}
|
|
// CHECK:STDOUT: specific @F.2(constants.%.5) {}
|
|
@@ -313,8 +313,8 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0
|
|
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0
|
|
|
// CHECK:STDOUT: } {
|
|
// CHECK:STDOUT: } {
|
|
|
// CHECK:STDOUT: %T.param: type = param T, runtime_param<invalid>
|
|
// CHECK:STDOUT: %T.param: type = param T, runtime_param<invalid>
|
|
|
-// CHECK:STDOUT: %T.loc8: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
-// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8 [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)]
|
|
|
|
|
+// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)]
|
|
|
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type]
|
|
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type]
|
|
|
// 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] {
|
|
@@ -353,13 +353,13 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: witness = (%F.decl)
|
|
// CHECK:STDOUT: witness = (%F.decl)
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: generic impl @impl(%T.loc8: type) {
|
|
|
|
|
-// CHECK:STDOUT: %T.1: type = bind_symbolic_name T, 0 [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: generic impl @impl(%T.loc8_14.1: type) {
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
-// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.1) [symbolic = %F.type (constants.%F.type.2)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc8_14.2) [symbolic = %F.type (constants.%F.type.2)]
|
|
|
// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)]
|
|
// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)]
|
|
|
-// CHECK:STDOUT: %.1: <witness> = interface_witness (%F) [symbolic = %.1 (constants.%.4)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc8_34.2: <witness> = interface_witness (%F) [symbolic = %.loc8_34.2 (constants.%.4)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: impl: %T.ref as %HasF.ref {
|
|
// CHECK:STDOUT: impl: %T.ref as %HasF.ref {
|
|
|
// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] {
|
|
// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] {
|
|
@@ -368,14 +368,14 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.%T.ref [symbolic = %T (constants.%T)]
|
|
// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.%T.ref [symbolic = %T (constants.%T)]
|
|
|
// CHECK:STDOUT: %self.param: @F.2.%T (%T) = param self, runtime_param0
|
|
// CHECK:STDOUT: %self.param: @F.2.%T (%T) = param self, runtime_param0
|
|
|
// CHECK:STDOUT: %self: @F.2.%T (%T) = bind_name self, %self.param
|
|
// CHECK:STDOUT: %self: @F.2.%T (%T) = bind_name self, %self.param
|
|
|
-// CHECK:STDOUT: %T.ref: type = name_ref T, @impl.%T.loc8 [symbolic = %T (constants.%T)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.ref: type = name_ref T, @impl.%T.loc8_14.1 [symbolic = %T (constants.%T)]
|
|
|
// CHECK:STDOUT: %return: ref @F.2.%T (%T) = var <return slot>
|
|
// CHECK:STDOUT: %return: ref @F.2.%T (%T) = var <return slot>
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
-// CHECK:STDOUT: %.loc8: <witness> = interface_witness (%F.decl) [symbolic = %.1 (constants.%.4)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc8_34.1: <witness> = interface_witness (%F.decl) [symbolic = %.loc8_34.2 (constants.%.4)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: .F = %F.decl
|
|
// CHECK:STDOUT: .F = %F.decl
|
|
|
-// CHECK:STDOUT: witness = %.loc8
|
|
|
|
|
|
|
+// CHECK:STDOUT: witness = %.loc8_34.1
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
@@ -385,7 +385,7 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: fn[%self: @F.1.%Self (%Self)]() -> @F.1.%Self (%Self);
|
|
// CHECK:STDOUT: fn[%self: @F.1.%Self (%Self)]() -> @F.1.%Self (%Self);
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: generic fn @F.2(@impl.%T.loc8: type) {
|
|
|
|
|
|
|
+// CHECK:STDOUT: generic fn @F.2(@impl.%T.loc8_14.1: type) {
|
|
|
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)]
|
|
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
@@ -417,12 +417,12 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @impl(constants.%T) {
|
|
// CHECK:STDOUT: specific @impl(constants.%T) {
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%T
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_14.2 => constants.%T
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.2
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.2
|
|
|
// CHECK:STDOUT: %F => constants.%F.2
|
|
// CHECK:STDOUT: %F => constants.%F.2
|
|
|
-// CHECK:STDOUT: %.1 => constants.%.4
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc8_34.2 => constants.%.4
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @F.2(constants.%T) {
|
|
// CHECK:STDOUT: specific @F.2(constants.%T) {
|
|
@@ -433,17 +433,17 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: %Self => constants.%T
|
|
// CHECK:STDOUT: %Self => constants.%T
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: specific @impl(@impl.%T.1) {
|
|
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%T
|
|
|
|
|
|
|
+// CHECK:STDOUT: specific @impl(@impl.%T.loc8_14.2) {
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_14.2 => constants.%T
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @impl(constants.%.5) {
|
|
// CHECK:STDOUT: specific @impl(constants.%.5) {
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%.5
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_14.2 => constants.%.5
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.3
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.3
|
|
|
// CHECK:STDOUT: %F => constants.%F.3
|
|
// CHECK:STDOUT: %F => constants.%F.3
|
|
|
-// CHECK:STDOUT: %.1 => constants.%.6
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc8_34.2 => constants.%.6
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @F.2(constants.%.5) {
|
|
// CHECK:STDOUT: specific @F.2(constants.%.5) {
|
|
@@ -504,16 +504,16 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0
|
|
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0
|
|
|
// CHECK:STDOUT: } {
|
|
// CHECK:STDOUT: } {
|
|
|
// CHECK:STDOUT: %T.param: type = param T, runtime_param<invalid>
|
|
// CHECK:STDOUT: %T.param: type = param T, runtime_param<invalid>
|
|
|
-// CHECK:STDOUT: %T.loc8: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_9.2 (constants.%T)]
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: impl_decl @impl [template] {
|
|
// CHECK:STDOUT: impl_decl @impl [template] {
|
|
|
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0
|
|
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0
|
|
|
// CHECK:STDOUT: } {
|
|
// CHECK:STDOUT: } {
|
|
|
// CHECK:STDOUT: %T.param: type = param T, runtime_param<invalid>
|
|
// CHECK:STDOUT: %T.param: type = param T, runtime_param<invalid>
|
|
|
-// CHECK:STDOUT: %T.loc10: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc10_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc10_14.2 (constants.%T)]
|
|
|
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.1]
|
|
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.1]
|
|
|
-// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc10 [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
-// CHECK:STDOUT: %C.loc10: type = class_type @C, @C(constants.%T) [symbolic = %C.1 (constants.%C.2)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc10_14.1 [symbolic = %T.loc10_14.2 (constants.%T)]
|
|
|
|
|
+// CHECK:STDOUT: %C.loc10_25.1: type = class_type @C, @C(constants.%T) [symbolic = %C.loc10_25.2 (constants.%C.2)]
|
|
|
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type]
|
|
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type]
|
|
|
// 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] {
|
|
@@ -539,27 +539,27 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: witness = (%F.decl)
|
|
// CHECK:STDOUT: witness = (%F.decl)
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: generic impl @impl(%T.loc10: type) {
|
|
|
|
|
-// CHECK:STDOUT: %T.1: type = bind_symbolic_name T, 0 [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
-// CHECK:STDOUT: %C.1: type = class_type @C, @C(%T.1) [symbolic = %C.1 (constants.%C.2)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: generic impl @impl(%T.loc10_14.1: type) {
|
|
|
|
|
+// CHECK:STDOUT: %T.loc10_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc10_14.2 (constants.%T)]
|
|
|
|
|
+// CHECK:STDOUT: %C.loc10_25.2: type = class_type @C, @C(%T.loc10_14.2) [symbolic = %C.loc10_25.2 (constants.%C.2)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
-// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.1) [symbolic = %F.type (constants.%F.type.2)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc10_14.2) [symbolic = %F.type (constants.%F.type.2)]
|
|
|
// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)]
|
|
// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)]
|
|
|
-// CHECK:STDOUT: %.1: <witness> = interface_witness (%F) [symbolic = %.1 (constants.%.6)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc10_37.2: <witness> = interface_witness (%F) [symbolic = %.loc10_37.2 (constants.%.6)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: impl: %C.loc10 as %HasF.ref {
|
|
|
|
|
|
|
+// CHECK:STDOUT: impl: %C.loc10_25.1 as %HasF.ref {
|
|
|
// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] {} {}
|
|
// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] {} {}
|
|
|
-// CHECK:STDOUT: %.loc10: <witness> = interface_witness (%F.decl) [symbolic = %.1 (constants.%.6)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc10_37.1: <witness> = interface_witness (%F.decl) [symbolic = %.loc10_37.2 (constants.%.6)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: .F = %F.decl
|
|
// CHECK:STDOUT: .F = %F.decl
|
|
|
-// CHECK:STDOUT: witness = %.loc10
|
|
|
|
|
|
|
+// CHECK:STDOUT: witness = %.loc10_37.1
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: generic class @C(%T.loc8: type) {
|
|
|
|
|
-// CHECK:STDOUT: %T.1: type = bind_symbolic_name T, 0 [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: generic class @C(%T.loc8_9.1: type) {
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_9.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_9.2 (constants.%T)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
@@ -576,7 +576,7 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: fn();
|
|
// CHECK:STDOUT: fn();
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: generic fn @F.2(@impl.%T.loc10: type) {
|
|
|
|
|
|
|
+// CHECK:STDOUT: generic fn @F.2(@impl.%T.loc10_14.1: type) {
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: fn() {
|
|
// CHECK:STDOUT: fn() {
|
|
@@ -598,46 +598,46 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: specific @F.1(constants.%Self) {}
|
|
// CHECK:STDOUT: specific @F.1(constants.%Self) {}
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @C(constants.%T) {
|
|
// CHECK:STDOUT: specific @C(constants.%T) {
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%T
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_9.2 => constants.%T
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: specific @C(@impl.%T.1) {
|
|
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%T
|
|
|
|
|
|
|
+// CHECK:STDOUT: specific @C(@impl.%T.loc10_14.2) {
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_9.2 => constants.%T
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @impl(constants.%T) {
|
|
// CHECK:STDOUT: specific @impl(constants.%T) {
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%T
|
|
|
|
|
-// CHECK:STDOUT: %C.1 => constants.%C.2
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc10_14.2 => constants.%T
|
|
|
|
|
+// CHECK:STDOUT: %C.loc10_25.2 => constants.%C.2
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.2
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.2
|
|
|
// CHECK:STDOUT: %F => constants.%F.2
|
|
// CHECK:STDOUT: %F => constants.%F.2
|
|
|
-// CHECK:STDOUT: %.1 => constants.%.6
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc10_37.2 => constants.%.6
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @F.2(constants.%T) {}
|
|
// CHECK:STDOUT: specific @F.2(constants.%T) {}
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @F.1(constants.%C.2) {}
|
|
// CHECK:STDOUT: specific @F.1(constants.%C.2) {}
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: specific @impl(@impl.%T.1) {
|
|
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%T
|
|
|
|
|
-// CHECK:STDOUT: %C.1 => constants.%C.2
|
|
|
|
|
|
|
+// CHECK:STDOUT: specific @impl(@impl.%T.loc10_14.2) {
|
|
|
|
|
+// CHECK:STDOUT: %T.loc10_14.2 => constants.%T
|
|
|
|
|
+// CHECK:STDOUT: %C.loc10_25.2 => constants.%C.2
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @C(constants.%.4) {
|
|
// CHECK:STDOUT: specific @C(constants.%.4) {
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%.4
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_9.2 => constants.%.4
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @impl(constants.%.4) {
|
|
// CHECK:STDOUT: specific @impl(constants.%.4) {
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%.4
|
|
|
|
|
-// CHECK:STDOUT: %C.1 => constants.%C.3
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc10_14.2 => constants.%.4
|
|
|
|
|
+// CHECK:STDOUT: %C.loc10_25.2 => constants.%C.3
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.3
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.3
|
|
|
// CHECK:STDOUT: %F => constants.%F.3
|
|
// CHECK:STDOUT: %F => constants.%F.3
|
|
|
-// CHECK:STDOUT: %.1 => constants.%.8
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc10_37.2 => constants.%.8
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @F.2(constants.%.4) {}
|
|
// CHECK:STDOUT: specific @F.2(constants.%.4) {}
|
|
@@ -695,18 +695,18 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0
|
|
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0
|
|
|
// CHECK:STDOUT: } {
|
|
// CHECK:STDOUT: } {
|
|
|
// CHECK:STDOUT: %T.param: type = param T, runtime_param<invalid>
|
|
// CHECK:STDOUT: %T.param: type = param T, runtime_param<invalid>
|
|
|
-// CHECK:STDOUT: %T.loc4: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc4_16.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_16.2 (constants.%T)]
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: impl_decl @impl [template] {
|
|
// CHECK:STDOUT: impl_decl @impl [template] {
|
|
|
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0
|
|
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0
|
|
|
// CHECK:STDOUT: } {
|
|
// CHECK:STDOUT: } {
|
|
|
// CHECK:STDOUT: %T.param: type = param T, runtime_param<invalid>
|
|
// CHECK:STDOUT: %T.param: type = param T, runtime_param<invalid>
|
|
|
-// CHECK:STDOUT: %T.loc8: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)]
|
|
|
// CHECK:STDOUT: %.loc8_25.1: %.4 = struct_literal ()
|
|
// CHECK:STDOUT: %.loc8_25.1: %.4 = struct_literal ()
|
|
|
// CHECK:STDOUT: %.loc8_25.2: type = converted %.loc8_25.1, constants.%.4 [template = constants.%.4]
|
|
// CHECK:STDOUT: %.loc8_25.2: type = converted %.loc8_25.1, constants.%.4 [template = constants.%.4]
|
|
|
// CHECK:STDOUT: %HasF.ref: %HasF.type.1 = name_ref HasF, file.%HasF.decl [template = constants.%HasF]
|
|
// CHECK:STDOUT: %HasF.ref: %HasF.type.1 = name_ref HasF, file.%HasF.decl [template = constants.%HasF]
|
|
|
-// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8 [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
-// CHECK:STDOUT: %HasF.type.loc8: type = interface_type @HasF, @HasF(constants.%T) [symbolic = %HasF.type.1 (constants.%HasF.type.2)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)]
|
|
|
|
|
+// CHECK:STDOUT: %HasF.type.loc8_34.1: type = interface_type @HasF, @HasF(constants.%T) [symbolic = %HasF.type.loc8_34.2 (constants.%HasF.type.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: %x.patt: %.4 = binding_pattern x
|
|
// CHECK:STDOUT: %x.patt: %.4 = binding_pattern x
|
|
@@ -718,54 +718,54 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: generic interface @HasF(%T.loc4: type) {
|
|
|
|
|
-// CHECK:STDOUT: %T.1: type = bind_symbolic_name T, 0 [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: generic interface @HasF(%T.loc4_16.1: type) {
|
|
|
|
|
+// CHECK:STDOUT: %T.loc4_16.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_16.2 (constants.%T)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
-// CHECK:STDOUT: %HasF.type: type = interface_type @HasF, @HasF(%T.1) [symbolic = %HasF.type (constants.%HasF.type.2)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %HasF.type: type = interface_type @HasF, @HasF(%T.loc4_16.2) [symbolic = %HasF.type (constants.%HasF.type.2)]
|
|
|
// CHECK:STDOUT: %Self.2: %HasF.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)]
|
|
// CHECK:STDOUT: %Self.2: %HasF.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)]
|
|
|
-// CHECK:STDOUT: %F.type: type = fn_type @F.1, @HasF(%T.1) [symbolic = %F.type (constants.%F.type.1)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %F.type: type = fn_type @F.1, @HasF(%T.loc4_16.2) [symbolic = %F.type (constants.%F.type.1)]
|
|
|
// CHECK:STDOUT: %F: @HasF.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)]
|
|
// CHECK:STDOUT: %F: @HasF.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)]
|
|
|
-// CHECK:STDOUT: %.1: type = assoc_entity_type @HasF.%HasF.type (%HasF.type.2), @HasF.%F.type (%F.type.1) [symbolic = %.1 (constants.%.2)]
|
|
|
|
|
-// CHECK:STDOUT: %.2: @HasF.%.1 (%.2) = assoc_entity element0, %F.decl [symbolic = %.2 (constants.%.3)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc5_9.2: type = assoc_entity_type @HasF.%HasF.type (%HasF.type.2), @HasF.%F.type (%F.type.1) [symbolic = %.loc5_9.2 (constants.%.2)]
|
|
|
|
|
+// CHECK:STDOUT: %.loc5_9.3: @HasF.%.loc5_9.2 (%.2) = assoc_entity element0, %F.decl [symbolic = %.loc5_9.3 (constants.%.3)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: interface {
|
|
// CHECK:STDOUT: interface {
|
|
|
// CHECK:STDOUT: %Self.1: @HasF.%HasF.type (%HasF.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)]
|
|
// CHECK:STDOUT: %Self.1: @HasF.%HasF.type (%HasF.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)]
|
|
|
// CHECK:STDOUT: %F.decl: @HasF.%F.type (%F.type.1) = fn_decl @F.1 [symbolic = @HasF.%F (constants.%F.1)] {} {}
|
|
// CHECK:STDOUT: %F.decl: @HasF.%F.type (%F.type.1) = fn_decl @F.1 [symbolic = @HasF.%F (constants.%F.1)] {} {}
|
|
|
-// CHECK:STDOUT: %.loc5: @HasF.%.1 (%.2) = assoc_entity element0, %F.decl [symbolic = %.2 (constants.%.3)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc5_9.1: @HasF.%.loc5_9.2 (%.2) = assoc_entity element0, %F.decl [symbolic = %.loc5_9.3 (constants.%.3)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: .Self = %Self.1
|
|
// CHECK:STDOUT: .Self = %Self.1
|
|
|
-// CHECK:STDOUT: .F = %.loc5
|
|
|
|
|
|
|
+// CHECK:STDOUT: .F = %.loc5_9.1
|
|
|
// CHECK:STDOUT: witness = (%F.decl)
|
|
// CHECK:STDOUT: witness = (%F.decl)
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: generic impl @impl(%T.loc8: type) {
|
|
|
|
|
-// CHECK:STDOUT: %T.1: type = bind_symbolic_name T, 0 [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
-// CHECK:STDOUT: %HasF.type.1: type = interface_type @HasF, @HasF(%T.1) [symbolic = %HasF.type.1 (constants.%HasF.type.2)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: generic impl @impl(%T.loc8_14.1: type) {
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)]
|
|
|
|
|
+// CHECK:STDOUT: %HasF.type.loc8_34.2: type = interface_type @HasF, @HasF(%T.loc8_14.2) [symbolic = %HasF.type.loc8_34.2 (constants.%HasF.type.2)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
-// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.1) [symbolic = %F.type (constants.%F.type.2)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc8_14.2) [symbolic = %F.type (constants.%F.type.2)]
|
|
|
// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)]
|
|
// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)]
|
|
|
-// CHECK:STDOUT: %.1: <witness> = interface_witness (%F) [symbolic = %.1 (constants.%.5)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc8_38.2: <witness> = interface_witness (%F) [symbolic = %.loc8_38.2 (constants.%.5)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: impl: %.loc8_25.2 as %HasF.type.loc8 {
|
|
|
|
|
|
|
+// CHECK:STDOUT: impl: %.loc8_25.2 as %HasF.type.loc8_34.1 {
|
|
|
// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] {} {}
|
|
// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] {} {}
|
|
|
-// CHECK:STDOUT: %.loc8_38: <witness> = interface_witness (%F.decl) [symbolic = %.1 (constants.%.5)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc8_38.1: <witness> = interface_witness (%F.decl) [symbolic = %.loc8_38.2 (constants.%.5)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: .F = %F.decl
|
|
// CHECK:STDOUT: .F = %F.decl
|
|
|
-// CHECK:STDOUT: witness = %.loc8_38
|
|
|
|
|
|
|
+// CHECK:STDOUT: witness = %.loc8_38.1
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: generic fn @F.1(@HasF.%T.loc4: type, @HasF.%Self.1: @HasF.%HasF.type (%HasF.type.2)) {
|
|
|
|
|
|
|
+// CHECK:STDOUT: generic fn @F.1(@HasF.%T.loc4_16.1: type, @HasF.%Self.1: @HasF.%HasF.type (%HasF.type.2)) {
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: fn();
|
|
// CHECK:STDOUT: fn();
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: generic fn @F.2(@impl.%T.loc8: type) {
|
|
|
|
|
|
|
+// CHECK:STDOUT: generic fn @F.2(@impl.%T.loc8_14.1: type) {
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: fn() {
|
|
// CHECK:STDOUT: fn() {
|
|
@@ -781,7 +781,7 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: %.loc13_12: %.4 = struct_literal ()
|
|
// CHECK:STDOUT: %.loc13_12: %.4 = struct_literal ()
|
|
|
// CHECK:STDOUT: %.loc13_10: type = converted %.loc13_12, constants.%.4 [template = constants.%.4]
|
|
// CHECK:STDOUT: %.loc13_10: type = converted %.loc13_12, constants.%.4 [template = constants.%.4]
|
|
|
// CHECK:STDOUT: %HasF.type: type = interface_type @HasF, @HasF(constants.%.4) [template = constants.%HasF.type.3]
|
|
// CHECK:STDOUT: %HasF.type: type = interface_type @HasF, @HasF(constants.%.4) [template = constants.%HasF.type.3]
|
|
|
-// CHECK:STDOUT: %.loc13_14: %.6 = specific_constant @HasF.%.loc5, @HasF(constants.%.4) [template = constants.%.7]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc13_14: %.6 = specific_constant @HasF.%.loc5_9.1, @HasF(constants.%.4) [template = constants.%.7]
|
|
|
// CHECK:STDOUT: %F.ref: %.6 = name_ref F, %.loc13_14 [template = constants.%.7]
|
|
// CHECK:STDOUT: %F.ref: %.6 = name_ref F, %.loc13_14 [template = constants.%.7]
|
|
|
// CHECK:STDOUT: %.loc13_4: %F.type.3 = interface_witness_access constants.%.8, element0 [template = constants.%F.4]
|
|
// CHECK:STDOUT: %.loc13_4: %F.type.3 = interface_witness_access constants.%.8, element0 [template = constants.%F.4]
|
|
|
// CHECK:STDOUT: %F.call: init %.1 = call %.loc13_4()
|
|
// CHECK:STDOUT: %F.call: init %.1 = call %.loc13_4()
|
|
@@ -789,66 +789,66 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @HasF(constants.%T) {
|
|
// CHECK:STDOUT: specific @HasF(constants.%T) {
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%T
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc4_16.2 => constants.%T
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT: %HasF.type => constants.%HasF.type.2
|
|
// CHECK:STDOUT: %HasF.type => constants.%HasF.type.2
|
|
|
// CHECK:STDOUT: %Self.2 => constants.%Self
|
|
// CHECK:STDOUT: %Self.2 => constants.%Self
|
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.1
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.1
|
|
|
// CHECK:STDOUT: %F => constants.%F.1
|
|
// CHECK:STDOUT: %F => constants.%F.1
|
|
|
-// CHECK:STDOUT: %.1 => constants.%.2
|
|
|
|
|
-// CHECK:STDOUT: %.2 => constants.%.3
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc5_9.2 => constants.%.2
|
|
|
|
|
+// CHECK:STDOUT: %.loc5_9.3 => constants.%.3
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @F.1(constants.%T, constants.%Self) {}
|
|
// CHECK:STDOUT: specific @F.1(constants.%T, constants.%Self) {}
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: specific @HasF(@HasF.%T.1) {
|
|
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%T
|
|
|
|
|
|
|
+// CHECK:STDOUT: specific @HasF(@HasF.%T.loc4_16.2) {
|
|
|
|
|
+// CHECK:STDOUT: %T.loc4_16.2 => constants.%T
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: specific @HasF(@impl.%T.1) {
|
|
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%T
|
|
|
|
|
|
|
+// CHECK:STDOUT: specific @HasF(@impl.%T.loc8_14.2) {
|
|
|
|
|
+// CHECK:STDOUT: %T.loc4_16.2 => constants.%T
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @impl(constants.%T) {
|
|
// CHECK:STDOUT: specific @impl(constants.%T) {
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%T
|
|
|
|
|
-// CHECK:STDOUT: %HasF.type.1 => constants.%HasF.type.2
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_14.2 => constants.%T
|
|
|
|
|
+// CHECK:STDOUT: %HasF.type.loc8_34.2 => constants.%HasF.type.2
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.2
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.2
|
|
|
// CHECK:STDOUT: %F => constants.%F.2
|
|
// CHECK:STDOUT: %F => constants.%F.2
|
|
|
-// CHECK:STDOUT: %.1 => constants.%.5
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc8_38.2 => constants.%.5
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @F.2(constants.%T) {}
|
|
// CHECK:STDOUT: specific @F.2(constants.%T) {}
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @F.1(constants.%T, constants.%.4) {}
|
|
// CHECK:STDOUT: specific @F.1(constants.%T, constants.%.4) {}
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: specific @impl(@impl.%T.1) {
|
|
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%T
|
|
|
|
|
-// CHECK:STDOUT: %HasF.type.1 => constants.%HasF.type.2
|
|
|
|
|
|
|
+// CHECK:STDOUT: specific @impl(@impl.%T.loc8_14.2) {
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_14.2 => constants.%T
|
|
|
|
|
+// CHECK:STDOUT: %HasF.type.loc8_34.2 => constants.%HasF.type.2
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @HasF(constants.%.4) {
|
|
// CHECK:STDOUT: specific @HasF(constants.%.4) {
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%.4
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc4_16.2 => constants.%.4
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT: %HasF.type => constants.%HasF.type.3
|
|
// CHECK:STDOUT: %HasF.type => constants.%HasF.type.3
|
|
|
// CHECK:STDOUT: %Self.2 => constants.%Self
|
|
// CHECK:STDOUT: %Self.2 => constants.%Self
|
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.3
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.3
|
|
|
// CHECK:STDOUT: %F => constants.%F.3
|
|
// CHECK:STDOUT: %F => constants.%F.3
|
|
|
-// CHECK:STDOUT: %.1 => constants.%.6
|
|
|
|
|
-// CHECK:STDOUT: %.2 => constants.%.7
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc5_9.2 => constants.%.6
|
|
|
|
|
+// CHECK:STDOUT: %.loc5_9.3 => constants.%.7
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @impl(constants.%.4) {
|
|
// CHECK:STDOUT: specific @impl(constants.%.4) {
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%.4
|
|
|
|
|
-// CHECK:STDOUT: %HasF.type.1 => constants.%HasF.type.3
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_14.2 => constants.%.4
|
|
|
|
|
+// CHECK:STDOUT: %HasF.type.loc8_34.2 => constants.%HasF.type.3
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.4
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.4
|
|
|
// CHECK:STDOUT: %F => constants.%F.4
|
|
// CHECK:STDOUT: %F => constants.%F.4
|
|
|
-// CHECK:STDOUT: %.1 => constants.%.8
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc8_38.2 => constants.%.8
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @F.2(constants.%.4) {}
|
|
// CHECK:STDOUT: specific @F.2(constants.%.4) {}
|
|
@@ -899,10 +899,10 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 1
|
|
// CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 1
|
|
|
// CHECK:STDOUT: } {
|
|
// CHECK:STDOUT: } {
|
|
|
// CHECK:STDOUT: %T.param: type = param T, runtime_param<invalid>
|
|
// CHECK:STDOUT: %T.param: type = param T, runtime_param<invalid>
|
|
|
-// CHECK:STDOUT: %T.loc9: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc9_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc9_14.2 (constants.%T)]
|
|
|
// CHECK:STDOUT: %U.param: type = param U, runtime_param<invalid>
|
|
// CHECK:STDOUT: %U.param: type = param U, runtime_param<invalid>
|
|
|
-// CHECK:STDOUT: %U.loc9: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.1 (constants.%U)]
|
|
|
|
|
-// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc9 [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %U.loc9_24.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc9_24.2 (constants.%U)]
|
|
|
|
|
+// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc9_14.1 [symbolic = %T.loc9_14.2 (constants.%T)]
|
|
|
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type]
|
|
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type]
|
|
|
// 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] {
|
|
@@ -926,22 +926,22 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: witness = (%F.decl)
|
|
// CHECK:STDOUT: witness = (%F.decl)
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: generic impl @impl(%T.loc9: type, %U.loc9: type) {
|
|
|
|
|
-// CHECK:STDOUT: %T.1: type = bind_symbolic_name T, 0 [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
-// CHECK:STDOUT: %U.1: type = bind_symbolic_name U, 1 [symbolic = %U.1 (constants.%U)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: generic impl @impl(%T.loc9_14.1: type, %U.loc9_24.1: type) {
|
|
|
|
|
+// CHECK:STDOUT: %T.loc9_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc9_14.2 (constants.%T)]
|
|
|
|
|
+// CHECK:STDOUT: %U.loc9_24.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc9_24.2 (constants.%U)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
-// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.1, %U.1) [symbolic = %F.type (constants.%F.type.2)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc9_14.2, %U.loc9_24.2) [symbolic = %F.type (constants.%F.type.2)]
|
|
|
// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)]
|
|
// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)]
|
|
|
-// CHECK:STDOUT: %.1: <witness> = interface_witness (%F) [symbolic = %.1 (constants.%.4)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc9_44.2: <witness> = interface_witness (%F) [symbolic = %.loc9_44.2 (constants.%.4)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: impl: %T.ref as %HasF.ref {
|
|
// CHECK:STDOUT: impl: %T.ref as %HasF.ref {
|
|
|
// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] {} {}
|
|
// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] {} {}
|
|
|
-// CHECK:STDOUT: %.loc9: <witness> = interface_witness (%F.decl) [symbolic = %.1 (constants.%.4)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc9_44.1: <witness> = interface_witness (%F.decl) [symbolic = %.loc9_44.2 (constants.%.4)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: .F = %F.decl
|
|
// CHECK:STDOUT: .F = %F.decl
|
|
|
-// CHECK:STDOUT: witness = %.loc9
|
|
|
|
|
|
|
+// CHECK:STDOUT: witness = %.loc9_44.1
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
@@ -950,7 +950,7 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: fn();
|
|
// CHECK:STDOUT: fn();
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: generic fn @F.2(@impl.%T.loc9: type, @impl.%U.loc9: type) {
|
|
|
|
|
|
|
+// CHECK:STDOUT: generic fn @F.2(@impl.%T.loc9_14.1: type, @impl.%U.loc9_24.1: type) {
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: fn() {
|
|
// CHECK:STDOUT: fn() {
|
|
@@ -970,22 +970,22 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: specific @F.1(constants.%Self) {}
|
|
// CHECK:STDOUT: specific @F.1(constants.%Self) {}
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @impl(constants.%T, constants.%U) {
|
|
// CHECK:STDOUT: specific @impl(constants.%T, constants.%U) {
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%T
|
|
|
|
|
-// CHECK:STDOUT: %U.1 => constants.%U
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc9_14.2 => constants.%T
|
|
|
|
|
+// CHECK:STDOUT: %U.loc9_24.2 => constants.%U
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.2
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.2
|
|
|
// CHECK:STDOUT: %F => constants.%F.2
|
|
// CHECK:STDOUT: %F => constants.%F.2
|
|
|
-// CHECK:STDOUT: %.1 => constants.%.4
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc9_44.2 => constants.%.4
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @F.2(constants.%T, constants.%U) {}
|
|
// CHECK:STDOUT: specific @F.2(constants.%T, constants.%U) {}
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @F.1(constants.%T) {}
|
|
// CHECK:STDOUT: specific @F.1(constants.%T) {}
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: specific @impl(@impl.%T.1, @impl.%U.1) {
|
|
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%T
|
|
|
|
|
-// CHECK:STDOUT: %U.1 => constants.%U
|
|
|
|
|
|
|
+// CHECK:STDOUT: specific @impl(@impl.%T.loc9_14.2, @impl.%U.loc9_24.2) {
|
|
|
|
|
+// CHECK:STDOUT: %T.loc9_14.2 => constants.%T
|
|
|
|
|
+// CHECK:STDOUT: %U.loc9_24.2 => constants.%U
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: --- fail_inconsistent_deduction.carbon
|
|
// CHECK:STDOUT: --- fail_inconsistent_deduction.carbon
|
|
@@ -1044,17 +1044,17 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0
|
|
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0
|
|
|
// CHECK:STDOUT: } {
|
|
// CHECK:STDOUT: } {
|
|
|
// CHECK:STDOUT: %T.param: type = param T, runtime_param<invalid>
|
|
// CHECK:STDOUT: %T.param: type = param T, runtime_param<invalid>
|
|
|
-// CHECK:STDOUT: %T.loc4: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc4_16.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_16.2 (constants.%T)]
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: impl_decl @impl [template] {
|
|
// CHECK:STDOUT: impl_decl @impl [template] {
|
|
|
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0
|
|
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0
|
|
|
// CHECK:STDOUT: } {
|
|
// CHECK:STDOUT: } {
|
|
|
// CHECK:STDOUT: %T.param: type = param T, runtime_param<invalid>
|
|
// CHECK:STDOUT: %T.param: type = param T, runtime_param<invalid>
|
|
|
-// CHECK:STDOUT: %T.loc8: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
-// CHECK:STDOUT: %T.ref.loc8_24: type = name_ref T, %T.loc8 [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)]
|
|
|
|
|
+// CHECK:STDOUT: %T.ref.loc8_24: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)]
|
|
|
// CHECK:STDOUT: %HasF.ref: %HasF.type.1 = name_ref HasF, file.%HasF.decl [template = constants.%HasF]
|
|
// CHECK:STDOUT: %HasF.ref: %HasF.type.1 = name_ref HasF, file.%HasF.decl [template = constants.%HasF]
|
|
|
-// CHECK:STDOUT: %T.ref.loc8_34: type = name_ref T, %T.loc8 [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
-// CHECK:STDOUT: %HasF.type.loc8: type = interface_type @HasF, @HasF(constants.%T) [symbolic = %HasF.type.1 (constants.%HasF.type.2)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.ref.loc8_34: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)]
|
|
|
|
|
+// CHECK:STDOUT: %HasF.type.loc8_33.1: type = interface_type @HasF, @HasF(constants.%T) [symbolic = %HasF.type.loc8_33.2 (constants.%HasF.type.2)]
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: %A.decl: type = class_decl @A [template = constants.%A] {} {}
|
|
// CHECK:STDOUT: %A.decl: type = class_decl @A [template = constants.%A] {} {}
|
|
|
// CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {}
|
|
// CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {}
|
|
@@ -1067,45 +1067,45 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: generic interface @HasF(%T.loc4: type) {
|
|
|
|
|
-// CHECK:STDOUT: %T.1: type = bind_symbolic_name T, 0 [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: generic interface @HasF(%T.loc4_16.1: type) {
|
|
|
|
|
+// CHECK:STDOUT: %T.loc4_16.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_16.2 (constants.%T)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
-// CHECK:STDOUT: %HasF.type: type = interface_type @HasF, @HasF(%T.1) [symbolic = %HasF.type (constants.%HasF.type.2)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %HasF.type: type = interface_type @HasF, @HasF(%T.loc4_16.2) [symbolic = %HasF.type (constants.%HasF.type.2)]
|
|
|
// CHECK:STDOUT: %Self.2: %HasF.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)]
|
|
// CHECK:STDOUT: %Self.2: %HasF.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)]
|
|
|
-// CHECK:STDOUT: %F.type: type = fn_type @F.1, @HasF(%T.1) [symbolic = %F.type (constants.%F.type.1)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %F.type: type = fn_type @F.1, @HasF(%T.loc4_16.2) [symbolic = %F.type (constants.%F.type.1)]
|
|
|
// CHECK:STDOUT: %F: @HasF.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)]
|
|
// CHECK:STDOUT: %F: @HasF.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)]
|
|
|
-// CHECK:STDOUT: %.1: type = assoc_entity_type @HasF.%HasF.type (%HasF.type.2), @HasF.%F.type (%F.type.1) [symbolic = %.1 (constants.%.2)]
|
|
|
|
|
-// CHECK:STDOUT: %.2: @HasF.%.1 (%.2) = assoc_entity element0, %F.decl [symbolic = %.2 (constants.%.3)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc5_9.2: type = assoc_entity_type @HasF.%HasF.type (%HasF.type.2), @HasF.%F.type (%F.type.1) [symbolic = %.loc5_9.2 (constants.%.2)]
|
|
|
|
|
+// CHECK:STDOUT: %.loc5_9.3: @HasF.%.loc5_9.2 (%.2) = assoc_entity element0, %F.decl [symbolic = %.loc5_9.3 (constants.%.3)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: interface {
|
|
// CHECK:STDOUT: interface {
|
|
|
// CHECK:STDOUT: %Self.1: @HasF.%HasF.type (%HasF.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)]
|
|
// CHECK:STDOUT: %Self.1: @HasF.%HasF.type (%HasF.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)]
|
|
|
// CHECK:STDOUT: %F.decl: @HasF.%F.type (%F.type.1) = fn_decl @F.1 [symbolic = @HasF.%F (constants.%F.1)] {} {}
|
|
// CHECK:STDOUT: %F.decl: @HasF.%F.type (%F.type.1) = fn_decl @F.1 [symbolic = @HasF.%F (constants.%F.1)] {} {}
|
|
|
-// CHECK:STDOUT: %.loc5: @HasF.%.1 (%.2) = assoc_entity element0, %F.decl [symbolic = %.2 (constants.%.3)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc5_9.1: @HasF.%.loc5_9.2 (%.2) = assoc_entity element0, %F.decl [symbolic = %.loc5_9.3 (constants.%.3)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: .Self = %Self.1
|
|
// CHECK:STDOUT: .Self = %Self.1
|
|
|
-// CHECK:STDOUT: .F = %.loc5
|
|
|
|
|
|
|
+// CHECK:STDOUT: .F = %.loc5_9.1
|
|
|
// CHECK:STDOUT: witness = (%F.decl)
|
|
// CHECK:STDOUT: witness = (%F.decl)
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: generic impl @impl(%T.loc8: type) {
|
|
|
|
|
-// CHECK:STDOUT: %T.1: type = bind_symbolic_name T, 0 [symbolic = %T.1 (constants.%T)]
|
|
|
|
|
-// CHECK:STDOUT: %HasF.type.1: type = interface_type @HasF, @HasF(%T.1) [symbolic = %HasF.type.1 (constants.%HasF.type.2)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: generic impl @impl(%T.loc8_14.1: type) {
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)]
|
|
|
|
|
+// CHECK:STDOUT: %HasF.type.loc8_33.2: type = interface_type @HasF, @HasF(%T.loc8_14.2) [symbolic = %HasF.type.loc8_33.2 (constants.%HasF.type.2)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
-// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.1) [symbolic = %F.type (constants.%F.type.2)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc8_14.2) [symbolic = %F.type (constants.%F.type.2)]
|
|
|
// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)]
|
|
// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)]
|
|
|
-// CHECK:STDOUT: %.1: <witness> = interface_witness (%F) [symbolic = %.1 (constants.%.4)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc8_37.2: <witness> = interface_witness (%F) [symbolic = %.loc8_37.2 (constants.%.4)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: impl: %T.ref.loc8_24 as %HasF.type.loc8 {
|
|
|
|
|
|
|
+// CHECK:STDOUT: impl: %T.ref.loc8_24 as %HasF.type.loc8_33.1 {
|
|
|
// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] {} {}
|
|
// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] {} {}
|
|
|
-// CHECK:STDOUT: %.loc8: <witness> = interface_witness (%F.decl) [symbolic = %.1 (constants.%.4)]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc8_37.1: <witness> = interface_witness (%F.decl) [symbolic = %.loc8_37.2 (constants.%.4)]
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !members:
|
|
// CHECK:STDOUT: !members:
|
|
|
// CHECK:STDOUT: .F = %F.decl
|
|
// CHECK:STDOUT: .F = %F.decl
|
|
|
-// CHECK:STDOUT: witness = %.loc8
|
|
|
|
|
|
|
+// CHECK:STDOUT: witness = %.loc8_37.1
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
@@ -1123,12 +1123,12 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: .Self = constants.%B
|
|
// CHECK:STDOUT: .Self = constants.%B
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: generic fn @F.1(@HasF.%T.loc4: type, @HasF.%Self.1: @HasF.%HasF.type (%HasF.type.2)) {
|
|
|
|
|
|
|
+// CHECK:STDOUT: generic fn @F.1(@HasF.%T.loc4_16.1: type, @HasF.%Self.1: @HasF.%HasF.type (%HasF.type.2)) {
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: fn();
|
|
// CHECK:STDOUT: fn();
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: generic fn @F.2(@impl.%T.loc8: type) {
|
|
|
|
|
|
|
+// CHECK:STDOUT: generic fn @F.2(@impl.%T.loc8_14.1: type) {
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: fn() {
|
|
// CHECK:STDOUT: fn() {
|
|
@@ -1143,61 +1143,61 @@ fn G(x: A) {
|
|
|
// CHECK:STDOUT: %HasF.ref: %HasF.type.1 = name_ref HasF, file.%HasF.decl [template = constants.%HasF]
|
|
// CHECK:STDOUT: %HasF.ref: %HasF.type.1 = name_ref HasF, file.%HasF.decl [template = constants.%HasF]
|
|
|
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B]
|
|
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B]
|
|
|
// CHECK:STDOUT: %HasF.type: type = interface_type @HasF, @HasF(constants.%B) [template = constants.%HasF.type.3]
|
|
// CHECK:STDOUT: %HasF.type: type = interface_type @HasF, @HasF(constants.%B) [template = constants.%HasF.type.3]
|
|
|
-// CHECK:STDOUT: %.loc21: %.8 = specific_constant @HasF.%.loc5, @HasF(constants.%B) [template = constants.%.9]
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc21: %.8 = specific_constant @HasF.%.loc5_9.1, @HasF(constants.%B) [template = constants.%.9]
|
|
|
// CHECK:STDOUT: %F.ref: %.8 = name_ref F, %.loc21 [template = constants.%.9]
|
|
// CHECK:STDOUT: %F.ref: %.8 = name_ref F, %.loc21 [template = constants.%.9]
|
|
|
// CHECK:STDOUT: return
|
|
// CHECK:STDOUT: return
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @HasF(constants.%T) {
|
|
// CHECK:STDOUT: specific @HasF(constants.%T) {
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%T
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc4_16.2 => constants.%T
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT: %HasF.type => constants.%HasF.type.2
|
|
// CHECK:STDOUT: %HasF.type => constants.%HasF.type.2
|
|
|
// CHECK:STDOUT: %Self.2 => constants.%Self
|
|
// CHECK:STDOUT: %Self.2 => constants.%Self
|
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.1
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.1
|
|
|
// CHECK:STDOUT: %F => constants.%F.1
|
|
// CHECK:STDOUT: %F => constants.%F.1
|
|
|
-// CHECK:STDOUT: %.1 => constants.%.2
|
|
|
|
|
-// CHECK:STDOUT: %.2 => constants.%.3
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc5_9.2 => constants.%.2
|
|
|
|
|
+// CHECK:STDOUT: %.loc5_9.3 => constants.%.3
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @F.1(constants.%T, constants.%Self) {}
|
|
// CHECK:STDOUT: specific @F.1(constants.%T, constants.%Self) {}
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: specific @HasF(@HasF.%T.1) {
|
|
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%T
|
|
|
|
|
|
|
+// CHECK:STDOUT: specific @HasF(@HasF.%T.loc4_16.2) {
|
|
|
|
|
+// CHECK:STDOUT: %T.loc4_16.2 => constants.%T
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: specific @HasF(@impl.%T.1) {
|
|
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%T
|
|
|
|
|
|
|
+// CHECK:STDOUT: specific @HasF(@impl.%T.loc8_14.2) {
|
|
|
|
|
+// CHECK:STDOUT: %T.loc4_16.2 => constants.%T
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @impl(constants.%T) {
|
|
// CHECK:STDOUT: specific @impl(constants.%T) {
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%T
|
|
|
|
|
-// CHECK:STDOUT: %HasF.type.1 => constants.%HasF.type.2
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_14.2 => constants.%T
|
|
|
|
|
+// CHECK:STDOUT: %HasF.type.loc8_33.2 => constants.%HasF.type.2
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.2
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.2
|
|
|
// CHECK:STDOUT: %F => constants.%F.2
|
|
// CHECK:STDOUT: %F => constants.%F.2
|
|
|
-// CHECK:STDOUT: %.1 => constants.%.4
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc8_37.2 => constants.%.4
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @F.2(constants.%T) {}
|
|
// CHECK:STDOUT: specific @F.2(constants.%T) {}
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @F.1(constants.%T, constants.%T) {}
|
|
// CHECK:STDOUT: specific @F.1(constants.%T, constants.%T) {}
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
-// CHECK:STDOUT: specific @impl(@impl.%T.1) {
|
|
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%T
|
|
|
|
|
-// CHECK:STDOUT: %HasF.type.1 => constants.%HasF.type.2
|
|
|
|
|
|
|
+// CHECK:STDOUT: specific @impl(@impl.%T.loc8_14.2) {
|
|
|
|
|
+// CHECK:STDOUT: %T.loc8_14.2 => constants.%T
|
|
|
|
|
+// CHECK:STDOUT: %HasF.type.loc8_33.2 => constants.%HasF.type.2
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: specific @HasF(constants.%B) {
|
|
// CHECK:STDOUT: specific @HasF(constants.%B) {
|
|
|
-// CHECK:STDOUT: %T.1 => constants.%B
|
|
|
|
|
|
|
+// CHECK:STDOUT: %T.loc4_16.2 => constants.%B
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: !definition:
|
|
// CHECK:STDOUT: !definition:
|
|
|
// CHECK:STDOUT: %HasF.type => constants.%HasF.type.3
|
|
// CHECK:STDOUT: %HasF.type => constants.%HasF.type.3
|
|
|
// CHECK:STDOUT: %Self.2 => constants.%Self
|
|
// CHECK:STDOUT: %Self.2 => constants.%Self
|
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.3
|
|
// CHECK:STDOUT: %F.type => constants.%F.type.3
|
|
|
// CHECK:STDOUT: %F => constants.%F.3
|
|
// CHECK:STDOUT: %F => constants.%F.3
|
|
|
-// CHECK:STDOUT: %.1 => constants.%.8
|
|
|
|
|
-// CHECK:STDOUT: %.2 => constants.%.9
|
|
|
|
|
|
|
+// CHECK:STDOUT: %.loc5_9.2 => constants.%.8
|
|
|
|
|
+// CHECK:STDOUT: %.loc5_9.3 => constants.%.9
|
|
|
// CHECK:STDOUT: }
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
// CHECK:STDOUT:
|