mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-06 10:44:41 +01:00
Avoid symbolic witnesses for .Self in an impl decl (#7564)
Point symbolic witnesses into `.Self` written inside an impl decl at the impl that is being declared. This is tricky because the impl does not yet exist. So we use a new instruction `ImplSelfWitness` which _will_ be replaced by the `ImplWitness` once it becomes available. The `ImplSelfWitness` acts like a symbolic witness, except it does not perform lookup, since we know which impl we will get a witness from. This prevents us from finding other impls when performing lookups into `.Self` in an impl decl, which produces incorrect/incoherent results.
This commit is contained in:
+47
-47
@@ -113,24 +113,24 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.ced: <witness> = lookup_impl_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.cba: %.Self.frozen.as_type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f01: <witness> = impl_self_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.4da: %.Self.frozen.as_type = impl_witness_access %.f01, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.78b: <witness> = lookup_impl_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.e15: %.Self.as_type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type.14d: type = facet_type <@I where %impl.elem0.e15 = %empty_struct> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness.0ac: <witness> = impl_witness @empty_struct_type.as.I.impl.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %.00f: <witness> = impl_self_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.ca3: %.Self.as_type = impl_witness_access %.00f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type.b84: type = facet_type <@I where %impl.elem0.ca3 = %empty_struct> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness.55a: <witness> = impl_witness @empty_struct_type.as.I.impl.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %empty_struct.type.facet: %type = facet_value %empty_struct_type, () [concrete]
|
||||
// CHECK:STDOUT: %I.facet.693: %I.type = facet_value %empty_struct_type, (%I.impl_witness.0ac) [concrete]
|
||||
// CHECK:STDOUT: %I.facet.1ae: %I.type = facet_value %empty_struct_type, (%I.impl_witness.55a) [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete]
|
||||
// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete]
|
||||
// CHECK:STDOUT: %I_where.type.bc5: type = facet_type <@I where %impl.elem0.e15 = %int_0.5c6> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness.edd: <witness> = impl_witness @i32.as.I.impl.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %I_where.type.8e4: type = facet_type <@I where %impl.elem0.ca3 = %int_0.5c6> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness.ce4: <witness> = impl_witness @i32.as.I.impl.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Int.type.facet: %type = facet_value %i32, () [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete]
|
||||
@@ -148,7 +148,7 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %int_0.5c6, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete]
|
||||
// CHECK:STDOUT: %int_0.3c0: %i32 = int_value 0 [concrete]
|
||||
// CHECK:STDOUT: %I.facet.0ae: %I.type = facet_value %i32, (%I.impl_witness.edd) [concrete]
|
||||
// CHECK:STDOUT: %I.facet.0ac: %I.type = facet_value %i32, (%I.impl_witness.ce4) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -181,14 +181,14 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc8_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [concrete = constants.%assoc0.660]
|
||||
// CHECK:STDOUT: %impl.elem0.loc8_20.1: %.Self.frozen.as_type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.cba]
|
||||
// CHECK:STDOUT: %impl.elem0.loc8_20.1: %.Self.frozen.as_type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.4da]
|
||||
// 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: %rewrite.loc8_23.1 = requirement_rewrite %impl.elem0.loc8_20.1, %.loc8_26.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc8_20.2: %.Self.as_type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e15]
|
||||
// CHECK:STDOUT: %impl.elem0.loc8_20.2: %.Self.as_type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.ca3]
|
||||
// CHECK:STDOUT: %rewrite.loc8_23.2 = requirement_rewrite %impl.elem0.loc8_20.2, %.loc8_26.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc8_14: type = where_expr [concrete = constants.%I_where.type.14d] {
|
||||
// CHECK:STDOUT: %.loc8_14: type = where_expr [concrete = constants.%I_where.type.b84] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc8_23.2 = requirement_rewrite %impl.elem0.loc8_20.2, %.loc8_26.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -202,12 +202,12 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc10_21: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [concrete = constants.%assoc0.660]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_21.1: %.Self.frozen.as_type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.cba]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_21.1: %.Self.frozen.as_type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.4da]
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6]
|
||||
// CHECK:STDOUT: %rewrite.loc10_24.1 = requirement_rewrite %impl.elem0.loc10_21.1, %int_0 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_21.2: %.Self.as_type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e15]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_21.2: %.Self.as_type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.ca3]
|
||||
// CHECK:STDOUT: %rewrite.loc10_24.2 = requirement_rewrite %impl.elem0.loc10_21.2, %int_0 [concrete]
|
||||
// CHECK:STDOUT: %.loc10_15.1: type = where_expr [concrete = constants.%I_where.type.bc5] {
|
||||
// CHECK:STDOUT: %.loc10_15.1: type = where_expr [concrete = constants.%I_where.type.8e4] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc10_24.2 = requirement_rewrite %impl.elem0.loc10_21.2, %int_0 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -231,19 +231,19 @@ fn CallF() {
|
||||
// CHECK:STDOUT: !requires:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @empty_struct_type.as.I.impl: %.loc8_7.2 as %.loc8_14 {
|
||||
// CHECK:STDOUT: impl @empty_struct_type.as.I.impl: %.loc8_7.2 as %I.ref {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @empty_struct_type.as.I.impl [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.0ac]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.55a]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: %empty_struct_type = impl_witness_assoc_constant constants.%empty_struct [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc8_14
|
||||
// CHECK:STDOUT: extend %I.ref
|
||||
// CHECK:STDOUT: witness = %I.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @i32.as.I.impl: %i32 as %.loc10_15.1 {
|
||||
// CHECK:STDOUT: impl @i32.as.I.impl: %i32 as %I.ref {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @i32.as.I.impl [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.edd]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.ce4]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_15: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39]
|
||||
// CHECK:STDOUT: %bound_method.loc10_15.1: <bound method> = bound_method constants.%int_0.5c6, %impl.elem0.loc10_15 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem0.loc10_15, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn]
|
||||
@@ -254,7 +254,7 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: %i32 = impl_witness_assoc_constant constants.%int_0.3c0 [concrete = constants.%int_0.3c0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc10_15.1
|
||||
// CHECK:STDOUT: extend %I.ref
|
||||
// CHECK:STDOUT: witness = %I.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -276,9 +276,9 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %Self.as_type => constants.%empty_struct_type
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @I.WithSelf(constants.%I.facet.693) {
|
||||
// CHECK:STDOUT: specific @I.WithSelf(constants.%I.facet.1ae) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %Self => constants.%I.facet.693
|
||||
// CHECK:STDOUT: %Self => constants.%I.facet.1ae
|
||||
// CHECK:STDOUT: %Self.as_type => constants.%empty_struct_type
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -288,9 +288,9 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %Self.as_type => constants.%i32
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @I.WithSelf(constants.%I.facet.0ae) {
|
||||
// CHECK:STDOUT: specific @I.WithSelf(constants.%I.facet.0ac) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %Self => constants.%I.facet.0ae
|
||||
// CHECK:STDOUT: %Self => constants.%I.facet.0ac
|
||||
// CHECK:STDOUT: %Self.as_type => constants.%i32
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -306,14 +306,14 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.ced: <witness> = lookup_impl_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.cba: %.Self.frozen.as_type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f01: <witness> = impl_self_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.4da: %.Self.frozen.as_type = impl_witness_access %.f01, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.78b: <witness> = lookup_impl_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.e15: %.Self.as_type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e15 = %int_0> [concrete]
|
||||
// CHECK:STDOUT: %.00f: <witness> = impl_self_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.ca3: %.Self.as_type = impl_witness_access %.00f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.ca3 = %int_0> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness @empty_struct_type.as.I.impl.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %empty_struct.type.facet: %type = facet_value %empty_struct_type, () [concrete]
|
||||
@@ -348,10 +348,10 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc15_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [concrete = constants.%assoc0.660]
|
||||
// CHECK:STDOUT: %impl.elem0.loc15_20.1: %.Self.frozen.as_type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.cba]
|
||||
// CHECK:STDOUT: %impl.elem0.loc15_20.1: %.Self.frozen.as_type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.4da]
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0]
|
||||
// CHECK:STDOUT: %rewrite.loc15_23.1 = requirement_rewrite %impl.elem0.loc15_20.1, %int_0 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc15_20.2: %.Self.as_type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e15]
|
||||
// CHECK:STDOUT: %impl.elem0.loc15_20.2: %.Self.as_type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.ca3]
|
||||
// CHECK:STDOUT: %rewrite.loc15_23.2 = requirement_rewrite %impl.elem0.loc15_20.2, %int_0 [concrete]
|
||||
// CHECK:STDOUT: %.loc15_14.1: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete]
|
||||
@@ -377,14 +377,14 @@ fn CallF() {
|
||||
// CHECK:STDOUT: !requires:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @empty_struct_type.as.I.impl: %.loc15_7.2 as %.loc15_14.1 {
|
||||
// CHECK:STDOUT: impl @empty_struct_type.as.I.impl: %.loc15_7.2 as %I.ref {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @empty_struct_type.as.I.impl [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness]
|
||||
// CHECK:STDOUT: %.loc15_14.2: %empty_struct_type = converted constants.%int_0, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: <error> = impl_witness_assoc_constant <error> [concrete = <error>]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc15_14.1
|
||||
// CHECK:STDOUT: extend %I.ref
|
||||
// CHECK:STDOUT: witness = %I.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -444,13 +444,13 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %C.val: %C = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.ced: <witness> = lookup_impl_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.cba: %.Self.frozen.as_type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f01: <witness> = impl_self_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.4da: %.Self.frozen.as_type = impl_witness_access %.f01, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.78b: <witness> = lookup_impl_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.e15: %.Self.as_type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e15 = %empty_tuple> [concrete]
|
||||
// CHECK:STDOUT: %.00f: <witness> = impl_self_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.ca3: %.Self.as_type = impl_witness_access %.00f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.ca3 = %empty_tuple> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %C.type.facet: %type = facet_value %C, () [concrete]
|
||||
@@ -494,12 +494,12 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc18_19: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [concrete = constants.%assoc0.660]
|
||||
// CHECK:STDOUT: %impl.elem0.loc18_19.1: %.Self.frozen.as_type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.cba]
|
||||
// CHECK:STDOUT: %impl.elem0.loc18_19.1: %.Self.frozen.as_type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.4da]
|
||||
// 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: %rewrite.loc18_22.1 = requirement_rewrite %impl.elem0.loc18_19.1, %.loc18_25.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc18_19.2: %.Self.as_type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e15]
|
||||
// CHECK:STDOUT: %impl.elem0.loc18_19.2: %.Self.as_type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.ca3]
|
||||
// CHECK:STDOUT: %rewrite.loc18_22.2 = requirement_rewrite %impl.elem0.loc18_19.2, %.loc18_25.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc18_13.1: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete]
|
||||
@@ -553,7 +553,7 @@ fn CallF() {
|
||||
// CHECK:STDOUT: witness = %ImplicitAs.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @C.as.I.impl: %C.ref as %.loc18_13.1 {
|
||||
// CHECK:STDOUT: impl @C.as.I.impl: %C.ref as %I.ref {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C.as.I.impl [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness]
|
||||
// CHECK:STDOUT: %impl.elem0.loc18_13: %.829 = impl_witness_access constants.%ImplicitAs.impl_witness, element0 [concrete = constants.%empty_tuple.type.as.ImplicitAs.impl.Convert]
|
||||
@@ -566,7 +566,7 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: <error> = impl_witness_assoc_constant <error> [concrete = <error>]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc18_13.1
|
||||
// CHECK:STDOUT: extend %I.ref
|
||||
// CHECK:STDOUT: witness = %I.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -633,8 +633,8 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete]
|
||||
// CHECK:STDOUT: %Negate.impl_witness: <witness> = impl_witness imports.%Negate.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value Core.IntLiteral, (%Negate.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %Negate.WithSelf.Op.type.f03: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete]
|
||||
// CHECK:STDOUT: %.02b: type = fn_type_with_self_type %Negate.WithSelf.Op.type.f03, %Negate.facet [concrete]
|
||||
// CHECK:STDOUT: %Negate.WithSelf.Op.type.db1: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete]
|
||||
// CHECK:STDOUT: %.e9b: type = fn_type_with_self_type %Negate.WithSelf.Op.type.db1, %Negate.facet [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.type: type = fn_type @Core.IntLiteral.as.Negate.impl.Op [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op: %Core.IntLiteral.as.Negate.impl.Op.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.bound: <bound method> = bound_method %int_1, %Core.IntLiteral.as.Negate.impl.Op [concrete]
|
||||
@@ -683,7 +683,7 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %.loc15_7.2: type = converted %.loc15_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.335 = name_ref I, file.%I.decl [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1]
|
||||
// CHECK:STDOUT: %impl.elem1: %.02b = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op]
|
||||
// CHECK:STDOUT: %impl.elem1: %.e9b = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %int_1, %impl.elem1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op.bound]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.call: init Core.IntLiteral = call %bound_method(%int_1) [concrete = constants.%int_-1]
|
||||
// CHECK:STDOUT: %.loc15_16.1: Core.IntLiteral = value_of_initializer %Core.IntLiteral.as.Negate.impl.Op.call [concrete = constants.%int_-1]
|
||||
|
||||
+65
-65
@@ -500,13 +500,13 @@ impl C as Y {}
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.ced: <witness> = lookup_impl_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f01: <witness> = impl_self_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.fc9: type = impl_witness_access %.f01, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.78b: <witness> = lookup_impl_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e55 = %empty_tuple.type> [concrete]
|
||||
// CHECK:STDOUT: %.00f: <witness> = impl_self_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type.d99: type = facet_type <@I where %impl.elem0.c0c = %empty_tuple.type> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness @empty_struct_type.as.I.impl.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %empty_struct_type, (%I.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -535,13 +535,13 @@ impl C as Y {}
|
||||
// CHECK:STDOUT: %.Self.as_type.loc6: type = facet_access_type %.Self.ref.loc6 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc6_20: type = converted %.Self.ref.loc6, %.Self.as_type.loc6 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc6: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_20.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// 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: %rewrite.loc6_23.1 = requirement_rewrite %impl.elem0.loc6_20.1, %.loc6_26.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_20.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %rewrite.loc6_23.2 = requirement_rewrite %impl.elem0.loc6_20.2, %.loc6_26.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc6_14: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %.loc6_14: type = where_expr [concrete = constants.%I_where.type.d99] {
|
||||
// CHECK:STDOUT: %base_facet_type.loc6 = requirement_base_facet_type %I.ref.loc6 [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc6_23.2 = requirement_rewrite %impl.elem0.loc6_20.2, %.loc6_26.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -556,13 +556,13 @@ impl C as Y {}
|
||||
// CHECK:STDOUT: %.Self.as_type.loc8: type = facet_access_type %.Self.ref.loc8 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc8_20: type = converted %.Self.ref.loc8, %.Self.as_type.loc8 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc8: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc8_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc8_20.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// 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: %rewrite.loc8_23.1 = requirement_rewrite %impl.elem0.loc8_20.1, %.loc8_26.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc8_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc8_20.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %rewrite.loc8_23.2 = requirement_rewrite %impl.elem0.loc8_20.2, %.loc8_26.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc8_14: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %.loc8_14: type = where_expr [concrete = constants.%I_where.type.d99] {
|
||||
// CHECK:STDOUT: %base_facet_type.loc8 = requirement_base_facet_type %I.ref.loc8 [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc8_23.2 = requirement_rewrite %impl.elem0.loc8_20.2, %.loc8_26.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -586,13 +586,13 @@ impl C as Y {}
|
||||
// CHECK:STDOUT: !requires:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @empty_struct_type.as.I.impl: %.loc6_7.2 as %.loc6_14 {
|
||||
// CHECK:STDOUT: impl @empty_struct_type.as.I.impl: %.loc6_7.2 as %I.ref.loc6 {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @empty_struct_type.as.I.impl [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc6_14
|
||||
// CHECK:STDOUT: extend %I.ref.loc6
|
||||
// CHECK:STDOUT: witness = %I.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -620,14 +620,14 @@ impl C as Y {}
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.ced: <witness> = lookup_impl_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f01: <witness> = impl_self_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.fc9: type = impl_witness_access %.f01, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.78b: <witness> = lookup_impl_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e55 = %empty_tuple.type> [concrete]
|
||||
// CHECK:STDOUT: %.00f: <witness> = impl_self_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type.d99: type = facet_type <@I where %impl.elem0.c0c = %empty_tuple.type> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete]
|
||||
@@ -660,13 +660,13 @@ impl C as Y {}
|
||||
// CHECK:STDOUT: %.Self.as_type.loc7: type = facet_access_type %.Self.ref.loc7 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc7_19: type = converted %.Self.ref.loc7, %.Self.as_type.loc7 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc7: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_19.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_19.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// 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: %rewrite.loc7_22.1 = requirement_rewrite %impl.elem0.loc7_19.1, %.loc7_25.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_19.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_19.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %rewrite.loc7_22.2 = requirement_rewrite %impl.elem0.loc7_19.2, %.loc7_25.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc7_13: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %.loc7_13: type = where_expr [concrete = constants.%I_where.type.d99] {
|
||||
// CHECK:STDOUT: %base_facet_type.loc7 = requirement_base_facet_type %I.ref.loc7 [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc7_22.2 = requirement_rewrite %impl.elem0.loc7_19.2, %.loc7_25.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -694,13 +694,13 @@ impl C as Y {}
|
||||
// CHECK:STDOUT: %.Self.as_type.loc11: type = facet_access_type %.Self.ref.loc11 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc11_19: type = converted %.Self.ref.loc11, %.Self.as_type.loc11 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc11: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_19.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_19.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// 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: %rewrite.loc11_22.1 = requirement_rewrite %impl.elem0.loc11_19.1, %.loc11_25.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_19.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_19.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %rewrite.loc11_22.2 = requirement_rewrite %impl.elem0.loc11_19.2, %.loc11_25.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc11_13: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %.loc11_13: type = where_expr [concrete = constants.%I_where.type.d99] {
|
||||
// CHECK:STDOUT: %base_facet_type.loc11 = requirement_base_facet_type %I.ref.loc11 [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc11_22.2 = requirement_rewrite %impl.elem0.loc11_19.2, %.loc11_25.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -724,13 +724,13 @@ impl C as Y {}
|
||||
// CHECK:STDOUT: !requires:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @C.as.I.impl: %C.ref.loc7 as %.loc7_13 {
|
||||
// CHECK:STDOUT: impl @C.as.I.impl: %C.ref.loc7 as %I.ref.loc7 {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C.as.I.impl [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc7_13
|
||||
// CHECK:STDOUT: extend %I.ref.loc7
|
||||
// CHECK:STDOUT: witness = %I.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -772,14 +772,14 @@ impl C as Y {}
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.ced: <witness> = lookup_impl_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f01: <witness> = impl_self_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.fc9: type = impl_witness_access %.f01, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.78b: <witness> = lookup_impl_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e55 = %empty_tuple.type> [concrete]
|
||||
// CHECK:STDOUT: %.00f: <witness> = impl_self_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type.d99: type = facet_type <@I where %impl.elem0.c0c = %empty_tuple.type> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete]
|
||||
@@ -812,13 +812,13 @@ impl C as Y {}
|
||||
// CHECK:STDOUT: %.Self.as_type.loc7: type = facet_access_type %.Self.ref.loc7 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc7_19: type = converted %.Self.ref.loc7, %.Self.as_type.loc7 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc7: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_19.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_19.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// 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: %rewrite.loc7_22.1 = requirement_rewrite %impl.elem0.loc7_19.1, %.loc7_25.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_19.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_19.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %rewrite.loc7_22.2 = requirement_rewrite %impl.elem0.loc7_19.2, %.loc7_25.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc7_13: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %.loc7_13: type = where_expr [concrete = constants.%I_where.type.d99] {
|
||||
// CHECK:STDOUT: %base_facet_type.loc7 = requirement_base_facet_type %I.ref.loc7 [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc7_22.2 = requirement_rewrite %impl.elem0.loc7_19.2, %.loc7_25.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -848,13 +848,13 @@ impl C as Y {}
|
||||
// CHECK:STDOUT: %.Self.as_type.loc11: type = facet_access_type %.Self.ref.loc11 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc11_19: type = converted %.Self.ref.loc11, %.Self.as_type.loc11 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc11: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_19.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_19.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// 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: %rewrite.loc11_22.1 = requirement_rewrite %impl.elem0.loc11_19.1, %.loc11_25.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_19.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_19.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %rewrite.loc11_22.2 = requirement_rewrite %impl.elem0.loc11_19.2, %.loc11_25.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc11_13: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %.loc11_13: type = where_expr [concrete = constants.%I_where.type.d99] {
|
||||
// CHECK:STDOUT: %base_facet_type.loc11 = requirement_base_facet_type %I.ref.loc11 [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc11_22.2 = requirement_rewrite %impl.elem0.loc11_19.2, %.loc11_25.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -878,13 +878,13 @@ impl C as Y {}
|
||||
// CHECK:STDOUT: !requires:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @C.as.I.impl: %C.ref.loc7 as %.loc7_13 {
|
||||
// CHECK:STDOUT: impl @C.as.I.impl: %C.ref.loc7 as %I.ref.loc7 {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C.as.I.impl [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc7_13
|
||||
// CHECK:STDOUT: extend %I.ref.loc7
|
||||
// CHECK:STDOUT: witness = %I.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -1152,12 +1152,12 @@ impl C as Y {}
|
||||
// CHECK:STDOUT: %I.assoc_type.fc8: type = assoc_entity_type @I, @I(%C) [concrete]
|
||||
// CHECK:STDOUT: %assoc0.540: %I.assoc_type.fc8 = assoc_entity element0, @I.WithSelf.%T [concrete]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.a85 [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.2b8: <witness> = lookup_impl_witness %.Self.frozen.a85, @I, @I(%C) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.c46: type = impl_witness_access %I.lookup_impl_witness.2b8, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.91c: <witness> = impl_self_witness %.Self.frozen.a85, @I, @I(%C) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.317: type = impl_witness_access %.91c, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self: %I.type.c9e = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.e58: <witness> = lookup_impl_witness %.Self, @I, @I(%C) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.0dc: type = impl_witness_access %I.lookup_impl_witness.e58, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I, @I(%C) where %impl.elem0.0dc = %C> [concrete]
|
||||
// CHECK:STDOUT: %.b67: <witness> = impl_self_witness %.Self, @I, @I(%C) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.f8c: type = impl_witness_access %.b67, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type.52d: type = facet_type <@I, @I(%C) where %impl.elem0.f8c = %C> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness @D.as.I.impl.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type.c9e = facet_value %D, (%I.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1200,12 +1200,12 @@ impl C as Y {}
|
||||
// CHECK:STDOUT: %.loc8_22.1: type = converted %.Self.ref.loc8, %.Self.as_type.loc8 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc8_22.2: %I.assoc_type.fc8 = specific_constant @T.%assoc0, @I.WithSelf(constants.%C, constants.%.Self.frozen.a85) [concrete = constants.%assoc0.540]
|
||||
// CHECK:STDOUT: %T.ref.loc8: %I.assoc_type.fc8 = name_ref T, %.loc8_22.2 [concrete = constants.%assoc0.540]
|
||||
// CHECK:STDOUT: %impl.elem0.loc8_22.1: type = impl_witness_access constants.%I.lookup_impl_witness.2b8, element0 [symbolic_self = constants.%impl.elem0.c46]
|
||||
// CHECK:STDOUT: %impl.elem0.loc8_22.1: type = impl_witness_access constants.%.91c, element0 [symbolic_self = constants.%impl.elem0.317]
|
||||
// CHECK:STDOUT: %C.ref.loc8_27: type = name_ref C, file.%C.decl.loc6 [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %rewrite.loc8_25.1 = requirement_rewrite %impl.elem0.loc8_22.1, %C.ref.loc8_27 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc8_22.2: type = impl_witness_access constants.%I.lookup_impl_witness.e58, element0 [symbolic_self = constants.%impl.elem0.0dc]
|
||||
// CHECK:STDOUT: %impl.elem0.loc8_22.2: type = impl_witness_access constants.%.b67, element0 [symbolic_self = constants.%impl.elem0.f8c]
|
||||
// CHECK:STDOUT: %rewrite.loc8_25.2 = requirement_rewrite %impl.elem0.loc8_22.2, %C.ref.loc8_27 [concrete]
|
||||
// CHECK:STDOUT: %.loc8_16: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %.loc8_16: type = where_expr [concrete = constants.%I_where.type.52d] {
|
||||
// CHECK:STDOUT: %base_facet_type.loc8 = requirement_base_facet_type %I.type.loc8 [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc8_25.2 = requirement_rewrite %impl.elem0.loc8_22.2, %C.ref.loc8_27 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1223,12 +1223,12 @@ impl C as Y {}
|
||||
// CHECK:STDOUT: %.loc11_22.1: type = converted %.Self.ref.loc11, %.Self.as_type.loc11 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc11_22.2: %I.assoc_type.fc8 = specific_constant @T.%assoc0, @I.WithSelf(constants.%C, constants.%.Self.frozen.a85) [concrete = constants.%assoc0.540]
|
||||
// CHECK:STDOUT: %T.ref.loc11: %I.assoc_type.fc8 = name_ref T, %.loc11_22.2 [concrete = constants.%assoc0.540]
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_22.1: type = impl_witness_access constants.%I.lookup_impl_witness.2b8, element0 [symbolic_self = constants.%impl.elem0.c46]
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_22.1: type = impl_witness_access constants.%.91c, element0 [symbolic_self = constants.%impl.elem0.317]
|
||||
// CHECK:STDOUT: %C.ref.loc11_27: type = name_ref C, file.%C.decl.loc6 [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %rewrite.loc11_25.1 = requirement_rewrite %impl.elem0.loc11_22.1, %C.ref.loc11_27 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_22.2: type = impl_witness_access constants.%I.lookup_impl_witness.e58, element0 [symbolic_self = constants.%impl.elem0.0dc]
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_22.2: type = impl_witness_access constants.%.b67, element0 [symbolic_self = constants.%impl.elem0.f8c]
|
||||
// CHECK:STDOUT: %rewrite.loc11_25.2 = requirement_rewrite %impl.elem0.loc11_22.2, %C.ref.loc11_27 [concrete]
|
||||
// CHECK:STDOUT: %.loc11_16: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %.loc11_16: type = where_expr [concrete = constants.%I_where.type.52d] {
|
||||
// CHECK:STDOUT: %base_facet_type.loc11 = requirement_base_facet_type %I.type.loc11 [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc11_25.2 = requirement_rewrite %impl.elem0.loc11_22.2, %C.ref.loc11_27 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1261,13 +1261,13 @@ impl C as Y {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @D.as.I.impl: %D.ref.loc8 as %.loc8_16 {
|
||||
// CHECK:STDOUT: impl @D.as.I.impl: %D.ref.loc8 as %I.type.loc8 {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @D.as.I.impl [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%C [concrete = constants.%C]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc8_16
|
||||
// CHECK:STDOUT: extend %I.type.loc8
|
||||
// CHECK:STDOUT: witness = %I.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -1591,14 +1591,14 @@ impl C as Y {}
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.ced: <witness> = lookup_impl_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f01: <witness> = impl_self_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.fc9: type = impl_witness_access %.f01, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.78b: <witness> = lookup_impl_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e55 = %empty_tuple.type> [concrete]
|
||||
// CHECK:STDOUT: %.00f: <witness> = impl_self_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type.d99: type = facet_type <@I where %impl.elem0.c0c = %empty_tuple.type> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness @C.as.I.impl.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C, (%I.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1628,13 +1628,13 @@ impl C as Y {}
|
||||
// CHECK:STDOUT: %.Self.as_type.loc9: type = facet_access_type %.Self.ref.loc9 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc9_19: type = converted %.Self.ref.loc9, %.Self.as_type.loc9 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc9: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_19.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_19.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// 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: %rewrite.loc9_22.1 = requirement_rewrite %impl.elem0.loc9_19.1, %.loc9_25.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_19.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_19.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %rewrite.loc9_22.2 = requirement_rewrite %impl.elem0.loc9_19.2, %.loc9_25.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc9_13: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %.loc9_13: type = where_expr [concrete = constants.%I_where.type.d99] {
|
||||
// CHECK:STDOUT: %base_facet_type.loc9 = requirement_base_facet_type %I.ref.loc9 [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc9_22.2 = requirement_rewrite %impl.elem0.loc9_19.2, %.loc9_25.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1648,13 +1648,13 @@ impl C as Y {}
|
||||
// CHECK:STDOUT: %.Self.as_type.loc18: type = facet_access_type %.Self.ref.loc18 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc18_19: type = converted %.Self.ref.loc18, %.Self.as_type.loc18 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc18: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc18_19.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc18_19.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// 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: %rewrite.loc18_22.1 = requirement_rewrite %impl.elem0.loc18_19.1, %.loc18_25.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc18_19.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc18_19.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %rewrite.loc18_22.2 = requirement_rewrite %impl.elem0.loc18_19.2, %.loc18_25.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc18_13: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %.loc18_13: type = where_expr [concrete = constants.%I_where.type.d99] {
|
||||
// CHECK:STDOUT: %base_facet_type.loc18 = requirement_base_facet_type %I.ref.loc18 [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc18_22.2 = requirement_rewrite %impl.elem0.loc18_19.2, %.loc18_25.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1682,13 +1682,13 @@ impl C as Y {}
|
||||
// CHECK:STDOUT: !requires:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @C.as.I.impl: %C.ref.loc9 as %.loc9_13 {
|
||||
// CHECK:STDOUT: impl @C.as.I.impl: %C.ref.loc9 as %I.ref.loc9 {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant, <error>), @C.as.I.impl [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc9_13
|
||||
// CHECK:STDOUT: extend %I.ref.loc9
|
||||
// CHECK:STDOUT: witness = %I.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+33
-33
@@ -433,8 +433,8 @@ fn G() {
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self.frozen: %L.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %L.lookup_impl_witness.b2f: <witness> = lookup_impl_witness %.Self.frozen, @L [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.faf: type = impl_witness_access %L.lookup_impl_witness.b2f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.63f: <witness> = impl_self_witness %.Self.frozen, @L [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.2e9: type = impl_witness_access %.63f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %tuple.type.2d5: type = tuple_type (%empty_tuple.type, %empty_tuple.type, %empty_tuple.type) [concrete]
|
||||
// CHECK:STDOUT: %tuple.7e4: %tuple.type.2d5 = tuple_value (%empty_tuple, %empty_tuple, %empty_tuple) [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
@@ -446,8 +446,8 @@ fn G() {
|
||||
// CHECK:STDOUT: %tuple.type.bd8: type = tuple_type (%empty_struct_type, %empty_tuple.type, %empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %tuple.d90: %tuple.type.bd8 = tuple_value (%empty_struct, %empty_tuple, %empty_struct) [concrete]
|
||||
// CHECK:STDOUT: %.Self: %L.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %L.lookup_impl_witness.2ad: <witness> = lookup_impl_witness %.Self, @L [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.c42: type = impl_witness_access %L.lookup_impl_witness.2ad, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.300: <witness> = impl_self_witness %.Self, @L [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.865: type = impl_witness_access %.300, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -461,7 +461,7 @@ fn G() {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc13_20: type = facet_access_type %.Self.ref.loc13_20 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc13_20: type = converted %.Self.ref.loc13_20, %.Self.as_type.loc13_20 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %W.ref.loc13_20: %L.assoc_type = name_ref W, @W.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_20.1: type = impl_witness_access constants.%L.lookup_impl_witness.b2f, element0 [symbolic_self = constants.%impl.elem0.faf]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_20.1: type = impl_witness_access constants.%.63f, element0 [symbolic_self = constants.%impl.elem0.2e9]
|
||||
// CHECK:STDOUT: %.loc13_27: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc13_31: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc13_35: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
@@ -475,7 +475,7 @@ fn G() {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc13_42: type = facet_access_type %.Self.ref.loc13_42 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc13_42: type = converted %.Self.ref.loc13_42, %.Self.as_type.loc13_42 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %W.ref.loc13_42: %L.assoc_type = name_ref W, @W.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_42.1: type = impl_witness_access constants.%L.lookup_impl_witness.b2f, element0 [symbolic_self = constants.%impl.elem0.faf]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_42.1: type = impl_witness_access constants.%.63f, element0 [symbolic_self = constants.%impl.elem0.2e9]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc13_42.1: type = impl_witness_access_substituted %impl.elem0.loc13_42.1, %.loc13_36.5 [concrete = constants.%tuple.type.2d5]
|
||||
// CHECK:STDOUT: %.loc13_49: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc13_53: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
@@ -490,7 +490,7 @@ fn G() {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc13_64: type = facet_access_type %.Self.ref.loc13_64 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc13_64: type = converted %.Self.ref.loc13_64, %.Self.as_type.loc13_64 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %W.ref.loc13_64: %L.assoc_type = name_ref W, @W.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_64.1: type = impl_witness_access constants.%L.lookup_impl_witness.b2f, element0 [symbolic_self = constants.%impl.elem0.faf]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_64.1: type = impl_witness_access constants.%.63f, element0 [symbolic_self = constants.%impl.elem0.2e9]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc13_64.1: type = impl_witness_access_substituted %impl.elem0.loc13_64.1, %.loc13_36.5 [concrete = constants.%tuple.type.2d5]
|
||||
// CHECK:STDOUT: %.loc13_71: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc13_75: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
@@ -505,7 +505,7 @@ fn G() {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc13_86: type = facet_access_type %.Self.ref.loc13_86 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc13_86: type = converted %.Self.ref.loc13_86, %.Self.as_type.loc13_86 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %W.ref.loc13_86: %L.assoc_type = name_ref W, @W.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_86.1: type = impl_witness_access constants.%L.lookup_impl_witness.b2f, element0 [symbolic_self = constants.%impl.elem0.faf]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_86.1: type = impl_witness_access constants.%.63f, element0 [symbolic_self = constants.%impl.elem0.2e9]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc13_86.1: type = impl_witness_access_substituted %impl.elem0.loc13_86.1, %.loc13_36.5 [concrete = constants.%tuple.type.2d5]
|
||||
// CHECK:STDOUT: %.loc13_93: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc13_97: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
@@ -516,15 +516,15 @@ fn G() {
|
||||
// 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: %rewrite.loc13_89.1 = requirement_rewrite %impl.elem0.subst.loc13_86.1, %.loc13_102.5 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_20.2: type = impl_witness_access constants.%L.lookup_impl_witness.2ad, element0 [symbolic_self = constants.%impl.elem0.c42]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_20.2: type = impl_witness_access constants.%.300, element0 [symbolic_self = constants.%impl.elem0.865]
|
||||
// CHECK:STDOUT: %rewrite.loc13_23.2 = requirement_rewrite %impl.elem0.loc13_20.2, %.loc13_36.5 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_42.2: type = impl_witness_access constants.%L.lookup_impl_witness.2ad, element0 [symbolic_self = constants.%impl.elem0.c42]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_42.2: type = impl_witness_access constants.%.300, element0 [symbolic_self = constants.%impl.elem0.865]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc13_42.2: type = impl_witness_access_substituted %impl.elem0.loc13_42.2, %.loc13_36.5 [concrete = constants.%tuple.type.2d5]
|
||||
// CHECK:STDOUT: %rewrite.loc13_45.2 = requirement_rewrite %impl.elem0.subst.loc13_42.2, %.loc13_58.5 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_64.2: type = impl_witness_access constants.%L.lookup_impl_witness.2ad, element0 [symbolic_self = constants.%impl.elem0.c42]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_64.2: type = impl_witness_access constants.%.300, element0 [symbolic_self = constants.%impl.elem0.865]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc13_64.2: type = impl_witness_access_substituted %impl.elem0.loc13_64.2, %.loc13_36.5 [concrete = constants.%tuple.type.2d5]
|
||||
// CHECK:STDOUT: %rewrite.loc13_67.2 = requirement_rewrite %impl.elem0.subst.loc13_64.2, %.loc13_80.5 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_86.2: type = impl_witness_access constants.%L.lookup_impl_witness.2ad, element0 [symbolic_self = constants.%impl.elem0.c42]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_86.2: type = impl_witness_access constants.%.300, element0 [symbolic_self = constants.%impl.elem0.865]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc13_86.2: type = impl_witness_access_substituted %impl.elem0.loc13_86.2, %.loc13_36.5 [concrete = constants.%tuple.type.2d5]
|
||||
// CHECK:STDOUT: %rewrite.loc13_89.2 = requirement_rewrite %impl.elem0.subst.loc13_86.2, %.loc13_102.5 [concrete]
|
||||
// CHECK:STDOUT: %.loc13_14: type = where_expr [concrete = <error>] {
|
||||
@@ -555,15 +555,15 @@ fn G() {
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self.frozen: %M.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %M.lookup_impl_witness.beb: <witness> = lookup_impl_witness %.Self.frozen, @M [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.352: type = impl_witness_access %M.lookup_impl_witness.beb, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem1.66c: type = impl_witness_access %M.lookup_impl_witness.beb, element1 [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem2.c22: type = impl_witness_access %M.lookup_impl_witness.beb, element2 [symbolic_self]
|
||||
// CHECK:STDOUT: %.b7a: <witness> = impl_self_witness %.Self.frozen, @M [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.88c: type = impl_witness_access %.b7a, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem1.17a: type = impl_witness_access %.b7a, element1 [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem2.efd: type = impl_witness_access %.b7a, element2 [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self: %M.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %M.lookup_impl_witness.e09: <witness> = lookup_impl_witness %.Self, @M [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.c24: type = impl_witness_access %M.lookup_impl_witness.e09, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem1.e3e: type = impl_witness_access %M.lookup_impl_witness.e09, element1 [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem2.017: type = impl_witness_access %M.lookup_impl_witness.e09, element2 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f89: <witness> = impl_self_witness %.Self, @M [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.dfb: type = impl_witness_access %.f89, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem1.bb0: type = impl_witness_access %.f89, element1 [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem2.d85: type = impl_witness_access %.f89, element2 [symbolic_self]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -577,42 +577,42 @@ fn G() {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc13_20: type = facet_access_type %.Self.ref.loc13_20 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc13_20: type = converted %.Self.ref.loc13_20, %.Self.as_type.loc13_20 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %X.ref.loc13_20: %M.assoc_type = name_ref X, @X.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_20.1: type = impl_witness_access constants.%M.lookup_impl_witness.beb, element0 [symbolic_self = constants.%impl.elem0.352]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_20.1: type = impl_witness_access constants.%.b7a, element0 [symbolic_self = constants.%impl.elem0.88c]
|
||||
// CHECK:STDOUT: %.Self.ref.loc13_25: %M.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen]
|
||||
// CHECK:STDOUT: %.Self.as_type.loc13_25: type = facet_access_type %.Self.ref.loc13_25 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc13_25: type = converted %.Self.ref.loc13_25, %.Self.as_type.loc13_25 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %Y.ref.loc13_25: %M.assoc_type = name_ref Y, @Y.%assoc1 [concrete = constants.%assoc1]
|
||||
// CHECK:STDOUT: %impl.elem1.loc13_25.1: type = impl_witness_access constants.%M.lookup_impl_witness.beb, element1 [symbolic_self = constants.%impl.elem1.66c]
|
||||
// CHECK:STDOUT: %impl.elem1.loc13_25.1: type = impl_witness_access constants.%.b7a, element1 [symbolic_self = constants.%impl.elem1.17a]
|
||||
// CHECK:STDOUT: %rewrite.loc13_23.1 = requirement_rewrite %impl.elem0.loc13_20.1, %impl.elem1.loc13_25.1 [concrete]
|
||||
// CHECK:STDOUT: %.Self.ref.loc13_32: %M.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen]
|
||||
// CHECK:STDOUT: %.Self.as_type.loc13_32: type = facet_access_type %.Self.ref.loc13_32 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc13_32: type = converted %.Self.ref.loc13_32, %.Self.as_type.loc13_32 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %Y.ref.loc13_32: %M.assoc_type = name_ref Y, @Y.%assoc1 [concrete = constants.%assoc1]
|
||||
// CHECK:STDOUT: %impl.elem1.loc13_32.1: type = impl_witness_access constants.%M.lookup_impl_witness.beb, element1 [symbolic_self = constants.%impl.elem1.66c]
|
||||
// CHECK:STDOUT: %impl.elem1.loc13_32.1: type = impl_witness_access constants.%.b7a, element1 [symbolic_self = constants.%impl.elem1.17a]
|
||||
// CHECK:STDOUT: %.Self.ref.loc13_37: %M.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen]
|
||||
// CHECK:STDOUT: %.Self.as_type.loc13_37: type = facet_access_type %.Self.ref.loc13_37 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc13_37: type = converted %.Self.ref.loc13_37, %.Self.as_type.loc13_37 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %X.ref.loc13_37: %M.assoc_type = name_ref X, @X.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_37.1: type = impl_witness_access constants.%M.lookup_impl_witness.beb, element0 [symbolic_self = constants.%impl.elem0.352]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc13_37.1: type = impl_witness_access_substituted %impl.elem0.loc13_37.1, %impl.elem1.loc13_25.1 [symbolic_self = constants.%impl.elem1.66c]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_37.1: type = impl_witness_access constants.%.b7a, element0 [symbolic_self = constants.%impl.elem0.88c]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc13_37.1: type = impl_witness_access_substituted %impl.elem0.loc13_37.1, %impl.elem1.loc13_25.1 [symbolic_self = constants.%impl.elem1.17a]
|
||||
// CHECK:STDOUT: %rewrite.loc13_35.1 = requirement_rewrite %impl.elem1.loc13_32.1, %impl.elem0.subst.loc13_37.1 [concrete]
|
||||
// CHECK:STDOUT: %.Self.ref.loc13_44: %M.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen]
|
||||
// CHECK:STDOUT: %.Self.as_type.loc13_44: type = facet_access_type %.Self.ref.loc13_44 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc13_44: type = converted %.Self.ref.loc13_44, %.Self.as_type.loc13_44 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %Z.ref: %M.assoc_type = name_ref Z, @Z.%assoc2 [concrete = constants.%assoc2]
|
||||
// CHECK:STDOUT: %impl.elem2.loc13_44.1: type = impl_witness_access constants.%M.lookup_impl_witness.beb, element2 [symbolic_self = constants.%impl.elem2.c22]
|
||||
// CHECK:STDOUT: %impl.elem2.loc13_44.1: type = impl_witness_access constants.%.b7a, element2 [symbolic_self = constants.%impl.elem2.efd]
|
||||
// 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: %rewrite.loc13_47.1 = requirement_rewrite %impl.elem2.loc13_44.1, %.loc13_50.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_20.2: type = impl_witness_access constants.%M.lookup_impl_witness.e09, element0 [symbolic_self = constants.%impl.elem0.c24]
|
||||
// CHECK:STDOUT: %impl.elem1.loc13_25.2: type = impl_witness_access constants.%M.lookup_impl_witness.e09, element1 [symbolic_self = constants.%impl.elem1.e3e]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_20.2: type = impl_witness_access constants.%.f89, element0 [symbolic_self = constants.%impl.elem0.dfb]
|
||||
// CHECK:STDOUT: %impl.elem1.loc13_25.2: type = impl_witness_access constants.%.f89, element1 [symbolic_self = constants.%impl.elem1.bb0]
|
||||
// CHECK:STDOUT: %rewrite.loc13_23.2 = requirement_rewrite %impl.elem0.loc13_20.2, %impl.elem1.loc13_25.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem1.loc13_32.2: type = impl_witness_access constants.%M.lookup_impl_witness.e09, element1 [symbolic_self = constants.%impl.elem1.e3e]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_37.2: type = impl_witness_access constants.%M.lookup_impl_witness.e09, element0 [symbolic_self = constants.%impl.elem0.c24]
|
||||
// CHECK:STDOUT: %impl.elem1.loc13_25.3: type = impl_witness_access constants.%M.lookup_impl_witness.e09, element1 [symbolic_self = constants.%impl.elem1.e3e]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc13_37.2: type = impl_witness_access_substituted %impl.elem0.loc13_37.2, %impl.elem1.loc13_25.3 [symbolic_self = constants.%impl.elem1.e3e]
|
||||
// CHECK:STDOUT: %impl.elem1.loc13_32.2: type = impl_witness_access constants.%.f89, element1 [symbolic_self = constants.%impl.elem1.bb0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_37.2: type = impl_witness_access constants.%.f89, element0 [symbolic_self = constants.%impl.elem0.dfb]
|
||||
// CHECK:STDOUT: %impl.elem1.loc13_25.3: type = impl_witness_access constants.%.f89, element1 [symbolic_self = constants.%impl.elem1.bb0]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc13_37.2: type = impl_witness_access_substituted %impl.elem0.loc13_37.2, %impl.elem1.loc13_25.3 [symbolic_self = constants.%impl.elem1.bb0]
|
||||
// CHECK:STDOUT: %rewrite.loc13_35.2 = requirement_rewrite %impl.elem1.loc13_32.2, %impl.elem0.subst.loc13_37.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem2.loc13_44.2: type = impl_witness_access constants.%M.lookup_impl_witness.e09, element2 [symbolic_self = constants.%impl.elem2.017]
|
||||
// CHECK:STDOUT: %impl.elem2.loc13_44.2: type = impl_witness_access constants.%.f89, element2 [symbolic_self = constants.%impl.elem2.d85]
|
||||
// CHECK:STDOUT: %rewrite.loc13_47.2 = requirement_rewrite %impl.elem2.loc13_44.2, %.loc13_50.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc13_14: type = where_expr [concrete = <error>] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %M.ref [concrete]
|
||||
|
||||
@@ -49,8 +49,8 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3,
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.ced: <witness> = lookup_impl_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.fad: %struct_type.a.b.486 = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f01: <witness> = impl_self_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.9f1: %struct_type.a.b.486 = impl_witness_access %.f01, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %true: bool = bool_literal true [concrete]
|
||||
// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete]
|
||||
@@ -86,8 +86,8 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3,
|
||||
// CHECK:STDOUT: %SubWith.type.4c2: type = facet_type <@SubWith, @SubWith(Core.IntLiteral)> [concrete]
|
||||
// CHECK:STDOUT: %SubWith.impl_witness: <witness> = impl_witness imports.%SubWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %SubWith.facet: %SubWith.type.4c2 = facet_value Core.IntLiteral, (%SubWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %SubWith.WithSelf.Op.type.3a8: type = fn_type @SubWith.WithSelf.Op, @SubWith.WithSelf(Core.IntLiteral, %SubWith.facet) [concrete]
|
||||
// CHECK:STDOUT: %.005: type = fn_type_with_self_type %SubWith.WithSelf.Op.type.3a8, %SubWith.facet [concrete]
|
||||
// CHECK:STDOUT: %SubWith.WithSelf.Op.type.1e8: type = fn_type @SubWith.WithSelf.Op, @SubWith.WithSelf(Core.IntLiteral, %SubWith.facet) [concrete]
|
||||
// CHECK:STDOUT: %.336: type = fn_type_with_self_type %SubWith.WithSelf.Op.type.1e8, %SubWith.facet [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.SubWith.impl.Op.type: type = fn_type @Core.IntLiteral.as.SubWith.impl.Op [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.SubWith.impl.Op: %Core.IntLiteral.as.SubWith.impl.Op.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.SubWith.impl.Op.bound: <bound method> = bound_method %int_3, %Core.IntLiteral.as.SubWith.impl.Op [concrete]
|
||||
@@ -97,15 +97,15 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3,
|
||||
// CHECK:STDOUT: %DivWith.type.e2a: type = facet_type <@DivWith, @DivWith(Core.IntLiteral)> [concrete]
|
||||
// CHECK:STDOUT: %DivWith.impl_witness: <witness> = impl_witness imports.%DivWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %DivWith.facet: %DivWith.type.e2a = facet_value Core.IntLiteral, (%DivWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %DivWith.WithSelf.Op.type.044: type = fn_type @DivWith.WithSelf.Op, @DivWith.WithSelf(Core.IntLiteral, %DivWith.facet) [concrete]
|
||||
// CHECK:STDOUT: %.e55: type = fn_type_with_self_type %DivWith.WithSelf.Op.type.044, %DivWith.facet [concrete]
|
||||
// CHECK:STDOUT: %DivWith.WithSelf.Op.type.a61: type = fn_type @DivWith.WithSelf.Op, @DivWith.WithSelf(Core.IntLiteral, %DivWith.facet) [concrete]
|
||||
// CHECK:STDOUT: %.26e: type = fn_type_with_self_type %DivWith.WithSelf.Op.type.a61, %DivWith.facet [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.DivWith.impl.Op.type: type = fn_type @Core.IntLiteral.as.DivWith.impl.Op [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.DivWith.impl.Op: %Core.IntLiteral.as.DivWith.impl.Op.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.DivWith.impl.Op.bound: <bound method> = bound_method %int_4, %Core.IntLiteral.as.DivWith.impl.Op [concrete]
|
||||
// CHECK:STDOUT: %.Self.f73: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.78b: <witness> = lookup_impl_witness %.Self.f73, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.f1e: %struct_type.a.b.486 = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.f1e = %struct.247> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %.00f: <witness> = impl_self_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.b6e: %struct_type.a.b.486 = impl_witness_access %.00f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type.58a: type = facet_type <@I where %impl.elem0.b6e = %struct.247> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness @empty_tuple.type.as.I.impl.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %empty_tuple.type, (%I.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -152,7 +152,7 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3,
|
||||
// CHECK:STDOUT: %.Self.as_type.loc6_20: type = facet_access_type %.Self.ref.loc6_20 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc6_20: type = converted %.Self.ref.loc6_20, %.Self.as_type.loc6_20 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %X.ref.loc6_20: %I.assoc_type = name_ref X, @X.%assoc0 [concrete = constants.%assoc0.6fc]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_20.1: %struct_type.a.b.486 = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.fad]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_20.1: %struct_type.a.b.486 = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.9f1]
|
||||
// CHECK:STDOUT: %true: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
|
||||
// CHECK:STDOUT: %int_2.loc6_46: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
@@ -181,18 +181,18 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3,
|
||||
// CHECK:STDOUT: %.Self.as_type.loc6_54: type = facet_access_type %.Self.ref.loc6_54 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc6_54: type = converted %.Self.ref.loc6_54, %.Self.as_type.loc6_54 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %X.ref.loc6_54: %I.assoc_type = name_ref X, @X.%assoc0 [concrete = constants.%assoc0.6fc]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_54.1: %struct_type.a.b.486 = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.fad]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_54.1: %struct_type.a.b.486 = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.9f1]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc6_54.1: %struct_type.a.b.486 = impl_witness_access_substituted %impl.elem0.loc6_54.1, %.loc6_48.3 [concrete = constants.%struct.247]
|
||||
// CHECK:STDOUT: %false: bool = bool_literal false [concrete = constants.%false]
|
||||
// CHECK:STDOUT: %.loc6_65: bool = not %false [concrete = constants.%true]
|
||||
// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3]
|
||||
// CHECK:STDOUT: %int_2.loc6_86: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
// CHECK:STDOUT: %impl.elem1.loc6_84: %.005 = impl_witness_access constants.%SubWith.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.SubWith.impl.Op]
|
||||
// CHECK:STDOUT: %impl.elem1.loc6_84: %.336 = impl_witness_access constants.%SubWith.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.SubWith.impl.Op]
|
||||
// CHECK:STDOUT: %bound_method.loc6_84: <bound method> = bound_method %int_3, %impl.elem1.loc6_84 [concrete = constants.%Core.IntLiteral.as.SubWith.impl.Op.bound]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.SubWith.impl.Op.call: init Core.IntLiteral = call %bound_method.loc6_84(%int_3, %int_2.loc6_86) [concrete = constants.%int_1.5b8]
|
||||
// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4]
|
||||
// CHECK:STDOUT: %int_2.loc6_93: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
// CHECK:STDOUT: %impl.elem1.loc6_91: %.e55 = impl_witness_access constants.%DivWith.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.DivWith.impl.Op]
|
||||
// CHECK:STDOUT: %impl.elem1.loc6_91: %.26e = impl_witness_access constants.%DivWith.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.DivWith.impl.Op]
|
||||
// CHECK:STDOUT: %bound_method.loc6_91: <bound method> = bound_method %int_4, %impl.elem1.loc6_91 [concrete = constants.%Core.IntLiteral.as.DivWith.impl.Op.bound]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.DivWith.impl.Op.call: init Core.IntLiteral = call %bound_method.loc6_91(%int_4, %int_2.loc6_93) [concrete = constants.%int_2.ecc]
|
||||
// CHECK:STDOUT: %.loc6_94.1: %tuple.type.f94 = tuple_literal (%Core.IntLiteral.as.SubWith.impl.Op.call, %Core.IntLiteral.as.DivWith.impl.Op.call) [concrete = constants.%tuple.ad8]
|
||||
@@ -220,12 +220,12 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3,
|
||||
// CHECK:STDOUT: %struct.loc6_95: %struct_type.a.b.486 = struct_value (%.loc6_65, %.loc6_95.2) [concrete = constants.%struct.247]
|
||||
// CHECK:STDOUT: %.loc6_95.3: %struct_type.a.b.486 = converted %.loc6_95.1, %struct.loc6_95 [concrete = constants.%struct.247]
|
||||
// CHECK:STDOUT: %rewrite.loc6_57.1 = requirement_rewrite %impl.elem0.subst.loc6_54.1, %.loc6_95.3 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_20.2: %struct_type.a.b.486 = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.f1e]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_20.2: %struct_type.a.b.486 = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.b6e]
|
||||
// CHECK:STDOUT: %rewrite.loc6_23.2 = requirement_rewrite %impl.elem0.loc6_20.2, %.loc6_48.3 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_54.2: %struct_type.a.b.486 = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.f1e]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_54.2: %struct_type.a.b.486 = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.b6e]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc6_54.2: %struct_type.a.b.486 = impl_witness_access_substituted %impl.elem0.loc6_54.2, %.loc6_48.3 [concrete = constants.%struct.247]
|
||||
// CHECK:STDOUT: %rewrite.loc6_57.2 = requirement_rewrite %impl.elem0.subst.loc6_54.2, %.loc6_95.3 [concrete]
|
||||
// CHECK:STDOUT: %.loc6_14: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %.loc6_14: type = where_expr [concrete = constants.%I_where.type.58a] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc6_23.2 = requirement_rewrite %impl.elem0.loc6_20.2, %.loc6_48.3 [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc6_57.2 = requirement_rewrite %impl.elem0.subst.loc6_54.2, %.loc6_95.3 [concrete]
|
||||
@@ -250,13 +250,13 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3,
|
||||
// CHECK:STDOUT: !requires:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @empty_tuple.type.as.I.impl: %.loc6_7.2 as %.loc6_14 {
|
||||
// CHECK:STDOUT: impl @empty_tuple.type.as.I.impl: %.loc6_7.2 as %I.ref {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @empty_tuple.type.as.I.impl [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: %struct_type.a.b.486 = impl_witness_assoc_constant constants.%struct.247 [concrete = constants.%struct.247]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc6_14
|
||||
// CHECK:STDOUT: extend %I.ref
|
||||
// CHECK:STDOUT: witness = %I.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -289,8 +289,8 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3,
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.ced: <witness> = lookup_impl_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.fad: %struct_type.a.b.486 = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f01: <witness> = impl_self_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.9f1: %struct_type.a.b.486 = impl_witness_access %.f01, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %true: bool = bool_literal true [concrete]
|
||||
// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete]
|
||||
@@ -333,8 +333,8 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3,
|
||||
// CHECK:STDOUT: %tuple.e16: %tuple.type.e55 = tuple_value (%int_3.410, %int_4.4eb) [concrete]
|
||||
// CHECK:STDOUT: %struct.866: %struct_type.a.b.486 = struct_value (%false, %tuple.e16) [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.78b: <witness> = lookup_impl_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.f1e: %struct_type.a.b.486 = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.00f: <witness> = impl_self_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.b6e: %struct_type.a.b.486 = impl_witness_access %.00f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -369,7 +369,7 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3,
|
||||
// CHECK:STDOUT: %.Self.as_type.loc10_20: type = facet_access_type %.Self.ref.loc10_20 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref.loc10_20, %.Self.as_type.loc10_20 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %X.ref.loc10_20: %I.assoc_type = name_ref X, @X.%assoc0 [concrete = constants.%assoc0.6fc]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.1: %struct_type.a.b.486 = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.fad]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.1: %struct_type.a.b.486 = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.9f1]
|
||||
// CHECK:STDOUT: %true: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
@@ -398,7 +398,7 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3,
|
||||
// CHECK:STDOUT: %.Self.as_type.loc10_54: type = facet_access_type %.Self.ref.loc10_54 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc10_54: type = converted %.Self.ref.loc10_54, %.Self.as_type.loc10_54 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %X.ref.loc10_54: %I.assoc_type = name_ref X, @X.%assoc0 [concrete = constants.%assoc0.6fc]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_54.1: %struct_type.a.b.486 = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.fad]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_54.1: %struct_type.a.b.486 = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.9f1]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc10_54.1: %struct_type.a.b.486 = impl_witness_access_substituted %impl.elem0.loc10_54.1, %.loc10_48.3 [concrete = constants.%struct.247]
|
||||
// CHECK:STDOUT: %false: bool = bool_literal false [concrete = constants.%false]
|
||||
// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba]
|
||||
@@ -424,9 +424,9 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3,
|
||||
// CHECK:STDOUT: %struct.loc10_83: %struct_type.a.b.486 = struct_value (%false, %.loc10_83.2) [concrete = constants.%struct.866]
|
||||
// CHECK:STDOUT: %.loc10_83.3: %struct_type.a.b.486 = converted %.loc10_83.1, %struct.loc10_83 [concrete = constants.%struct.866]
|
||||
// CHECK:STDOUT: %rewrite.loc10_57.1 = requirement_rewrite %impl.elem0.subst.loc10_54.1, %.loc10_83.3 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.2: %struct_type.a.b.486 = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.f1e]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.2: %struct_type.a.b.486 = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.b6e]
|
||||
// CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, %.loc10_48.3 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_54.2: %struct_type.a.b.486 = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.f1e]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_54.2: %struct_type.a.b.486 = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.b6e]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc10_54.2: %struct_type.a.b.486 = impl_witness_access_substituted %impl.elem0.loc10_54.2, %.loc10_48.3 [concrete = constants.%struct.247]
|
||||
// CHECK:STDOUT: %rewrite.loc10_57.2 = requirement_rewrite %impl.elem0.subst.loc10_54.2, %.loc10_83.3 [concrete]
|
||||
// CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = <error>] {
|
||||
|
||||
+2
-2
@@ -910,7 +910,7 @@ impl () as I({}) {
|
||||
// CHECK:STDOUT: %C.as.I.impl.F.4c1488.2: %C.as.I.impl.F.type.a24f58.2 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @C.as.I.impl: %Self.ref as %.loc9_13 {
|
||||
// CHECK:STDOUT: impl @C.as.I.impl: %Self.ref as %I.ref {
|
||||
// CHECK:STDOUT: %C.as.I.impl.F.decl.loc11_48.1: %C.as.I.impl.F.type.a24f58.1 = fn_decl @C.as.I.impl.F.loc11_48.1 [concrete = constants.%C.as.I.impl.F.4c1488.1] {
|
||||
// CHECK:STDOUT: %x.param_patt: %pattern_type.cb1 = ref_param_pattern [concrete = constants.%x.param_patt.363cc0.1]
|
||||
// CHECK:STDOUT: %x.patt: %pattern_type.cb1 = at_binding_pattern x, %x.param_patt [concrete = constants.%x.patt.b18d0b.1]
|
||||
@@ -944,7 +944,7 @@ impl () as I({}) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .F = %C.as.I.impl.F.decl.loc11_48.1
|
||||
// CHECK:STDOUT: extend %.loc9_13
|
||||
// CHECK:STDOUT: extend %I.ref
|
||||
// CHECK:STDOUT: witness = %I.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+161
-161
@@ -311,13 +311,13 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.c4c [concrete]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.ced: <witness> = lookup_impl_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f01: <witness> = impl_self_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.fc9: type = impl_witness_access %.f01, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.78b: <witness> = lookup_impl_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e55 = %empty_struct_type> [concrete]
|
||||
// CHECK:STDOUT: %.00f: <witness> = impl_self_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type.c16: type = facet_type <@I where %impl.elem0.c0c = %empty_struct_type> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness @C1.as.I.impl.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C1, (%I.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -351,13 +351,13 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc5_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc5_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc5_20.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// 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: %rewrite.loc5_23.1 = requirement_rewrite %impl.elem0.loc5_20.1, %.loc5_26.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc5_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc5_20.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %rewrite.loc5_23.2 = requirement_rewrite %impl.elem0.loc5_20.2, %.loc5_26.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc5_14: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %.loc5_14: type = where_expr [concrete = constants.%I_where.type.c16] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc5_23.2 = requirement_rewrite %impl.elem0.loc5_20.2, %.loc5_26.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -373,13 +373,13 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: !requires:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @C1.as.I.impl: %C1.ref as %.loc5_14 {
|
||||
// CHECK:STDOUT: impl @C1.as.I.impl: %C1.ref as %I.ref {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C1.as.I.impl [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc5_14
|
||||
// CHECK:STDOUT: extend %I.ref
|
||||
// CHECK:STDOUT: witness = %I.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -415,13 +415,13 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.c4c [concrete]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.ced: <witness> = lookup_impl_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f01: <witness> = impl_self_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.fc9: type = impl_witness_access %.f01, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.78b: <witness> = lookup_impl_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e55 = %empty_struct_type> [concrete]
|
||||
// CHECK:STDOUT: %.00f: <witness> = impl_self_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type.c16: type = facet_type <@I where %impl.elem0.c0c = %empty_struct_type> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness @C2.as.I.impl.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C2, (%I.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -455,13 +455,13 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc5: type = facet_access_type %.Self.ref.loc5 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc5_20: type = converted %.Self.ref.loc5, %.Self.as_type.loc5 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc5: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc5_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc5_20.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// 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: %rewrite.loc5_23.1 = requirement_rewrite %impl.elem0.loc5_20.1, %.loc5_26.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc5_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc5_20.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %rewrite.loc5_23.2 = requirement_rewrite %impl.elem0.loc5_20.2, %.loc5_26.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc5_14: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %.loc5_14: type = where_expr [concrete = constants.%I_where.type.c16] {
|
||||
// CHECK:STDOUT: %base_facet_type.loc5 = requirement_base_facet_type %I.ref.loc5 [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc5_23.2 = requirement_rewrite %impl.elem0.loc5_20.2, %.loc5_26.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -475,13 +475,13 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc6: type = facet_access_type %.Self.ref.loc6 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc6_20: type = converted %.Self.ref.loc6, %.Self.as_type.loc6 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc6: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_20.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// 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: %rewrite.loc6_23.1 = requirement_rewrite %impl.elem0.loc6_20.1, %.loc6_26.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_20.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %rewrite.loc6_23.2 = requirement_rewrite %impl.elem0.loc6_20.2, %.loc6_26.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc6_14: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %.loc6_14: type = where_expr [concrete = constants.%I_where.type.c16] {
|
||||
// CHECK:STDOUT: %base_facet_type.loc6 = requirement_base_facet_type %I.ref.loc6 [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc6_23.2 = requirement_rewrite %impl.elem0.loc6_20.2, %.loc6_26.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -497,13 +497,13 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: !requires:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @C2.as.I.impl: %C2.ref.loc5 as %.loc5_14 {
|
||||
// CHECK:STDOUT: impl @C2.as.I.impl: %C2.ref.loc5 as %I.ref.loc5 {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C2.as.I.impl [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc5_14
|
||||
// CHECK:STDOUT: extend %I.ref.loc5
|
||||
// CHECK:STDOUT: witness = %I.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -539,15 +539,15 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.c4c [concrete]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.ced: <witness> = lookup_impl_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f01: <witness> = impl_self_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.fc9: type = impl_witness_access %.f01, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.78b: <witness> = lookup_impl_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e55 = %empty_struct_type> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness.09a: <witness> = impl_witness @C3.as.I.impl.e54.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C3, (%I.impl_witness.09a) [concrete]
|
||||
// CHECK:STDOUT: %.00f: <witness> = impl_self_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type.c16: type = facet_type <@I where %impl.elem0.c0c = %empty_struct_type> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness.877: <witness> = impl_witness @C3.as.I.impl.a518fc.2.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C3, (%I.impl_witness.877) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -570,11 +570,11 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %C3.decl: type = class_decl @C3 [concrete = constants.%C3] {} {}
|
||||
// CHECK:STDOUT: impl_decl @C3.as.I.impl.a51 [concrete] {} {
|
||||
// CHECK:STDOUT: impl_decl @C3.as.I.impl.a518fc.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %C3.ref: type = name_ref C3, file.%C3.decl [concrete = constants.%C3]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: impl_decl @C3.as.I.impl.e54 [concrete] {} {
|
||||
// CHECK:STDOUT: impl_decl @C3.as.I.impl.a518fc.2 [concrete] {} {
|
||||
// CHECK:STDOUT: %C3.ref: type = name_ref C3, file.%C3.decl [concrete = constants.%C3]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen]
|
||||
@@ -583,13 +583,13 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// 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: %rewrite.loc10_23.1 = requirement_rewrite %impl.elem0.loc10_20.1, %.loc10_26.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, %.loc10_26.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = constants.%I_where.type.c16] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, %.loc10_26.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -605,15 +605,15 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: !requires:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @C3.as.I.impl.a51: %C3.ref as %I.ref;
|
||||
// CHECK:STDOUT: impl @C3.as.I.impl.a518fc.1: %C3.ref as %I.ref;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @C3.as.I.impl.e54: %C3.ref as %.loc10_14 {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C3.as.I.impl.e54 [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.09a]
|
||||
// CHECK:STDOUT: impl @C3.as.I.impl.a518fc.2: %C3.ref as %I.ref {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C3.as.I.impl.a518fc.2 [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.877]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc10_14
|
||||
// CHECK:STDOUT: extend %I.ref
|
||||
// CHECK:STDOUT: witness = %I.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -649,18 +649,18 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.c4c [concrete]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.ced: <witness> = lookup_impl_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f01: <witness> = impl_self_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.fc9: type = impl_witness_access %.f01, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.78b: <witness> = lookup_impl_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type.7df: type = facet_type <@I where %impl.elem0.e55 = %empty_struct_type> [concrete]
|
||||
// CHECK:STDOUT: %.00f: <witness> = impl_self_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type.c16: type = facet_type <@I where %impl.elem0.c0c = %empty_struct_type> [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %I_where.type.faf: type = facet_type <@I where %impl.elem0.e55 = %empty_tuple.type> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness.829: <witness> = impl_witness @C4.as.I.impl.775.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C4, (%I.impl_witness.829) [concrete]
|
||||
// CHECK:STDOUT: %I_where.type.d99: type = facet_type <@I where %impl.elem0.c0c = %empty_tuple.type> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness.4a9: <witness> = impl_witness @C4.as.I.impl.c5f663.2.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C4, (%I.impl_witness.4a9) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -683,7 +683,7 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %C4.decl: type = class_decl @C4 [concrete = constants.%C4] {} {}
|
||||
// CHECK:STDOUT: impl_decl @C4.as.I.impl.332 [concrete] {} {
|
||||
// CHECK:STDOUT: impl_decl @C4.as.I.impl.c5f663.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %C4.ref: type = name_ref C4, file.%C4.decl [concrete = constants.%C4]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen]
|
||||
@@ -692,18 +692,18 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc9_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_20.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// 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: %rewrite.loc9_23.1 = requirement_rewrite %impl.elem0.loc9_20.1, %.loc9_26.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_20.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %rewrite.loc9_23.2 = requirement_rewrite %impl.elem0.loc9_20.2, %.loc9_26.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc9_14: type = where_expr [concrete = constants.%I_where.type.7df] {
|
||||
// CHECK:STDOUT: %.loc9_14: type = where_expr [concrete = constants.%I_where.type.c16] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc9_23.2 = requirement_rewrite %impl.elem0.loc9_20.2, %.loc9_26.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: impl_decl @C4.as.I.impl.775 [concrete] {} {
|
||||
// CHECK:STDOUT: impl_decl @C4.as.I.impl.c5f663.2 [concrete] {} {
|
||||
// CHECK:STDOUT: %C4.ref: type = name_ref C4, file.%C4.decl [concrete = constants.%C4]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen]
|
||||
@@ -712,13 +712,13 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// 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: %rewrite.loc10_23.1 = requirement_rewrite %impl.elem0.loc10_20.1, %.loc10_26.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, %.loc10_26.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = constants.%I_where.type.faf] {
|
||||
// CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = constants.%I_where.type.d99] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, %.loc10_26.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -734,15 +734,15 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: !requires:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @C4.as.I.impl.332: %C4.ref as %.loc9_14;
|
||||
// CHECK:STDOUT: impl @C4.as.I.impl.c5f663.1: %C4.ref as %I.ref;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @C4.as.I.impl.775: %C4.ref as %.loc10_14 {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C4.as.I.impl.775 [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.829]
|
||||
// CHECK:STDOUT: impl @C4.as.I.impl.c5f663.2: %C4.ref as %I.ref {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C4.as.I.impl.c5f663.2 [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.4a9]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc10_14
|
||||
// CHECK:STDOUT: extend %I.ref
|
||||
// CHECK:STDOUT: witness = %I.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -778,19 +778,19 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %I3.assoc_type: type = assoc_entity_type @I3 [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I3.assoc_type = assoc_entity element0, imports.%Main.import_ref.d9b [concrete]
|
||||
// CHECK:STDOUT: %I3.lookup_impl_witness.f3f: <witness> = lookup_impl_witness %.Self.frozen, @I3 [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.3c1: type = impl_witness_access %I3.lookup_impl_witness.f3f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.408: <witness> = impl_self_witness %.Self.frozen, @I3 [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.80b: type = impl_witness_access %.408, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %assoc1: %I3.assoc_type = assoc_entity element1, imports.%Main.import_ref.680 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem1.c6b: type = impl_witness_access %I3.lookup_impl_witness.f3f, element1 [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem1.74f: type = impl_witness_access %.408, element1 [symbolic_self]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %empty_struct_type} [concrete]
|
||||
// CHECK:STDOUT: %assoc2: %I3.assoc_type = assoc_entity element2, imports.%Main.import_ref.3b5 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem2.0e3: type = impl_witness_access %I3.lookup_impl_witness.f3f, element2 [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem2.926: type = impl_witness_access %.408, element2 [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self: %I3.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I3.lookup_impl_witness.d94: <witness> = lookup_impl_witness %.Self, @I3 [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.058: type = impl_witness_access %I3.lookup_impl_witness.d94, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem1.ef6: type = impl_witness_access %I3.lookup_impl_witness.d94, element1 [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem2.8ce: type = impl_witness_access %I3.lookup_impl_witness.d94, element2 [symbolic_self]
|
||||
// CHECK:STDOUT: %.dbd: <witness> = impl_self_witness %.Self, @I3 [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.91b: type = impl_witness_access %.dbd, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem1.4e8: type = impl_witness_access %.dbd, element1 [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem2.5f8: type = impl_witness_access %.dbd, element2 [symbolic_self]
|
||||
// CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %empty_struct_type} [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -835,14 +835,14 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc17_21: type = facet_access_type %.Self.ref.loc17_21 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc17_21: type = converted %.Self.ref.loc17_21, %.Self.as_type.loc17_21 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T1.ref: %I3.assoc_type = name_ref T1, imports.%Main.import_ref.e53 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc17_21.1: type = impl_witness_access constants.%I3.lookup_impl_witness.f3f, element0 [symbolic_self = constants.%impl.elem0.3c1]
|
||||
// CHECK:STDOUT: %impl.elem0.loc17_21.1: type = impl_witness_access constants.%.408, element0 [symbolic_self = constants.%impl.elem0.80b]
|
||||
// CHECK:STDOUT: %BAD1.ref: <error> = name_ref BAD1, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %rewrite.loc17_25.1 = requirement_rewrite %impl.elem0.loc17_21.1, <error> [concrete]
|
||||
// CHECK:STDOUT: %.Self.ref.loc17_36: %I3.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen]
|
||||
// CHECK:STDOUT: %.Self.as_type.loc17_36: type = facet_access_type %.Self.ref.loc17_36 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc17_36: type = converted %.Self.ref.loc17_36, %.Self.as_type.loc17_36 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T2.ref: %I3.assoc_type = name_ref T2, imports.%Main.import_ref.7af [concrete = constants.%assoc1]
|
||||
// CHECK:STDOUT: %impl.elem1.loc17_36.1: type = impl_witness_access constants.%I3.lookup_impl_witness.f3f, element1 [symbolic_self = constants.%impl.elem1.c6b]
|
||||
// CHECK:STDOUT: %impl.elem1.loc17_36.1: type = impl_witness_access constants.%.408, element1 [symbolic_self = constants.%impl.elem1.74f]
|
||||
// CHECK:STDOUT: %.loc17_48.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc17_48.2: type = converted %.loc17_48.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %empty_struct_type} [concrete = constants.%struct_type.a]
|
||||
@@ -851,14 +851,14 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc17_55: type = facet_access_type %.Self.ref.loc17_55 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc17_55: type = converted %.Self.ref.loc17_55, %.Self.as_type.loc17_55 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T3.ref: %I3.assoc_type = name_ref T3, imports.%Main.import_ref.c31 [concrete = constants.%assoc2]
|
||||
// CHECK:STDOUT: %impl.elem2.loc17_55.1: type = impl_witness_access constants.%I3.lookup_impl_witness.f3f, element2 [symbolic_self = constants.%impl.elem2.0e3]
|
||||
// CHECK:STDOUT: %impl.elem2.loc17_55.1: type = impl_witness_access constants.%.408, element2 [symbolic_self = constants.%impl.elem2.926]
|
||||
// CHECK:STDOUT: %BAD2.ref: <error> = name_ref BAD2, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %rewrite.loc17_59.1 = requirement_rewrite %impl.elem2.loc17_55.1, <error> [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc17_21.2: type = impl_witness_access constants.%I3.lookup_impl_witness.d94, element0 [symbolic_self = constants.%impl.elem0.058]
|
||||
// CHECK:STDOUT: %impl.elem0.loc17_21.2: type = impl_witness_access constants.%.dbd, element0 [symbolic_self = constants.%impl.elem0.91b]
|
||||
// CHECK:STDOUT: %rewrite.loc17_25.2 = requirement_rewrite %impl.elem0.loc17_21.2, <error> [concrete]
|
||||
// CHECK:STDOUT: %impl.elem1.loc17_36.2: type = impl_witness_access constants.%I3.lookup_impl_witness.d94, element1 [symbolic_self = constants.%impl.elem1.ef6]
|
||||
// CHECK:STDOUT: %impl.elem1.loc17_36.2: type = impl_witness_access constants.%.dbd, element1 [symbolic_self = constants.%impl.elem1.4e8]
|
||||
// CHECK:STDOUT: %rewrite.loc17_40.2 = requirement_rewrite %impl.elem1.loc17_36.2, %struct_type.a [concrete]
|
||||
// CHECK:STDOUT: %impl.elem2.loc17_55.2: type = impl_witness_access constants.%I3.lookup_impl_witness.d94, element2 [symbolic_self = constants.%impl.elem2.8ce]
|
||||
// CHECK:STDOUT: %impl.elem2.loc17_55.2: type = impl_witness_access constants.%.dbd, element2 [symbolic_self = constants.%impl.elem2.5f8]
|
||||
// CHECK:STDOUT: %rewrite.loc17_59.2 = requirement_rewrite %impl.elem2.loc17_55.2, <error> [concrete]
|
||||
// CHECK:STDOUT: %.loc17_15: type = where_expr [concrete = <error>] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I3.ref [concrete]
|
||||
@@ -876,7 +876,7 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc27_21: type = facet_access_type %.Self.ref.loc27_21 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc27_21: type = converted %.Self.ref.loc27_21, %.Self.as_type.loc27_21 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T1.ref: %I3.assoc_type = name_ref T1, imports.%Main.import_ref.e53 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc27_21.1: type = impl_witness_access constants.%I3.lookup_impl_witness.f3f, element0 [symbolic_self = constants.%impl.elem0.3c1]
|
||||
// CHECK:STDOUT: %impl.elem0.loc27_21.1: type = impl_witness_access constants.%.408, element0 [symbolic_self = constants.%impl.elem0.80b]
|
||||
// CHECK:STDOUT: %.loc27_33.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc27_33.2: type = converted %.loc27_33.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %empty_struct_type} [concrete = constants.%struct_type.b]
|
||||
@@ -885,21 +885,21 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc27_40: type = facet_access_type %.Self.ref.loc27_40 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc27_40: type = converted %.Self.ref.loc27_40, %.Self.as_type.loc27_40 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T2.ref: %I3.assoc_type = name_ref T2, imports.%Main.import_ref.7af [concrete = constants.%assoc1]
|
||||
// CHECK:STDOUT: %impl.elem1.loc27_40.1: type = impl_witness_access constants.%I3.lookup_impl_witness.f3f, element1 [symbolic_self = constants.%impl.elem1.c6b]
|
||||
// CHECK:STDOUT: %impl.elem1.loc27_40.1: type = impl_witness_access constants.%.408, element1 [symbolic_self = constants.%impl.elem1.74f]
|
||||
// CHECK:STDOUT: %BAD3.ref: <error> = name_ref BAD3, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %rewrite.loc27_44.1 = requirement_rewrite %impl.elem1.loc27_40.1, <error> [concrete]
|
||||
// CHECK:STDOUT: %.Self.ref.loc27_55: %I3.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen]
|
||||
// CHECK:STDOUT: %.Self.as_type.loc27_55: type = facet_access_type %.Self.ref.loc27_55 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc27_55: type = converted %.Self.ref.loc27_55, %.Self.as_type.loc27_55 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T3.ref: %I3.assoc_type = name_ref T3, imports.%Main.import_ref.c31 [concrete = constants.%assoc2]
|
||||
// CHECK:STDOUT: %impl.elem2.loc27_55.1: type = impl_witness_access constants.%I3.lookup_impl_witness.f3f, element2 [symbolic_self = constants.%impl.elem2.0e3]
|
||||
// CHECK:STDOUT: %impl.elem2.loc27_55.1: type = impl_witness_access constants.%.408, element2 [symbolic_self = constants.%impl.elem2.926]
|
||||
// CHECK:STDOUT: %BAD4.ref: <error> = name_ref BAD4, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %rewrite.loc27_59.1 = requirement_rewrite %impl.elem2.loc27_55.1, <error> [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc27_21.2: type = impl_witness_access constants.%I3.lookup_impl_witness.d94, element0 [symbolic_self = constants.%impl.elem0.058]
|
||||
// CHECK:STDOUT: %impl.elem0.loc27_21.2: type = impl_witness_access constants.%.dbd, element0 [symbolic_self = constants.%impl.elem0.91b]
|
||||
// CHECK:STDOUT: %rewrite.loc27_25.2 = requirement_rewrite %impl.elem0.loc27_21.2, %struct_type.b [concrete]
|
||||
// CHECK:STDOUT: %impl.elem1.loc27_40.2: type = impl_witness_access constants.%I3.lookup_impl_witness.d94, element1 [symbolic_self = constants.%impl.elem1.ef6]
|
||||
// CHECK:STDOUT: %impl.elem1.loc27_40.2: type = impl_witness_access constants.%.dbd, element1 [symbolic_self = constants.%impl.elem1.4e8]
|
||||
// CHECK:STDOUT: %rewrite.loc27_44.2 = requirement_rewrite %impl.elem1.loc27_40.2, <error> [concrete]
|
||||
// CHECK:STDOUT: %impl.elem2.loc27_55.2: type = impl_witness_access constants.%I3.lookup_impl_witness.d94, element2 [symbolic_self = constants.%impl.elem2.8ce]
|
||||
// CHECK:STDOUT: %impl.elem2.loc27_55.2: type = impl_witness_access constants.%.dbd, element2 [symbolic_self = constants.%impl.elem2.5f8]
|
||||
// CHECK:STDOUT: %rewrite.loc27_59.2 = requirement_rewrite %impl.elem2.loc27_55.2, <error> [concrete]
|
||||
// CHECK:STDOUT: %.loc27_15: type = where_expr [concrete = <error>] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I3.ref [concrete]
|
||||
@@ -957,14 +957,14 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.c4c [concrete]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.ced: <witness> = lookup_impl_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f01: <witness> = impl_self_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.fc9: type = impl_witness_access %.f01, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.78b: <witness> = lookup_impl_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e55 = %empty_struct_type> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness.a68: <witness> = impl_witness @C6.as.I.impl.e1b.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %.00f: <witness> = impl_self_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.c0c = %empty_struct_type> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness.a68: <witness> = impl_witness @C6.as.I.impl.e1b87a.2.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C6, (%I.impl_witness.a68) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -988,7 +988,7 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %C6.decl: type = class_decl @C6 [concrete = constants.%C6] {} {}
|
||||
// CHECK:STDOUT: impl_decl @C6.as.I.impl.07b [concrete] {} {
|
||||
// CHECK:STDOUT: impl_decl @C6.as.I.impl.e1b87a.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %C6.ref: type = name_ref C6, file.%C6.decl [concrete = constants.%C6]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen]
|
||||
@@ -997,18 +997,18 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc5_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc5_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc5_20.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// 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: %rewrite.loc5_23.1 = requirement_rewrite %impl.elem0.loc5_20.1, %.loc5_26.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc5_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc5_20.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %rewrite.loc5_23.2 = requirement_rewrite %impl.elem0.loc5_20.2, %.loc5_26.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc5_14: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc5_23.2 = requirement_rewrite %impl.elem0.loc5_20.2, %.loc5_26.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: impl_decl @C6.as.I.impl.e1b [concrete] {} {
|
||||
// CHECK:STDOUT: impl_decl @C6.as.I.impl.e1b87a.2 [concrete] {} {
|
||||
// CHECK:STDOUT: %C6.ref: type = name_ref C6, file.%C6.decl [concrete = constants.%C6]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1023,10 +1023,10 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: !requires:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @C6.as.I.impl.07b: %C6.ref as %.loc5_14;
|
||||
// CHECK:STDOUT: impl @C6.as.I.impl.e1b87a.1: %C6.ref as %I.ref;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @C6.as.I.impl.e1b: %C6.ref as %I.ref {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (<error>), @C6.as.I.impl.e1b [concrete]
|
||||
// CHECK:STDOUT: impl @C6.as.I.impl.e1b87a.2: %C6.ref as %I.ref {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (<error>), @C6.as.I.impl.e1b87a.2 [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.a68]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -1066,14 +1066,14 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.c4c [concrete]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.ced: <witness> = lookup_impl_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f01: <witness> = impl_self_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.fc9: type = impl_witness_access %.f01, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.78b: <witness> = lookup_impl_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.00f: <witness> = impl_self_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -1105,7 +1105,7 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc10_20: type = facet_access_type %.Self.ref.loc10_20 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref.loc10_20, %.Self.as_type.loc10_20 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc10_20: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// 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: %rewrite.loc10_23.1 = requirement_rewrite %impl.elem0.loc10_20.1, %.loc10_26.2 [concrete]
|
||||
@@ -1113,14 +1113,14 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc10_32: type = facet_access_type %.Self.ref.loc10_32 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc10_32: type = converted %.Self.ref.loc10_32, %.Self.as_type.loc10_32 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc10_32: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_32.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_32.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc10_32.1: type = impl_witness_access_substituted %impl.elem0.loc10_32.1, %.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: %rewrite.loc10_35.1 = requirement_rewrite %impl.elem0.subst.loc10_32.1, %.loc10_38.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, %.loc10_26.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_32.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_32.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc10_32.2: type = impl_witness_access_substituted %impl.elem0.loc10_32.2, %.loc10_26.2 [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %rewrite.loc10_35.2 = requirement_rewrite %impl.elem0.subst.loc10_32.2, %.loc10_38.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = <error>] {
|
||||
@@ -1174,13 +1174,13 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.c4c [concrete]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.ced: <witness> = lookup_impl_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f01: <witness> = impl_self_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.fc9: type = impl_witness_access %.f01, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.78b: <witness> = lookup_impl_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.00f: <witness> = impl_self_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -1213,21 +1213,21 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc10_20: type = facet_access_type %.Self.ref.loc10_20 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref.loc10_20, %.Self.as_type.loc10_20 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc10_20: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// CHECK:STDOUT: %BAD5.ref: <error> = name_ref BAD5, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %rewrite.loc10_23.1 = requirement_rewrite %impl.elem0.loc10_20.1, <error> [concrete]
|
||||
// CHECK:STDOUT: %.Self.ref.loc10_34: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen]
|
||||
// CHECK:STDOUT: %.Self.as_type.loc10_34: type = facet_access_type %.Self.ref.loc10_34 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc10_34: type = converted %.Self.ref.loc10_34, %.Self.as_type.loc10_34 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc10_34: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_34.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_34.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc10_34.1: type = impl_witness_access_substituted %impl.elem0.loc10_34.1, <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: %rewrite.loc10_37.1 = requirement_rewrite %impl.elem0.subst.loc10_34.1, %.loc10_40.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, <error> [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_34.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_34.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc10_34.2: type = impl_witness_access_substituted %impl.elem0.loc10_34.2, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %rewrite.loc10_37.2 = requirement_rewrite %impl.elem0.subst.loc10_34.2, %.loc10_40.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = <error>] {
|
||||
@@ -1281,12 +1281,12 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.c4c [concrete]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.ced: <witness> = lookup_impl_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f01: <witness> = impl_self_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.fc9: type = impl_witness_access %.f01, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.78b: <witness> = lookup_impl_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.00f: <witness> = impl_self_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -1319,7 +1319,7 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc10_20: type = facet_access_type %.Self.ref.loc10_20 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref.loc10_20, %.Self.as_type.loc10_20 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc10_20: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// 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: %rewrite.loc10_23.1 = requirement_rewrite %impl.elem0.loc10_20.1, %.loc10_26.2 [concrete]
|
||||
@@ -1327,13 +1327,13 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc10_32: type = facet_access_type %.Self.ref.loc10_32 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc10_32: type = converted %.Self.ref.loc10_32, %.Self.as_type.loc10_32 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc10_32: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_32.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_32.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc10_32.1: type = impl_witness_access_substituted %impl.elem0.loc10_32.1, %.loc10_26.2 [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %BAD6.ref: <error> = name_ref BAD6, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %rewrite.loc10_35.1 = requirement_rewrite %impl.elem0.subst.loc10_32.1, <error> [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_20.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, %.loc10_26.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_32.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_32.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc10_32.2: type = impl_witness_access_substituted %impl.elem0.loc10_32.2, %.loc10_26.2 [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %rewrite.loc10_35.2 = requirement_rewrite %impl.elem0.subst.loc10_32.2, <error> [concrete]
|
||||
// CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = <error>] {
|
||||
@@ -1387,11 +1387,11 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.c4c [concrete]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.ced: <witness> = lookup_impl_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f01: <witness> = impl_self_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.fc9: type = impl_witness_access %.f01, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.78b: <witness> = lookup_impl_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.00f: <witness> = impl_self_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -1425,20 +1425,20 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc14_20: type = facet_access_type %.Self.ref.loc14_20 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc14_20: type = converted %.Self.ref.loc14_20, %.Self.as_type.loc14_20 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc14_20: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_20.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// CHECK:STDOUT: %BAD7.ref: <error> = name_ref BAD7, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %rewrite.loc14_23.1 = requirement_rewrite %impl.elem0.loc14_20.1, <error> [concrete]
|
||||
// CHECK:STDOUT: %.Self.ref.loc14_34: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen]
|
||||
// CHECK:STDOUT: %.Self.as_type.loc14_34: type = facet_access_type %.Self.ref.loc14_34 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc14_34: type = converted %.Self.ref.loc14_34, %.Self.as_type.loc14_34 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc14_34: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_34.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_34.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc14_34.1: type = impl_witness_access_substituted %impl.elem0.loc14_34.1, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %BAD8.ref: <error> = name_ref BAD8, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %rewrite.loc14_37.1 = requirement_rewrite %impl.elem0.subst.loc14_34.1, <error> [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_20.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %rewrite.loc14_23.2 = requirement_rewrite %impl.elem0.loc14_20.2, <error> [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_34.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_34.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc14_34.2: type = impl_witness_access_substituted %impl.elem0.loc14_34.2, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %rewrite.loc14_37.2 = requirement_rewrite %impl.elem0.subst.loc14_34.2, <error> [concrete]
|
||||
// CHECK:STDOUT: %.loc14_14: type = where_expr [concrete = <error>] {
|
||||
@@ -1492,13 +1492,13 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.c4c [concrete]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.ced: <witness> = lookup_impl_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f01: <witness> = impl_self_witness %.Self.frozen, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.fc9: type = impl_witness_access %.f01, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.78b: <witness> = lookup_impl_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e55 = %empty_struct_type> [concrete]
|
||||
// CHECK:STDOUT: %.00f: <witness> = impl_self_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.c0c: type = impl_witness_access %.00f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type.c16: type = facet_type <@I where %impl.elem0.c0c = %empty_struct_type> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness @CB.as.I.impl.%I.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %CB, (%I.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1532,7 +1532,7 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc6_20: type = facet_access_type %.Self.ref.loc6_20 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc6_20: type = converted %.Self.ref.loc6_20, %.Self.as_type.loc6_20 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc6_20: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_20.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// 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: %rewrite.loc6_23.1 = requirement_rewrite %impl.elem0.loc6_20.1, %.loc6_26.2 [concrete]
|
||||
@@ -1540,17 +1540,17 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc6_32: type = facet_access_type %.Self.ref.loc6_32 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc6_32: type = converted %.Self.ref.loc6_32, %.Self.as_type.loc6_32 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc6_32: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_32.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_32.1: type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.fc9]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc6_32.1: type = impl_witness_access_substituted %impl.elem0.loc6_32.1, %.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: %rewrite.loc6_35.1 = requirement_rewrite %impl.elem0.subst.loc6_32.1, %.loc6_38.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_20.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %rewrite.loc6_23.2 = requirement_rewrite %impl.elem0.loc6_20.2, %.loc6_26.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_32.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_32.2: type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.c0c]
|
||||
// CHECK:STDOUT: %impl.elem0.subst.loc6_32.2: type = impl_witness_access_substituted %impl.elem0.loc6_32.2, %.loc6_26.2 [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %rewrite.loc6_35.2 = requirement_rewrite %impl.elem0.subst.loc6_32.2, %.loc6_38.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc6_14: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %.loc6_14: type = where_expr [concrete = constants.%I_where.type.c16] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc6_23.2 = requirement_rewrite %impl.elem0.loc6_20.2, %.loc6_26.2 [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc6_35.2 = requirement_rewrite %impl.elem0.subst.loc6_32.2, %.loc6_38.2 [concrete]
|
||||
@@ -1567,13 +1567,13 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: !requires:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @CB.as.I.impl: %CB.ref as %.loc6_14 {
|
||||
// CHECK:STDOUT: impl @CB.as.I.impl: %CB.ref as %I.ref {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @CB.as.I.impl [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc6_14
|
||||
// CHECK:STDOUT: extend %I.ref
|
||||
// CHECK:STDOUT: witness = %I.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -1609,15 +1609,15 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %NonType.assoc_type: type = assoc_entity_type @NonType [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %NonType.assoc_type = assoc_entity element0, imports.%Main.import_ref.336 [concrete]
|
||||
// CHECK:STDOUT: %NonType.lookup_impl_witness.ce8: <witness> = lookup_impl_witness %.Self.frozen, @NonType [symbolic_self]
|
||||
// CHECK:STDOUT: %.57e: <witness> = impl_self_witness %.Self.frozen, @NonType [symbolic_self]
|
||||
// CHECK:STDOUT: %struct_type.a.225: type = struct_type {.a: %empty_struct_type} [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.c6b: %struct_type.a.225 = impl_witness_access %NonType.lookup_impl_witness.ce8, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.61b: %struct_type.a.225 = impl_witness_access %.57e, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %struct: %struct_type.a.225 = struct_value (%empty_struct) [concrete]
|
||||
// CHECK:STDOUT: %.Self: %NonType.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %NonType.lookup_impl_witness.6ba: <witness> = lookup_impl_witness %.Self, @NonType [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.170: %struct_type.a.225 = impl_witness_access %NonType.lookup_impl_witness.6ba, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %NonType_where.type: type = facet_type <@NonType where %impl.elem0.170 = %struct> [concrete]
|
||||
// CHECK:STDOUT: %.92a: <witness> = impl_self_witness %.Self, @NonType [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.74f: %struct_type.a.225 = impl_witness_access %.92a, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %NonType_where.type.182: type = facet_type <@NonType where %impl.elem0.74f = %struct> [concrete]
|
||||
// CHECK:STDOUT: %NonType.impl_witness: <witness> = impl_witness @CC.as.NonType.impl.%NonType.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %NonType.facet: %NonType.type = facet_value %CC, (%NonType.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1651,7 +1651,7 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc6_26: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %Y.ref: %NonType.assoc_type = name_ref Y, imports.%Main.import_ref.6c1 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_26.1: %struct_type.a.225 = impl_witness_access constants.%NonType.lookup_impl_witness.ce8, element0 [symbolic_self = constants.%impl.elem0.c6b]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_26.1: %struct_type.a.225 = impl_witness_access constants.%.57e, element0 [symbolic_self = constants.%impl.elem0.61b]
|
||||
// CHECK:STDOUT: %.loc6_38: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc6_39.1: %struct_type.a.225 = struct_literal (%.loc6_38) [concrete = constants.%struct]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct]
|
||||
@@ -1659,9 +1659,9 @@ impl CD as IF where .F = 0 {
|
||||
// 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: %rewrite.loc6_29.1 = requirement_rewrite %impl.elem0.loc6_26.1, %.loc6_39.3 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_26.2: %struct_type.a.225 = impl_witness_access constants.%NonType.lookup_impl_witness.6ba, element0 [symbolic_self = constants.%impl.elem0.170]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_26.2: %struct_type.a.225 = impl_witness_access constants.%.92a, element0 [symbolic_self = constants.%impl.elem0.74f]
|
||||
// CHECK:STDOUT: %rewrite.loc6_29.2 = requirement_rewrite %impl.elem0.loc6_26.2, %.loc6_39.3 [concrete]
|
||||
// CHECK:STDOUT: %.loc6_20: type = where_expr [concrete = constants.%NonType_where.type] {
|
||||
// CHECK:STDOUT: %.loc6_20: type = where_expr [concrete = constants.%NonType_where.type.182] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %NonType.ref [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc6_29.2 = requirement_rewrite %impl.elem0.loc6_26.2, %.loc6_39.3 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1677,13 +1677,13 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: !requires:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @CC.as.NonType.impl: %CC.ref as %.loc6_20 {
|
||||
// CHECK:STDOUT: impl @CC.as.NonType.impl: %CC.ref as %NonType.ref {
|
||||
// CHECK:STDOUT: %NonType.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @CC.as.NonType.impl [concrete]
|
||||
// CHECK:STDOUT: %NonType.impl_witness: <witness> = impl_witness %NonType.impl_witness_table [concrete = constants.%NonType.impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: %struct_type.a.225 = impl_witness_assoc_constant constants.%struct [concrete = constants.%struct]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc6_20
|
||||
// CHECK:STDOUT: extend %NonType.ref
|
||||
// CHECK:STDOUT: witness = %NonType.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -1765,22 +1765,22 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %IF.assoc_type: type = assoc_entity_type @IF [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %IF.assoc_type = assoc_entity element0, imports.%Main.import_ref.e6e [concrete]
|
||||
// CHECK:STDOUT: %IF.lookup_impl_witness.1ee: <witness> = lookup_impl_witness %.Self.frozen, @IF [symbolic_self]
|
||||
// CHECK:STDOUT: %.3bb: <witness> = impl_self_witness %.Self.frozen, @IF [symbolic_self]
|
||||
// CHECK:STDOUT: %.91d: type = fn_type_with_self_type %IF.WithSelf.F.type.df4, %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.72b: %.91d = impl_witness_access %IF.lookup_impl_witness.1ee, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.40c: %.91d = impl_witness_access %.3bb, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete]
|
||||
// CHECK:STDOUT: %.Self: %IF.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %IF.WithSelf.F.type.aed: type = fn_type @IF.WithSelf.F, @IF.WithSelf(%.Self) [symbolic_self]
|
||||
// CHECK:STDOUT: %.f1f: type = fn_type_with_self_type %IF.WithSelf.F.type.aed, %.Self [symbolic_self]
|
||||
// CHECK:STDOUT: %IF.lookup_impl_witness.37f: <witness> = lookup_impl_witness %.Self, @IF [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.5d2: %.f1f = impl_witness_access %IF.lookup_impl_witness.37f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %IF_where.type: type = facet_type <@IF where %impl.elem0.5d2 = %int_0> [concrete]
|
||||
// CHECK:STDOUT: %.1c7: <witness> = impl_self_witness %.Self, @IF [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.b76: %.f1f = impl_witness_access %.1c7, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %IF_where.type: type = facet_type <@IF where %impl.elem0.b76 = %int_0> [concrete]
|
||||
// CHECK:STDOUT: %IF.impl_witness: <witness> = impl_witness @CD.as.IF.impl.%IF.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %CD.as.IF.impl.F.type: type = fn_type @CD.as.IF.impl.F [concrete]
|
||||
// CHECK:STDOUT: %CD.as.IF.impl.F: %CD.as.IF.impl.F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %IF.facet: %IF.type = facet_value %CD, (%IF.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %IF.WithSelf.F.type.e8a: type = fn_type @IF.WithSelf.F, @IF.WithSelf(%IF.facet) [concrete]
|
||||
// CHECK:STDOUT: %IF.WithSelf.F.1ba: %IF.WithSelf.F.type.e8a = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %IF.WithSelf.F.type.41b: type = fn_type @IF.WithSelf.F, @IF.WithSelf(%IF.facet) [concrete]
|
||||
// CHECK:STDOUT: %IF.WithSelf.F.24b: %IF.WithSelf.F.type.41b = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -1808,10 +1808,10 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc10_21: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %F.ref: %IF.assoc_type = name_ref F, imports.%Main.import_ref.94e [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_21.1: %.91d = impl_witness_access constants.%IF.lookup_impl_witness.1ee, element0 [symbolic_self = constants.%impl.elem0.72b]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_21.1: %.91d = impl_witness_access constants.%.3bb, element0 [symbolic_self = constants.%impl.elem0.40c]
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0]
|
||||
// CHECK:STDOUT: %rewrite.loc10_24.1 = requirement_rewrite %impl.elem0.loc10_21.1, %int_0 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_21.2: %.f1f = impl_witness_access constants.%IF.lookup_impl_witness.37f, element0 [symbolic_self = constants.%impl.elem0.5d2]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_21.2: %.f1f = impl_witness_access constants.%.1c7, element0 [symbolic_self = constants.%impl.elem0.b76]
|
||||
// CHECK:STDOUT: %rewrite.loc10_24.2 = requirement_rewrite %impl.elem0.loc10_21.2, %int_0 [concrete]
|
||||
// CHECK:STDOUT: %.loc10_15: type = where_expr [concrete = constants.%IF_where.type] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %IF.ref [concrete]
|
||||
@@ -1829,14 +1829,14 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: !requires:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @CD.as.IF.impl: %CD.ref as %.loc10_15 {
|
||||
// CHECK:STDOUT: impl @CD.as.IF.impl: %CD.ref as %IF.ref {
|
||||
// CHECK:STDOUT: %CD.as.IF.impl.F.decl: %CD.as.IF.impl.F.type = fn_decl @CD.as.IF.impl.F [concrete = constants.%CD.as.IF.impl.F] {} {}
|
||||
// CHECK:STDOUT: %IF.impl_witness_table = impl_witness_table (%CD.as.IF.impl.F.decl), @CD.as.IF.impl [concrete]
|
||||
// CHECK:STDOUT: %IF.impl_witness: <witness> = impl_witness %IF.impl_witness_table [concrete = constants.%IF.impl_witness]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .F = %CD.as.IF.impl.F.decl
|
||||
// CHECK:STDOUT: extend %.loc10_15
|
||||
// CHECK:STDOUT: extend %IF.ref
|
||||
// CHECK:STDOUT: witness = %IF.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -1878,8 +1878,8 @@ impl CD as IF where .F = 0 {
|
||||
// CHECK:STDOUT: specific @IF.WithSelf(constants.%IF.facet) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %Self => constants.%IF.facet
|
||||
// CHECK:STDOUT: %IF.WithSelf.F.type => constants.%IF.WithSelf.F.type.e8a
|
||||
// CHECK:STDOUT: %IF.WithSelf.F => constants.%IF.WithSelf.F.1ba
|
||||
// CHECK:STDOUT: %IF.WithSelf.F.type => constants.%IF.WithSelf.F.type.41b
|
||||
// CHECK:STDOUT: %IF.WithSelf.F => constants.%IF.WithSelf.F.24b
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @IF.WithSelf.F(constants.%IF.facet) {}
|
||||
|
||||
+18
-18
@@ -364,10 +364,10 @@ impl forall [N: E] D(N) as I where .Assoc = () {
|
||||
// CHECK:STDOUT: %I.WithSelf.F.ca5: %I.WithSelf.F.type.418 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete]
|
||||
// CHECK:STDOUT: %Self.013: %Z.type = symbolic_binding Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.03b: <witness> = lookup_impl_witness %Self.dda, @I [symbolic]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness: <witness> = lookup_impl_witness %Self.dda, @I [symbolic]
|
||||
// CHECK:STDOUT: %Y.type: type = facet_type <@Y> [concrete]
|
||||
// CHECK:STDOUT: %Self.95b: %Y.type = symbolic_binding Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.67e: %Y.type = impl_witness_access %I.lookup_impl_witness.03b, element0 [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.67e: %Y.type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic]
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness: <witness> = lookup_impl_witness %impl.elem0.67e, @Z [symbolic]
|
||||
// CHECK:STDOUT: %as_type: type = facet_access_type %impl.elem0.67e [symbolic]
|
||||
// CHECK:STDOUT: %Z.facet.416: %Z.type = facet_value %as_type, (%Z.lookup_impl_witness) [symbolic]
|
||||
@@ -393,8 +393,8 @@ impl forall [N: E] D(N) as I where .Assoc = () {
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.3a0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.d73 [concrete]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.ced: <witness> = lookup_impl_witness %.Self.frozen.3a0, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.f7a: %Y.type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.f01: <witness> = impl_self_witness %.Self.frozen.3a0, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.7a5: %Y.type = impl_witness_access %.f01, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Y.impl_witness.3d4: <witness> = impl_witness imports.%Y.impl_witness_table, @T.as.Y.impl(%T) [symbolic]
|
||||
@@ -402,9 +402,9 @@ impl forall [N: E] D(N) as I where .Assoc = () {
|
||||
// CHECK:STDOUT: %Y.impl_witness.2e8: <witness> = impl_witness imports.%Y.impl_witness_table, @T.as.Y.impl(%empty_tuple.type) [concrete]
|
||||
// CHECK:STDOUT: %Y.facet: %Y.type = facet_value %empty_tuple.type, (%Y.impl_witness.2e8) [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness.78b: <witness> = lookup_impl_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.aef: %Y.type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.aef = %Y.facet> [concrete]
|
||||
// CHECK:STDOUT: %.00f: <witness> = impl_self_witness %.Self, @I [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.e02: %Y.type = impl_witness_access %.00f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %I_where.type.4ba: type = facet_type <@I where %impl.elem0.e02 = %Y.facet> [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness @D.as.I.impl.%I.impl_witness_table, @D.as.I.impl(%N) [symbolic]
|
||||
// CHECK:STDOUT: %Z.impl_witness.1c1: <witness> = impl_witness imports.%Z.impl_witness_table, @U.as.Z.impl(%empty_tuple.type) [concrete]
|
||||
// CHECK:STDOUT: %.dd0: require_specific_def_type = require_specific_def @U.as.Z.impl(%empty_tuple.type) [concrete]
|
||||
@@ -416,8 +416,8 @@ impl forall [N: E] D(N) as I where .Assoc = () {
|
||||
// CHECK:STDOUT: %D.as.I.impl.F.type: type = fn_type @D.as.I.impl.F, @D.as.I.impl(%N) [symbolic]
|
||||
// CHECK:STDOUT: %D.as.I.impl.F: %D.as.I.impl.F.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %D, (%I.impl_witness) [symbolic]
|
||||
// CHECK:STDOUT: %I.WithSelf.F.type.fb3: type = fn_type @I.WithSelf.F, @I.WithSelf(%I.facet) [symbolic]
|
||||
// CHECK:STDOUT: %I.WithSelf.F.c30: %I.WithSelf.F.type.fb3 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %I.WithSelf.F.type.9aa: type = fn_type @I.WithSelf.F, @I.WithSelf(%I.facet) [symbolic]
|
||||
// CHECK:STDOUT: %I.WithSelf.F.a83: %I.WithSelf.F.type.9aa = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -483,14 +483,14 @@ impl forall [N: E] D(N) as I where .Assoc = () {
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc20_36: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %Assoc.ref: %I.assoc_type = name_ref Assoc, imports.%Main.import_ref.f32 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc20_36.1: %Y.type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.f7a]
|
||||
// CHECK:STDOUT: %impl.elem0.loc20_36.1: %Y.type = impl_witness_access constants.%.f01, element0 [symbolic_self = constants.%impl.elem0.7a5]
|
||||
// CHECK:STDOUT: %.loc20_46.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.2e8) [concrete = constants.%Y.facet]
|
||||
// CHECK:STDOUT: %.loc20_46.2: %Y.type = converted %.loc20_46.1, %Y.facet [concrete = constants.%Y.facet]
|
||||
// CHECK:STDOUT: %rewrite.loc20_43.1 = requirement_rewrite %impl.elem0.loc20_36.1, %.loc20_46.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc20_36.2: %Y.type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.aef]
|
||||
// CHECK:STDOUT: %impl.elem0.loc20_36.2: %Y.type = impl_witness_access constants.%.00f, element0 [symbolic_self = constants.%impl.elem0.e02]
|
||||
// CHECK:STDOUT: %rewrite.loc20_43.2 = requirement_rewrite %impl.elem0.loc20_36.2, %.loc20_46.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc20_30: type = where_expr [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %.loc20_30: type = where_expr [concrete = constants.%I_where.type.4ba] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc20_43.2 = requirement_rewrite %impl.elem0.loc20_36.2, %.loc20_46.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -565,7 +565,7 @@ impl forall [N: E] D(N) as I where .Assoc = () {
|
||||
// CHECK:STDOUT: %D.as.I.impl.F.type: type = fn_type @D.as.I.impl.F, @D.as.I.impl(%N.loc20_15.1) [symbolic = %D.as.I.impl.F.type (constants.%D.as.I.impl.F.type)]
|
||||
// CHECK:STDOUT: %D.as.I.impl.F: @D.as.I.impl.%D.as.I.impl.F.type (%D.as.I.impl.F.type) = struct_value () [symbolic = %D.as.I.impl.F (constants.%D.as.I.impl.F)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl: %D.loc20_23.2 as %.loc20_30 {
|
||||
// CHECK:STDOUT: impl: %D.loc20_23.2 as %I.ref {
|
||||
// CHECK:STDOUT: %D.as.I.impl.F.decl: @D.as.I.impl.%D.as.I.impl.F.type (%D.as.I.impl.F.type) = fn_decl @D.as.I.impl.F [symbolic = @D.as.I.impl.%D.as.I.impl.F (constants.%D.as.I.impl.F)] {
|
||||
// CHECK:STDOUT: %c.param_patt: %pattern_type.78f = value_param_pattern [concrete = constants.%c.param_patt.d23]
|
||||
// CHECK:STDOUT: %c.patt: %pattern_type.78f = at_binding_pattern c, %c.param_patt [concrete = constants.%c.patt.152]
|
||||
@@ -587,7 +587,7 @@ impl forall [N: E] D(N) as I where .Assoc = () {
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .C = <poisoned>
|
||||
// CHECK:STDOUT: .F = %D.as.I.impl.F.decl
|
||||
// CHECK:STDOUT: extend %.loc20_30
|
||||
// CHECK:STDOUT: extend %I.ref
|
||||
// CHECK:STDOUT: witness = %I.impl_witness.loc20_48.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -631,7 +631,7 @@ impl forall [N: E] D(N) as I where .Assoc = () {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @I.WithSelf.F(imports.%Main.import_ref.e59c42.2: %I.type) [from "impl_def.carbon"] {
|
||||
// CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic = %Self (constants.%Self.dda)]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness: <witness> = lookup_impl_witness %Self, @I [symbolic = %I.lookup_impl_witness (constants.%I.lookup_impl_witness.03b)]
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness: <witness> = lookup_impl_witness %Self, @I [symbolic = %I.lookup_impl_witness (constants.%I.lookup_impl_witness)]
|
||||
// CHECK:STDOUT: %impl.elem0: %Y.type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic = %impl.elem0 (constants.%impl.elem0.67e)]
|
||||
// CHECK:STDOUT: %as_type: type = facet_access_type %impl.elem0 [symbolic = %as_type (constants.%as_type)]
|
||||
// CHECK:STDOUT: %.1: require_specific_def_type = require_specific_def @U.as.Z.impl(%as_type) [symbolic = %.1 (constants.%.68b)]
|
||||
@@ -700,7 +700,7 @@ impl forall [N: E] D(N) as I where .Assoc = () {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @I.WithSelf.F(constants.%Self.dda) {
|
||||
// CHECK:STDOUT: %Self => constants.%Self.dda
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness => constants.%I.lookup_impl_witness.03b
|
||||
// CHECK:STDOUT: %I.lookup_impl_witness => constants.%I.lookup_impl_witness
|
||||
// CHECK:STDOUT: %impl.elem0 => constants.%impl.elem0.67e
|
||||
// CHECK:STDOUT: %as_type => constants.%as_type
|
||||
// CHECK:STDOUT: %.1 => constants.%.68b
|
||||
@@ -764,8 +764,8 @@ impl forall [N: E] D(N) as I where .Assoc = () {
|
||||
// CHECK:STDOUT: specific @I.WithSelf(constants.%I.facet) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %Self => constants.%I.facet
|
||||
// CHECK:STDOUT: %I.WithSelf.F.type => constants.%I.WithSelf.F.type.fb3
|
||||
// CHECK:STDOUT: %I.WithSelf.F => constants.%I.WithSelf.F.c30
|
||||
// CHECK:STDOUT: %I.WithSelf.F.type => constants.%I.WithSelf.F.type.9aa
|
||||
// CHECK:STDOUT: %I.WithSelf.F => constants.%I.WithSelf.F.a83
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @I.WithSelf.F(constants.%I.facet) {
|
||||
|
||||
+19
-19
@@ -504,12 +504,12 @@ interface B {
|
||||
// CHECK:STDOUT: !requires:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @C.as.I.impl: %C.ref.loc8 as %.loc8_13 {
|
||||
// CHECK:STDOUT: impl @C.as.I.impl: %C.ref.loc8 as %I.ref.loc8 {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @C.as.I.impl [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc8_13
|
||||
// CHECK:STDOUT: extend %I.ref.loc8
|
||||
// CHECK:STDOUT: witness = %I.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -559,15 +559,15 @@ interface B {
|
||||
// CHECK:STDOUT: %Incomplete.type: type = facet_type <@Incomplete> [concrete]
|
||||
// CHECK:STDOUT: %.Self.frozen: %J.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self]
|
||||
// CHECK:STDOUT: %J.lookup_impl_witness.cb1: <witness> = lookup_impl_witness %.Self.frozen, @J [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.221: type = impl_witness_access %J.lookup_impl_witness.cb1, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.aa3: <witness> = impl_self_witness %.Self.frozen, @J [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.643: type = impl_witness_access %.aa3, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self: %J.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self]
|
||||
// CHECK:STDOUT: %J.lookup_impl_witness.df8: <witness> = lookup_impl_witness %.Self, @J [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.bbd: type = impl_witness_access %J.lookup_impl_witness.df8, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %J_where.type: type = facet_type <@J where .Self impls @Incomplete and %impl.elem0.bbd = %empty_tuple.type> [concrete]
|
||||
// CHECK:STDOUT: %.b2e: <witness> = impl_self_witness %.Self, @J [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.4f1: type = impl_witness_access %.b2e, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %J_where.type.297: type = facet_type <@J where .Self impls @Incomplete and %impl.elem0.4f1 = %empty_tuple.type> [concrete]
|
||||
// CHECK:STDOUT: %J.impl_witness: <witness> = impl_witness @C.as.J.impl.%J.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Self.d08: %Incomplete.type = symbolic_binding Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Incomplete.impl_witness: <witness> = impl_witness @C.as.Incomplete.impl.%Incomplete.impl_witness_table [concrete]
|
||||
@@ -598,7 +598,7 @@ interface B {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc8_46: type = facet_access_type %.Self.ref.loc8_46 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc8_46: type = converted %.Self.ref.loc8_46, %.Self.as_type.loc8_46 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc8: %J.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc8_46.1: type = impl_witness_access constants.%J.lookup_impl_witness.cb1, element0 [symbolic_self = constants.%impl.elem0.221]
|
||||
// CHECK:STDOUT: %impl.elem0.loc8_46.1: type = impl_witness_access constants.%.aa3, element0 [symbolic_self = constants.%impl.elem0.643]
|
||||
// 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: %rewrite.loc8_49.1 = requirement_rewrite %impl.elem0.loc8_46.1, %.loc8_52.2 [concrete]
|
||||
@@ -607,9 +607,9 @@ interface B {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc8_19.2: type = facet_access_type %.Self.ref.loc8_19.2 [symbolic_self = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc8_19.2: type = converted %.Self.ref.loc8_19.1, %.Self.as_type.loc8_19.2 [symbolic_self = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %impls.loc8_25.2 = requirement_impls %.loc8_19.2, %Incomplete.ref.loc8 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc8_46.2: type = impl_witness_access constants.%J.lookup_impl_witness.df8, element0 [symbolic_self = constants.%impl.elem0.bbd]
|
||||
// CHECK:STDOUT: %impl.elem0.loc8_46.2: type = impl_witness_access constants.%.b2e, element0 [symbolic_self = constants.%impl.elem0.4f1]
|
||||
// CHECK:STDOUT: %rewrite.loc8_49.2 = requirement_rewrite %impl.elem0.loc8_46.2, %.loc8_52.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc8_13: type = where_expr [concrete = constants.%J_where.type] {
|
||||
// CHECK:STDOUT: %.loc8_13: type = where_expr [concrete = constants.%J_where.type.297] {
|
||||
// CHECK:STDOUT: %base_facet_type.loc8 = requirement_base_facet_type %J.ref.loc8 [concrete]
|
||||
// CHECK:STDOUT: %impls.loc8_25.2 = requirement_impls %.loc8_19.2, %Incomplete.ref.loc8 [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc8_49.2 = requirement_rewrite %impl.elem0.loc8_46.2, %.loc8_52.2 [concrete]
|
||||
@@ -634,7 +634,7 @@ interface B {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc13_46: type = facet_access_type %.Self.ref.loc13_46 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc13_46: type = converted %.Self.ref.loc13_46, %.Self.as_type.loc13_46 [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %T.ref.loc13: %J.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_46.1: type = impl_witness_access constants.%J.lookup_impl_witness.cb1, element0 [symbolic_self = constants.%impl.elem0.221]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_46.1: type = impl_witness_access constants.%.aa3, element0 [symbolic_self = constants.%impl.elem0.643]
|
||||
// CHECK:STDOUT: %.loc13_52.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc13_52.2: type = converted %.loc13_52.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %rewrite.loc13_49.1 = requirement_rewrite %impl.elem0.loc13_46.1, %.loc13_52.2 [concrete]
|
||||
@@ -643,9 +643,9 @@ interface B {
|
||||
// CHECK:STDOUT: %.Self.as_type.loc13_19.2: type = facet_access_type %.Self.ref.loc13_19.2 [symbolic_self = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc13_19.2: type = converted %.Self.ref.loc13_19.1, %.Self.as_type.loc13_19.2 [symbolic_self = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %impls.loc13_25.2 = requirement_impls %.loc13_19.2, %Incomplete.ref.loc13 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_46.2: type = impl_witness_access constants.%J.lookup_impl_witness.df8, element0 [symbolic_self = constants.%impl.elem0.bbd]
|
||||
// CHECK:STDOUT: %impl.elem0.loc13_46.2: type = impl_witness_access constants.%.b2e, element0 [symbolic_self = constants.%impl.elem0.4f1]
|
||||
// CHECK:STDOUT: %rewrite.loc13_49.2 = requirement_rewrite %impl.elem0.loc13_46.2, %.loc13_52.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc13_13: type = where_expr [concrete = constants.%J_where.type] {
|
||||
// CHECK:STDOUT: %.loc13_13: type = where_expr [concrete = constants.%J_where.type.297] {
|
||||
// CHECK:STDOUT: %base_facet_type.loc13 = requirement_base_facet_type %J.ref.loc13 [concrete]
|
||||
// CHECK:STDOUT: %impls.loc13_25.2 = requirement_impls %.loc13_19.2, %Incomplete.ref.loc13 [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc13_49.2 = requirement_rewrite %impl.elem0.loc13_46.2, %.loc13_52.2 [concrete]
|
||||
@@ -681,13 +681,13 @@ interface B {
|
||||
// CHECK:STDOUT: !requires:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @C.as.J.impl: %C.ref.loc8 as %.loc8_13 {
|
||||
// CHECK:STDOUT: impl @C.as.J.impl: %C.ref.loc8 as %J.ref.loc8 {
|
||||
// CHECK:STDOUT: %J.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C.as.J.impl [concrete]
|
||||
// CHECK:STDOUT: %J.impl_witness: <witness> = impl_witness %J.impl_witness_table [concrete = constants.%J.impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc8_13
|
||||
// CHECK:STDOUT: extend %J.ref.loc8
|
||||
// CHECK:STDOUT: witness = %J.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -789,12 +789,12 @@ interface B {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Incomplete;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @C.as.I.impl: %C.ref as %.loc12_13 {
|
||||
// CHECK:STDOUT: impl @C.as.I.impl: %C.ref as %I.ref {
|
||||
// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @C.as.I.impl [concrete]
|
||||
// CHECK:STDOUT: %I.impl_witness: <witness> = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc12_13
|
||||
// CHECK:STDOUT: extend %I.ref
|
||||
// CHECK:STDOUT: witness = <error>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -874,7 +874,7 @@ interface B {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Incomplete;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @C.as.I.impl: %C.ref as %.loc12_13 {
|
||||
// CHECK:STDOUT: impl @C.as.I.impl: %C.ref as %I.ref {
|
||||
// CHECK:STDOUT: %C.as.I.impl.F.decl: %C.as.I.impl.F.type = fn_decl @C.as.I.impl.F [concrete = constants.%C.as.I.impl.F] {
|
||||
// CHECK:STDOUT: %return.patt: <error> = return_slot_pattern <error>, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -889,7 +889,7 @@ interface B {
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Incomplete = <poisoned>
|
||||
// CHECK:STDOUT: .F = %C.as.I.impl.F.decl
|
||||
// CHECK:STDOUT: extend %.loc12_13
|
||||
// CHECK:STDOUT: extend %I.ref
|
||||
// CHECK:STDOUT: witness = <error>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+66
-55
@@ -143,18 +143,23 @@ fn F() {
|
||||
// CHECK:STDOUT: %Y.assoc_type.46d: type = assoc_entity_type @Y, @Y(%empty_tuple.type) [concrete]
|
||||
// CHECK:STDOUT: %assoc0.a6e: %Y.assoc_type.46d = assoc_entity element0, @Y.WithSelf.%T [concrete]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type.1ff: type = facet_access_type %.Self.frozen.fb9 [symbolic_self]
|
||||
// CHECK:STDOUT: %Y.lookup_impl_witness.63b: <witness> = lookup_impl_witness %.Self.frozen.fb9, @Y, @Y(%empty_tuple.type) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.1cc: type = impl_witness_access %Y.lookup_impl_witness.63b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.a74: <witness> = impl_self_witness %.Self.frozen.fb9, @Y, @Y(%empty_tuple.type) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.651: type = impl_witness_access %.a74, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.693: %Y.type.1f7 = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %Y.lookup_impl_witness.b55: <witness> = lookup_impl_witness %.Self.693, @Y, @Y(%empty_tuple.type) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.c92: type = impl_witness_access %Y.lookup_impl_witness.b55, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %Y_where.type.7cc: type = facet_type <@Y, @Y(%empty_tuple.type) where %impl.elem0.c92 = %empty_tuple.type> [concrete]
|
||||
// CHECK:STDOUT: %.c26: <witness> = impl_self_witness %.Self.693, @Y, @Y(%empty_tuple.type) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.85f: type = impl_witness_access %.c26, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %Y_where.type.69b: type = facet_type <@Y, @Y(%empty_tuple.type) where %impl.elem0.85f = %empty_tuple.type> [concrete]
|
||||
// CHECK:STDOUT: %Y.impl_witness: <witness> = impl_witness @C.as.Y.impl.%Y.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Y.facet: %Y.type.1f7 = facet_value %C, (%Y.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Y.lookup_impl_witness.b55: <witness> = lookup_impl_witness %.Self.693, @Y, @Y(%empty_tuple.type) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.c92: type = impl_witness_access %Y.lookup_impl_witness.b55, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %Y_where.type.7cc: type = facet_type <@Y, @Y(%empty_tuple.type) where %impl.elem0.c92 = %empty_tuple.type> [concrete]
|
||||
// CHECK:STDOUT: %facet_value: %Y_where.type.7cc = facet_value %C, (%Y.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %complete_type.002: <witness> = complete_type_witness %Y.type.1f7 [concrete]
|
||||
// CHECK:STDOUT: %Y.lookup_impl_witness.63b: <witness> = lookup_impl_witness %.Self.frozen.fb9, @Y, @Y(%empty_tuple.type) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.1cc: type = impl_witness_access %Y.lookup_impl_witness.63b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %pattern_type.42f: type = pattern_type %Y_where.type.7cc [concrete]
|
||||
// CHECK:STDOUT: %H.patt.9c6: %pattern_type.42f = symbolic_binding_pattern H, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Outer.G.specific_fn: <specific function> = specific_function %Outer.G.49b, @Outer.G(%empty_tuple.type, %facet_value) [concrete]
|
||||
@@ -200,13 +205,13 @@ fn F() {
|
||||
// CHECK:STDOUT: %.loc58_29.1: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type.1ff]
|
||||
// CHECK:STDOUT: %.loc58_29.2: %Y.assoc_type.46d = specific_constant @T.%assoc0, @Y.WithSelf(constants.%empty_tuple.type, constants.%.Self.frozen.fb9) [concrete = constants.%assoc0.a6e]
|
||||
// CHECK:STDOUT: %T.ref: %Y.assoc_type.46d = name_ref T, %.loc58_29.2 [concrete = constants.%assoc0.a6e]
|
||||
// CHECK:STDOUT: %impl.elem0.loc58_29.1: type = impl_witness_access constants.%Y.lookup_impl_witness.63b, element0 [symbolic_self = constants.%impl.elem0.1cc]
|
||||
// CHECK:STDOUT: %impl.elem0.loc58_29.1: type = impl_witness_access constants.%.a74, element0 [symbolic_self = constants.%impl.elem0.651]
|
||||
// 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: %rewrite.loc58_32.1 = requirement_rewrite %impl.elem0.loc58_29.1, %.loc58_35.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc58_29.2: type = impl_witness_access constants.%Y.lookup_impl_witness.b55, element0 [symbolic_self = constants.%impl.elem0.c92]
|
||||
// CHECK:STDOUT: %impl.elem0.loc58_29.2: type = impl_witness_access constants.%.c26, element0 [symbolic_self = constants.%impl.elem0.85f]
|
||||
// CHECK:STDOUT: %rewrite.loc58_32.2 = requirement_rewrite %impl.elem0.loc58_29.2, %.loc58_35.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc58_23: type = where_expr [concrete = constants.%Y_where.type.7cc] {
|
||||
// CHECK:STDOUT: %.loc58_23: type = where_expr [concrete = constants.%Y_where.type.69b] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc58_32.2 = requirement_rewrite %impl.elem0.loc58_29.2, %.loc58_35.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -238,13 +243,13 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @C.as.Y.impl: %C.ref as %.loc58_23 {
|
||||
// CHECK:STDOUT: impl @C.as.Y.impl: %C.ref as %Y.ref {
|
||||
// CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C.as.Y.impl [concrete]
|
||||
// CHECK:STDOUT: %Y.impl_witness: <witness> = impl_witness %Y.impl_witness_table [concrete = constants.%Y.impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc58_23
|
||||
// CHECK:STDOUT: extend %Y.ref
|
||||
// CHECK:STDOUT: witness = %Y.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -470,7 +475,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %Y.assoc_type.9e3: type = assoc_entity_type @Y, @Y(%OuterParam) [symbolic]
|
||||
// CHECK:STDOUT: %assoc0.c2d: %Y.assoc_type.9e3 = assoc_entity element0, @Y.WithSelf.%T [symbolic]
|
||||
// CHECK:STDOUT: %.Self.frozen.3ed: %Y.type.6da = symbolic_binding .Self [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.ab6: <witness> = require_complete_type %Y.type.6da [symbolic]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Y.type.6da [symbolic]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type.b76: type = facet_access_type %.Self.frozen.3ed [symbolic]
|
||||
// CHECK:STDOUT: %Y.lookup_impl_witness.9ce: <witness> = lookup_impl_witness %.Self.frozen.3ed, @Y, @Y(%OuterParam) [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.c34: type = impl_witness_access %Y.lookup_impl_witness.9ce, element0 [symbolic]
|
||||
@@ -485,9 +490,13 @@ fn F() {
|
||||
// CHECK:STDOUT: %Outer.G.type.2cf: type = fn_type @Outer.G, @Outer(%OuterParam) [symbolic]
|
||||
// CHECK:STDOUT: %Outer.G.f56: %Outer.G.type.2cf = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %C.147: type = class_type @C, @C(%OuterParam) [symbolic]
|
||||
// CHECK:STDOUT: %Y.impl_witness.c9b: <witness> = impl_witness @C.as.Y.impl.%Y.impl_witness_table, @C.as.Y.impl(%OuterParam) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.56f: <witness> = require_complete_type %Y_where.type.883 [symbolic]
|
||||
// CHECK:STDOUT: %Y.facet.798: %Y.type.6da = facet_value %C.147, (%Y.impl_witness.c9b) [symbolic]
|
||||
// CHECK:STDOUT: %.056: <witness> = impl_self_witness %.Self.frozen.3ed, @Y, @Y(%OuterParam) [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.389: type = impl_witness_access %.056, element0 [symbolic]
|
||||
// CHECK:STDOUT: %.a5c: <witness> = impl_self_witness %.Self.b74, @Y, @Y(%OuterParam) [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.aaa: type = impl_witness_access %.a5c, element0 [symbolic]
|
||||
// CHECK:STDOUT: %Y_where.type.cb4: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.aaa = %empty_tuple.type> [symbolic]
|
||||
// CHECK:STDOUT: %Y.impl_witness.b49: <witness> = impl_witness @C.as.Y.impl.%Y.impl_witness_table, @C.as.Y.impl(%OuterParam) [symbolic]
|
||||
// CHECK:STDOUT: %Y.facet.253: %Y.type.6da = facet_value %C.147, (%Y.impl_witness.b49) [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %Z1.impl_witness: <witness> = impl_witness @empty_tuple.type.as.Z1.impl.%Z1.impl_witness_table [concrete]
|
||||
@@ -523,14 +532,18 @@ fn F() {
|
||||
// CHECK:STDOUT: %assoc0.ef6: %Y.assoc_type.d53 = assoc_entity element0, @Y.WithSelf.%T [concrete]
|
||||
// CHECK:STDOUT: %complete_type.c4c: <witness> = complete_type_witness %Y.type.b7c [concrete]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type.1e5: type = facet_access_type %.Self.frozen.70d [symbolic_self]
|
||||
// CHECK:STDOUT: %.177: <witness> = impl_self_witness %.Self.frozen.70d, @Y, @Y(%Z1.facet) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.d83: type = impl_witness_access %.177, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.c6a: <witness> = impl_self_witness %.Self.b06, @Y, @Y(%Z1.facet) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.c60: type = impl_witness_access %.c6a, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %Y_where.type.0d1: type = facet_type <@Y, @Y(%Z1.facet) where %impl.elem0.c60 = %empty_tuple.type> [concrete]
|
||||
// CHECK:STDOUT: %Y.impl_witness.5cc: <witness> = impl_witness @C.as.Y.impl.%Y.impl_witness_table, @C.as.Y.impl(%Z1.facet) [concrete]
|
||||
// CHECK:STDOUT: %facet_value.3eb: %Y_where.type.8eb = facet_value %C.5e2, (%Y.impl_witness.5cc) [concrete]
|
||||
// CHECK:STDOUT: %Y.lookup_impl_witness.fb3: <witness> = lookup_impl_witness %.Self.frozen.70d, @Y, @Y(%Z1.facet) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.73b: type = impl_witness_access %Y.lookup_impl_witness.fb3, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %Y.impl_witness.82a: <witness> = impl_witness @C.as.Y.impl.%Y.impl_witness_table, @C.as.Y.impl(%Z1.facet) [concrete]
|
||||
// CHECK:STDOUT: %complete_type.d76: <witness> = complete_type_witness %Y_where.type.8eb [concrete]
|
||||
// CHECK:STDOUT: %facet_value.58a: %Y_where.type.8eb = facet_value %C.5e2, (%Y.impl_witness.82a) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.692: type = pattern_type %Y_where.type.8eb [concrete]
|
||||
// CHECK:STDOUT: %H.patt.a46: %pattern_type.692 = symbolic_binding_pattern H, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Outer.G.specific_fn: <specific function> = specific_function %Outer.G.20a, @Outer.G(%Z1.facet, %facet_value.58a) [concrete]
|
||||
// CHECK:STDOUT: %Outer.G.specific_fn: <specific function> = specific_function %Outer.G.20a, @Outer.G(%Z1.facet, %facet_value.3eb) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -628,28 +641,27 @@ fn F() {
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(%OuterParam) [symbolic = %C (constants.%C.147)]
|
||||
// CHECK:STDOUT: %Y.type: type = facet_type <@Y, @Y(%OuterParam)> [symbolic = %Y.type (constants.%Y.type.6da)]
|
||||
// CHECK:STDOUT: %.Self.frozen.loc14_15.2: @C.as.Y.impl.%Y.type (%Y.type.6da) = symbolic_binding .Self [symbolic = %.Self.frozen.loc14_15.2 (constants.%.Self.frozen.3ed)]
|
||||
// CHECK:STDOUT: %require_complete.loc14_21: <witness> = require_complete_type %Y.type [symbolic = %require_complete.loc14_21 (constants.%require_complete.ab6)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Y.type [symbolic = %require_complete (constants.%require_complete)]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.loc14_15.2 [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.b76)]
|
||||
// CHECK:STDOUT: %Y.assoc_type: type = assoc_entity_type @Y, @Y(%OuterParam) [symbolic = %Y.assoc_type (constants.%Y.assoc_type.9e3)]
|
||||
// CHECK:STDOUT: %assoc0: @C.as.Y.impl.%Y.assoc_type (%Y.assoc_type.9e3) = assoc_entity element0, @Y.WithSelf.%T [symbolic = %assoc0 (constants.%assoc0.c2d)]
|
||||
// CHECK:STDOUT: %Y.lookup_impl_witness.loc14_21.1: <witness> = lookup_impl_witness %.Self.frozen.loc14_15.2, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness.loc14_21.1 (constants.%Y.lookup_impl_witness.9ce)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_21.3: type = impl_witness_access %Y.lookup_impl_witness.loc14_21.1, element0 [symbolic = %impl.elem0.loc14_21.3 (constants.%impl.elem0.c34)]
|
||||
// CHECK:STDOUT: %.loc14_21.3: <witness> = impl_self_witness %.Self.frozen.loc14_15.2, @Y, @Y(%OuterParam) [symbolic = %.loc14_21.3 (constants.%.056)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_21.3: type = impl_witness_access %.loc14_21.3, element0 [symbolic = %impl.elem0.loc14_21.3 (constants.%impl.elem0.389)]
|
||||
// CHECK:STDOUT: %.Self: @C.as.Y.impl.%Y.type (%Y.type.6da) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.b74)]
|
||||
// CHECK:STDOUT: %Y.lookup_impl_witness.loc14_21.2: <witness> = lookup_impl_witness %.Self, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness.loc14_21.2 (constants.%Y.lookup_impl_witness.75a)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_21.4: type = impl_witness_access %Y.lookup_impl_witness.loc14_21.2, element0 [symbolic = %impl.elem0.loc14_21.4 (constants.%impl.elem0.5e0)]
|
||||
// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.loc14_21.4 = constants.%empty_tuple.type> [symbolic = %Y_where.type (constants.%Y_where.type.883)]
|
||||
// CHECK:STDOUT: %Y.impl_witness.loc14_29.2: <witness> = impl_witness %Y.impl_witness_table, @C.as.Y.impl(%OuterParam) [symbolic = %Y.impl_witness.loc14_29.2 (constants.%Y.impl_witness.c9b)]
|
||||
// CHECK:STDOUT: %.loc14_21.4: <witness> = impl_self_witness %.Self, @Y, @Y(%OuterParam) [symbolic = %.loc14_21.4 (constants.%.a5c)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_21.4: type = impl_witness_access %.loc14_21.4, element0 [symbolic = %impl.elem0.loc14_21.4 (constants.%impl.elem0.aaa)]
|
||||
// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.loc14_21.4 = constants.%empty_tuple.type> [symbolic = %Y_where.type (constants.%Y_where.type.cb4)]
|
||||
// CHECK:STDOUT: %Y.impl_witness.loc14_29.2: <witness> = impl_witness %Y.impl_witness_table, @C.as.Y.impl(%OuterParam) [symbolic = %Y.impl_witness.loc14_29.2 (constants.%Y.impl_witness.b49)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc14_15: <witness> = require_complete_type %Y_where.type [symbolic = %require_complete.loc14_15 (constants.%require_complete.56f)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl: %C.ref as %.loc14_15 {
|
||||
// CHECK:STDOUT: impl: %C.ref as %Y.ref {
|
||||
// CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C.as.Y.impl [concrete]
|
||||
// CHECK:STDOUT: %Y.impl_witness.loc14_29.1: <witness> = impl_witness %Y.impl_witness_table, @C.as.Y.impl(constants.%OuterParam) [symbolic = %Y.impl_witness.loc14_29.2 (constants.%Y.impl_witness.c9b)]
|
||||
// CHECK:STDOUT: %Y.impl_witness.loc14_29.1: <witness> = impl_witness %Y.impl_witness_table, @C.as.Y.impl(constants.%OuterParam) [symbolic = %Y.impl_witness.loc14_29.2 (constants.%Y.impl_witness.b49)]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc14_15
|
||||
// CHECK:STDOUT: extend %Y.ref
|
||||
// CHECK:STDOUT: witness = %Y.impl_witness.loc14_29.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -724,13 +736,13 @@ fn F() {
|
||||
// CHECK:STDOUT: %.loc14_21.1: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.b76)]
|
||||
// CHECK:STDOUT: %.loc14_21.2: @C.as.Y.impl.%Y.assoc_type (%Y.assoc_type.9e3) = specific_constant @T.%assoc0, @Y.WithSelf(constants.%OuterParam, constants.%.Self.frozen.3ed) [symbolic = %assoc0 (constants.%assoc0.c2d)]
|
||||
// CHECK:STDOUT: %T.ref: @C.as.Y.impl.%Y.assoc_type (%Y.assoc_type.9e3) = name_ref T, %.loc14_21.2 [symbolic = %assoc0 (constants.%assoc0.c2d)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_21.1: type = impl_witness_access constants.%Y.lookup_impl_witness.9ce, element0 [symbolic = %impl.elem0.loc14_21.3 (constants.%impl.elem0.c34)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_21.1: type = impl_witness_access constants.%.056, element0 [symbolic = %impl.elem0.loc14_21.3 (constants.%impl.elem0.389)]
|
||||
// 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: %rewrite.loc14_24.1 = requirement_rewrite %impl.elem0.loc14_21.1, %.loc14_27.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_21.2: type = impl_witness_access constants.%Y.lookup_impl_witness.75a, element0 [symbolic = %impl.elem0.loc14_21.4 (constants.%impl.elem0.5e0)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_21.2: type = impl_witness_access constants.%.a5c, element0 [symbolic = %impl.elem0.loc14_21.4 (constants.%impl.elem0.aaa)]
|
||||
// CHECK:STDOUT: %rewrite.loc14_24.2 = requirement_rewrite %impl.elem0.loc14_21.2, %.loc14_27.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc14_15: type = where_expr [symbolic = %Y_where.type (constants.%Y_where.type.883)] {
|
||||
// CHECK:STDOUT: %.loc14_15: type = where_expr [symbolic = %Y_where.type (constants.%Y_where.type.cb4)] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc14_24.2 = requirement_rewrite %impl.elem0.loc14_21.2, %.loc14_27.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -754,7 +766,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %OuterParam: %Z1.type = symbolic_binding OuterParam, 0 [symbolic = %OuterParam (constants.%OuterParam)]
|
||||
// CHECK:STDOUT: %Y.type: type = facet_type <@Y, @Y(%OuterParam)> [symbolic = %Y.type (constants.%Y.type.6da)]
|
||||
// CHECK:STDOUT: %.Self.frozen.loc11_28.1: @Outer.G.%Y.type (%Y.type.6da) = symbolic_binding .Self [symbolic = %.Self.frozen.loc11_28.1 (constants.%.Self.frozen.3ed)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Y.type [symbolic = %require_complete (constants.%require_complete.ab6)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Y.type [symbolic = %require_complete (constants.%require_complete)]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.loc11_28.1 [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.b76)]
|
||||
// CHECK:STDOUT: %Y.assoc_type: type = assoc_entity_type @Y, @Y(%OuterParam) [symbolic = %Y.assoc_type (constants.%Y.assoc_type.9e3)]
|
||||
// CHECK:STDOUT: %assoc0: @Outer.G.%Y.assoc_type (%Y.assoc_type.9e3) = assoc_entity element0, @Y.WithSelf.%T [symbolic = %assoc0 (constants.%assoc0.c2d)]
|
||||
@@ -812,9 +824,9 @@ fn F() {
|
||||
// CHECK:STDOUT: %Outer.loc21_49: type = class_type @Outer, @Outer(constants.%Z1.facet) [concrete = constants.%Outer.22e]
|
||||
// CHECK:STDOUT: %.loc21_50: type = specific_constant @Outer.%C.decl, @Outer(constants.%Z1.facet) [concrete = constants.%C.5e2]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %.loc21_50 [concrete = constants.%C.5e2]
|
||||
// CHECK:STDOUT: %facet_value.loc21_52: %Y_where.type.8eb = facet_value constants.%C.5e2, (constants.%Y.impl_witness.82a) [concrete = constants.%facet_value.58a]
|
||||
// CHECK:STDOUT: %.loc21_52: %Y_where.type.8eb = converted constants.%C.5e2, %facet_value.loc21_52 [concrete = constants.%facet_value.58a]
|
||||
// CHECK:STDOUT: %Outer.G.specific_fn: <specific function> = specific_function %G.ref, @Outer.G(constants.%Z1.facet, constants.%facet_value.58a) [concrete = constants.%Outer.G.specific_fn]
|
||||
// CHECK:STDOUT: %facet_value.loc21_52: %Y_where.type.8eb = facet_value constants.%C.5e2, (constants.%Y.impl_witness.5cc) [concrete = constants.%facet_value.3eb]
|
||||
// CHECK:STDOUT: %.loc21_52: %Y_where.type.8eb = converted constants.%C.5e2, %facet_value.loc21_52 [concrete = constants.%facet_value.3eb]
|
||||
// CHECK:STDOUT: %Outer.G.specific_fn: <specific function> = specific_function %G.ref, @Outer.G(constants.%Z1.facet, constants.%facet_value.3eb) [concrete = constants.%Outer.G.specific_fn]
|
||||
// CHECK:STDOUT: %Outer.G.call: init %empty_tuple.type = call %Outer.G.specific_fn()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -863,7 +875,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %OuterParam => constants.%OuterParam
|
||||
// CHECK:STDOUT: %Y.type => constants.%Y.type.6da
|
||||
// CHECK:STDOUT: %.Self.frozen.loc11_28.1 => constants.%.Self.frozen.3ed
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.ab6
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.b76
|
||||
// CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.9e3
|
||||
// CHECK:STDOUT: %assoc0 => constants.%assoc0.c2d
|
||||
@@ -885,20 +897,20 @@ fn F() {
|
||||
// CHECK:STDOUT: %C => constants.%C.147
|
||||
// CHECK:STDOUT: %Y.type => constants.%Y.type.6da
|
||||
// CHECK:STDOUT: %.Self.frozen.loc14_15.2 => constants.%.Self.frozen.3ed
|
||||
// CHECK:STDOUT: %require_complete.loc14_21 => constants.%require_complete.ab6
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.b76
|
||||
// CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.9e3
|
||||
// CHECK:STDOUT: %assoc0 => constants.%assoc0.c2d
|
||||
// CHECK:STDOUT: %Y.lookup_impl_witness.loc14_21.1 => constants.%Y.lookup_impl_witness.9ce
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_21.3 => constants.%impl.elem0.c34
|
||||
// CHECK:STDOUT: %.loc14_21.3 => constants.%.056
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_21.3 => constants.%impl.elem0.389
|
||||
// CHECK:STDOUT: %.Self => constants.%.Self.b74
|
||||
// CHECK:STDOUT: %Y.lookup_impl_witness.loc14_21.2 => constants.%Y.lookup_impl_witness.75a
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_21.4 => constants.%impl.elem0.5e0
|
||||
// CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.883
|
||||
// CHECK:STDOUT: %Y.impl_witness.loc14_29.2 => constants.%Y.impl_witness.c9b
|
||||
// CHECK:STDOUT: %.loc14_21.4 => constants.%.a5c
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_21.4 => constants.%impl.elem0.aaa
|
||||
// CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.cb4
|
||||
// CHECK:STDOUT: %Y.impl_witness.loc14_29.2 => constants.%Y.impl_witness.b49
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Y.WithSelf(constants.%OuterParam, constants.%Y.facet.798) {
|
||||
// CHECK:STDOUT: specific @Y.WithSelf(constants.%OuterParam, constants.%Y.facet.253) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %OuterParam => constants.%OuterParam
|
||||
// CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.9e3
|
||||
@@ -938,20 +950,19 @@ fn F() {
|
||||
// CHECK:STDOUT: %C => constants.%C.5e2
|
||||
// CHECK:STDOUT: %Y.type => constants.%Y.type.b7c
|
||||
// CHECK:STDOUT: %.Self.frozen.loc14_15.2 => constants.%.Self.frozen.70d
|
||||
// CHECK:STDOUT: %require_complete.loc14_21 => constants.%complete_type.c4c
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.c4c
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.1e5
|
||||
// CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.d53
|
||||
// CHECK:STDOUT: %assoc0 => constants.%assoc0.ef6
|
||||
// CHECK:STDOUT: %Y.lookup_impl_witness.loc14_21.1 => constants.%Y.lookup_impl_witness.fb3
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_21.3 => constants.%impl.elem0.73b
|
||||
// CHECK:STDOUT: %.loc14_21.3 => constants.%.177
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_21.3 => constants.%impl.elem0.d83
|
||||
// CHECK:STDOUT: %.Self => constants.%.Self.b06
|
||||
// CHECK:STDOUT: %Y.lookup_impl_witness.loc14_21.2 => constants.%Y.lookup_impl_witness.d61
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_21.4 => constants.%impl.elem0.400
|
||||
// CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.8eb
|
||||
// CHECK:STDOUT: %Y.impl_witness.loc14_29.2 => constants.%Y.impl_witness.82a
|
||||
// CHECK:STDOUT: %.loc14_21.4 => constants.%.c6a
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_21.4 => constants.%impl.elem0.c60
|
||||
// CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.0d1
|
||||
// CHECK:STDOUT: %Y.impl_witness.loc14_29.2 => constants.%Y.impl_witness.5cc
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc14_15 => constants.%complete_type.d76
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Y.WithSelf(constants.%Z1.facet, constants.%Self.b90) {
|
||||
@@ -961,7 +972,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %assoc0 => constants.%assoc0.ef6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Outer.G(constants.%Z1.facet, constants.%facet_value.58a) {
|
||||
// CHECK:STDOUT: specific @Outer.G(constants.%Z1.facet, constants.%facet_value.3eb) {
|
||||
// CHECK:STDOUT: %OuterParam => constants.%Z1.facet
|
||||
// CHECK:STDOUT: %Y.type => constants.%Y.type.b7c
|
||||
// CHECK:STDOUT: %.Self.frozen.loc11_28.1 => constants.%.Self.frozen.70d
|
||||
@@ -977,7 +988,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.8eb
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.692
|
||||
// CHECK:STDOUT: %H.patt.loc11_24.2 => constants.%H.patt.a46
|
||||
// CHECK:STDOUT: %H.loc11_24.1 => constants.%facet_value.58a
|
||||
// CHECK:STDOUT: %H.loc11_24.1 => constants.%facet_value.3eb
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+218
-240
@@ -122,31 +122,29 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %assoc0.c53: %Z.assoc_type.083 = assoc_entity element0, @Z.WithSelf.%X [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.291: <witness> = require_complete_type %Z.type.78b [symbolic]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type.d9d: type = facet_access_type %.Self.frozen.e6b [symbolic]
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness.aff: <witness> = lookup_impl_witness %.Self.frozen.e6b, @Z, @Z(%S) [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.4c0: type = impl_witness_access %Z.lookup_impl_witness.aff, element0 [symbolic]
|
||||
// CHECK:STDOUT: %.948: <witness> = impl_self_witness %.Self.frozen.e6b, @Z, @Z(%S) [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.b8f: type = impl_witness_access %.948, element0 [symbolic]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self.6d3: %Z.type.78b = symbolic_binding .Self [symbolic]
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness.d10: <witness> = lookup_impl_witness %.Self.6d3, @Z, @Z(%S) [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.1d4: type = impl_witness_access %Z.lookup_impl_witness.d10, element0 [symbolic]
|
||||
// CHECK:STDOUT: %Z_where.type.a2b: type = facet_type <@Z, @Z(%S) where %impl.elem0.1d4 = %empty_tuple.type> [symbolic]
|
||||
// CHECK:STDOUT: %Z.impl_witness.c0c: <witness> = impl_witness @T.as.Z.impl.447.%Z.impl_witness_table, @T.as.Z.impl.447(%T.67d, %S) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.9b7: <witness> = require_complete_type %Z_where.type.a2b [symbolic]
|
||||
// CHECK:STDOUT: %Z.facet.96b: %Z.type.78b = facet_value %T.67d, (%Z.impl_witness.c0c) [symbolic]
|
||||
// CHECK:STDOUT: %.29c: <witness> = impl_self_witness %.Self.6d3, @Z, @Z(%S) [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.6e9: type = impl_witness_access %.29c, element0 [symbolic]
|
||||
// CHECK:STDOUT: %Z_where.type.28d: type = facet_type <@Z, @Z(%S) where %impl.elem0.6e9 = %empty_tuple.type> [symbolic]
|
||||
// CHECK:STDOUT: %Z.impl_witness.1cd: <witness> = impl_witness @T.as.Z.impl.3c5.%Z.impl_witness_table, @T.as.Z.impl.3c5(%T.67d, %S) [symbolic]
|
||||
// CHECK:STDOUT: %Z.facet.794: %Z.type.78b = facet_value %T.67d, (%Z.impl_witness.1cd) [symbolic]
|
||||
// CHECK:STDOUT: %Z.type.963: type = facet_type <@Z, @Z(%C)> [concrete]
|
||||
// CHECK:STDOUT: %.Self.frozen.16f: %Z.type.963 = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %Self.ae2: %Z.type.963 = symbolic_binding Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Z.assoc_type.f4d: type = assoc_entity_type @Z, @Z(%C) [concrete]
|
||||
// CHECK:STDOUT: %assoc0.169: %Z.assoc_type.f4d = assoc_entity element0, @Z.WithSelf.%X [concrete]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type.16b: type = facet_access_type %.Self.frozen.16f [symbolic_self]
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness.9bf: <witness> = lookup_impl_witness %.Self.frozen.16f, @Z, @Z(%C) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.b30: type = impl_witness_access %Z.lookup_impl_witness.9bf, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.7fc: <witness> = impl_self_witness %.Self.frozen.16f, @Z, @Z(%C) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.412: type = impl_witness_access %.7fc, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.e3e: %Z.type.963 = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness.e93: <witness> = lookup_impl_witness %.Self.e3e, @Z, @Z(%C) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.3ed: type = impl_witness_access %Z.lookup_impl_witness.e93, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %Z_where.type.b22: type = facet_type <@Z, @Z(%C) where %impl.elem0.3ed = %T.67d> [symbolic]
|
||||
// CHECK:STDOUT: %Z.impl_witness.2d9: <witness> = impl_witness @T.as.Z.impl.adf.%Z.impl_witness_table, @T.as.Z.impl.adf(%T.67d) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.d7e: <witness> = require_complete_type %Z_where.type.b22 [symbolic]
|
||||
// CHECK:STDOUT: %Z.facet.b21: %Z.type.963 = facet_value %T.67d, (%Z.impl_witness.2d9) [symbolic]
|
||||
// CHECK:STDOUT: %.286: <witness> = impl_self_witness %.Self.e3e, @Z, @Z(%C) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.f68: type = impl_witness_access %.286, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %Z_where.type.26f: type = facet_type <@Z, @Z(%C) where %impl.elem0.f68 = %T.67d> [symbolic]
|
||||
// CHECK:STDOUT: %Z.impl_witness.cb6: <witness> = impl_witness @T.as.Z.impl.dc2.%Z.impl_witness_table, @T.as.Z.impl.dc2(%T.67d) [symbolic]
|
||||
// CHECK:STDOUT: %Z.facet.624: %Z.type.963 = facet_value %T.67d, (%Z.impl_witness.cb6) [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.d7e: type = pattern_type %Z.type.963 [concrete]
|
||||
// CHECK:STDOUT: %T.patt.4cc: %pattern_type.d7e = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.4b3: %Z.type.963 = symbolic_binding T, 0 [symbolic]
|
||||
@@ -157,10 +155,9 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.df7: <witness> = require_complete_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %Z_where.type.6f1: type = facet_type <@Z, @Z(%C) where %impl.elem0.3ed = %T.as_type> [symbolic]
|
||||
// CHECK:STDOUT: %Z.impl_witness.d78: <witness> = impl_witness @T.as.Z.impl.adf.%Z.impl_witness_table, @T.as.Z.impl.adf(%T.as_type) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.264: <witness> = require_complete_type %Z_where.type.6f1 [symbolic]
|
||||
// CHECK:STDOUT: %.04f: require_specific_def_type = require_specific_def @T.as.Z.impl.adf(%T.as_type) [symbolic]
|
||||
// CHECK:STDOUT: %Z_where.type.147: type = facet_type <@Z, @Z(%C) where %impl.elem0.f68 = %T.as_type> [symbolic]
|
||||
// CHECK:STDOUT: %Z.impl_witness.bed: <witness> = impl_witness @T.as.Z.impl.dc2.%Z.impl_witness_table, @T.as.Z.impl.dc2(%T.as_type) [symbolic]
|
||||
// CHECK:STDOUT: %.ac3: require_specific_def_type = require_specific_def @T.as.Z.impl.dc2(%T.as_type) [symbolic]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.d37 = value_binding_pattern a [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -189,7 +186,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %T.loc3_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc3_14.1 (constants.%T.67d)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: impl_decl @T.as.Z.impl.447 [concrete] {
|
||||
// CHECK:STDOUT: impl_decl @T.as.Z.impl.3c5 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc9_15.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_15.2 (constants.%T.patt.d47)]
|
||||
// CHECK:STDOUT: %S.patt.loc9_24.1: %pattern_type.98f = symbolic_binding_pattern S, 1 [symbolic = %S.patt.loc9_24.2 (constants.%S.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -197,20 +194,20 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %Z.ref: %Z.type.c39 = name_ref Z, file.%Z.decl [concrete = constants.%Z.generic]
|
||||
// CHECK:STDOUT: %S.ref: type = name_ref S, %S.loc9_24.1 [symbolic = %S.loc9_24.2 (constants.%S)]
|
||||
// CHECK:STDOUT: %Z.type.loc9_40.1: type = facet_type <@Z, @Z(constants.%S)> [symbolic = %Z.type.loc9_40.2 (constants.%Z.type.78b)]
|
||||
// CHECK:STDOUT: %.Self.frozen.loc9_42.1: @T.as.Z.impl.447.%Z.type.loc9_40.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self.frozen.loc9_42.2 (constants.%.Self.frozen.e6b)]
|
||||
// CHECK:STDOUT: %.Self.frozen.loc9_42.1: @T.as.Z.impl.3c5.%Z.type.loc9_40.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self.frozen.loc9_42.2 (constants.%.Self.frozen.e6b)]
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.type.loc9_40.1 [concrete]
|
||||
// CHECK:STDOUT: %.Self.ref: @T.as.Z.impl.447.%Z.type.loc9_40.2 (%Z.type.78b) = name_ref .Self, %.Self.frozen.loc9_42.1 [symbolic = %.Self.frozen.loc9_42.2 (constants.%.Self.frozen.e6b)]
|
||||
// CHECK:STDOUT: %.Self.ref: @T.as.Z.impl.3c5.%Z.type.loc9_40.2 (%Z.type.78b) = name_ref .Self, %.Self.frozen.loc9_42.1 [symbolic = %.Self.frozen.loc9_42.2 (constants.%.Self.frozen.e6b)]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.d9d)]
|
||||
// CHECK:STDOUT: %.loc9_48.1: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.d9d)]
|
||||
// CHECK:STDOUT: %.loc9_48.2: @T.as.Z.impl.447.%Z.assoc_type (%Z.assoc_type.083) = specific_constant @X.%assoc0, @Z.WithSelf(constants.%S, constants.%.Self.frozen.e6b) [symbolic = %assoc0 (constants.%assoc0.c53)]
|
||||
// CHECK:STDOUT: %X.ref: @T.as.Z.impl.447.%Z.assoc_type (%Z.assoc_type.083) = name_ref X, %.loc9_48.2 [symbolic = %assoc0 (constants.%assoc0.c53)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_48.1: type = impl_witness_access constants.%Z.lookup_impl_witness.aff, element0 [symbolic = %impl.elem0.loc9_48.3 (constants.%impl.elem0.4c0)]
|
||||
// CHECK:STDOUT: %.loc9_48.2: @T.as.Z.impl.3c5.%Z.assoc_type (%Z.assoc_type.083) = specific_constant @X.%assoc0, @Z.WithSelf(constants.%S, constants.%.Self.frozen.e6b) [symbolic = %assoc0 (constants.%assoc0.c53)]
|
||||
// CHECK:STDOUT: %X.ref: @T.as.Z.impl.3c5.%Z.assoc_type (%Z.assoc_type.083) = name_ref X, %.loc9_48.2 [symbolic = %assoc0 (constants.%assoc0.c53)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_48.1: type = impl_witness_access constants.%.948, element0 [symbolic = %impl.elem0.loc9_48.3 (constants.%impl.elem0.b8f)]
|
||||
// CHECK:STDOUT: %.loc9_54.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc9_54.2: type = converted %.loc9_54.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %rewrite.loc9_51.1 = requirement_rewrite %impl.elem0.loc9_48.1, %.loc9_54.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_48.2: type = impl_witness_access constants.%Z.lookup_impl_witness.d10, element0 [symbolic = %impl.elem0.loc9_48.4 (constants.%impl.elem0.1d4)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_48.2: type = impl_witness_access constants.%.29c, element0 [symbolic = %impl.elem0.loc9_48.4 (constants.%impl.elem0.6e9)]
|
||||
// CHECK:STDOUT: %rewrite.loc9_51.2 = requirement_rewrite %impl.elem0.loc9_48.2, %.loc9_54.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc9_42: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.a2b)] {
|
||||
// CHECK:STDOUT: %.loc9_42: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.28d)] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.type.loc9_40.1 [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc9_51.2 = requirement_rewrite %impl.elem0.loc9_48.2, %.loc9_54.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -225,7 +222,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %S.loc9_24.1: type = symbolic_binding S, 1 [symbolic = %S.loc9_24.2 (constants.%S)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: impl_decl @T.as.Z.impl.adf [concrete] {
|
||||
// CHECK:STDOUT: impl_decl @T.as.Z.impl.dc2 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc11_21.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_21.2 (constants.%T.patt.d47)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc11_29: type = name_ref T, %T.loc11_21.1 [symbolic = %T.loc11_21.2 (constants.%T.67d)]
|
||||
@@ -239,12 +236,12 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %.loc11_45.1: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type.16b]
|
||||
// CHECK:STDOUT: %.loc11_45.2: %Z.assoc_type.f4d = specific_constant @X.%assoc0, @Z.WithSelf(constants.%C, constants.%.Self.frozen.16f) [concrete = constants.%assoc0.169]
|
||||
// CHECK:STDOUT: %X.ref: %Z.assoc_type.f4d = name_ref X, %.loc11_45.2 [concrete = constants.%assoc0.169]
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_45.1: type = impl_witness_access constants.%Z.lookup_impl_witness.9bf, element0 [symbolic_self = constants.%impl.elem0.b30]
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_45.1: type = impl_witness_access constants.%.7fc, element0 [symbolic_self = constants.%impl.elem0.412]
|
||||
// CHECK:STDOUT: %T.ref.loc11_50: type = name_ref T, %T.loc11_21.1 [symbolic = %T.loc11_21.2 (constants.%T.67d)]
|
||||
// CHECK:STDOUT: %rewrite.loc11_48.1 = requirement_rewrite %impl.elem0.loc11_45.1, %T.ref.loc11_50 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_45.2: type = impl_witness_access constants.%Z.lookup_impl_witness.e93, element0 [symbolic_self = constants.%impl.elem0.3ed]
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_45.2: type = impl_witness_access constants.%.286, element0 [symbolic_self = constants.%impl.elem0.f68]
|
||||
// CHECK:STDOUT: %rewrite.loc11_48.2 = requirement_rewrite %impl.elem0.loc11_45.2, %T.ref.loc11_50 [concrete]
|
||||
// CHECK:STDOUT: %.loc11_39: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.b22)] {
|
||||
// CHECK:STDOUT: %.loc11_39: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.26f)] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.type [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc11_48.2 = requirement_rewrite %impl.elem0.loc11_45.2, %T.ref.loc11_50 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -302,55 +299,53 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic impl @T.as.Z.impl.447(%T.loc9_15.1: type, %S.loc9_24.1: type) {
|
||||
// CHECK:STDOUT: generic impl @T.as.Z.impl.3c5(%T.loc9_15.1: type, %S.loc9_24.1: type) {
|
||||
// CHECK:STDOUT: %T.patt.loc9_15.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_15.2 (constants.%T.patt.d47)]
|
||||
// CHECK:STDOUT: %T.loc9_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc9_15.2 (constants.%T.67d)]
|
||||
// CHECK:STDOUT: %S.patt.loc9_24.2: %pattern_type.98f = symbolic_binding_pattern S, 1 [symbolic = %S.patt.loc9_24.2 (constants.%S.patt)]
|
||||
// CHECK:STDOUT: %S.loc9_24.2: type = symbolic_binding S, 1 [symbolic = %S.loc9_24.2 (constants.%S)]
|
||||
// CHECK:STDOUT: %Z.type.loc9_40.2: type = facet_type <@Z, @Z(%S.loc9_24.2)> [symbolic = %Z.type.loc9_40.2 (constants.%Z.type.78b)]
|
||||
// CHECK:STDOUT: %.Self.frozen.loc9_42.2: @T.as.Z.impl.447.%Z.type.loc9_40.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self.frozen.loc9_42.2 (constants.%.Self.frozen.e6b)]
|
||||
// CHECK:STDOUT: %require_complete.loc9_48: <witness> = require_complete_type %Z.type.loc9_40.2 [symbolic = %require_complete.loc9_48 (constants.%require_complete.291)]
|
||||
// CHECK:STDOUT: %.Self.frozen.loc9_42.2: @T.as.Z.impl.3c5.%Z.type.loc9_40.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self.frozen.loc9_42.2 (constants.%.Self.frozen.e6b)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Z.type.loc9_40.2 [symbolic = %require_complete (constants.%require_complete.291)]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.loc9_42.2 [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.d9d)]
|
||||
// CHECK:STDOUT: %Z.assoc_type: type = assoc_entity_type @Z, @Z(%S.loc9_24.2) [symbolic = %Z.assoc_type (constants.%Z.assoc_type.083)]
|
||||
// CHECK:STDOUT: %assoc0: @T.as.Z.impl.447.%Z.assoc_type (%Z.assoc_type.083) = assoc_entity element0, @Z.WithSelf.%X [symbolic = %assoc0 (constants.%assoc0.c53)]
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness.loc9_48.1: <witness> = lookup_impl_witness %.Self.frozen.loc9_42.2, @Z, @Z(%S.loc9_24.2) [symbolic = %Z.lookup_impl_witness.loc9_48.1 (constants.%Z.lookup_impl_witness.aff)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_48.3: type = impl_witness_access %Z.lookup_impl_witness.loc9_48.1, element0 [symbolic = %impl.elem0.loc9_48.3 (constants.%impl.elem0.4c0)]
|
||||
// CHECK:STDOUT: %.Self: @T.as.Z.impl.447.%Z.type.loc9_40.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.6d3)]
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness.loc9_48.2: <witness> = lookup_impl_witness %.Self, @Z, @Z(%S.loc9_24.2) [symbolic = %Z.lookup_impl_witness.loc9_48.2 (constants.%Z.lookup_impl_witness.d10)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_48.4: type = impl_witness_access %Z.lookup_impl_witness.loc9_48.2, element0 [symbolic = %impl.elem0.loc9_48.4 (constants.%impl.elem0.1d4)]
|
||||
// CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(%S.loc9_24.2) where %impl.elem0.loc9_48.4 = constants.%empty_tuple.type> [symbolic = %Z_where.type (constants.%Z_where.type.a2b)]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc9_56.2: <witness> = impl_witness %Z.impl_witness_table, @T.as.Z.impl.447(%T.loc9_15.2, %S.loc9_24.2) [symbolic = %Z.impl_witness.loc9_56.2 (constants.%Z.impl_witness.c0c)]
|
||||
// CHECK:STDOUT: %assoc0: @T.as.Z.impl.3c5.%Z.assoc_type (%Z.assoc_type.083) = assoc_entity element0, @Z.WithSelf.%X [symbolic = %assoc0 (constants.%assoc0.c53)]
|
||||
// CHECK:STDOUT: %.loc9_48.3: <witness> = impl_self_witness %.Self.frozen.loc9_42.2, @Z, @Z(%S.loc9_24.2) [symbolic = %.loc9_48.3 (constants.%.948)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_48.3: type = impl_witness_access %.loc9_48.3, element0 [symbolic = %impl.elem0.loc9_48.3 (constants.%impl.elem0.b8f)]
|
||||
// CHECK:STDOUT: %.Self: @T.as.Z.impl.3c5.%Z.type.loc9_40.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.6d3)]
|
||||
// CHECK:STDOUT: %.loc9_48.4: <witness> = impl_self_witness %.Self, @Z, @Z(%S.loc9_24.2) [symbolic = %.loc9_48.4 (constants.%.29c)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_48.4: type = impl_witness_access %.loc9_48.4, element0 [symbolic = %impl.elem0.loc9_48.4 (constants.%impl.elem0.6e9)]
|
||||
// CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(%S.loc9_24.2) where %impl.elem0.loc9_48.4 = constants.%empty_tuple.type> [symbolic = %Z_where.type (constants.%Z_where.type.28d)]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc9_56.2: <witness> = impl_witness %Z.impl_witness_table, @T.as.Z.impl.3c5(%T.loc9_15.2, %S.loc9_24.2) [symbolic = %Z.impl_witness.loc9_56.2 (constants.%Z.impl_witness.1cd)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc9_42: <witness> = require_complete_type %Z_where.type [symbolic = %require_complete.loc9_42 (constants.%require_complete.9b7)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl: %T.ref as %.loc9_42 {
|
||||
// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @T.as.Z.impl.447 [concrete]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc9_56.1: <witness> = impl_witness %Z.impl_witness_table, @T.as.Z.impl.447(constants.%T.67d, constants.%S) [symbolic = %Z.impl_witness.loc9_56.2 (constants.%Z.impl_witness.c0c)]
|
||||
// CHECK:STDOUT: impl: %T.ref as %Z.type.loc9_40.1 {
|
||||
// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @T.as.Z.impl.3c5 [concrete]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc9_56.1: <witness> = impl_witness %Z.impl_witness_table, @T.as.Z.impl.3c5(constants.%T.67d, constants.%S) [symbolic = %Z.impl_witness.loc9_56.2 (constants.%Z.impl_witness.1cd)]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc9_42
|
||||
// CHECK:STDOUT: extend %Z.type.loc9_40.1
|
||||
// CHECK:STDOUT: witness = %Z.impl_witness.loc9_56.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic final impl @T.as.Z.impl.adf(%T.loc11_21.1: type) {
|
||||
// CHECK:STDOUT: generic final impl @T.as.Z.impl.dc2(%T.loc11_21.1: type) {
|
||||
// CHECK:STDOUT: %T.patt.loc11_21.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_21.2 (constants.%T.patt.d47)]
|
||||
// CHECK:STDOUT: %T.loc11_21.2: type = symbolic_binding T, 0 [symbolic = %T.loc11_21.2 (constants.%T.67d)]
|
||||
// CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(constants.%C) where constants.%impl.elem0.3ed = %T.loc11_21.2> [symbolic = %Z_where.type (constants.%Z_where.type.b22)]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc11_52.2: <witness> = impl_witness %Z.impl_witness_table, @T.as.Z.impl.adf(%T.loc11_21.2) [symbolic = %Z.impl_witness.loc11_52.2 (constants.%Z.impl_witness.2d9)]
|
||||
// CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(constants.%C) where constants.%impl.elem0.f68 = %T.loc11_21.2> [symbolic = %Z_where.type (constants.%Z_where.type.26f)]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc11_52.2: <witness> = impl_witness %Z.impl_witness_table, @T.as.Z.impl.dc2(%T.loc11_21.2) [symbolic = %Z.impl_witness.loc11_52.2 (constants.%Z.impl_witness.cb6)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Z_where.type [symbolic = %require_complete (constants.%require_complete.d7e)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: final impl: %T.ref.loc11_29 as %.loc11_39 {
|
||||
// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @T.as.Z.impl.adf [concrete]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc11_52.1: <witness> = impl_witness %Z.impl_witness_table, @T.as.Z.impl.adf(constants.%T.67d) [symbolic = %Z.impl_witness.loc11_52.2 (constants.%Z.impl_witness.2d9)]
|
||||
// CHECK:STDOUT: final impl: %T.ref.loc11_29 as %Z.type {
|
||||
// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @T.as.Z.impl.dc2 [concrete]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc11_52.1: <witness> = impl_witness %Z.impl_witness_table, @T.as.Z.impl.dc2(constants.%T.67d) [symbolic = %Z.impl_witness.loc11_52.2 (constants.%Z.impl_witness.cb6)]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%T.67d [symbolic = %T.loc11_21.2 (constants.%T.67d)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc11_39
|
||||
// CHECK:STDOUT: extend %Z.type
|
||||
// CHECK:STDOUT: witness = %Z.impl_witness.loc11_52.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -373,7 +368,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.as_type.loc13_26.1 [symbolic = %require_complete (constants.%require_complete.df7)]
|
||||
// CHECK:STDOUT: %.loc15_18.4: require_specific_def_type = require_specific_def @T.as.Z.impl.adf(%T.as_type.loc13_26.1) [symbolic = %.loc15_18.4 (constants.%.04f)]
|
||||
// CHECK:STDOUT: %.loc15_18.4: require_specific_def_type = require_specific_def @T.as.Z.impl.dc2(%T.as_type.loc13_26.1) [symbolic = %.loc15_18.4 (constants.%.ac3)]
|
||||
// CHECK:STDOUT: %a.patt.loc15_15.2: @F.%pattern_type (%pattern_type.d37) = value_binding_pattern a [symbolic = %a.patt.loc15_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%t.param: @F.%T.as_type.loc13_26.1 (%T.as_type)) {
|
||||
@@ -385,7 +380,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %.loc15_18.2: type = converted %T.ref.loc15, %T.as_type.loc15 [symbolic = %T.as_type.loc13_26.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %.loc15_18.3: %Z.assoc_type.f4d = specific_constant @X.%assoc0, @Z.WithSelf(constants.%C, constants.%T.4b3) [concrete = constants.%assoc0.169]
|
||||
// CHECK:STDOUT: %X.ref: %Z.assoc_type.f4d = name_ref X, %.loc15_18.3 [concrete = constants.%assoc0.169]
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Z.impl_witness.d78, element0 [symbolic = %T.as_type.loc13_26.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Z.impl_witness.bed, element0 [symbolic = %T.as_type.loc13_26.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: @F.%T.as_type.loc13_26.1 (%T.as_type) = wrapper_binding a, %t.ref
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
@@ -425,27 +420,27 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %assoc0 => constants.%assoc0.c53
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @T.as.Z.impl.447(constants.%T.67d, constants.%S) {
|
||||
// CHECK:STDOUT: specific @T.as.Z.impl.3c5(constants.%T.67d, constants.%S) {
|
||||
// CHECK:STDOUT: %T.patt.loc9_15.2 => constants.%T.patt.d47
|
||||
// CHECK:STDOUT: %T.loc9_15.2 => constants.%T.67d
|
||||
// CHECK:STDOUT: %S.patt.loc9_24.2 => constants.%S.patt
|
||||
// CHECK:STDOUT: %S.loc9_24.2 => constants.%S
|
||||
// CHECK:STDOUT: %Z.type.loc9_40.2 => constants.%Z.type.78b
|
||||
// CHECK:STDOUT: %.Self.frozen.loc9_42.2 => constants.%.Self.frozen.e6b
|
||||
// CHECK:STDOUT: %require_complete.loc9_48 => constants.%require_complete.291
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.291
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.d9d
|
||||
// CHECK:STDOUT: %Z.assoc_type => constants.%Z.assoc_type.083
|
||||
// CHECK:STDOUT: %assoc0 => constants.%assoc0.c53
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness.loc9_48.1 => constants.%Z.lookup_impl_witness.aff
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_48.3 => constants.%impl.elem0.4c0
|
||||
// CHECK:STDOUT: %.loc9_48.3 => constants.%.948
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_48.3 => constants.%impl.elem0.b8f
|
||||
// CHECK:STDOUT: %.Self => constants.%.Self.6d3
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness.loc9_48.2 => constants.%Z.lookup_impl_witness.d10
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_48.4 => constants.%impl.elem0.1d4
|
||||
// CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.a2b
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc9_56.2 => constants.%Z.impl_witness.c0c
|
||||
// CHECK:STDOUT: %.loc9_48.4 => constants.%.29c
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_48.4 => constants.%impl.elem0.6e9
|
||||
// CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.28d
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc9_56.2 => constants.%Z.impl_witness.1cd
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Z.WithSelf(constants.%S, constants.%Z.facet.96b) {
|
||||
// CHECK:STDOUT: specific @Z.WithSelf(constants.%S, constants.%Z.facet.794) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %T => constants.%S
|
||||
// CHECK:STDOUT: %Z.assoc_type => constants.%Z.assoc_type.083
|
||||
@@ -475,14 +470,14 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %assoc0 => constants.%assoc0.169
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @T.as.Z.impl.adf(constants.%T.67d) {
|
||||
// CHECK:STDOUT: specific @T.as.Z.impl.dc2(constants.%T.67d) {
|
||||
// CHECK:STDOUT: %T.patt.loc11_21.2 => constants.%T.patt.d47
|
||||
// CHECK:STDOUT: %T.loc11_21.2 => constants.%T.67d
|
||||
// CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.b22
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc11_52.2 => constants.%Z.impl_witness.2d9
|
||||
// CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.26f
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc11_52.2 => constants.%Z.impl_witness.cb6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Z.WithSelf(constants.%C, constants.%Z.facet.b21) {
|
||||
// CHECK:STDOUT: specific @Z.WithSelf(constants.%C, constants.%Z.facet.624) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %T => constants.%C
|
||||
// CHECK:STDOUT: %Z.assoc_type => constants.%Z.assoc_type.f4d
|
||||
@@ -505,14 +500,13 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %assoc0 => constants.%assoc0.169
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @T.as.Z.impl.adf(constants.%T.as_type) {
|
||||
// CHECK:STDOUT: specific @T.as.Z.impl.dc2(constants.%T.as_type) {
|
||||
// CHECK:STDOUT: %T.patt.loc11_21.2 => constants.%T.patt.d47
|
||||
// CHECK:STDOUT: %T.loc11_21.2 => constants.%T.as_type
|
||||
// CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.6f1
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc11_52.2 => constants.%Z.impl_witness.d78
|
||||
// CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.147
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc11_52.2 => constants.%Z.impl_witness.bed
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.264
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- fail_nonfinal_specialized_symbolic_rewrite.carbon
|
||||
@@ -544,31 +538,29 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %assoc0.c53: %Z.assoc_type.083 = assoc_entity element0, @Z.WithSelf.%X [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.291: <witness> = require_complete_type %Z.type.78b [symbolic]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type.d9d: type = facet_access_type %.Self.frozen.e6b [symbolic]
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness.aff: <witness> = lookup_impl_witness %.Self.frozen.e6b, @Z, @Z(%S) [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.4c0: type = impl_witness_access %Z.lookup_impl_witness.aff, element0 [symbolic]
|
||||
// CHECK:STDOUT: %.948: <witness> = impl_self_witness %.Self.frozen.e6b, @Z, @Z(%S) [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.b8f: type = impl_witness_access %.948, element0 [symbolic]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self.6d3: %Z.type.78b = symbolic_binding .Self [symbolic]
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness.d10: <witness> = lookup_impl_witness %.Self.6d3, @Z, @Z(%S) [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.1d4: type = impl_witness_access %Z.lookup_impl_witness.d10, element0 [symbolic]
|
||||
// CHECK:STDOUT: %Z_where.type.a2b: type = facet_type <@Z, @Z(%S) where %impl.elem0.1d4 = %empty_tuple.type> [symbolic]
|
||||
// CHECK:STDOUT: %Z.impl_witness.c0c: <witness> = impl_witness @T.as.Z.impl.447.%Z.impl_witness_table, @T.as.Z.impl.447(%T.67d, %S) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.9b7: <witness> = require_complete_type %Z_where.type.a2b [symbolic]
|
||||
// CHECK:STDOUT: %Z.facet.96b: %Z.type.78b = facet_value %T.67d, (%Z.impl_witness.c0c) [symbolic]
|
||||
// CHECK:STDOUT: %.29c: <witness> = impl_self_witness %.Self.6d3, @Z, @Z(%S) [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.6e9: type = impl_witness_access %.29c, element0 [symbolic]
|
||||
// CHECK:STDOUT: %Z_where.type.28d: type = facet_type <@Z, @Z(%S) where %impl.elem0.6e9 = %empty_tuple.type> [symbolic]
|
||||
// CHECK:STDOUT: %Z.impl_witness.1cd: <witness> = impl_witness @T.as.Z.impl.3c5.%Z.impl_witness_table, @T.as.Z.impl.3c5(%T.67d, %S) [symbolic]
|
||||
// CHECK:STDOUT: %Z.facet.794: %Z.type.78b = facet_value %T.67d, (%Z.impl_witness.1cd) [symbolic]
|
||||
// CHECK:STDOUT: %Z.type.963: type = facet_type <@Z, @Z(%C)> [concrete]
|
||||
// CHECK:STDOUT: %.Self.frozen.16f: %Z.type.963 = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %Self.ae2: %Z.type.963 = symbolic_binding Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Z.assoc_type.f4d: type = assoc_entity_type @Z, @Z(%C) [concrete]
|
||||
// CHECK:STDOUT: %assoc0.169: %Z.assoc_type.f4d = assoc_entity element0, @Z.WithSelf.%X [concrete]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type.16b: type = facet_access_type %.Self.frozen.16f [symbolic_self]
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness.9bf: <witness> = lookup_impl_witness %.Self.frozen.16f, @Z, @Z(%C) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.b30: type = impl_witness_access %Z.lookup_impl_witness.9bf, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.7fc: <witness> = impl_self_witness %.Self.frozen.16f, @Z, @Z(%C) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.412: type = impl_witness_access %.7fc, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.e3e: %Z.type.963 = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness.e93: <witness> = lookup_impl_witness %.Self.e3e, @Z, @Z(%C) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.3ed: type = impl_witness_access %Z.lookup_impl_witness.e93, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %Z_where.type.b22: type = facet_type <@Z, @Z(%C) where %impl.elem0.3ed = %T.67d> [symbolic]
|
||||
// CHECK:STDOUT: %Z.impl_witness.2d9: <witness> = impl_witness @T.as.Z.impl.adf.%Z.impl_witness_table, @T.as.Z.impl.adf(%T.67d) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.d7e: <witness> = require_complete_type %Z_where.type.b22 [symbolic]
|
||||
// CHECK:STDOUT: %Z.facet.b21: %Z.type.963 = facet_value %T.67d, (%Z.impl_witness.2d9) [symbolic]
|
||||
// CHECK:STDOUT: %.286: <witness> = impl_self_witness %.Self.e3e, @Z, @Z(%C) [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.f68: type = impl_witness_access %.286, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %Z_where.type.26f: type = facet_type <@Z, @Z(%C) where %impl.elem0.f68 = %T.67d> [symbolic]
|
||||
// CHECK:STDOUT: %Z.impl_witness.cb6: <witness> = impl_witness @T.as.Z.impl.dc2.%Z.impl_witness_table, @T.as.Z.impl.dc2(%T.67d) [symbolic]
|
||||
// CHECK:STDOUT: %Z.facet.624: %Z.type.963 = facet_value %T.67d, (%Z.impl_witness.cb6) [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.d7e: type = pattern_type %Z.type.963 [concrete]
|
||||
// CHECK:STDOUT: %T.patt.4cc: %pattern_type.d7e = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.4b3: %Z.type.963 = symbolic_binding T, 0 [symbolic]
|
||||
@@ -579,8 +571,8 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.df7: <witness> = require_complete_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness.89c: <witness> = lookup_impl_witness %T.4b3, @Z, @Z(%C) [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.aab: type = impl_witness_access %Z.lookup_impl_witness.89c, element0 [symbolic]
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness: <witness> = lookup_impl_witness %T.4b3, @Z, @Z(%C) [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.aab: type = impl_witness_access %Z.lookup_impl_witness, element0 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.d22: <witness> = require_complete_type %impl.elem0.aab [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.dc1: type = pattern_type %impl.elem0.aab [symbolic]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.dc1 = value_binding_pattern a [symbolic]
|
||||
@@ -631,7 +623,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Y.decl: type = interface_decl @Y [concrete = constants.%Y.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: impl_decl @T.as.Z.impl.447 [concrete] {
|
||||
// CHECK:STDOUT: impl_decl @T.as.Z.impl.3c5 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc10_15.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_15.2 (constants.%T.patt.d47)]
|
||||
// CHECK:STDOUT: %S.patt.loc10_24.1: %pattern_type.98f = symbolic_binding_pattern S, 1 [symbolic = %S.patt.loc10_24.2 (constants.%S.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -639,20 +631,20 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %Z.ref: %Z.type.c39 = name_ref Z, file.%Z.decl [concrete = constants.%Z.generic]
|
||||
// CHECK:STDOUT: %S.ref: type = name_ref S, %S.loc10_24.1 [symbolic = %S.loc10_24.2 (constants.%S)]
|
||||
// CHECK:STDOUT: %Z.type.loc10_40.1: type = facet_type <@Z, @Z(constants.%S)> [symbolic = %Z.type.loc10_40.2 (constants.%Z.type.78b)]
|
||||
// CHECK:STDOUT: %.Self.frozen.loc10_42.1: @T.as.Z.impl.447.%Z.type.loc10_40.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self.frozen.loc10_42.2 (constants.%.Self.frozen.e6b)]
|
||||
// CHECK:STDOUT: %.Self.frozen.loc10_42.1: @T.as.Z.impl.3c5.%Z.type.loc10_40.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self.frozen.loc10_42.2 (constants.%.Self.frozen.e6b)]
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.type.loc10_40.1 [concrete]
|
||||
// CHECK:STDOUT: %.Self.ref: @T.as.Z.impl.447.%Z.type.loc10_40.2 (%Z.type.78b) = name_ref .Self, %.Self.frozen.loc10_42.1 [symbolic = %.Self.frozen.loc10_42.2 (constants.%.Self.frozen.e6b)]
|
||||
// CHECK:STDOUT: %.Self.ref: @T.as.Z.impl.3c5.%Z.type.loc10_40.2 (%Z.type.78b) = name_ref .Self, %.Self.frozen.loc10_42.1 [symbolic = %.Self.frozen.loc10_42.2 (constants.%.Self.frozen.e6b)]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.d9d)]
|
||||
// CHECK:STDOUT: %.loc10_48.1: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.d9d)]
|
||||
// CHECK:STDOUT: %.loc10_48.2: @T.as.Z.impl.447.%Z.assoc_type (%Z.assoc_type.083) = specific_constant @X.%assoc0, @Z.WithSelf(constants.%S, constants.%.Self.frozen.e6b) [symbolic = %assoc0 (constants.%assoc0.c53)]
|
||||
// CHECK:STDOUT: %X.ref: @T.as.Z.impl.447.%Z.assoc_type (%Z.assoc_type.083) = name_ref X, %.loc10_48.2 [symbolic = %assoc0 (constants.%assoc0.c53)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_48.1: type = impl_witness_access constants.%Z.lookup_impl_witness.aff, element0 [symbolic = %impl.elem0.loc10_48.3 (constants.%impl.elem0.4c0)]
|
||||
// CHECK:STDOUT: %.loc10_48.2: @T.as.Z.impl.3c5.%Z.assoc_type (%Z.assoc_type.083) = specific_constant @X.%assoc0, @Z.WithSelf(constants.%S, constants.%.Self.frozen.e6b) [symbolic = %assoc0 (constants.%assoc0.c53)]
|
||||
// CHECK:STDOUT: %X.ref: @T.as.Z.impl.3c5.%Z.assoc_type (%Z.assoc_type.083) = name_ref X, %.loc10_48.2 [symbolic = %assoc0 (constants.%assoc0.c53)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_48.1: type = impl_witness_access constants.%.948, element0 [symbolic = %impl.elem0.loc10_48.3 (constants.%impl.elem0.b8f)]
|
||||
// CHECK:STDOUT: %.loc10_54.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc10_54.2: type = converted %.loc10_54.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %rewrite.loc10_51.1 = requirement_rewrite %impl.elem0.loc10_48.1, %.loc10_54.2 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_48.2: type = impl_witness_access constants.%Z.lookup_impl_witness.d10, element0 [symbolic = %impl.elem0.loc10_48.4 (constants.%impl.elem0.1d4)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_48.2: type = impl_witness_access constants.%.29c, element0 [symbolic = %impl.elem0.loc10_48.4 (constants.%impl.elem0.6e9)]
|
||||
// CHECK:STDOUT: %rewrite.loc10_51.2 = requirement_rewrite %impl.elem0.loc10_48.2, %.loc10_54.2 [concrete]
|
||||
// CHECK:STDOUT: %.loc10_42: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.a2b)] {
|
||||
// CHECK:STDOUT: %.loc10_42: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.28d)] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.type.loc10_40.1 [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc10_51.2 = requirement_rewrite %impl.elem0.loc10_48.2, %.loc10_54.2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -667,7 +659,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %S.loc10_24.1: type = symbolic_binding S, 1 [symbolic = %S.loc10_24.2 (constants.%S)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: impl_decl @T.as.Z.impl.adf [concrete] {
|
||||
// CHECK:STDOUT: impl_decl @T.as.Z.impl.dc2 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc12_15.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_15.2 (constants.%T.patt.d47)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc12_23: type = name_ref T, %T.loc12_15.1 [symbolic = %T.loc12_15.2 (constants.%T.67d)]
|
||||
@@ -681,12 +673,12 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %.loc12_39.1: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type.16b]
|
||||
// CHECK:STDOUT: %.loc12_39.2: %Z.assoc_type.f4d = specific_constant @X.%assoc0, @Z.WithSelf(constants.%C, constants.%.Self.frozen.16f) [concrete = constants.%assoc0.169]
|
||||
// CHECK:STDOUT: %X.ref: %Z.assoc_type.f4d = name_ref X, %.loc12_39.2 [concrete = constants.%assoc0.169]
|
||||
// CHECK:STDOUT: %impl.elem0.loc12_39.1: type = impl_witness_access constants.%Z.lookup_impl_witness.9bf, element0 [symbolic_self = constants.%impl.elem0.b30]
|
||||
// CHECK:STDOUT: %impl.elem0.loc12_39.1: type = impl_witness_access constants.%.7fc, element0 [symbolic_self = constants.%impl.elem0.412]
|
||||
// CHECK:STDOUT: %T.ref.loc12_44: type = name_ref T, %T.loc12_15.1 [symbolic = %T.loc12_15.2 (constants.%T.67d)]
|
||||
// CHECK:STDOUT: %rewrite.loc12_42.1 = requirement_rewrite %impl.elem0.loc12_39.1, %T.ref.loc12_44 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc12_39.2: type = impl_witness_access constants.%Z.lookup_impl_witness.e93, element0 [symbolic_self = constants.%impl.elem0.3ed]
|
||||
// CHECK:STDOUT: %impl.elem0.loc12_39.2: type = impl_witness_access constants.%.286, element0 [symbolic_self = constants.%impl.elem0.f68]
|
||||
// CHECK:STDOUT: %rewrite.loc12_42.2 = requirement_rewrite %impl.elem0.loc12_39.2, %T.ref.loc12_44 [concrete]
|
||||
// CHECK:STDOUT: %.loc12_33: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.b22)] {
|
||||
// CHECK:STDOUT: %.loc12_33: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.26f)] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.type [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc12_42.2 = requirement_rewrite %impl.elem0.loc12_39.2, %T.ref.loc12_44 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -755,55 +747,53 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: !requires:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic impl @T.as.Z.impl.447(%T.loc10_15.1: type, %S.loc10_24.1: type) {
|
||||
// CHECK:STDOUT: generic impl @T.as.Z.impl.3c5(%T.loc10_15.1: type, %S.loc10_24.1: type) {
|
||||
// CHECK:STDOUT: %T.patt.loc10_15.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_15.2 (constants.%T.patt.d47)]
|
||||
// CHECK:STDOUT: %T.loc10_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc10_15.2 (constants.%T.67d)]
|
||||
// CHECK:STDOUT: %S.patt.loc10_24.2: %pattern_type.98f = symbolic_binding_pattern S, 1 [symbolic = %S.patt.loc10_24.2 (constants.%S.patt)]
|
||||
// CHECK:STDOUT: %S.loc10_24.2: type = symbolic_binding S, 1 [symbolic = %S.loc10_24.2 (constants.%S)]
|
||||
// CHECK:STDOUT: %Z.type.loc10_40.2: type = facet_type <@Z, @Z(%S.loc10_24.2)> [symbolic = %Z.type.loc10_40.2 (constants.%Z.type.78b)]
|
||||
// CHECK:STDOUT: %.Self.frozen.loc10_42.2: @T.as.Z.impl.447.%Z.type.loc10_40.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self.frozen.loc10_42.2 (constants.%.Self.frozen.e6b)]
|
||||
// CHECK:STDOUT: %require_complete.loc10_48: <witness> = require_complete_type %Z.type.loc10_40.2 [symbolic = %require_complete.loc10_48 (constants.%require_complete.291)]
|
||||
// CHECK:STDOUT: %.Self.frozen.loc10_42.2: @T.as.Z.impl.3c5.%Z.type.loc10_40.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self.frozen.loc10_42.2 (constants.%.Self.frozen.e6b)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Z.type.loc10_40.2 [symbolic = %require_complete (constants.%require_complete.291)]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.loc10_42.2 [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.d9d)]
|
||||
// CHECK:STDOUT: %Z.assoc_type: type = assoc_entity_type @Z, @Z(%S.loc10_24.2) [symbolic = %Z.assoc_type (constants.%Z.assoc_type.083)]
|
||||
// CHECK:STDOUT: %assoc0: @T.as.Z.impl.447.%Z.assoc_type (%Z.assoc_type.083) = assoc_entity element0, @Z.WithSelf.%X [symbolic = %assoc0 (constants.%assoc0.c53)]
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness.loc10_48.1: <witness> = lookup_impl_witness %.Self.frozen.loc10_42.2, @Z, @Z(%S.loc10_24.2) [symbolic = %Z.lookup_impl_witness.loc10_48.1 (constants.%Z.lookup_impl_witness.aff)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_48.3: type = impl_witness_access %Z.lookup_impl_witness.loc10_48.1, element0 [symbolic = %impl.elem0.loc10_48.3 (constants.%impl.elem0.4c0)]
|
||||
// CHECK:STDOUT: %.Self: @T.as.Z.impl.447.%Z.type.loc10_40.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.6d3)]
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness.loc10_48.2: <witness> = lookup_impl_witness %.Self, @Z, @Z(%S.loc10_24.2) [symbolic = %Z.lookup_impl_witness.loc10_48.2 (constants.%Z.lookup_impl_witness.d10)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_48.4: type = impl_witness_access %Z.lookup_impl_witness.loc10_48.2, element0 [symbolic = %impl.elem0.loc10_48.4 (constants.%impl.elem0.1d4)]
|
||||
// CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(%S.loc10_24.2) where %impl.elem0.loc10_48.4 = constants.%empty_tuple.type> [symbolic = %Z_where.type (constants.%Z_where.type.a2b)]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc10_56.2: <witness> = impl_witness %Z.impl_witness_table, @T.as.Z.impl.447(%T.loc10_15.2, %S.loc10_24.2) [symbolic = %Z.impl_witness.loc10_56.2 (constants.%Z.impl_witness.c0c)]
|
||||
// CHECK:STDOUT: %assoc0: @T.as.Z.impl.3c5.%Z.assoc_type (%Z.assoc_type.083) = assoc_entity element0, @Z.WithSelf.%X [symbolic = %assoc0 (constants.%assoc0.c53)]
|
||||
// CHECK:STDOUT: %.loc10_48.3: <witness> = impl_self_witness %.Self.frozen.loc10_42.2, @Z, @Z(%S.loc10_24.2) [symbolic = %.loc10_48.3 (constants.%.948)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_48.3: type = impl_witness_access %.loc10_48.3, element0 [symbolic = %impl.elem0.loc10_48.3 (constants.%impl.elem0.b8f)]
|
||||
// CHECK:STDOUT: %.Self: @T.as.Z.impl.3c5.%Z.type.loc10_40.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.6d3)]
|
||||
// CHECK:STDOUT: %.loc10_48.4: <witness> = impl_self_witness %.Self, @Z, @Z(%S.loc10_24.2) [symbolic = %.loc10_48.4 (constants.%.29c)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_48.4: type = impl_witness_access %.loc10_48.4, element0 [symbolic = %impl.elem0.loc10_48.4 (constants.%impl.elem0.6e9)]
|
||||
// CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(%S.loc10_24.2) where %impl.elem0.loc10_48.4 = constants.%empty_tuple.type> [symbolic = %Z_where.type (constants.%Z_where.type.28d)]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc10_56.2: <witness> = impl_witness %Z.impl_witness_table, @T.as.Z.impl.3c5(%T.loc10_15.2, %S.loc10_24.2) [symbolic = %Z.impl_witness.loc10_56.2 (constants.%Z.impl_witness.1cd)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc10_42: <witness> = require_complete_type %Z_where.type [symbolic = %require_complete.loc10_42 (constants.%require_complete.9b7)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl: %T.ref as %.loc10_42 {
|
||||
// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @T.as.Z.impl.447 [concrete]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc10_56.1: <witness> = impl_witness %Z.impl_witness_table, @T.as.Z.impl.447(constants.%T.67d, constants.%S) [symbolic = %Z.impl_witness.loc10_56.2 (constants.%Z.impl_witness.c0c)]
|
||||
// CHECK:STDOUT: impl: %T.ref as %Z.type.loc10_40.1 {
|
||||
// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @T.as.Z.impl.3c5 [concrete]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc10_56.1: <witness> = impl_witness %Z.impl_witness_table, @T.as.Z.impl.3c5(constants.%T.67d, constants.%S) [symbolic = %Z.impl_witness.loc10_56.2 (constants.%Z.impl_witness.1cd)]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc10_42
|
||||
// CHECK:STDOUT: extend %Z.type.loc10_40.1
|
||||
// CHECK:STDOUT: witness = %Z.impl_witness.loc10_56.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic impl @T.as.Z.impl.adf(%T.loc12_15.1: type) {
|
||||
// CHECK:STDOUT: generic impl @T.as.Z.impl.dc2(%T.loc12_15.1: type) {
|
||||
// CHECK:STDOUT: %T.patt.loc12_15.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_15.2 (constants.%T.patt.d47)]
|
||||
// CHECK:STDOUT: %T.loc12_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc12_15.2 (constants.%T.67d)]
|
||||
// CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(constants.%C) where constants.%impl.elem0.3ed = %T.loc12_15.2> [symbolic = %Z_where.type (constants.%Z_where.type.b22)]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc12_46.2: <witness> = impl_witness %Z.impl_witness_table, @T.as.Z.impl.adf(%T.loc12_15.2) [symbolic = %Z.impl_witness.loc12_46.2 (constants.%Z.impl_witness.2d9)]
|
||||
// CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(constants.%C) where constants.%impl.elem0.f68 = %T.loc12_15.2> [symbolic = %Z_where.type (constants.%Z_where.type.26f)]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc12_46.2: <witness> = impl_witness %Z.impl_witness_table, @T.as.Z.impl.dc2(%T.loc12_15.2) [symbolic = %Z.impl_witness.loc12_46.2 (constants.%Z.impl_witness.cb6)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Z_where.type [symbolic = %require_complete (constants.%require_complete.d7e)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl: %T.ref.loc12_23 as %.loc12_33 {
|
||||
// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @T.as.Z.impl.adf [concrete]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc12_46.1: <witness> = impl_witness %Z.impl_witness_table, @T.as.Z.impl.adf(constants.%T.67d) [symbolic = %Z.impl_witness.loc12_46.2 (constants.%Z.impl_witness.2d9)]
|
||||
// CHECK:STDOUT: impl: %T.ref.loc12_23 as %Z.type {
|
||||
// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @T.as.Z.impl.dc2 [concrete]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc12_46.1: <witness> = impl_witness %Z.impl_witness_table, @T.as.Z.impl.dc2(constants.%T.67d) [symbolic = %Z.impl_witness.loc12_46.2 (constants.%Z.impl_witness.cb6)]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%T.67d [symbolic = %T.loc12_15.2 (constants.%T.67d)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc12_33
|
||||
// CHECK:STDOUT: extend %Z.type
|
||||
// CHECK:STDOUT: witness = %Z.impl_witness.loc12_46.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -826,7 +816,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc14: <witness> = require_complete_type %T.as_type.loc14_26.1 [symbolic = %require_complete.loc14 (constants.%require_complete.df7)]
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness: <witness> = lookup_impl_witness %T.loc14_15.1, @Z, @Z(constants.%C) [symbolic = %Z.lookup_impl_witness (constants.%Z.lookup_impl_witness.89c)]
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness: <witness> = lookup_impl_witness %T.loc14_15.1, @Z, @Z(constants.%C) [symbolic = %Z.lookup_impl_witness (constants.%Z.lookup_impl_witness)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc22_18.2: type = impl_witness_access %Z.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc22_18.2 (constants.%impl.elem0.aab)]
|
||||
// CHECK:STDOUT: %require_complete.loc22_18: <witness> = require_complete_type %impl.elem0.loc22_18.2 [symbolic = %require_complete.loc22_18 (constants.%require_complete.d22)]
|
||||
// CHECK:STDOUT: %pattern_type.loc22: type = pattern_type %impl.elem0.loc22_18.2 [symbolic = %pattern_type.loc22 (constants.%pattern_type.dc1)]
|
||||
@@ -849,7 +839,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %.loc22_18.2: type = converted %T.ref.loc22, %T.as_type.loc22 [symbolic = %T.as_type.loc14_26.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %.loc22_18.3: %Z.assoc_type.f4d = specific_constant @X.%assoc0, @Z.WithSelf(constants.%C, constants.%T.4b3) [concrete = constants.%assoc0.169]
|
||||
// CHECK:STDOUT: %X.ref: %Z.assoc_type.f4d = name_ref X, %.loc22_18.3 [concrete = constants.%assoc0.169]
|
||||
// CHECK:STDOUT: %impl.elem0.loc22_18.1: type = impl_witness_access constants.%Z.lookup_impl_witness.89c, element0 [symbolic = %impl.elem0.loc22_18.2 (constants.%impl.elem0.aab)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc22_18.1: type = impl_witness_access constants.%Z.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc22_18.2 (constants.%impl.elem0.aab)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: @F.%impl.elem0.loc22_18.2 (%impl.elem0.aab) = wrapper_binding a, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
@@ -891,27 +881,27 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %assoc0 => constants.%assoc0.c53
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @T.as.Z.impl.447(constants.%T.67d, constants.%S) {
|
||||
// CHECK:STDOUT: specific @T.as.Z.impl.3c5(constants.%T.67d, constants.%S) {
|
||||
// CHECK:STDOUT: %T.patt.loc10_15.2 => constants.%T.patt.d47
|
||||
// CHECK:STDOUT: %T.loc10_15.2 => constants.%T.67d
|
||||
// CHECK:STDOUT: %S.patt.loc10_24.2 => constants.%S.patt
|
||||
// CHECK:STDOUT: %S.loc10_24.2 => constants.%S
|
||||
// CHECK:STDOUT: %Z.type.loc10_40.2 => constants.%Z.type.78b
|
||||
// CHECK:STDOUT: %.Self.frozen.loc10_42.2 => constants.%.Self.frozen.e6b
|
||||
// CHECK:STDOUT: %require_complete.loc10_48 => constants.%require_complete.291
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.291
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.d9d
|
||||
// CHECK:STDOUT: %Z.assoc_type => constants.%Z.assoc_type.083
|
||||
// CHECK:STDOUT: %assoc0 => constants.%assoc0.c53
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness.loc10_48.1 => constants.%Z.lookup_impl_witness.aff
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_48.3 => constants.%impl.elem0.4c0
|
||||
// CHECK:STDOUT: %.loc10_48.3 => constants.%.948
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_48.3 => constants.%impl.elem0.b8f
|
||||
// CHECK:STDOUT: %.Self => constants.%.Self.6d3
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness.loc10_48.2 => constants.%Z.lookup_impl_witness.d10
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_48.4 => constants.%impl.elem0.1d4
|
||||
// CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.a2b
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc10_56.2 => constants.%Z.impl_witness.c0c
|
||||
// CHECK:STDOUT: %.loc10_48.4 => constants.%.29c
|
||||
// CHECK:STDOUT: %impl.elem0.loc10_48.4 => constants.%impl.elem0.6e9
|
||||
// CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.28d
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc10_56.2 => constants.%Z.impl_witness.1cd
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Z.WithSelf(constants.%S, constants.%Z.facet.96b) {
|
||||
// CHECK:STDOUT: specific @Z.WithSelf(constants.%S, constants.%Z.facet.794) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %T => constants.%S
|
||||
// CHECK:STDOUT: %Z.assoc_type => constants.%Z.assoc_type.083
|
||||
@@ -941,14 +931,14 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %assoc0 => constants.%assoc0.169
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @T.as.Z.impl.adf(constants.%T.67d) {
|
||||
// CHECK:STDOUT: specific @T.as.Z.impl.dc2(constants.%T.67d) {
|
||||
// CHECK:STDOUT: %T.patt.loc12_15.2 => constants.%T.patt.d47
|
||||
// CHECK:STDOUT: %T.loc12_15.2 => constants.%T.67d
|
||||
// CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.b22
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc12_46.2 => constants.%Z.impl_witness.2d9
|
||||
// CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.26f
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc12_46.2 => constants.%Z.impl_witness.cb6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Z.WithSelf(constants.%C, constants.%Z.facet.b21) {
|
||||
// CHECK:STDOUT: specific @Z.WithSelf(constants.%C, constants.%Z.facet.624) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %T => constants.%C
|
||||
// CHECK:STDOUT: %Z.assoc_type => constants.%Z.assoc_type.f4d
|
||||
@@ -985,27 +975,25 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %U.67d: type = symbolic_binding U, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.Self.frozen.073: %Ptr.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.073 [symbolic_self]
|
||||
// CHECK:STDOUT: %Ptr.lookup_impl_witness.2e6: <witness> = lookup_impl_witness %.Self.frozen.073, @Ptr [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.a05: type = impl_witness_access %Ptr.lookup_impl_witness.2e6, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.c6b: <witness> = impl_self_witness %.Self.frozen.073, @Ptr [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.949: type = impl_witness_access %.c6b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %ptr.e8f8f9.1: type = ptr_type %U.67d [symbolic]
|
||||
// CHECK:STDOUT: %.Self: %Ptr.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %Ptr.lookup_impl_witness.497: <witness> = lookup_impl_witness %.Self, @Ptr [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.f33: type = impl_witness_access %Ptr.lookup_impl_witness.497, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %Ptr_where.type.9d8e6c.1: type = facet_type <@Ptr where %impl.elem0.f33 = %ptr.e8f8f9.1> [symbolic]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.add6fd.1: <witness> = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U.67d) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.2060e7.1: <witness> = require_complete_type %Ptr_where.type.9d8e6c.1 [symbolic]
|
||||
// CHECK:STDOUT: %Ptr.facet.8eb510.1: %Ptr.type = facet_value %U.67d, (%Ptr.impl_witness.add6fd.1) [symbolic]
|
||||
// CHECK:STDOUT: %.51f: <witness> = impl_self_witness %.Self, @Ptr [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.406: type = impl_witness_access %.51f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %Ptr_where.type.774fa9.1: type = facet_type <@Ptr where %impl.elem0.406 = %ptr.e8f8f9.1> [symbolic]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.0fcac6.1: <witness> = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U.67d) [symbolic]
|
||||
// CHECK:STDOUT: %Ptr.facet.5c0956.1: %Ptr.type = facet_value %U.67d, (%Ptr.impl_witness.0fcac6.1) [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %t.patt: %pattern_type.51d = ref_binding_pattern t [symbolic]
|
||||
// CHECK:STDOUT: %t.param_patt: %pattern_type.51d = var_param_pattern %t.patt [symbolic]
|
||||
// CHECK:STDOUT: %ptr.e8f8f9.2: type = ptr_type %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %Ptr_where.type.9d8e6c.2: type = facet_type <@Ptr where %impl.elem0.f33 = %ptr.e8f8f9.2> [symbolic]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.add6fd.2: <witness> = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.67d) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.2060e7.2: <witness> = require_complete_type %Ptr_where.type.9d8e6c.2 [symbolic]
|
||||
// CHECK:STDOUT: %.6a8: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.67d) [symbolic]
|
||||
// CHECK:STDOUT: %Ptr.facet.8eb510.2: %Ptr.type = facet_value %T.67d, (%Ptr.impl_witness.add6fd.2) [symbolic]
|
||||
// CHECK:STDOUT: %Ptr_where.type.774fa9.2: type = facet_type <@Ptr where %impl.elem0.406 = %ptr.e8f8f9.2> [symbolic]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.0fcac6.2: <witness> = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.67d) [symbolic]
|
||||
// CHECK:STDOUT: %.ed1: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.67d) [symbolic]
|
||||
// CHECK:STDOUT: %Ptr.facet.5c0956.2: %Ptr.type = facet_value %T.67d, (%Ptr.impl_witness.0fcac6.2) [symbolic]
|
||||
// CHECK:STDOUT: %.cb6: Core.Form = init_form %ptr.e8f8f9.2 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f8f9.2 [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.27f: %pattern_type.4f4 = out_param_pattern [symbolic]
|
||||
@@ -1052,13 +1040,13 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc7_44: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %Type.ref: %Ptr.assoc_type = name_ref Type, @Type.%assoc0 [concrete = constants.%assoc0.b1a]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_44.1: type = impl_witness_access constants.%Ptr.lookup_impl_witness.2e6, element0 [symbolic_self = constants.%impl.elem0.a05]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_44.1: type = impl_witness_access constants.%.c6b, element0 [symbolic_self = constants.%impl.elem0.949]
|
||||
// CHECK:STDOUT: %U.ref.loc7_52: type = name_ref U, %U.loc7_21.1 [symbolic = %U.loc7_21.2 (constants.%U.67d)]
|
||||
// CHECK:STDOUT: %ptr.loc7_53.1: type = ptr_type %U.ref.loc7_52 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)]
|
||||
// CHECK:STDOUT: %rewrite.loc7_50.1 = requirement_rewrite %impl.elem0.loc7_44.1, %ptr.loc7_53.1 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_44.2: type = impl_witness_access constants.%Ptr.lookup_impl_witness.497, element0 [symbolic_self = constants.%impl.elem0.f33]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_44.2: type = impl_witness_access constants.%.51f, element0 [symbolic_self = constants.%impl.elem0.406]
|
||||
// CHECK:STDOUT: %rewrite.loc7_50.2 = requirement_rewrite %impl.elem0.loc7_44.2, %ptr.loc7_53.1 [concrete]
|
||||
// CHECK:STDOUT: %.loc7_38: type = where_expr [symbolic = %Ptr_where.type (constants.%Ptr_where.type.9d8e6c.1)] {
|
||||
// CHECK:STDOUT: %.loc7_38: type = where_expr [symbolic = %Ptr_where.type (constants.%Ptr_where.type.774fa9.1)] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Ptr.ref [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc7_50.2 = requirement_rewrite %impl.elem0.loc7_44.2, %ptr.loc7_53.1 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1078,9 +1066,9 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %T.ref.loc9_28: type = name_ref T, %T.loc9_7.2 [symbolic = %T.loc9_7.1 (constants.%T.67d)]
|
||||
// CHECK:STDOUT: %Ptr.ref: type = name_ref Ptr, file.%Ptr.decl [concrete = constants.%Ptr.type]
|
||||
// CHECK:STDOUT: %Type.ref: %Ptr.assoc_type = name_ref Type, @Type.%assoc0 [concrete = constants.%assoc0.b1a]
|
||||
// CHECK:STDOUT: %Ptr.facet.loc9_29.2: %Ptr.type = facet_value %T.ref.loc9_28, (constants.%Ptr.impl_witness.add6fd.2) [symbolic = %Ptr.facet.loc9_29.1 (constants.%Ptr.facet.8eb510.2)]
|
||||
// CHECK:STDOUT: %.loc9_29.3: %Ptr.type = converted %T.ref.loc9_28, %Ptr.facet.loc9_29.2 [symbolic = %Ptr.facet.loc9_29.1 (constants.%Ptr.facet.8eb510.2)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9: type = impl_witness_access constants.%Ptr.impl_witness.add6fd.2, element0 [symbolic = %ptr (constants.%ptr.e8f8f9.2)]
|
||||
// CHECK:STDOUT: %Ptr.facet.loc9_29.2: %Ptr.type = facet_value %T.ref.loc9_28, (constants.%Ptr.impl_witness.0fcac6.2) [symbolic = %Ptr.facet.loc9_29.1 (constants.%Ptr.facet.5c0956.2)]
|
||||
// CHECK:STDOUT: %.loc9_29.3: %Ptr.type = converted %T.ref.loc9_28, %Ptr.facet.loc9_29.2 [symbolic = %Ptr.facet.loc9_29.1 (constants.%Ptr.facet.5c0956.2)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9: type = impl_witness_access constants.%Ptr.impl_witness.0fcac6.2, element0 [symbolic = %ptr (constants.%ptr.e8f8f9.2)]
|
||||
// CHECK:STDOUT: %.loc9_29.4: Core.Form = init_form %impl.elem0.loc9 [symbolic = %.loc9_29.2 (constants.%.cb6)]
|
||||
// CHECK:STDOUT: %.loc9_9.1: type = splice_block %.loc9_9.2 [concrete = type] {
|
||||
// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197]
|
||||
@@ -1116,19 +1104,18 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %U.patt.loc7_21.2: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc7_21.2 (constants.%U.patt.d47)]
|
||||
// CHECK:STDOUT: %U.loc7_21.2: type = symbolic_binding U, 0 [symbolic = %U.loc7_21.2 (constants.%U.67d)]
|
||||
// CHECK:STDOUT: %ptr.loc7_53.2: type = ptr_type %U.loc7_21.2 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)]
|
||||
// CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.f33 = %ptr.loc7_53.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.9d8e6c.1)]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2: <witness> = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_21.2) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.add6fd.1)]
|
||||
// CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.406 = %ptr.loc7_53.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.774fa9.1)]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2: <witness> = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_21.2) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.0fcac6.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Ptr_where.type [symbolic = %require_complete (constants.%require_complete.2060e7.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: final impl: %U.ref.loc7_29 as %.loc7_38 {
|
||||
// CHECK:STDOUT: final impl: %U.ref.loc7_29 as %Ptr.ref {
|
||||
// CHECK:STDOUT: %Ptr.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @U.as.Ptr.impl [concrete]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.1: <witness> = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(constants.%U.67d) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.add6fd.1)]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.1: <witness> = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(constants.%U.67d) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.0fcac6.1)]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%ptr.e8f8f9.1 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc7_38
|
||||
// CHECK:STDOUT: extend %Ptr.ref
|
||||
// CHECK:STDOUT: witness = %Ptr.impl_witness.loc7_55.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1139,9 +1126,9 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %pattern_type.loc9_20: type = pattern_type %T.loc9_7.1 [symbolic = %pattern_type.loc9_20 (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT: %t.patt.loc9_20.2: @F.%pattern_type.loc9_20 (%pattern_type.51d) = ref_binding_pattern t [symbolic = %t.patt.loc9_20.2 (constants.%t.patt)]
|
||||
// CHECK:STDOUT: %t.param_patt.loc9_15.2: @F.%pattern_type.loc9_20 (%pattern_type.51d) = var_param_pattern %t.patt.loc9_20.2 [symbolic = %t.param_patt.loc9_15.2 (constants.%t.param_patt)]
|
||||
// CHECK:STDOUT: %.loc9_29.1: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.loc9_7.1) [symbolic = %.loc9_29.1 (constants.%.6a8)]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness: <witness> = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.loc9_7.1) [symbolic = %Ptr.impl_witness (constants.%Ptr.impl_witness.add6fd.2)]
|
||||
// CHECK:STDOUT: %Ptr.facet.loc9_29.1: %Ptr.type = facet_value %T.loc9_7.1, (%Ptr.impl_witness) [symbolic = %Ptr.facet.loc9_29.1 (constants.%Ptr.facet.8eb510.2)]
|
||||
// CHECK:STDOUT: %.loc9_29.1: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.loc9_7.1) [symbolic = %.loc9_29.1 (constants.%.ed1)]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness: <witness> = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.loc9_7.1) [symbolic = %Ptr.impl_witness (constants.%Ptr.impl_witness.0fcac6.2)]
|
||||
// CHECK:STDOUT: %Ptr.facet.loc9_29.1: %Ptr.type = facet_value %T.loc9_7.1, (%Ptr.impl_witness) [symbolic = %Ptr.facet.loc9_29.1 (constants.%Ptr.facet.5c0956.2)]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %T.loc9_7.1 [symbolic = %ptr (constants.%ptr.e8f8f9.2)]
|
||||
// CHECK:STDOUT: %.loc9_29.2: Core.Form = init_form %ptr [symbolic = %.loc9_29.2 (constants.%.cb6)]
|
||||
// CHECK:STDOUT: %pattern_type.loc9_29: type = pattern_type %ptr [symbolic = %pattern_type.loc9_29 (constants.%pattern_type.4f4)]
|
||||
@@ -1188,11 +1175,11 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %U.patt.loc7_21.2 => constants.%U.patt.d47
|
||||
// CHECK:STDOUT: %U.loc7_21.2 => constants.%U.67d
|
||||
// CHECK:STDOUT: %ptr.loc7_53.2 => constants.%ptr.e8f8f9.1
|
||||
// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.9d8e6c.1
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.add6fd.1
|
||||
// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.774fa9.1
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.0fcac6.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Ptr.WithSelf(constants.%Ptr.facet.8eb510.1) {
|
||||
// CHECK:STDOUT: specific @Ptr.WithSelf(constants.%Ptr.facet.5c0956.1) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -1200,14 +1187,13 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %U.patt.loc7_21.2 => constants.%U.patt.d47
|
||||
// CHECK:STDOUT: %U.loc7_21.2 => constants.%T.67d
|
||||
// CHECK:STDOUT: %ptr.loc7_53.2 => constants.%ptr.e8f8f9.2
|
||||
// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.9d8e6c.2
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.add6fd.2
|
||||
// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.774fa9.2
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.0fcac6.2
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.2060e7.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Ptr.WithSelf(constants.%Ptr.facet.8eb510.2) {
|
||||
// CHECK:STDOUT: specific @Ptr.WithSelf(constants.%Ptr.facet.5c0956.2) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -1217,9 +1203,9 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %pattern_type.loc9_20 => constants.%pattern_type.51d
|
||||
// CHECK:STDOUT: %t.patt.loc9_20.2 => constants.%t.patt
|
||||
// CHECK:STDOUT: %t.param_patt.loc9_15.2 => constants.%t.param_patt
|
||||
// CHECK:STDOUT: %.loc9_29.1 => constants.%.6a8
|
||||
// CHECK:STDOUT: %Ptr.impl_witness => constants.%Ptr.impl_witness.add6fd.2
|
||||
// CHECK:STDOUT: %Ptr.facet.loc9_29.1 => constants.%Ptr.facet.8eb510.2
|
||||
// CHECK:STDOUT: %.loc9_29.1 => constants.%.ed1
|
||||
// CHECK:STDOUT: %Ptr.impl_witness => constants.%Ptr.impl_witness.0fcac6.2
|
||||
// CHECK:STDOUT: %Ptr.facet.loc9_29.1 => constants.%Ptr.facet.5c0956.2
|
||||
// CHECK:STDOUT: %ptr => constants.%ptr.e8f8f9.2
|
||||
// CHECK:STDOUT: %.loc9_29.2 => constants.%.cb6
|
||||
// CHECK:STDOUT: %pattern_type.loc9_29 => constants.%pattern_type.4f4
|
||||
@@ -1241,16 +1227,15 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %U.67d: type = symbolic_binding U, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.Self.frozen.073: %Ptr.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.073 [symbolic_self]
|
||||
// CHECK:STDOUT: %Ptr.lookup_impl_witness.2e6: <witness> = lookup_impl_witness %.Self.frozen.073, @Ptr [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.a05: type = impl_witness_access %Ptr.lookup_impl_witness.2e6, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.c6b: <witness> = impl_self_witness %.Self.frozen.073, @Ptr [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.949: type = impl_witness_access %.c6b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %ptr.e8f8f9.1: type = ptr_type %U.67d [symbolic]
|
||||
// CHECK:STDOUT: %.Self: %Ptr.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %Ptr.lookup_impl_witness.497: <witness> = lookup_impl_witness %.Self, @Ptr [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.f33: type = impl_witness_access %Ptr.lookup_impl_witness.497, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %Ptr_where.type.9d8: type = facet_type <@Ptr where %impl.elem0.f33 = %ptr.e8f8f9.1> [symbolic]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.add: <witness> = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U.67d) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.206: <witness> = require_complete_type %Ptr_where.type.9d8 [symbolic]
|
||||
// CHECK:STDOUT: %Ptr.facet: %Ptr.type = facet_value %U.67d, (%Ptr.impl_witness.add) [symbolic]
|
||||
// CHECK:STDOUT: %.51f: <witness> = impl_self_witness %.Self, @Ptr [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.406: type = impl_witness_access %.51f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %Ptr_where.type.774: type = facet_type <@Ptr where %impl.elem0.406 = %ptr.e8f8f9.1> [symbolic]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.0fc: <witness> = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U.67d) [symbolic]
|
||||
// CHECK:STDOUT: %Ptr.facet: %Ptr.type = facet_value %U.67d, (%Ptr.impl_witness.0fc) [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.f5d: type = pattern_type %Ptr.type [concrete]
|
||||
// CHECK:STDOUT: %T.patt.a2e: %pattern_type.f5d = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.76f: %Ptr.type = symbolic_binding T, 0 [symbolic]
|
||||
@@ -1259,10 +1244,9 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %t.patt: %pattern_type.756 = ref_binding_pattern t [symbolic]
|
||||
// CHECK:STDOUT: %t.param_patt: %pattern_type.756 = var_param_pattern %t.patt [symbolic]
|
||||
// CHECK:STDOUT: %ptr.ac4: type = ptr_type %T.as_type.468 [symbolic]
|
||||
// CHECK:STDOUT: %Ptr_where.type.a29: type = facet_type <@Ptr where %impl.elem0.f33 = %ptr.ac4> [symbolic]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.e33: <witness> = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.as_type.468) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.d44: <witness> = require_complete_type %Ptr_where.type.a29 [symbolic]
|
||||
// CHECK:STDOUT: %.14a: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.as_type.468) [symbolic]
|
||||
// CHECK:STDOUT: %Ptr_where.type.c27: type = facet_type <@Ptr where %impl.elem0.406 = %ptr.ac4> [symbolic]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.30f: <witness> = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.as_type.468) [symbolic]
|
||||
// CHECK:STDOUT: %.166: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.as_type.468) [symbolic]
|
||||
// CHECK:STDOUT: %.e16: Core.Form = init_form %ptr.ac4 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.f62: type = pattern_type %ptr.ac4 [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.b93: %pattern_type.f62 = out_param_pattern [symbolic]
|
||||
@@ -1309,13 +1293,13 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc7_44: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %Type.ref: %Ptr.assoc_type = name_ref Type, @Type.%assoc0 [concrete = constants.%assoc0.b1a]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_44.1: type = impl_witness_access constants.%Ptr.lookup_impl_witness.2e6, element0 [symbolic_self = constants.%impl.elem0.a05]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_44.1: type = impl_witness_access constants.%.c6b, element0 [symbolic_self = constants.%impl.elem0.949]
|
||||
// CHECK:STDOUT: %U.ref.loc7_52: type = name_ref U, %U.loc7_21.1 [symbolic = %U.loc7_21.2 (constants.%U.67d)]
|
||||
// CHECK:STDOUT: %ptr.loc7_53.1: type = ptr_type %U.ref.loc7_52 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)]
|
||||
// CHECK:STDOUT: %rewrite.loc7_50.1 = requirement_rewrite %impl.elem0.loc7_44.1, %ptr.loc7_53.1 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_44.2: type = impl_witness_access constants.%Ptr.lookup_impl_witness.497, element0 [symbolic_self = constants.%impl.elem0.f33]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_44.2: type = impl_witness_access constants.%.51f, element0 [symbolic_self = constants.%impl.elem0.406]
|
||||
// CHECK:STDOUT: %rewrite.loc7_50.2 = requirement_rewrite %impl.elem0.loc7_44.2, %ptr.loc7_53.1 [concrete]
|
||||
// CHECK:STDOUT: %.loc7_38: type = where_expr [symbolic = %Ptr_where.type (constants.%Ptr_where.type.9d8)] {
|
||||
// CHECK:STDOUT: %.loc7_38: type = where_expr [symbolic = %Ptr_where.type (constants.%Ptr_where.type.774)] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Ptr.ref [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc7_50.2 = requirement_rewrite %impl.elem0.loc7_44.2, %ptr.loc7_53.1 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1336,7 +1320,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %T.as_type.loc9_28: type = facet_access_type %T.ref.loc9_27 [symbolic = %T.as_type.loc9_21.1 (constants.%T.as_type.468)]
|
||||
// CHECK:STDOUT: %.loc9_28.3: type = converted %T.ref.loc9_27, %T.as_type.loc9_28 [symbolic = %T.as_type.loc9_21.1 (constants.%T.as_type.468)]
|
||||
// CHECK:STDOUT: %Type.ref: %Ptr.assoc_type = name_ref Type, @Type.%assoc0 [concrete = constants.%assoc0.b1a]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9: type = impl_witness_access constants.%Ptr.impl_witness.e33, element0 [symbolic = %ptr (constants.%ptr.ac4)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9: type = impl_witness_access constants.%Ptr.impl_witness.30f, element0 [symbolic = %ptr (constants.%ptr.ac4)]
|
||||
// CHECK:STDOUT: %.loc9_28.4: Core.Form = init_form %impl.elem0.loc9 [symbolic = %.loc9_28.2 (constants.%.e16)]
|
||||
// CHECK:STDOUT: %.loc9_9: type = splice_block %Ptr.ref [concrete = constants.%Ptr.type] {
|
||||
// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197]
|
||||
@@ -1376,19 +1360,18 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %U.patt.loc7_21.2: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc7_21.2 (constants.%U.patt.d47)]
|
||||
// CHECK:STDOUT: %U.loc7_21.2: type = symbolic_binding U, 0 [symbolic = %U.loc7_21.2 (constants.%U.67d)]
|
||||
// CHECK:STDOUT: %ptr.loc7_53.2: type = ptr_type %U.loc7_21.2 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)]
|
||||
// CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.f33 = %ptr.loc7_53.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.9d8)]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2: <witness> = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_21.2) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.add)]
|
||||
// CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.406 = %ptr.loc7_53.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.774)]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2: <witness> = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_21.2) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.0fc)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Ptr_where.type [symbolic = %require_complete (constants.%require_complete.206)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: final impl: %U.ref.loc7_29 as %.loc7_38 {
|
||||
// CHECK:STDOUT: final impl: %U.ref.loc7_29 as %Ptr.ref {
|
||||
// CHECK:STDOUT: %Ptr.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @U.as.Ptr.impl [concrete]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.1: <witness> = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(constants.%U.67d) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.add)]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.1: <witness> = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(constants.%U.67d) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.0fc)]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%ptr.e8f8f9.1 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc7_38
|
||||
// CHECK:STDOUT: extend %Ptr.ref
|
||||
// CHECK:STDOUT: witness = %Ptr.impl_witness.loc7_55.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1400,7 +1383,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %pattern_type.loc9_19: type = pattern_type %T.as_type.loc9_21.1 [symbolic = %pattern_type.loc9_19 (constants.%pattern_type.756)]
|
||||
// CHECK:STDOUT: %t.patt.loc9_19.2: @F.%pattern_type.loc9_19 (%pattern_type.756) = ref_binding_pattern t [symbolic = %t.patt.loc9_19.2 (constants.%t.patt)]
|
||||
// CHECK:STDOUT: %t.param_patt.loc9_14.2: @F.%pattern_type.loc9_19 (%pattern_type.756) = var_param_pattern %t.patt.loc9_19.2 [symbolic = %t.param_patt.loc9_14.2 (constants.%t.param_patt)]
|
||||
// CHECK:STDOUT: %.loc9_28.1: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.as_type.loc9_21.1) [symbolic = %.loc9_28.1 (constants.%.14a)]
|
||||
// CHECK:STDOUT: %.loc9_28.1: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.as_type.loc9_21.1) [symbolic = %.loc9_28.1 (constants.%.166)]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %T.as_type.loc9_21.1 [symbolic = %ptr (constants.%ptr.ac4)]
|
||||
// CHECK:STDOUT: %.loc9_28.2: Core.Form = init_form %ptr [symbolic = %.loc9_28.2 (constants.%.e16)]
|
||||
// CHECK:STDOUT: %pattern_type.loc9_28: type = pattern_type %ptr [symbolic = %pattern_type.loc9_28 (constants.%pattern_type.f62)]
|
||||
@@ -1447,8 +1430,8 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %U.patt.loc7_21.2 => constants.%U.patt.d47
|
||||
// CHECK:STDOUT: %U.loc7_21.2 => constants.%U.67d
|
||||
// CHECK:STDOUT: %ptr.loc7_53.2 => constants.%ptr.e8f8f9.1
|
||||
// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.9d8
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.add
|
||||
// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.774
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.0fc
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Ptr.WithSelf(constants.%Ptr.facet) {
|
||||
@@ -1463,11 +1446,10 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %U.patt.loc7_21.2 => constants.%U.patt.d47
|
||||
// CHECK:STDOUT: %U.loc7_21.2 => constants.%T.as_type.468
|
||||
// CHECK:STDOUT: %ptr.loc7_53.2 => constants.%ptr.ac4
|
||||
// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.a29
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.e33
|
||||
// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.c27
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.30f
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.d44
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(constants.%T.76f) {
|
||||
@@ -1477,7 +1459,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %pattern_type.loc9_19 => constants.%pattern_type.756
|
||||
// CHECK:STDOUT: %t.patt.loc9_19.2 => constants.%t.patt
|
||||
// CHECK:STDOUT: %t.param_patt.loc9_14.2 => constants.%t.param_patt
|
||||
// CHECK:STDOUT: %.loc9_28.1 => constants.%.14a
|
||||
// CHECK:STDOUT: %.loc9_28.1 => constants.%.166
|
||||
// CHECK:STDOUT: %ptr => constants.%ptr.ac4
|
||||
// CHECK:STDOUT: %.loc9_28.2 => constants.%.e16
|
||||
// CHECK:STDOUT: %pattern_type.loc9_28 => constants.%pattern_type.f62
|
||||
@@ -1499,16 +1481,15 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %U.67d: type = symbolic_binding U, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.Self.frozen.073: %Ptr.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.073 [symbolic_self]
|
||||
// CHECK:STDOUT: %Ptr.lookup_impl_witness.2e6: <witness> = lookup_impl_witness %.Self.frozen.073, @Ptr [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.a05: type = impl_witness_access %Ptr.lookup_impl_witness.2e6, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %.c6b: <witness> = impl_self_witness %.Self.frozen.073, @Ptr [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.949: type = impl_witness_access %.c6b, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %ptr.e8f8f9.1: type = ptr_type %U.67d [symbolic]
|
||||
// CHECK:STDOUT: %.Self: %Ptr.type = symbolic_binding .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %Ptr.lookup_impl_witness.497: <witness> = lookup_impl_witness %.Self, @Ptr [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.f33: type = impl_witness_access %Ptr.lookup_impl_witness.497, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %Ptr_where.type.9d8: type = facet_type <@Ptr where %impl.elem0.f33 = %ptr.e8f8f9.1> [symbolic]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.add: <witness> = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U.67d) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.206: <witness> = require_complete_type %Ptr_where.type.9d8 [symbolic]
|
||||
// CHECK:STDOUT: %Ptr.facet: %Ptr.type = facet_value %U.67d, (%Ptr.impl_witness.add) [symbolic]
|
||||
// CHECK:STDOUT: %.51f: <witness> = impl_self_witness %.Self, @Ptr [symbolic_self]
|
||||
// CHECK:STDOUT: %impl.elem0.406: type = impl_witness_access %.51f, element0 [symbolic_self]
|
||||
// CHECK:STDOUT: %Ptr_where.type.774: type = facet_type <@Ptr where %impl.elem0.406 = %ptr.e8f8f9.1> [symbolic]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.0fc: <witness> = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U.67d) [symbolic]
|
||||
// CHECK:STDOUT: %Ptr.facet: %Ptr.type = facet_value %U.67d, (%Ptr.impl_witness.0fc) [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.f5d: type = pattern_type %Ptr.type [concrete]
|
||||
// CHECK:STDOUT: %T.patt.a2e: %pattern_type.f5d = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.76f: %Ptr.type = symbolic_binding T, 0 [symbolic]
|
||||
@@ -1517,10 +1498,9 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %t.patt: %pattern_type.756 = ref_binding_pattern t [symbolic]
|
||||
// CHECK:STDOUT: %t.param_patt: %pattern_type.756 = var_param_pattern %t.patt [symbolic]
|
||||
// CHECK:STDOUT: %ptr.ac4: type = ptr_type %T.as_type.468 [symbolic]
|
||||
// CHECK:STDOUT: %Ptr_where.type.a29: type = facet_type <@Ptr where %impl.elem0.f33 = %ptr.ac4> [symbolic]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.e33: <witness> = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.as_type.468) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.d44: <witness> = require_complete_type %Ptr_where.type.a29 [symbolic]
|
||||
// CHECK:STDOUT: %.14a: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.as_type.468) [symbolic]
|
||||
// CHECK:STDOUT: %Ptr_where.type.c27: type = facet_type <@Ptr where %impl.elem0.406 = %ptr.ac4> [symbolic]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.30f: <witness> = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.as_type.468) [symbolic]
|
||||
// CHECK:STDOUT: %.166: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.as_type.468) [symbolic]
|
||||
// CHECK:STDOUT: %.e16: Core.Form = init_form %ptr.ac4 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.f62: type = pattern_type %ptr.ac4 [symbolic]
|
||||
// CHECK:STDOUT: %return.param_patt.b93: %pattern_type.f62 = out_param_pattern [symbolic]
|
||||
@@ -1567,13 +1547,13 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %.loc7_44: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type]
|
||||
// CHECK:STDOUT: %Type.ref: %Ptr.assoc_type = name_ref Type, @Type.%assoc0 [concrete = constants.%assoc0.b1a]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_44.1: type = impl_witness_access constants.%Ptr.lookup_impl_witness.2e6, element0 [symbolic_self = constants.%impl.elem0.a05]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_44.1: type = impl_witness_access constants.%.c6b, element0 [symbolic_self = constants.%impl.elem0.949]
|
||||
// CHECK:STDOUT: %U.ref.loc7_52: type = name_ref U, %U.loc7_21.1 [symbolic = %U.loc7_21.2 (constants.%U.67d)]
|
||||
// CHECK:STDOUT: %ptr.loc7_53.1: type = ptr_type %U.ref.loc7_52 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)]
|
||||
// CHECK:STDOUT: %rewrite.loc7_50.1 = requirement_rewrite %impl.elem0.loc7_44.1, %ptr.loc7_53.1 [concrete]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_44.2: type = impl_witness_access constants.%Ptr.lookup_impl_witness.497, element0 [symbolic_self = constants.%impl.elem0.f33]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_44.2: type = impl_witness_access constants.%.51f, element0 [symbolic_self = constants.%impl.elem0.406]
|
||||
// CHECK:STDOUT: %rewrite.loc7_50.2 = requirement_rewrite %impl.elem0.loc7_44.2, %ptr.loc7_53.1 [concrete]
|
||||
// CHECK:STDOUT: %.loc7_38: type = where_expr [symbolic = %Ptr_where.type (constants.%Ptr_where.type.9d8)] {
|
||||
// CHECK:STDOUT: %.loc7_38: type = where_expr [symbolic = %Ptr_where.type (constants.%Ptr_where.type.774)] {
|
||||
// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Ptr.ref [concrete]
|
||||
// CHECK:STDOUT: %rewrite.loc7_50.2 = requirement_rewrite %impl.elem0.loc7_44.2, %ptr.loc7_53.1 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1593,7 +1573,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %T.ref.loc9_27: %Ptr.type = name_ref T, %T.loc9_7.2 [symbolic = %T.loc9_7.1 (constants.%T.76f)]
|
||||
// CHECK:STDOUT: %Ptr.ref.loc9_30: type = name_ref Ptr, file.%Ptr.decl [concrete = constants.%Ptr.type]
|
||||
// CHECK:STDOUT: %Type.ref: %Ptr.assoc_type = name_ref Type, @Type.%assoc0 [concrete = constants.%assoc0.b1a]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9: type = impl_witness_access constants.%Ptr.impl_witness.e33, element0 [symbolic = %ptr (constants.%ptr.ac4)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9: type = impl_witness_access constants.%Ptr.impl_witness.30f, element0 [symbolic = %ptr (constants.%ptr.ac4)]
|
||||
// CHECK:STDOUT: %.loc9_28.3: Core.Form = init_form %impl.elem0.loc9 [symbolic = %.loc9_28.2 (constants.%.e16)]
|
||||
// CHECK:STDOUT: %.loc9_9: type = splice_block %Ptr.ref.loc9_9 [concrete = constants.%Ptr.type] {
|
||||
// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197]
|
||||
@@ -1633,19 +1613,18 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %U.patt.loc7_21.2: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc7_21.2 (constants.%U.patt.d47)]
|
||||
// CHECK:STDOUT: %U.loc7_21.2: type = symbolic_binding U, 0 [symbolic = %U.loc7_21.2 (constants.%U.67d)]
|
||||
// CHECK:STDOUT: %ptr.loc7_53.2: type = ptr_type %U.loc7_21.2 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)]
|
||||
// CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.f33 = %ptr.loc7_53.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.9d8)]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2: <witness> = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_21.2) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.add)]
|
||||
// CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.406 = %ptr.loc7_53.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.774)]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2: <witness> = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_21.2) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.0fc)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Ptr_where.type [symbolic = %require_complete (constants.%require_complete.206)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: final impl: %U.ref.loc7_29 as %.loc7_38 {
|
||||
// CHECK:STDOUT: final impl: %U.ref.loc7_29 as %Ptr.ref {
|
||||
// CHECK:STDOUT: %Ptr.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @U.as.Ptr.impl [concrete]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.1: <witness> = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(constants.%U.67d) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.add)]
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.1: <witness> = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(constants.%U.67d) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.0fc)]
|
||||
// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%ptr.e8f8f9.1 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: extend %.loc7_38
|
||||
// CHECK:STDOUT: extend %Ptr.ref
|
||||
// CHECK:STDOUT: witness = %Ptr.impl_witness.loc7_55.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1657,7 +1636,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %pattern_type.loc9_19: type = pattern_type %T.as_type.loc9_21.1 [symbolic = %pattern_type.loc9_19 (constants.%pattern_type.756)]
|
||||
// CHECK:STDOUT: %t.patt.loc9_19.2: @F.%pattern_type.loc9_19 (%pattern_type.756) = ref_binding_pattern t [symbolic = %t.patt.loc9_19.2 (constants.%t.patt)]
|
||||
// CHECK:STDOUT: %t.param_patt.loc9_14.2: @F.%pattern_type.loc9_19 (%pattern_type.756) = var_param_pattern %t.patt.loc9_19.2 [symbolic = %t.param_patt.loc9_14.2 (constants.%t.param_patt)]
|
||||
// CHECK:STDOUT: %.loc9_28.1: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.as_type.loc9_21.1) [symbolic = %.loc9_28.1 (constants.%.14a)]
|
||||
// CHECK:STDOUT: %.loc9_28.1: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.as_type.loc9_21.1) [symbolic = %.loc9_28.1 (constants.%.166)]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %T.as_type.loc9_21.1 [symbolic = %ptr (constants.%ptr.ac4)]
|
||||
// CHECK:STDOUT: %.loc9_28.2: Core.Form = init_form %ptr [symbolic = %.loc9_28.2 (constants.%.e16)]
|
||||
// CHECK:STDOUT: %pattern_type.loc9_28: type = pattern_type %ptr [symbolic = %pattern_type.loc9_28 (constants.%pattern_type.f62)]
|
||||
@@ -1704,8 +1683,8 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %U.patt.loc7_21.2 => constants.%U.patt.d47
|
||||
// CHECK:STDOUT: %U.loc7_21.2 => constants.%U.67d
|
||||
// CHECK:STDOUT: %ptr.loc7_53.2 => constants.%ptr.e8f8f9.1
|
||||
// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.9d8
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.add
|
||||
// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.774
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.0fc
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Ptr.WithSelf(constants.%Ptr.facet) {
|
||||
@@ -1716,11 +1695,10 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %U.patt.loc7_21.2 => constants.%U.patt.d47
|
||||
// CHECK:STDOUT: %U.loc7_21.2 => constants.%T.as_type.468
|
||||
// CHECK:STDOUT: %ptr.loc7_53.2 => constants.%ptr.ac4
|
||||
// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.a29
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.e33
|
||||
// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.c27
|
||||
// CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.30f
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.d44
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Ptr.WithSelf(constants.%T.76f) {
|
||||
@@ -1734,7 +1712,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %pattern_type.loc9_19 => constants.%pattern_type.756
|
||||
// CHECK:STDOUT: %t.patt.loc9_19.2 => constants.%t.patt
|
||||
// CHECK:STDOUT: %t.param_patt.loc9_14.2 => constants.%t.param_patt
|
||||
// CHECK:STDOUT: %.loc9_28.1 => constants.%.14a
|
||||
// CHECK:STDOUT: %.loc9_28.1 => constants.%.166
|
||||
// CHECK:STDOUT: %ptr => constants.%ptr.ac4
|
||||
// CHECK:STDOUT: %.loc9_28.2 => constants.%.e16
|
||||
// CHECK:STDOUT: %pattern_type.loc9_28 => constants.%pattern_type.f62
|
||||
|
||||
@@ -55,7 +55,7 @@ impl forall [T: type] T as I where .U = C {
|
||||
// CHECK:STDOUT: %T.as.I.impl.F.type: type = fn_type @T.as.I.impl.F, @T.as.I.impl(%T.loc10_15.1) [symbolic = %T.as.I.impl.F.type (constants.%T.as.I.impl.F.type)]
|
||||
// CHECK:STDOUT: %T.as.I.impl.F: @T.as.I.impl.%T.as.I.impl.F.type (%T.as.I.impl.F.type) = struct_value () [symbolic = %T.as.I.impl.F (constants.%T.as.I.impl.F)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl: %T.ref as %.loc10_30 {
|
||||
// CHECK:STDOUT: impl: %T.ref as %I.ref {
|
||||
// CHECK:STDOUT: %T.as.I.impl.F.decl: @T.as.I.impl.%T.as.I.impl.F.type (%T.as.I.impl.F.type) = fn_decl @T.as.I.impl.F [symbolic = @T.as.I.impl.%T.as.I.impl.F (constants.%T.as.I.impl.F)] {
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.98b = out_param_pattern [concrete = constants.%return.param_patt.89a]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.98b = return_slot_pattern %return.param_patt, %U.ref [concrete = constants.%return.patt.e4a]
|
||||
@@ -74,7 +74,7 @@ impl forall [T: type] T as I where .U = C {
|
||||
// CHECK:STDOUT: .U = <poisoned>
|
||||
// CHECK:STDOUT: .F = %T.as.I.impl.F.decl
|
||||
// CHECK:STDOUT: .C = <poisoned>
|
||||
// CHECK:STDOUT: extend %.loc10_30
|
||||
// CHECK:STDOUT: extend %I.ref
|
||||
// CHECK:STDOUT: witness = %I.impl_witness.loc10_43.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+129
-21
@@ -34,7 +34,7 @@ interface J {}
|
||||
// CHECK:STDERR:
|
||||
impl forall [T: type] T as I where .X = () and .X impls J {}
|
||||
|
||||
// --- fail_todo_rewrite_in_facet_type_after.carbon
|
||||
// --- rewrite_in_facet_type_after.carbon
|
||||
library "[[@TEST_NAME]]";
|
||||
|
||||
interface I { let X: type; }
|
||||
@@ -44,10 +44,6 @@ impl () as J {}
|
||||
|
||||
// We don't see the rewrite until later, but when we look at the constraints
|
||||
// required, we still need to see that we need `() impls J`.
|
||||
// CHECK:STDERR: fail_todo_rewrite_in_facet_type_after.carbon:[[@LINE+4]]:1: error: constraint `I where T.(I.X) impls J and .(I.X) = ()` being implemented requires that `T.(I.X)` implements `J` [IdentifiedRequireImplsNotImplemented]
|
||||
// CHECK:STDERR: impl forall [T: type] T as I where .X impls J and .X = () {}
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// CHECK:STDERR:
|
||||
impl forall [T: type] T as I where .X impls J and .X = () {}
|
||||
|
||||
// --- fail_rewrite_in_facet_type_after_missing_impl.carbon
|
||||
@@ -57,7 +53,7 @@ interface I { let X: type; }
|
||||
interface J {}
|
||||
|
||||
// .X does not impl J.
|
||||
// CHECK:STDERR: fail_rewrite_in_facet_type_after_missing_impl.carbon:[[@LINE+4]]:1: error: constraint `I where T.(I.X) impls J and .(I.X) = ()` being implemented requires that `T.(I.X)` implements `J` [IdentifiedRequireImplsNotImplemented]
|
||||
// CHECK:STDERR: fail_rewrite_in_facet_type_after_missing_impl.carbon:[[@LINE+4]]:1: error: constraint `I where .(I.X) impls J and .(I.X) = ()` being implemented requires that `()` implements `J` [IdentifiedRequireImplsNotImplemented]
|
||||
// CHECK:STDERR: impl forall [T: type] T as I where .X impls J and .X = () {}
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// CHECK:STDERR:
|
||||
@@ -76,17 +72,13 @@ constraint GivesI {
|
||||
impl () as J {}
|
||||
|
||||
// The rewrite from `extend` is inherited and should satisfy that `.X impls J`.
|
||||
// CHECK:STDERR: fail_todo_rewrite_in_named_constraint.carbon:[[@LINE+11]]:1: error: associated constant X not given a value in impl of interface I [ImplAssociatedConstantNeedsValue]
|
||||
// CHECK:STDERR: fail_todo_rewrite_in_named_constraint.carbon:[[@LINE+7]]:1: error: associated constant X not given a value in impl of interface I [ImplAssociatedConstantNeedsValue]
|
||||
// CHECK:STDERR: impl forall [T: type] T as GivesI where .X impls J {}
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// CHECK:STDERR: fail_todo_rewrite_in_named_constraint.carbon:[[@LINE-13]]:19: note: associated constant declared here [AssociatedConstantHere]
|
||||
// CHECK:STDERR: interface I { let X: type; }
|
||||
// CHECK:STDERR: ^~~~~~~
|
||||
// CHECK:STDERR:
|
||||
// CHECK:STDERR: fail_todo_rewrite_in_named_constraint.carbon:[[@LINE+4]]:1: error: constraint `GivesI where T.(I.X) impls J` being implemented requires that `T.(I.X)` implements `J` [IdentifiedRequireImplsNotImplemented]
|
||||
// CHECK:STDERR: impl forall [T: type] T as GivesI where .X impls J {}
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// CHECK:STDERR:
|
||||
impl forall [T: type] T as GivesI where .X impls J {}
|
||||
|
||||
// --- fail_rewrite_in_named_constraint_missing_impl.carbon
|
||||
@@ -100,17 +92,13 @@ constraint GivesI {
|
||||
}
|
||||
|
||||
// .X does not impl J.
|
||||
// CHECK:STDERR: fail_rewrite_in_named_constraint_missing_impl.carbon:[[@LINE+11]]:1: error: associated constant X not given a value in impl of interface I [ImplAssociatedConstantNeedsValue]
|
||||
// CHECK:STDERR: fail_rewrite_in_named_constraint_missing_impl.carbon:[[@LINE+7]]:1: error: associated constant X not given a value in impl of interface I [ImplAssociatedConstantNeedsValue]
|
||||
// CHECK:STDERR: impl forall [T: type] T as GivesI where .X impls J {}
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// CHECK:STDERR: fail_rewrite_in_named_constraint_missing_impl.carbon:[[@LINE-11]]:19: note: associated constant declared here [AssociatedConstantHere]
|
||||
// CHECK:STDERR: interface I { let X: type; }
|
||||
// CHECK:STDERR: ^~~~~~~
|
||||
// CHECK:STDERR:
|
||||
// CHECK:STDERR: fail_rewrite_in_named_constraint_missing_impl.carbon:[[@LINE+4]]:1: error: constraint `GivesI where T.(I.X) impls J` being implemented requires that `T.(I.X)` implements `J` [IdentifiedRequireImplsNotImplemented]
|
||||
// CHECK:STDERR: impl forall [T: type] T as GivesI where .X impls J {}
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// CHECK:STDERR:
|
||||
impl forall [T: type] T as GivesI where .X impls J {}
|
||||
|
||||
// --- fail_todo_rewrite_and_impls_in_named_constraint.carbon
|
||||
@@ -176,7 +164,7 @@ impl () as J(()) {}
|
||||
// This uses the earlier rewrite to see that we need `() impls J(())`.
|
||||
impl forall [T: type] T as I where .X = () and .X impls J(.X) {}
|
||||
|
||||
// --- fail_todo_rewrite_in_facet_type_after_with_generic_param.carbon
|
||||
// --- rewrite_in_facet_type_after_with_generic_param.carbon
|
||||
library "[[@TEST_NAME]]";
|
||||
|
||||
interface I { let X: type; }
|
||||
@@ -186,8 +174,128 @@ impl () as J(()) {}
|
||||
|
||||
// We don't see the rewrite until later, but when we look at the constraints
|
||||
// required, we still need to see that we need `() impls J(())`.
|
||||
// CHECK:STDERR: fail_todo_rewrite_in_facet_type_after_with_generic_param.carbon:[[@LINE+4]]:1: error: constraint `I where T.(I.X) impls J(T.(I.X)) and .(I.X) = ()` being implemented requires that `T.(I.X)` implements `J(T.(I.X))` [IdentifiedRequireImplsNotImplemented]
|
||||
// CHECK:STDERR: impl forall [T: type] T as I where .X impls J(.X) and .X = () {}
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// CHECK:STDERR:
|
||||
impl forall [T: type] T as I where .X impls J(.X) and .X = () {}
|
||||
|
||||
// --- impl_lookups_in_definition_find_own_impl.carbon
|
||||
library "[[@TEST_NAME]]";
|
||||
|
||||
class C {}
|
||||
class G(T: type) {}
|
||||
|
||||
interface Z(R: type) {
|
||||
let Result: type;
|
||||
}
|
||||
interface Y(S: type) {}
|
||||
|
||||
impl forall [T: type] () as Y(G(T)) {}
|
||||
impl forall [T: type] {} as Y(G(T)) {}
|
||||
|
||||
// This is a blanket impl that overlaps with (but is less specific than)
|
||||
// `G(C) as Z(G(C))`, which is the next impl below.
|
||||
impl forall [T: type, U: type] G(T) as Z(U) where .Result impls Y(G(T)) and .Result = {} {}
|
||||
|
||||
// The query `G(C) as Z(G(C))` is concrete so any lookups will result in a final
|
||||
// witness. The constraint facet type contains `.Result` which causes a lookup
|
||||
// for `G(C) as Z(G(C))`. But this lookup occurs before the impl declaration is
|
||||
// even completed, so the impl does not yet exist according to check.
|
||||
//
|
||||
// The naive result is that the lookup finds overlapping impl above, and
|
||||
// `.Result` evaluates to `{}` which is incorrect. Then a later query finds this
|
||||
// impl and `.Result` evaluates to `()`. We diagnose this a poisoning error,
|
||||
// where this impl changes the possible value of `.Result` after a concrete
|
||||
// query was made for it.
|
||||
//
|
||||
// The correct result is for the witness of `G(C) as Z(G(C))` to point to this
|
||||
// impl, even though it does not yet exist. No impl lookup should occur for the
|
||||
// interface being impl'd from within the declaration. Then `.Result` consistent
|
||||
// evalutes to `()`.
|
||||
impl G(C) as Z(G(C)) where .Result impls Y(G(C)) and .Result = () {}
|
||||
|
||||
fn F() {
|
||||
G(C) as Z(G(C));
|
||||
}
|
||||
|
||||
// --- impl_lookups_in_definition_find_own_impl_with_named_constraint.carbon
|
||||
library "[[@TEST_NAME]]";
|
||||
|
||||
class C {}
|
||||
class G(T: type) {}
|
||||
|
||||
interface Z(R: type) {
|
||||
let Result: type;
|
||||
}
|
||||
interface Y(S: type) {}
|
||||
|
||||
impl forall [T: type] () as Y(G(T)) {}
|
||||
impl forall [T: type] {} as Y(G(T)) {}
|
||||
|
||||
impl forall [T: type, U: type] G(T) as Z(U) where .Result impls Y(G(T)) and .Result = {} {}
|
||||
|
||||
constraint N(T: type) {
|
||||
extend require impls Z(G(T));
|
||||
}
|
||||
|
||||
// See impl_lookups_in_definition_find_own_impl.carbon for an explanation of
|
||||
// this test. We are testing the same things, except we put the impl's target
|
||||
// interface into a named constraint.
|
||||
impl G(C) as N(C) where .Result impls Y(G(C)) and .Result = () {}
|
||||
|
||||
fn F() {
|
||||
G(C) as Z(G(C));
|
||||
}
|
||||
|
||||
// --- lookup_for_impl_with_period_self_in_constraint.carbon
|
||||
library "[[@TEST_NAME]]";
|
||||
|
||||
class C {}
|
||||
class G(T: type) {}
|
||||
|
||||
interface Z(R: type) {
|
||||
let Result: type;
|
||||
}
|
||||
interface Y(S: type) {}
|
||||
|
||||
impl forall [T: type] () as Y(G(T)) {}
|
||||
|
||||
// We don't want `.Self` references to escape the `impl` decl, so this tests a
|
||||
// scenario where they used to escape and cause an infinite cycle.
|
||||
//
|
||||
// The impl lookup in `F()` finds this impl, which has a `.Self` in its set of
|
||||
// constraints (in `.Result impls ...`). The lookup operation can't identify the
|
||||
// constraint and replace `.Self` without creating a new witness that causes a
|
||||
// lookup for this impl again.
|
||||
impl forall [T: type, U: type] G(T) as Z(U) where .Result impls Y(G(T)) and .Result = () {}
|
||||
|
||||
fn F() {
|
||||
G(C) as Z(G(C));
|
||||
}
|
||||
|
||||
// --- where_that_does_not_constrain_impl.carbon
|
||||
library "[[@TEST_NAME]]";
|
||||
|
||||
interface Z {
|
||||
let Z1: type;
|
||||
}
|
||||
interface Y(T: type) {}
|
||||
|
||||
interface Tuple {}
|
||||
impl () as Tuple {}
|
||||
|
||||
// This test puts a `where` expression in two problematic places:
|
||||
// - The `where` in the generic constraint for the impl should _not_ refer to
|
||||
// the impl. It should have a non-final witness for the `.Z1` access.
|
||||
// - The `where` in the generic argument to `Y` does not constrain the impl's
|
||||
// self type so the access `.Z1` should also have a symbolic witness, not a
|
||||
// witness for the impl itself.
|
||||
//
|
||||
// If done incorrectly, either of the above may become a witness for the impl
|
||||
// itself, which is incorrect and results in a lookup into an empty witness
|
||||
// table (for `Y`) when looking for `.Z1`.
|
||||
//
|
||||
// Also if done incorrectly, we may declare that lookups in `Z` are for the
|
||||
// current impl, because of the `Z where ...` in the argument for `Y` if we
|
||||
// mistake that as being `impl as Z where ...`. That would result in the later
|
||||
// access `.Self.(Z.Z1)` becoming a witness for the impl itself, which would try
|
||||
// to find a value for `.Z1` in the empty witness table for `Y`.
|
||||
impl forall [T: Z where .Z1 = ()] T as Y(Z where .Z1 = ())
|
||||
where .Self impls Z and .Self.(Z.Z1) impls Tuple {}
|
||||
|
||||
+61
-61
@@ -497,8 +497,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %pattern_type.506: type = pattern_type %Self.as_type.976 [symbolic]
|
||||
// CHECK:STDOUT: %self.param_patt.091: %pattern_type.506 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %self.patt.bfd: %pattern_type.506 = at_binding_pattern self, %self.param_patt.091 [symbolic]
|
||||
// CHECK:STDOUT: %J.lookup_impl_witness.e57: <witness> = lookup_impl_witness %Self.653, @J [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.c15: type = impl_witness_access %J.lookup_impl_witness.e57, element0 [symbolic]
|
||||
// CHECK:STDOUT: %J.lookup_impl_witness: <witness> = lookup_impl_witness %Self.653, @J [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.c15: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.a39: type = pattern_type %impl.elem0.c15 [symbolic]
|
||||
// CHECK:STDOUT: %u.param_patt.81e: %pattern_type.a39 = value_param_pattern [symbolic]
|
||||
// CHECK:STDOUT: %u.patt.1b4: %pattern_type.a39 = at_binding_pattern u, %u.param_patt.81e [symbolic]
|
||||
@@ -515,7 +515,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %J.impl_witness.280: <witness> = impl_witness @empty_tuple.type.as.J.impl.%J.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %J.impl_witness.c56: <witness> = impl_witness @empty_tuple.type.as.J.impl.%J.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt.154: %pattern_type.cb1 = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt.8c1: %pattern_type.cb1 = at_binding_pattern self, %self.param_patt.154 [concrete]
|
||||
@@ -527,20 +527,20 @@ fn F() {
|
||||
// CHECK:STDOUT: %return.patt.e1b: %pattern_type.6b6 = return_slot_pattern %return.param_patt.a9a, %i32 [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type.as.J.impl.F.type: type = fn_type @empty_tuple.type.as.J.impl.F [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type.as.J.impl.F: %empty_tuple.type.as.J.impl.F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %J.facet.2b9: %J.type = facet_value %empty_tuple.type, (%J.impl_witness.280) [concrete]
|
||||
// CHECK:STDOUT: %J.WithSelf.F.type.9eb: type = fn_type @J.WithSelf.F, @J.WithSelf(%J.facet.2b9) [concrete]
|
||||
// CHECK:STDOUT: %J.WithSelf.F.cf7: %J.WithSelf.F.type.9eb = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %J.facet.a0d: %J.type = facet_value %empty_tuple.type, (%J.impl_witness.c56) [concrete]
|
||||
// CHECK:STDOUT: %J.WithSelf.F.type.ed9: type = fn_type @J.WithSelf.F, @J.WithSelf(%J.facet.a0d) [concrete]
|
||||
// CHECK:STDOUT: %J.WithSelf.F.b6c: %J.WithSelf.F.type.ed9 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Negate.impl.Op.type.947: type = fn_type @Int.as.Negate.impl.Op, @Int.as.Negate.impl(%N) [symbolic]
|
||||
// CHECK:STDOUT: %Int.as.Negate.impl.Op.d40: %Int.as.Negate.impl.Op.type.947 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %Negate.impl_witness.268: <witness> = impl_witness imports.%Negate.impl_witness_table, @Int.as.Negate.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Negate.impl.Op.type.81d: type = fn_type @Int.as.Negate.impl.Op, @Int.as.Negate.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Negate.impl.Op.0f5: %Int.as.Negate.impl.Op.type.81d = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value %i32, (%Negate.impl_witness.268) [concrete]
|
||||
// CHECK:STDOUT: %Negate.WithSelf.Op.type.ab0: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete]
|
||||
// CHECK:STDOUT: %.1840: type = fn_type_with_self_type %Negate.WithSelf.Op.type.ab0, %Negate.facet [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Negate.impl.Op.specific_fn: <specific function> = specific_function %Int.as.Negate.impl.Op.0f5, @Int.as.Negate.impl.Op(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %.20f: type = fn_type_with_self_type %J.WithSelf.F.type.9eb, %J.facet.2b9 [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Negate.impl.Op.type.874: type = fn_type @Int.as.Negate.impl.Op, @Int.as.Negate.impl(%N) [symbolic]
|
||||
// CHECK:STDOUT: %Int.as.Negate.impl.Op.9e8: %Int.as.Negate.impl.Op.type.874 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %Negate.impl_witness.ebb: <witness> = impl_witness imports.%Negate.impl_witness_table, @Int.as.Negate.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Negate.impl.Op.type.08d: type = fn_type @Int.as.Negate.impl.Op, @Int.as.Negate.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Negate.impl.Op.4f1: %Int.as.Negate.impl.Op.type.08d = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value %i32, (%Negate.impl_witness.ebb) [concrete]
|
||||
// CHECK:STDOUT: %Negate.WithSelf.Op.type.e34: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete]
|
||||
// CHECK:STDOUT: %.669: type = fn_type_with_self_type %Negate.WithSelf.Op.type.e34, %Negate.facet [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Negate.impl.Op.specific_fn: <specific function> = specific_function %Int.as.Negate.impl.Op.4f1, @Int.as.Negate.impl.Op(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %.7e2: type = fn_type_with_self_type %J.WithSelf.F.type.ed9, %J.facet.a0d [concrete]
|
||||
// CHECK:STDOUT: %int_40.f80: Core.IntLiteral = int_value 40 [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.914: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete]
|
||||
// CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic]
|
||||
@@ -559,7 +559,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %J.impl_witness.26d: <witness> = impl_witness @C.as.J.impl.%J.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %J.impl_witness.7a1: <witness> = impl_witness @C.as.J.impl.%J.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.98b: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt.303: %pattern_type.98b = value_param_pattern [concrete]
|
||||
// CHECK:STDOUT: %self.patt.49a: %pattern_type.98b = at_binding_pattern self, %self.param_patt.303 [concrete]
|
||||
@@ -570,16 +570,16 @@ fn F() {
|
||||
// CHECK:STDOUT: %return.patt.e4a: %pattern_type.98b = return_slot_pattern %return.param_patt.89a, %C [concrete]
|
||||
// CHECK:STDOUT: %C.as.J.impl.F.type: type = fn_type @C.as.J.impl.F [concrete]
|
||||
// CHECK:STDOUT: %C.as.J.impl.F: %C.as.J.impl.F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %J.facet.0ec: %J.type = facet_value %C, (%J.impl_witness.26d) [concrete]
|
||||
// CHECK:STDOUT: %J.WithSelf.F.type.125: type = fn_type @J.WithSelf.F, @J.WithSelf(%J.facet.0ec) [concrete]
|
||||
// CHECK:STDOUT: %J.WithSelf.F.b33: %J.WithSelf.F.type.125 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %J.facet.305: %J.type = facet_value %C, (%J.impl_witness.7a1) [concrete]
|
||||
// CHECK:STDOUT: %J.WithSelf.F.type.d3f: type = fn_type @J.WithSelf.F, @J.WithSelf(%J.facet.305) [concrete]
|
||||
// CHECK:STDOUT: %J.WithSelf.F.07c: %J.WithSelf.F.type.d3f = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %C.val: %C = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core.import_ref.b4f = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, unloaded
|
||||
// CHECK:STDOUT: %Core.import_ref.aa2: @Int.as.Negate.impl.%Int.as.Negate.impl.Op.type (%Int.as.Negate.impl.Op.type.947) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.Negate.impl.%Int.as.Negate.impl.Op (constants.%Int.as.Negate.impl.Op.d40)]
|
||||
// CHECK:STDOUT: %Negate.impl_witness_table = impl_witness_table (%Core.import_ref.b4f, %Core.import_ref.aa2), @Int.as.Negate.impl [concrete]
|
||||
// CHECK:STDOUT: %Core.import_ref.bc0: @Int.as.Negate.impl.%Int.as.Negate.impl.Op.type (%Int.as.Negate.impl.Op.type.874) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.Negate.impl.%Int.as.Negate.impl.Op (constants.%Int.as.Negate.impl.Op.9e8)]
|
||||
// CHECK:STDOUT: %Negate.impl_witness_table = impl_witness_table (%Core.import_ref.b4f, %Core.import_ref.bc0), @Int.as.Negate.impl [concrete]
|
||||
// CHECK:STDOUT: %Core.import_ref.edf: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.845)]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.b3c = impl_witness_table (%Core.import_ref.edf), @Core.IntLiteral.as.ImplicitAs.impl [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -597,7 +597,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %return.param_patt.loc6_23.1: @J.WithSelf.F.%pattern_type.loc6_15 (%pattern_type.a39) = out_param_pattern [symbolic = %return.param_patt.loc6_23.2 (constants.%return.param_patt.740)]
|
||||
// CHECK:STDOUT: %return.patt.loc6_20.1: @J.WithSelf.F.%pattern_type.loc6_15 (%pattern_type.a39) = return_slot_pattern %return.param_patt.loc6_23.1, %U.ref.loc6_23 [symbolic = %return.patt.loc6_20.2 (constants.%return.patt.cdd)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_23: type = impl_witness_access constants.%J.lookup_impl_witness.e57, element0 [symbolic = %impl.elem0.loc6_17.1 (constants.%impl.elem0.c15)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_23: type = impl_witness_access constants.%J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_17.1 (constants.%impl.elem0.c15)]
|
||||
// CHECK:STDOUT: %U.ref.loc6_23: type = name_ref U, %impl.elem0.loc6_23 [symbolic = %impl.elem0.loc6_17.1 (constants.%impl.elem0.c15)]
|
||||
// CHECK:STDOUT: %.loc6_23.2: Core.Form = init_form %U.ref.loc6_23 [symbolic = %.loc6_23.1 (constants.%.eb9)]
|
||||
// CHECK:STDOUT: %self.param: @J.WithSelf.F.%Self.as_type.loc6_8.1 (%Self.as_type.976) = value_param call_param0
|
||||
@@ -609,7 +609,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %self: @J.WithSelf.F.%Self.as_type.loc6_8.1 (%Self.as_type.976) = wrapper_binding self, %self.param
|
||||
// CHECK:STDOUT: %u.param: @J.WithSelf.F.%impl.elem0.loc6_17.1 (%impl.elem0.c15) = value_param call_param1
|
||||
// CHECK:STDOUT: %.loc6_17: type = splice_block %U.ref.loc6_17 [symbolic = %impl.elem0.loc6_17.1 (constants.%impl.elem0.c15)] {
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_17.2: type = impl_witness_access constants.%J.lookup_impl_witness.e57, element0 [symbolic = %impl.elem0.loc6_17.1 (constants.%impl.elem0.c15)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_17.2: type = impl_witness_access constants.%J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_17.1 (constants.%impl.elem0.c15)]
|
||||
// CHECK:STDOUT: %U.ref.loc6_17: type = name_ref U, %impl.elem0.loc6_17.2 [symbolic = %impl.elem0.loc6_17.1 (constants.%impl.elem0.c15)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %u: @J.WithSelf.F.%impl.elem0.loc6_17.1 (%impl.elem0.c15) = wrapper_binding u, %u.param
|
||||
@@ -628,7 +628,7 @@ fn F() {
|
||||
// CHECK:STDOUT: !requires:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @empty_tuple.type.as.J.impl: %.loc10_7.2 as %.loc10_14 {
|
||||
// CHECK:STDOUT: impl @empty_tuple.type.as.J.impl: %.loc10_7.2 as %J.ref {
|
||||
// CHECK:STDOUT: %empty_tuple.type.as.J.impl.F.decl: %empty_tuple.type.as.J.impl.F.type = fn_decl @empty_tuple.type.as.J.impl.F [concrete = constants.%empty_tuple.type.as.J.impl.F] {
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.cb1 = value_param_pattern [concrete = constants.%self.param_patt.154]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.cb1 = at_binding_pattern self, %self.param_patt [concrete = constants.%self.patt.8c1]
|
||||
@@ -652,11 +652,11 @@ fn F() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .F = %empty_tuple.type.as.J.impl.F.decl
|
||||
// CHECK:STDOUT: extend %.loc10_14
|
||||
// CHECK:STDOUT: extend %J.ref
|
||||
// CHECK:STDOUT: witness = %J.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @C.as.J.impl: %C.ref.loc27_6 as %.loc27_13 {
|
||||
// CHECK:STDOUT: impl @C.as.J.impl: %C.ref.loc27_6 as %J.ref {
|
||||
// CHECK:STDOUT: %C.as.J.impl.F.decl: %C.as.J.impl.F.type = fn_decl @C.as.J.impl.F [concrete = constants.%C.as.J.impl.F] {
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.98b = value_param_pattern [concrete = constants.%self.param_patt.303]
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.98b = at_binding_pattern self, %self.param_patt [concrete = constants.%self.patt.49a]
|
||||
@@ -681,7 +681,7 @@ fn F() {
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .C = <poisoned>
|
||||
// CHECK:STDOUT: .F = %C.as.J.impl.F.decl
|
||||
// CHECK:STDOUT: extend %.loc27_13
|
||||
// CHECK:STDOUT: extend %J.ref
|
||||
// CHECK:STDOUT: witness = %J.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -691,7 +691,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_8: type = pattern_type %Self.as_type.loc6_8.1 [symbolic = %pattern_type.loc6_8 (constants.%pattern_type.506)]
|
||||
// CHECK:STDOUT: %self.param_patt.loc6_8.2: @J.WithSelf.F.%pattern_type.loc6_8 (%pattern_type.506) = value_param_pattern [symbolic = %self.param_patt.loc6_8.2 (constants.%self.param_patt.091)]
|
||||
// CHECK:STDOUT: %self.patt.loc6_8.2: @J.WithSelf.F.%pattern_type.loc6_8 (%pattern_type.506) = at_binding_pattern self, %self.param_patt.loc6_8.2 [symbolic = %self.patt.loc6_8.2 (constants.%self.patt.bfd)]
|
||||
// CHECK:STDOUT: %J.lookup_impl_witness: <witness> = lookup_impl_witness %Self, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness.e57)]
|
||||
// CHECK:STDOUT: %J.lookup_impl_witness: <witness> = lookup_impl_witness %Self, @J [symbolic = %J.lookup_impl_witness (constants.%J.lookup_impl_witness)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_17.1: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_17.1 (constants.%impl.elem0.c15)]
|
||||
// CHECK:STDOUT: %pattern_type.loc6_15: type = pattern_type %impl.elem0.loc6_17.1 [symbolic = %pattern_type.loc6_15 (constants.%pattern_type.a39)]
|
||||
// CHECK:STDOUT: %u.param_patt.loc6_15.2: @J.WithSelf.F.%pattern_type.loc6_15 (%pattern_type.a39) = value_param_pattern [symbolic = %u.param_patt.loc6_15.2 (constants.%u.param_patt.81e)]
|
||||
@@ -706,7 +706,7 @@ fn F() {
|
||||
// CHECK:STDOUT: fn @empty_tuple.type.as.J.impl.F(%self.param: %empty_tuple.type, %u.param: %i32) -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %u.ref: %i32 = name_ref u, %u
|
||||
// CHECK:STDOUT: %impl.elem1: %.1840 = impl_witness_access constants.%Negate.impl_witness.268, element1 [concrete = constants.%Int.as.Negate.impl.Op.0f5]
|
||||
// CHECK:STDOUT: %impl.elem1: %.669 = impl_witness_access constants.%Negate.impl_witness.ebb, element1 [concrete = constants.%Int.as.Negate.impl.Op.4f1]
|
||||
// CHECK:STDOUT: %bound_method.loc12_45.1: <bound method> = bound_method %u.ref, %impl.elem1
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem1, @Int.as.Negate.impl.Op(constants.%int_32) [concrete = constants.%Int.as.Negate.impl.Op.specific_fn]
|
||||
// CHECK:STDOUT: %bound_method.loc12_45.2: <bound method> = bound_method %u.ref, %specific_fn
|
||||
@@ -719,7 +719,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %x.ref: %empty_tuple.type = name_ref x, %x
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type]
|
||||
// CHECK:STDOUT: %F.ref: %J.assoc_type = name_ref F, @J.WithSelf.%assoc1 [concrete = constants.%assoc1.413]
|
||||
// CHECK:STDOUT: %impl.elem1: %.20f = impl_witness_access constants.%J.impl_witness.280, element1 [concrete = constants.%empty_tuple.type.as.J.impl.F]
|
||||
// CHECK:STDOUT: %impl.elem1: %.7e2 = impl_witness_access constants.%J.impl_witness.c56, element1 [concrete = constants.%empty_tuple.type.as.J.impl.F]
|
||||
// CHECK:STDOUT: %bound_method.loc18_11: <bound method> = bound_method %x.ref, %impl.elem1
|
||||
// CHECK:STDOUT: %int_40: Core.IntLiteral = int_value 40 [concrete = constants.%int_40.f80]
|
||||
// CHECK:STDOUT: %impl.elem0: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39]
|
||||
@@ -756,7 +756,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_8 => constants.%pattern_type.506
|
||||
// CHECK:STDOUT: %self.param_patt.loc6_8.2 => constants.%self.param_patt.091
|
||||
// CHECK:STDOUT: %self.patt.loc6_8.2 => constants.%self.patt.bfd
|
||||
// CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness.e57
|
||||
// CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.lookup_impl_witness
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_17.1 => constants.%impl.elem0.c15
|
||||
// CHECK:STDOUT: %pattern_type.loc6_15 => constants.%pattern_type.a39
|
||||
// CHECK:STDOUT: %u.param_patt.loc6_15.2 => constants.%u.param_patt.81e
|
||||
@@ -773,20 +773,20 @@ fn F() {
|
||||
// CHECK:STDOUT: %J.WithSelf.F => constants.%J.WithSelf.F.76e
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @J.WithSelf(constants.%J.facet.2b9) {
|
||||
// CHECK:STDOUT: specific @J.WithSelf(constants.%J.facet.a0d) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %Self => constants.%J.facet.2b9
|
||||
// CHECK:STDOUT: %J.WithSelf.F.type => constants.%J.WithSelf.F.type.9eb
|
||||
// CHECK:STDOUT: %J.WithSelf.F => constants.%J.WithSelf.F.cf7
|
||||
// CHECK:STDOUT: %Self => constants.%J.facet.a0d
|
||||
// CHECK:STDOUT: %J.WithSelf.F.type => constants.%J.WithSelf.F.type.ed9
|
||||
// CHECK:STDOUT: %J.WithSelf.F => constants.%J.WithSelf.F.b6c
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @J.WithSelf.F(constants.%J.facet.2b9) {
|
||||
// CHECK:STDOUT: %Self => constants.%J.facet.2b9
|
||||
// CHECK:STDOUT: specific @J.WithSelf.F(constants.%J.facet.a0d) {
|
||||
// CHECK:STDOUT: %Self => constants.%J.facet.a0d
|
||||
// CHECK:STDOUT: %Self.as_type.loc6_8.1 => constants.%empty_tuple.type
|
||||
// CHECK:STDOUT: %pattern_type.loc6_8 => constants.%pattern_type.cb1
|
||||
// CHECK:STDOUT: %self.param_patt.loc6_8.2 => constants.%self.param_patt.154
|
||||
// CHECK:STDOUT: %self.patt.loc6_8.2 => constants.%self.patt.8c1
|
||||
// CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness.280
|
||||
// CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness.c56
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_17.1 => constants.%i32
|
||||
// CHECK:STDOUT: %pattern_type.loc6_15 => constants.%pattern_type.6b6
|
||||
// CHECK:STDOUT: %u.param_patt.loc6_15.2 => constants.%u.param_patt.151
|
||||
@@ -796,20 +796,20 @@ fn F() {
|
||||
// CHECK:STDOUT: %return.patt.loc6_20.2 => constants.%return.patt.e1b
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @J.WithSelf(constants.%J.facet.0ec) {
|
||||
// CHECK:STDOUT: specific @J.WithSelf(constants.%J.facet.305) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %Self => constants.%J.facet.0ec
|
||||
// CHECK:STDOUT: %J.WithSelf.F.type => constants.%J.WithSelf.F.type.125
|
||||
// CHECK:STDOUT: %J.WithSelf.F => constants.%J.WithSelf.F.b33
|
||||
// CHECK:STDOUT: %Self => constants.%J.facet.305
|
||||
// CHECK:STDOUT: %J.WithSelf.F.type => constants.%J.WithSelf.F.type.d3f
|
||||
// CHECK:STDOUT: %J.WithSelf.F => constants.%J.WithSelf.F.07c
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @J.WithSelf.F(constants.%J.facet.0ec) {
|
||||
// CHECK:STDOUT: %Self => constants.%J.facet.0ec
|
||||
// CHECK:STDOUT: specific @J.WithSelf.F(constants.%J.facet.305) {
|
||||
// CHECK:STDOUT: %Self => constants.%J.facet.305
|
||||
// CHECK:STDOUT: %Self.as_type.loc6_8.1 => constants.%C
|
||||
// CHECK:STDOUT: %pattern_type.loc6_8 => constants.%pattern_type.98b
|
||||
// CHECK:STDOUT: %self.param_patt.loc6_8.2 => constants.%self.param_patt.303
|
||||
// CHECK:STDOUT: %self.patt.loc6_8.2 => constants.%self.patt.49a
|
||||
// CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness.26d
|
||||
// CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness.7a1
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_17.1 => constants.%C
|
||||
// CHECK:STDOUT: %pattern_type.loc6_15 => constants.%pattern_type.98b
|
||||
// CHECK:STDOUT: %u.param_patt.loc6_15.2 => constants.%u.param_patt.162
|
||||
@@ -836,10 +836,10 @@ fn F() {
|
||||
// CHECK:STDOUT: %E.as.J.impl.G.type: type = fn_type @E.as.J.impl.G [concrete]
|
||||
// CHECK:STDOUT: %E.as.J.impl.G: %E.as.J.impl.G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %J.facet: %J.type = facet_value %E, (%J.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %J.WithSelf.F.type.c67: type = fn_type @J.WithSelf.F, @J.WithSelf(%J.facet) [concrete]
|
||||
// CHECK:STDOUT: %J.WithSelf.G.type.e1c: type = fn_type @J.WithSelf.G, @J.WithSelf(%J.facet) [concrete]
|
||||
// CHECK:STDOUT: %J.WithSelf.F.type.186: type = fn_type @J.WithSelf.F, @J.WithSelf(%J.facet) [concrete]
|
||||
// CHECK:STDOUT: %J.WithSelf.G.type.563: type = fn_type @J.WithSelf.G, @J.WithSelf(%J.facet) [concrete]
|
||||
// CHECK:STDOUT: %e1.patt: %pattern_type.6b6 = value_binding_pattern e1 [concrete]
|
||||
// CHECK:STDOUT: %.d3c: type = fn_type_with_self_type %J.WithSelf.F.type.c67, %J.facet [concrete]
|
||||
// CHECK:STDOUT: %.b2a: type = fn_type_with_self_type %J.WithSelf.F.type.186, %J.facet [concrete]
|
||||
// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.914: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete]
|
||||
// CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic]
|
||||
@@ -856,7 +856,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %bound_method.3cb: <bound method> = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete]
|
||||
// CHECK:STDOUT: %int_2.295: %i32 = int_value 2 [concrete]
|
||||
// CHECK:STDOUT: %e2.patt: %pattern_type.6b6 = value_binding_pattern e2 [concrete]
|
||||
// CHECK:STDOUT: %.af4: type = fn_type_with_self_type %J.WithSelf.G.type.e1c, %J.facet [concrete]
|
||||
// CHECK:STDOUT: %.53f: type = fn_type_with_self_type %J.WithSelf.G.type.563, %J.facet [concrete]
|
||||
// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.485: <bound method> = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39 [concrete]
|
||||
// CHECK:STDOUT: %bound_method.763: <bound method> = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete]
|
||||
@@ -887,7 +887,7 @@ fn F() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %e.ref.loc22: %E = name_ref e, %e
|
||||
// CHECK:STDOUT: %F.ref.loc22: %J.assoc_type = name_ref F, @J.WithSelf.%assoc1 [concrete = constants.%assoc1.413]
|
||||
// CHECK:STDOUT: %impl.elem1.loc22: %.d3c = impl_witness_access constants.%J.impl_witness, element1 [concrete = constants.%E.as.J.impl.F]
|
||||
// CHECK:STDOUT: %impl.elem1.loc22: %.b2a = impl_witness_access constants.%J.impl_witness, element1 [concrete = constants.%E.as.J.impl.F]
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
// CHECK:STDOUT: %impl.elem0.loc22: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39]
|
||||
// CHECK:STDOUT: %bound_method.loc22_28.1: <bound method> = bound_method %int_2, %impl.elem0.loc22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.9f3]
|
||||
@@ -906,7 +906,7 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e.ref.loc23: %E = name_ref e, %e
|
||||
// CHECK:STDOUT: %G.ref.loc23: %J.assoc_type = name_ref G, @J.WithSelf.%assoc2 [concrete = constants.%assoc2]
|
||||
// CHECK:STDOUT: %impl.elem2.loc23: %.af4 = impl_witness_access constants.%J.impl_witness, element2 [concrete = constants.%E.as.J.impl.G]
|
||||
// CHECK:STDOUT: %impl.elem2.loc23: %.53f = impl_witness_access constants.%J.impl_witness, element2 [concrete = constants.%E.as.J.impl.G]
|
||||
// CHECK:STDOUT: %bound_method.loc23_25: <bound method> = bound_method %e.ref.loc23, %impl.elem2.loc23
|
||||
// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba]
|
||||
// CHECK:STDOUT: %impl.elem0.loc23: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39]
|
||||
@@ -926,7 +926,7 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %E.ref.loc24: type = name_ref E, file.%E.decl [concrete = constants.%E]
|
||||
// CHECK:STDOUT: %F.ref.loc24: %J.assoc_type = name_ref F, @J.WithSelf.%assoc1 [concrete = constants.%assoc1.413]
|
||||
// CHECK:STDOUT: %impl.elem1.loc24: %.d3c = impl_witness_access constants.%J.impl_witness, element1 [concrete = constants.%E.as.J.impl.F]
|
||||
// CHECK:STDOUT: %impl.elem1.loc24: %.b2a = impl_witness_access constants.%J.impl_witness, element1 [concrete = constants.%E.as.J.impl.F]
|
||||
// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1]
|
||||
// CHECK:STDOUT: %impl.elem0.loc24: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39]
|
||||
// CHECK:STDOUT: %bound_method.loc24_28.1: <bound method> = bound_method %int_4, %impl.elem0.loc24 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aad]
|
||||
@@ -946,7 +946,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %e.ref.loc25: %E = name_ref e, %e
|
||||
// CHECK:STDOUT: %E.ref.loc25: type = name_ref E, file.%E.decl [concrete = constants.%E]
|
||||
// CHECK:STDOUT: %G.ref.loc25: %J.assoc_type = name_ref G, @J.WithSelf.%assoc2 [concrete = constants.%assoc2]
|
||||
// CHECK:STDOUT: %impl.elem2.loc25: %.af4 = impl_witness_access constants.%J.impl_witness, element2 [concrete = constants.%E.as.J.impl.G]
|
||||
// CHECK:STDOUT: %impl.elem2.loc25: %.53f = impl_witness_access constants.%J.impl_witness, element2 [concrete = constants.%E.as.J.impl.G]
|
||||
// CHECK:STDOUT: %bound_method.loc25_25: <bound method> = bound_method %e.ref.loc25, %impl.elem2.loc25
|
||||
// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete = constants.%int_5.64b]
|
||||
// CHECK:STDOUT: %impl.elem0.loc25: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39]
|
||||
@@ -967,7 +967,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %e.ref.loc26: %E = name_ref e, %e
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type]
|
||||
// CHECK:STDOUT: %G.ref.loc26: %J.assoc_type = name_ref G, @J.WithSelf.%assoc2 [concrete = constants.%assoc2]
|
||||
// CHECK:STDOUT: %impl.elem2.loc26: %.af4 = impl_witness_access constants.%J.impl_witness, element2 [concrete = constants.%E.as.J.impl.G]
|
||||
// CHECK:STDOUT: %impl.elem2.loc26: %.53f = impl_witness_access constants.%J.impl_witness, element2 [concrete = constants.%E.as.J.impl.G]
|
||||
// CHECK:STDOUT: %bound_method.loc26_25: <bound method> = bound_method %e.ref.loc26, %impl.elem2.loc26
|
||||
// CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [concrete = constants.%int_6.462]
|
||||
// CHECK:STDOUT: %impl.elem0.loc26: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39]
|
||||
@@ -1052,7 +1052,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %Copy.impl_witness_table.367 = impl_witness_table (%Core.import_ref.cd6), @Int.as.Copy.impl [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @E.as.J.impl: %Self.ref as %.loc9_20 {
|
||||
// CHECK:STDOUT: impl @E.as.J.impl: %Self.ref as %J.ref {
|
||||
// CHECK:STDOUT: %E.as.J.impl.F.decl: %E.as.J.impl.F.type = fn_decl @E.as.J.impl.F [concrete = constants.%E.as.J.impl.F] {
|
||||
// CHECK:STDOUT: %u.param_patt: %pattern_type.6b6 = value_param_pattern [concrete = constants.%u.param_patt.151]
|
||||
// CHECK:STDOUT: %u.patt: %pattern_type.6b6 = at_binding_pattern u, %u.param_patt [concrete = constants.%u.patt.49f]
|
||||
@@ -1080,7 +1080,7 @@ fn F() {
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .U = <poisoned>
|
||||
// CHECK:STDOUT: .F = %E.as.J.impl.F.decl
|
||||
// CHECK:STDOUT: extend %.loc9_20
|
||||
// CHECK:STDOUT: extend %J.ref
|
||||
// CHECK:STDOUT: witness = %J.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -1091,7 +1091,7 @@ fn F() {
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%E
|
||||
// CHECK:STDOUT: .J = <poisoned>
|
||||
// CHECK:STDOUT: extend @E.as.J.impl.%.loc9_20
|
||||
// CHECK:STDOUT: extend @E.as.J.impl.%J.ref
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @E.as.J.impl.F(%u.param: %i32) -> out %return.param: %i32 {
|
||||
@@ -1180,7 +1180,7 @@ fn F() {
|
||||
// CHECK:STDOUT: .J = <poisoned>
|
||||
// CHECK:STDOUT: .X = <poisoned>
|
||||
// CHECK:STDOUT: .G = %E.G.decl
|
||||
// CHECK:STDOUT: extend @E.as.J.impl.%.loc8_20
|
||||
// CHECK:STDOUT: extend @E.as.J.impl.%J.ref
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @E.G() -> out %return.param: %empty_tuple.type {
|
||||
@@ -1235,14 +1235,14 @@ fn F() {
|
||||
// CHECK:STDOUT: %M.facet: %M.type = facet_value %empty_tuple.type, (%M.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @empty_tuple.type.as.M.impl: %.loc8_7.2 as %.loc8_14 {
|
||||
// CHECK:STDOUT: impl @empty_tuple.type.as.M.impl: %.loc8_7.2 as %M.ref {
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .G = %empty_tuple.type.as.M.impl.G.decl
|
||||
// CHECK:STDOUT: .M = <poisoned>
|
||||
// CHECK:STDOUT: extend %.loc8_14
|
||||
// CHECK:STDOUT: extend %M.ref
|
||||
// CHECK:STDOUT: witness = %M.impl_witness
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
Reference in New Issue
Block a user