mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Properly diagnose ambiguous .Self in T impls X where... (#7132)
A `where` expression nested inside a `T impls X` constraint makes `.Self` ambiguous on the right-hand side of the `where` if `T` is anything other than `.Self`. After the `where`, the value of a `.Self` could be `T` or could be the value of `.Self` before the `impls` constraint: the so-called top-level value of `.Self`. Implicit use of `.Self` in designators is always allowed, and they are bound (and replaced by a reference) to the inner-most possible value of `.Self`. On the right-hand side of the nested `where` above, they have the value `T as X`. `.Self impls ...` is also always allowed, since it acts more as a keyword here, and it always refers to the inner-most possible value of `.Self`. Any other explicit use of `.Self` is diagnosed when ambiguous, in any kind of constraint. This is done in the handling of `WhereExpr` since it has enough context to allow `.Self impls` (which is an explicit use) while disallowing other explicit uses. And because it has non-canonical instructions to work with, so it is able to diagnose errors with precise locations. Since `.Self` is no longer going to be marked with depth modifiers, the eval of `WhereExpr` does not need an input facet value instruction representing `.Self` to compare with, as they are now going to all be equivalent. So revert it back to just looking for the `PeriodSelf` name id, through a shared helper being introduced as `IsPeriodSelf`. And drop the period self InstId from the `WhereExpr` instruction. This causes most of the formatted SemIR changes. Move helpers for working with and replacing `.Self` to their own file, out of the `facet_type.h` header/cpp files. These are working with `.Self` facet values more than facet types, though `.Self` is a name that only exists inside the scope of a facet type.
This commit is contained in:
+12
-12
@@ -179,8 +179,8 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %.loc8_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc8_26.2: %empty_struct_type = converted %.loc8_26.1, %empty_struct [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc8_14: type = where_expr %.Self [concrete = constants.%I_where.type.2d8] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc8_14: type = where_expr [concrete = constants.%I_where.type.2d8] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc8_26.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -194,8 +194,8 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [concrete = constants.%assoc0.f13]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_21: %.Self.as_type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6]
|
||||
// CHECK:STDOUT: %.loc10_15.1: type = where_expr %.Self [concrete = constants.%I_where.type.1f4] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc10_15.1: type = where_expr [concrete = constants.%I_where.type.1f4] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc10_21, %int_0
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -330,8 +330,8 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [concrete = constants.%assoc0.f13]
|
||||
// CHECK:STDOUT: %impl.elem0: %.Self.as_type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0]
|
||||
// CHECK:STDOUT: %.loc15_14.1: type = where_expr %.Self [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc15_14.1: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %int_0
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -465,8 +465,8 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %.loc18_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc18_25.2: %empty_tuple.type = converted %.loc18_25.1, %empty_tuple [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc18_13.1: type = where_expr %.Self [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc18_13.1: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc18_19, %.loc18_25.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -661,8 +661,8 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %.loc15_24: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %V.ref: <error> = name_ref V, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %.loc15_30: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc15_18: type = where_expr %.Self [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type.54b
|
||||
// CHECK:STDOUT: %.loc15_18: type = where_expr [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.type
|
||||
// CHECK:STDOUT: requirement_rewrite %V.ref, <error>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -794,8 +794,8 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %.loc8_60.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc8_60.2: %empty_struct_type = converted %.loc8_60.1, %empty_struct [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc8_12.2: type = where_expr %.Self.2 [symbolic_self = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc8_12.2: type = where_expr [symbolic_self = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_impls %.loc8_19.2, %ImplicitAs.type
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc8_60.2
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -163,8 +163,8 @@ impl {.a: bool} as type where .Self impls I {}
|
||||
// CHECK:STDOUT: %.loc8_36: type = type_literal type [concrete = type]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc8_24: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc8_18: type = where_expr %.Self [concrete = constants.%type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type type
|
||||
// CHECK:STDOUT: %.loc8_18: type = where_expr [concrete = constants.%type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %.loc8_13
|
||||
// CHECK:STDOUT: requirement_impls %.loc8_24, %.loc8_36
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -214,8 +214,8 @@ impl {.a: bool} as type where .Self impls I {}
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc10_31: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc10_25: type = where_expr %.Self [concrete = constants.%type_where] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type type
|
||||
// CHECK:STDOUT: %.loc10_25: type = where_expr [concrete = constants.%type_where] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %.loc10_20
|
||||
// CHECK:STDOUT: requirement_impls %.loc10_31, %I.ref
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+28
-28
@@ -580,8 +580,8 @@ interface I {
|
||||
// CHECK:STDOUT: %impl.elem0.loc6: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc6_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc6_26.2: type = converted %.loc6_26.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc6_14: type = where_expr %.Self.2 [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc6_14: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc6
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc6, %.loc6_26.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -597,8 +597,8 @@ interface I {
|
||||
// CHECK:STDOUT: %impl.elem0.loc8: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc8_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc8_26.2: type = converted %.loc8_26.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc8_14: type = where_expr %.Self.1 [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc8_14: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc8
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc8, %.loc8_26.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -692,8 +692,8 @@ interface I {
|
||||
// CHECK:STDOUT: %impl.elem0.loc7: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc7_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc7_25.2: type = converted %.loc7_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc7_13: type = where_expr %.Self.2 [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc7_13: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc7
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc7, %.loc7_25.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -722,8 +722,8 @@ interface I {
|
||||
// CHECK:STDOUT: %impl.elem0.loc11: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc11_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc11_25.2: type = converted %.loc11_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc11_13: type = where_expr %.Self.1 [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc11_13: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc11
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc11, %.loc11_25.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -831,8 +831,8 @@ interface I {
|
||||
// CHECK:STDOUT: %impl.elem0.loc7: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc7_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc7_25.2: type = converted %.loc7_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc7_13: type = where_expr %.Self.2 [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc7_13: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc7
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc7, %.loc7_25.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -863,8 +863,8 @@ interface I {
|
||||
// CHECK:STDOUT: %impl.elem0.loc11: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc11_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc11_25.2: type = converted %.loc11_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc11_13: type = where_expr %.Self.1 [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc11_13: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc11
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc11, %.loc11_25.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1066,8 +1066,8 @@ interface I {
|
||||
// CHECK:STDOUT: %.loc13_19: type = converted %.Self.ref.loc13, %.Self.as_type.loc13 [symbolic_self = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc13: <error> = name_ref T, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %C.ref.loc13: type = name_ref C, file.%C.decl.loc4 [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %.loc13_13: type = where_expr %.Self.2 [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc13_13: type = where_expr [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc13
|
||||
// CHECK:STDOUT: requirement_rewrite %T.ref.loc13, <error>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1082,8 +1082,8 @@ interface I {
|
||||
// CHECK:STDOUT: %.loc21_19: type = converted %.Self.ref.loc21, %.Self.as_type.loc21 [symbolic_self = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc21: <error> = name_ref T, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %C.ref.loc21: type = name_ref C, file.%C.decl.loc4 [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %.loc21_13: type = where_expr %.Self.1 [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc21_13: type = where_expr [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc21
|
||||
// CHECK:STDOUT: requirement_rewrite %T.ref.loc21, <error>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1199,8 +1199,8 @@ interface I {
|
||||
// CHECK:STDOUT: %T.ref.loc8: %I.assoc_type.2e0 = name_ref T, %.loc8_22.2 [concrete = constants.%assoc0.501]
|
||||
// CHECK:STDOUT: %impl.elem0.loc8: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %C.ref.loc8_27: type = name_ref C, file.%C.decl.loc6 [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %.loc8_16: type = where_expr %.Self.2 [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type.807
|
||||
// CHECK:STDOUT: %.loc8_16: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.type.loc8
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc8, %C.ref.loc8_27
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1218,8 +1218,8 @@ interface I {
|
||||
// CHECK:STDOUT: %T.ref.loc11: %I.assoc_type.2e0 = name_ref T, %.loc11_22.2 [concrete = constants.%assoc0.501]
|
||||
// CHECK:STDOUT: %impl.elem0.loc11: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %C.ref.loc11_27: type = name_ref C, file.%C.decl.loc6 [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %.loc11_16: type = where_expr %.Self.1 [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type.807
|
||||
// CHECK:STDOUT: %.loc11_16: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.type.loc11
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc11, %C.ref.loc11_27
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1606,8 +1606,8 @@ interface I {
|
||||
// CHECK:STDOUT: %impl.elem0.loc9: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc9_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc9_25.2: type = converted %.loc9_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc9_13: type = where_expr %.Self.2 [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc9_13: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc9
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc9, %.loc9_25.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1622,8 +1622,8 @@ interface I {
|
||||
// CHECK:STDOUT: %impl.elem0.loc18: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc18_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc18_25.2: type = converted %.loc18_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc18_13: type = where_expr %.Self.1 [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc18_13: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc18
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc18, %.loc18_25.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -2186,8 +2186,8 @@ interface I {
|
||||
// CHECK:STDOUT: %U.ref.loc12: %I.assoc_type = name_ref U, @U.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc12: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %C.ref.loc12_28: type = name_ref C, @I.WithSelf.F.%C.decl [symbolic = %C (constants.%C)]
|
||||
// CHECK:STDOUT: %.loc12_17: type = where_expr %.Self.2 [symbolic = %I_where.type (constants.%I_where.type)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc12_17: type = where_expr [symbolic = %I_where.type (constants.%I_where.type)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc12
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc12, %C.ref.loc12_28
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -2201,8 +2201,8 @@ interface I {
|
||||
// CHECK:STDOUT: %U.ref.loc21: %I.assoc_type = name_ref U, @U.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc21: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %C.ref.loc21_28: type = name_ref C, @I.WithSelf.F.%C.decl [symbolic = %C (constants.%C)]
|
||||
// CHECK:STDOUT: %.loc21_17: type = where_expr %.Self.1 [symbolic = %I_where.type (constants.%I_where.type)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc21_17: type = where_expr [symbolic = %I_where.type (constants.%I_where.type)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc21
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc21, %C.ref.loc21_28
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+4
-4
@@ -482,8 +482,8 @@ fn G() {
|
||||
// CHECK:STDOUT: %.loc13_102.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc13_102.4: type = converted constants.%empty_struct, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc13_102.5: type = converted %.loc13_102.1, constants.%tuple.type.bd8 [concrete = constants.%tuple.type.bd8]
|
||||
// CHECK:STDOUT: %.loc13_14: type = where_expr %.Self [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%L.type
|
||||
// CHECK:STDOUT: %.loc13_14: type = where_expr [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %L.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc13_20, %.loc13_36.5
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.subst.loc13_42, %.loc13_58.5
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.subst.loc13_64, %.loc13_80.5
|
||||
@@ -549,8 +549,8 @@ fn G() {
|
||||
// CHECK:STDOUT: %impl.elem2: type = impl_witness_access constants.%M.lookup_impl_witness, element2 [symbolic_self = constants.%impl.elem2]
|
||||
// CHECK:STDOUT: %.loc13_50.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc13_50.2: type = converted %.loc13_50.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc13_14: type = where_expr %.Self [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%M.type
|
||||
// CHECK:STDOUT: %.loc13_14: type = where_expr [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %M.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc13_20, %impl.elem1.loc13_25
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem1.loc13_32, %impl.elem0.subst
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem2, %.loc13_50.2
|
||||
|
||||
@@ -216,8 +216,8 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3,
|
||||
// CHECK:STDOUT: %.loc6_95.2: %tuple.type.d07 = converted %.loc6_94.1, %tuple.loc6_94 [concrete = constants.%tuple.21c]
|
||||
// CHECK:STDOUT: %struct.loc6_95: %struct_type.a.b.fe2 = struct_value (%.loc6_65, %.loc6_95.2) [concrete = constants.%struct.682]
|
||||
// CHECK:STDOUT: %.loc6_95.3: %struct_type.a.b.fe2 = converted %.loc6_95.1, %struct.loc6_95 [concrete = constants.%struct.682]
|
||||
// CHECK:STDOUT: %.loc6_14: type = where_expr %.Self [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc6_14: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc6_20, %.loc6_48.3
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.subst, %.loc6_95.3
|
||||
// CHECK:STDOUT: }
|
||||
@@ -410,8 +410,8 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3,
|
||||
// CHECK:STDOUT: %.loc10_83.2: %tuple.type.d07 = converted %.loc10_82.1, %tuple.loc10_82 [concrete = constants.%tuple.ffd]
|
||||
// CHECK:STDOUT: %struct.loc10_83: %struct_type.a.b.fe2 = struct_value (%false, %.loc10_83.2) [concrete = constants.%struct.68c]
|
||||
// CHECK:STDOUT: %.loc10_83.3: %struct_type.a.b.fe2 = converted %.loc10_83.1, %struct.loc10_83 [concrete = constants.%struct.68c]
|
||||
// CHECK:STDOUT: %.loc10_14: type = where_expr %.Self [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc10_20, %.loc10_48.3
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.subst, %.loc10_83.3
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -350,8 +350,8 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc5_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc5_26.2: type = converted %.loc5_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc5_14: type = where_expr %.Self [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc5_14: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc5_26.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -446,8 +446,8 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %impl.elem0.loc5: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc5_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc5_26.2: type = converted %.loc5_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc5_14: type = where_expr %.Self.2 [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc5_14: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc5
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc5, %.loc5_26.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -462,8 +462,8 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %impl.elem0.loc6: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc6_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc6_26.2: type = converted %.loc6_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc6_14: type = where_expr %.Self.1 [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc6_14: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc6
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc6, %.loc6_26.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -562,8 +562,8 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc10_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc10_26.2: type = converted %.loc10_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc10_14: type = where_expr %.Self [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc10_26.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -663,8 +663,8 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc9_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc9_26.2: type = converted %.loc9_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc9_14: type = where_expr %.Self [concrete = constants.%I_where.type.1c0] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc9_14: type = where_expr [concrete = constants.%I_where.type.1c0] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc9_26.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -679,8 +679,8 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc10_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc10_26.2: type = converted %.loc10_26.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc10_14: type = where_expr %.Self [concrete = constants.%I_where.type.0f9] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = constants.%I_where.type.0f9] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc10_26.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -805,8 +805,8 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %T3.ref: %I3.assoc_type = name_ref T3, imports.%Main.import_ref.4cd [concrete = constants.%assoc2]
|
||||
// CHECK:STDOUT: %impl.elem2: type = impl_witness_access constants.%I3.lookup_impl_witness, element2 [symbolic_self = constants.%impl.elem2]
|
||||
// CHECK:STDOUT: %BAD2.ref: <error> = name_ref BAD2, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %.loc17_15: type = where_expr %.Self [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I3.type
|
||||
// CHECK:STDOUT: %.loc17_15: type = where_expr [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I3.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, <error>
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem1, %struct_type.a
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem2, <error>
|
||||
@@ -836,8 +836,8 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %T3.ref: %I3.assoc_type = name_ref T3, imports.%Main.import_ref.4cd [concrete = constants.%assoc2]
|
||||
// CHECK:STDOUT: %impl.elem2: type = impl_witness_access constants.%I3.lookup_impl_witness, element2 [symbolic_self = constants.%impl.elem2]
|
||||
// CHECK:STDOUT: %BAD4.ref: <error> = name_ref BAD4, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %.loc27_15: type = where_expr %.Self [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I3.type
|
||||
// CHECK:STDOUT: %.loc27_15: type = where_expr [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I3.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %struct_type.b
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem1, <error>
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem2, <error>
|
||||
@@ -930,8 +930,8 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc5_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc5_26.2: type = converted %.loc5_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc5_14: type = where_expr %.Self [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc5_14: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc5_26.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1038,8 +1038,8 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %impl.elem0.subst: type = impl_witness_access_substituted %impl.elem0.loc10_32, %.loc10_26.2 [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc10_38.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc10_38.2: type = converted %.loc10_38.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc10_14: type = where_expr %.Self [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc10_20, %.loc10_26.2
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.subst, %.loc10_38.2
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1133,8 +1133,8 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %impl.elem0.subst: type = impl_witness_access_substituted %impl.elem0.loc10_34, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %.loc10_40.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc10_40.2: type = converted %.loc10_40.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc10_14: type = where_expr %.Self [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc10_20, <error>
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.subst, %.loc10_40.2
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1227,8 +1227,8 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_32: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %impl.elem0.subst: type = impl_witness_access_substituted %impl.elem0.loc10_32, %.loc10_26.2 [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %BAD6.ref: <error> = name_ref BAD6, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %.loc10_14: type = where_expr %.Self [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc10_20, %.loc10_26.2
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.subst, <error>
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1320,8 +1320,8 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_34: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %impl.elem0.subst: type = impl_witness_access_substituted %impl.elem0.loc14_34, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %BAD8.ref: <error> = name_ref BAD8, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %.loc14_14: type = where_expr %.Self [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc14_14: type = where_expr [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc14_20, <error>
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.subst, <error>
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1417,8 +1417,8 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %impl.elem0.subst: type = impl_witness_access_substituted %impl.elem0.loc6_32, %.loc6_26.2 [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc6_38.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc6_38.2: type = converted %.loc6_38.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc6_14: type = where_expr %.Self [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc6_14: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc6_20, %.loc6_26.2
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.subst, %.loc6_38.2
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1520,8 +1520,8 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.loc6_39.2: %empty_struct_type = converted %.loc6_38, %empty_struct [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %struct: %struct_type.a.225 = struct_value (%.loc6_39.2) [concrete = constants.%struct]
|
||||
// CHECK:STDOUT: %.loc6_39.3: %struct_type.a.225 = converted %.loc6_39.1, %struct [concrete = constants.%struct]
|
||||
// CHECK:STDOUT: %.loc6_20: type = where_expr %.Self [concrete = constants.%NonType_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%NonType.type
|
||||
// CHECK:STDOUT: %.loc6_20: type = where_expr [concrete = constants.%NonType_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %NonType.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc6_39.3
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1662,8 +1662,8 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %F.ref: %IF.assoc_type = name_ref F, imports.%Main.import_ref.82a [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.8a4 = impl_witness_access constants.%IF.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0]
|
||||
// CHECK:STDOUT: %.loc10_15: type = where_expr %.Self [concrete = constants.%IF_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%IF.type
|
||||
// CHECK:STDOUT: %.loc10_15: type = where_expr [concrete = constants.%IF_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %IF.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %int_0
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -454,8 +454,8 @@ impl forall [N:! E] D(N) as I where .Assoc = () {
|
||||
// CHECK:STDOUT: %.loc20_47.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %Y.facet: %Y.type = facet_value constants.%empty_tuple.type, (constants.%Y.impl_witness.980) [concrete = constants.%Y.facet]
|
||||
// CHECK:STDOUT: %.loc20_47.2: %Y.type = converted %.loc20_47.1, %Y.facet [concrete = constants.%Y.facet]
|
||||
// CHECK:STDOUT: %.loc20_31: type = where_expr %.Self.1 [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc20_31: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc20_47.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc20_18: type = splice_block %E.ref [concrete = constants.%E] {
|
||||
|
||||
+14
-14
@@ -364,8 +364,8 @@ interface B {
|
||||
// CHECK:STDOUT: %.loc13_19: type = converted %.Self.ref.loc13, %.Self.as_type.loc13 [symbolic_self = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %X.ref.loc13: <error> = name_ref X, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %.loc13_25: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc13_13: type = where_expr %.Self.2 [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%J.type
|
||||
// CHECK:STDOUT: %.loc13_13: type = where_expr [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %J.ref.loc13
|
||||
// CHECK:STDOUT: requirement_rewrite %X.ref.loc13, <error>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -378,8 +378,8 @@ interface B {
|
||||
// CHECK:STDOUT: %.loc22_19: type = converted %.Self.ref.loc22, %.Self.as_type.loc22 [symbolic_self = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %X.ref.loc22: <error> = name_ref X, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %.loc22_25: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc22_13: type = where_expr %.Self.1 [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%J.type
|
||||
// CHECK:STDOUT: %.loc22_13: type = where_expr [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %J.ref.loc22
|
||||
// CHECK:STDOUT: requirement_rewrite %X.ref.loc22, <error>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -474,8 +474,8 @@ interface B {
|
||||
// CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, file.%Incomplete.decl [concrete = constants.%Incomplete.type]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc8_19: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc8_13: type = where_expr %.Self [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc8_13: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_impls %.loc8_19, %Incomplete.ref
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -564,8 +564,8 @@ interface B {
|
||||
// CHECK:STDOUT: %impl.elem0.loc8: type = impl_witness_access constants.%J.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc8_52.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc8_52.2: type = converted %.loc8_52.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc8_13: type = where_expr %.Self.2 [concrete = constants.%J_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%J.type
|
||||
// CHECK:STDOUT: %.loc8_13: type = where_expr [concrete = constants.%J_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %J.ref.loc8
|
||||
// CHECK:STDOUT: requirement_impls %.loc8_19, %Incomplete.ref.loc8
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc8, %.loc8_52.2
|
||||
// CHECK:STDOUT: }
|
||||
@@ -585,8 +585,8 @@ interface B {
|
||||
// CHECK:STDOUT: %impl.elem0.loc10: type = impl_witness_access constants.%J.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc10_52.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc10_52.2: type = converted %.loc10_52.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc10_13: type = where_expr %.Self.1 [concrete = constants.%J_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%J.type
|
||||
// CHECK:STDOUT: %.loc10_13: type = where_expr [concrete = constants.%J_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %J.ref.loc10
|
||||
// CHECK:STDOUT: requirement_impls %.loc10_19, %Incomplete.ref.loc10
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc10, %.loc10_52.2
|
||||
// CHECK:STDOUT: }
|
||||
@@ -676,8 +676,8 @@ interface B {
|
||||
// CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, file.%Incomplete.decl [concrete = constants.%Incomplete.type]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc8_19: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc8_13: type = where_expr %.Self [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc8_13: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_impls %.loc8_19, %Incomplete.ref
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -817,8 +817,8 @@ interface B {
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%X.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc16_32.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc16_32.2: type = converted %.loc16_32.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc16_19.2: type = where_expr %.Self.2 [concrete = constants.%X_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%X.type
|
||||
// CHECK:STDOUT: %.loc16_19.2: type = where_expr [concrete = constants.%X_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %X.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc16_32.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+8
-8
@@ -193,8 +193,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Y.lookup_impl_witness.b08, element0 [symbolic_self = constants.%impl.elem0.48b]
|
||||
// CHECK:STDOUT: %.loc58_35.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc58_35.2: type = converted %.loc58_35.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc58_23: type = where_expr %.Self [concrete = constants.%Y_where.type.ad5] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%Y.type.5e1
|
||||
// CHECK:STDOUT: %.loc58_23: type = where_expr [concrete = constants.%Y_where.type.ad5] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %Y.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc58_35.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -260,8 +260,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %impl.elem0.loc54_27.2: type = impl_witness_access constants.%Y.lookup_impl_witness.3b9, element0 [symbolic = %impl.elem0.loc54_27.1 (constants.%impl.elem0.284)]
|
||||
// CHECK:STDOUT: %.loc54_33.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc54_33.2: type = converted %.loc54_33.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc54_21.2: type = where_expr %.Self.3 [symbolic = %Y_where.type (constants.%Y_where.type.7c7)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%Y.type.6b3
|
||||
// CHECK:STDOUT: %.loc54_21.2: type = where_expr [symbolic = %Y_where.type (constants.%Y_where.type.7c7)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %Y.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc54_27.2, %.loc54_33.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -651,8 +651,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_27.2: type = impl_witness_access constants.%Y.lookup_impl_witness.5bf, element0 [symbolic = %impl.elem0.loc11_27.1 (constants.%impl.elem0.63e)]
|
||||
// CHECK:STDOUT: %.loc11_33.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc11_33.2: type = converted %.loc11_33.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc11_21.2: type = where_expr %.Self.3 [symbolic = %Y_where.type (constants.%Y_where.type.b0f)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%Y.type.6ae
|
||||
// CHECK:STDOUT: %.loc11_21.2: type = where_expr [symbolic = %Y_where.type (constants.%Y_where.type.b0f)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %Y.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc11_27.2, %.loc11_33.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -673,8 +673,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_21.1: type = impl_witness_access constants.%Y.lookup_impl_witness.5bf, element0 [symbolic = %impl.elem0.loc14_21.2 (constants.%impl.elem0.63e)]
|
||||
// CHECK:STDOUT: %.loc14_27.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc14_27.2: type = converted %.loc14_27.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc14_15: type = where_expr %.Self.1 [symbolic = %Y_where.type (constants.%Y_where.type.b0f)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%Y.type.6ae
|
||||
// CHECK:STDOUT: %.loc14_15: type = where_expr [symbolic = %Y_where.type (constants.%Y_where.type.b0f)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %Y.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc14_21.1, %.loc14_27.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+14
-14
@@ -193,8 +193,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_50.1: type = impl_witness_access constants.%Z.lookup_impl_witness.7d6, element0 [symbolic = %impl.elem0.loc9_50.2 (constants.%impl.elem0.e5e)]
|
||||
// CHECK:STDOUT: %.loc9_56.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc9_56.2: type = converted %.loc9_56.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc9_44: type = where_expr %.Self.1 [symbolic = %Z_where.type (constants.%Z_where.type.a76)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%Z.type.4d0
|
||||
// CHECK:STDOUT: %.loc9_44: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.a76)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %Z.type.loc9_42.1
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc9_50.1, %.loc9_56.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc9_18.1: type = splice_block %.loc9_18.2 [concrete = type] {
|
||||
@@ -223,8 +223,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %X.ref: %Z.assoc_type.553 = name_ref X, %.loc11_46.2 [concrete = constants.%assoc0.1e0]
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Z.lookup_impl_witness.c06, element0 [symbolic_self = constants.%impl.elem0.2cd]
|
||||
// CHECK:STDOUT: %T.ref.loc11_51: type = name_ref T, %T.loc11_21.1 [symbolic = %T.loc11_21.2 (constants.%T.67d)]
|
||||
// CHECK:STDOUT: %.loc11_40: type = where_expr %.Self.1 [symbolic = %Z_where.type (constants.%Z_where.type.c3e)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%Z.type.be4
|
||||
// CHECK:STDOUT: %.loc11_40: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.c3e)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %Z.type
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %T.ref.loc11_51
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc11_24.1: type = splice_block %.loc11_24.2 [concrete = type] {
|
||||
@@ -589,8 +589,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_50.1: type = impl_witness_access constants.%Z.lookup_impl_witness.7d6, element0 [symbolic = %impl.elem0.loc10_50.2 (constants.%impl.elem0.e5e)]
|
||||
// CHECK:STDOUT: %.loc10_56.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc10_56.2: type = converted %.loc10_56.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc10_44: type = where_expr %.Self.1 [symbolic = %Z_where.type (constants.%Z_where.type.a76)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%Z.type.4d0
|
||||
// CHECK:STDOUT: %.loc10_44: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.a76)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %Z.type.loc10_42.1
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc10_50.1, %.loc10_56.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc10_18.1: type = splice_block %.loc10_18.2 [concrete = type] {
|
||||
@@ -619,8 +619,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %X.ref: %Z.assoc_type.553 = name_ref X, %.loc12_40.2 [concrete = constants.%assoc0.1e0]
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Z.lookup_impl_witness.c06, element0 [symbolic_self = constants.%impl.elem0.2cd]
|
||||
// CHECK:STDOUT: %T.ref.loc12_45: type = name_ref T, %T.loc12_15.1 [symbolic = %T.loc12_15.2 (constants.%T.67d)]
|
||||
// CHECK:STDOUT: %.loc12_34: type = where_expr %.Self.1 [symbolic = %Z_where.type (constants.%Z_where.type.c3e)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%Z.type.be4
|
||||
// CHECK:STDOUT: %.loc12_34: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.c3e)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %Z.type
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %T.ref.loc12_45
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc12_18.1: type = splice_block %.loc12_18.2 [concrete = type] {
|
||||
@@ -953,8 +953,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Ptr.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0.4ac]
|
||||
// CHECK:STDOUT: %U.ref.loc7_53: type = name_ref U, %U.loc7_21.1 [symbolic = %U.loc7_21.2 (constants.%U.67d)]
|
||||
// CHECK:STDOUT: %ptr.loc7_54.1: type = ptr_type %U.ref.loc7_53 [symbolic = %ptr.loc7_54.2 (constants.%ptr.e8f8f9.1)]
|
||||
// CHECK:STDOUT: %.loc7_39: type = where_expr %.Self.1 [symbolic = %Ptr_where.type (constants.%Ptr_where.type.3963c5.1)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%Ptr.type
|
||||
// CHECK:STDOUT: %.loc7_39: type = where_expr [symbolic = %Ptr_where.type (constants.%Ptr_where.type.3963c5.1)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %Ptr.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %ptr.loc7_54.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc7_24.1: type = splice_block %.loc7_24.2 [concrete = type] {
|
||||
@@ -1179,8 +1179,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Ptr.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0.4ac]
|
||||
// CHECK:STDOUT: %U.ref.loc7_53: type = name_ref U, %U.loc7_21.1 [symbolic = %U.loc7_21.2 (constants.%U.67d)]
|
||||
// CHECK:STDOUT: %ptr.loc7_54.1: type = ptr_type %U.ref.loc7_53 [symbolic = %ptr.loc7_54.2 (constants.%ptr.e8f8f9.1)]
|
||||
// CHECK:STDOUT: %.loc7_39: type = where_expr %.Self.1 [symbolic = %Ptr_where.type (constants.%Ptr_where.type.396)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%Ptr.type
|
||||
// CHECK:STDOUT: %.loc7_39: type = where_expr [symbolic = %Ptr_where.type (constants.%Ptr_where.type.396)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %Ptr.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %ptr.loc7_54.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc7_24.1: type = splice_block %.loc7_24.2 [concrete = type] {
|
||||
@@ -1406,8 +1406,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Ptr.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0.4ac]
|
||||
// CHECK:STDOUT: %U.ref.loc7_53: type = name_ref U, %U.loc7_21.1 [symbolic = %U.loc7_21.2 (constants.%U.67d)]
|
||||
// CHECK:STDOUT: %ptr.loc7_54.1: type = ptr_type %U.ref.loc7_53 [symbolic = %ptr.loc7_54.2 (constants.%ptr.e8f8f9.1)]
|
||||
// CHECK:STDOUT: %.loc7_39: type = where_expr %.Self.1 [symbolic = %Ptr_where.type (constants.%Ptr_where.type.396)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%Ptr.type
|
||||
// CHECK:STDOUT: %.loc7_39: type = where_expr [symbolic = %Ptr_where.type (constants.%Ptr_where.type.396)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %Ptr.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %ptr.loc7_54.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc7_24.1: type = splice_block %.loc7_24.2 [concrete = type] {
|
||||
|
||||
+30
-30
@@ -469,8 +469,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %U.ref: %J.assoc_type = name_ref U, @U.%assoc0 [concrete = constants.%assoc0.ebd]
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%J.lookup_impl_witness.46a, element0 [symbolic_self = constants.%impl.elem0.a58]
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc8_14: type = where_expr %.Self [concrete = constants.%J_where.type.928] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%J.type
|
||||
// CHECK:STDOUT: %.loc8_14: type = where_expr [concrete = constants.%J_where.type.928] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %J.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %i32
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -502,8 +502,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %U.ref: %J.assoc_type = name_ref U, @U.%assoc0 [concrete = constants.%assoc0.ebd]
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%J.lookup_impl_witness.46a, element0 [symbolic_self = constants.%impl.elem0.a58]
|
||||
// CHECK:STDOUT: %C.ref.loc21_24: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %.loc21_13: type = where_expr %.Self [concrete = constants.%J_where.type.d0e] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%J.type
|
||||
// CHECK:STDOUT: %.loc21_13: type = where_expr [concrete = constants.%J_where.type.d0e] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %J.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %C.ref.loc21_24
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -842,8 +842,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %U.ref: %J.assoc_type = name_ref U, @U.%assoc0 [concrete = constants.%assoc0.ebd]
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%J.lookup_impl_witness.46a, element0 [symbolic_self = constants.%impl.elem0.a58]
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc10_13: type = where_expr %.Self [concrete = constants.%J_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%J.type
|
||||
// CHECK:STDOUT: %.loc10_13: type = where_expr [concrete = constants.%J_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %J.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %i32
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1348,8 +1348,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %U.ref: %J.assoc_type = name_ref U, @U.%assoc0 [concrete = constants.%assoc0.ebd]
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%J.lookup_impl_witness.46a, element0 [symbolic_self = constants.%impl.elem0.a58]
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc10_20: type = where_expr %.Self [concrete = constants.%J_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%J.type
|
||||
// CHECK:STDOUT: %.loc10_20: type = where_expr [concrete = constants.%J_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %J.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %i32
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -2397,8 +2397,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %U.ref: %J.assoc_type = name_ref U, @U.%assoc0 [concrete = constants.%assoc0.ebd]
|
||||
// CHECK:STDOUT: %impl.elem0.loc8: type = impl_witness_access constants.%J.lookup_impl_witness.46a, element0 [symbolic_self = constants.%impl.elem0.a58]
|
||||
// CHECK:STDOUT: %i32.loc8_37: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc8_26.2: type = where_expr %.Self.2 [concrete = constants.%J_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%J.type
|
||||
// CHECK:STDOUT: %.loc8_26.2: type = where_expr [concrete = constants.%J_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %J.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc8, %i32.loc8_37
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -2696,8 +2696,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %U.ref: %J.assoc_type = name_ref U, @U.%assoc0 [concrete = constants.%assoc0.ebd]
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%J.lookup_impl_witness.46a, element0 [symbolic_self = constants.%impl.elem0.a58]
|
||||
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc9_20: type = where_expr %.Self [concrete = constants.%J_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%J.type
|
||||
// CHECK:STDOUT: %.loc9_20: type = where_expr [concrete = constants.%J_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %J.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %i32
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -3155,8 +3155,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%J.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc8_32.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc8_32.2: type = converted %.loc8_32.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc8_20: type = where_expr %.Self [concrete = constants.%J_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%J.type
|
||||
// CHECK:STDOUT: %.loc8_20: type = where_expr [concrete = constants.%J_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %J.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc8_32.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -3273,8 +3273,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%J2.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc22_28.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc22_28.2: type = converted %.loc22_28.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc22_15: type = where_expr %.Self [concrete = constants.%J2_where.type.1ad] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%J2.type
|
||||
// CHECK:STDOUT: %.loc22_15: type = where_expr [concrete = constants.%J2_where.type.1ad] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %J2.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc22_28.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -3289,8 +3289,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %U2.ref: %J2.assoc_type = name_ref U2, @U2.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%J2.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %C2.ref.loc31_27: type = name_ref C2, file.%C2.decl [concrete = constants.%C2]
|
||||
// CHECK:STDOUT: %.loc31_15: type = where_expr %.Self [concrete = constants.%J2_where.type.de0] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%J2.type
|
||||
// CHECK:STDOUT: %.loc31_15: type = where_expr [concrete = constants.%J2_where.type.de0] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %J2.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %C2.ref.loc31_27
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -3602,8 +3602,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %.loc11_31.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc11_31.2: type = converted %.loc11_31.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %empty_tuple.type} [concrete = constants.%struct_type.a]
|
||||
// CHECK:STDOUT: %.loc11_14: type = where_expr %.Self [concrete = constants.%K_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%K.type
|
||||
// CHECK:STDOUT: %.loc11_14: type = where_expr [concrete = constants.%K_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %K.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %struct_type.a
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -3853,8 +3853,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %.loc8_33.2: %empty_struct_type = converted %.loc8_32, %empty_struct [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %struct: %struct_type.b.347 = struct_value (%.loc8_33.2) [concrete = constants.%struct]
|
||||
// CHECK:STDOUT: %.loc8_33.3: %struct_type.b.347 = converted %.loc8_33.1, %struct [concrete = constants.%struct]
|
||||
// CHECK:STDOUT: %.loc8_14: type = where_expr %.Self [concrete = constants.%M_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%M.type
|
||||
// CHECK:STDOUT: %.loc8_14: type = where_expr [concrete = constants.%M_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %M.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc8_33.3
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -4063,8 +4063,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %.loc10_36.2: type = converted %.loc10_35, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %struct: %struct_type.b.86f = struct_value (%.loc10_36.2) [concrete = constants.%struct.0f3]
|
||||
// CHECK:STDOUT: %.loc10_36.3: %struct_type.b.86f = converted %.loc10_36.1, %struct [concrete = constants.%struct.0f3]
|
||||
// CHECK:STDOUT: %.loc10_17: type = where_expr %.Self [concrete = constants.%M_where.type.2ad] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%M.type
|
||||
// CHECK:STDOUT: %.loc10_17: type = where_expr [concrete = constants.%M_where.type.2ad] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %M.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc10_36.3
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -4085,8 +4085,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %.loc16_36.2: type = converted %.loc16_35, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %struct: %struct_type.b.86f = struct_value (%.loc16_36.2) [concrete = constants.%struct.c94]
|
||||
// CHECK:STDOUT: %.loc16_36.3: %struct_type.b.86f = converted %.loc16_36.1, %struct [concrete = constants.%struct.c94]
|
||||
// CHECK:STDOUT: %.loc16_17: type = where_expr %.Self [concrete = constants.%M_where.type.bf5] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%M.type
|
||||
// CHECK:STDOUT: %.loc16_17: type = where_expr [concrete = constants.%M_where.type.bf5] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %M.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc16_36.3
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -4397,8 +4397,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.call: init %i32 = call %bound_method.loc8_25.2(%int_2) [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc8_25.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc8_25.2: %i32 = converted %int_2, %.loc8_25.1 [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc8_14: type = where_expr %.Self [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%I.type
|
||||
// CHECK:STDOUT: %.loc8_14: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %I.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc8_20, %.loc8_25.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -4650,8 +4650,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic]
|
||||
// CHECK:STDOUT: %T.ref.loc9_44: type = name_ref T, %T.loc9_15.1 [symbolic = %T.loc9_15.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %C.loc9_45.1: type = class_type @C, @C(constants.%T) [symbolic = %C.loc9_45.2 (constants.%C.5a3)]
|
||||
// CHECK:STDOUT: %.loc9_31: type = where_expr %.Self.1 [symbolic = %Z_where.type (constants.%Z_where.type.ea1)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type constants.%Z.type
|
||||
// CHECK:STDOUT: %.loc9_31: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.ea1)] {
|
||||
// CHECK:STDOUT: requirement_base_facet_type %Z.ref
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %C.loc9_45.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc9_18.1: type = splice_block %.loc9_18.2 [concrete = type] {
|
||||
|
||||
Reference in New Issue
Block a user