Add require decls to Interface and NamedConstraint (#6321)

They are not used for impl lookup or verifying anything yet, but now
they appear in the textual semir.

---------

Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
This commit is contained in:
Dana Jansens
2025-11-11 16:36:15 +00:00
committed by GitHub
co-authored by Jon Ross-Perkins
parent 81e55bed8a
commit ff0cea55f6
141 changed files with 954 additions and 17 deletions
+10
View File
@@ -227,6 +227,8 @@ fn CallF() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .V = @V.%assoc0
// CHECK:STDOUT: witness = (%V)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @V(@I.%Self: %I.type) {
@@ -343,6 +345,8 @@ fn CallF() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .V = @V.%assoc0
// CHECK:STDOUT: witness = (%V)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @V(@I.%Self: %I.type) {
@@ -480,6 +484,8 @@ fn CallF() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .V = @V.%assoc0
// CHECK:STDOUT: witness = (%V)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @V(@I.%Self: %I.type) {
@@ -671,6 +677,8 @@ fn CallF() {
// CHECK:STDOUT: .N = <poisoned>
// CHECK:STDOUT: .V = @V.%assoc0
// CHECK:STDOUT: witness = (%V)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -814,6 +822,8 @@ fn CallF() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .V = @V.%assoc0
// CHECK:STDOUT: witness = (%V)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @V(@I.%Self: %I.type) {
+16
View File
@@ -190,6 +190,8 @@ fn InstanceCallFail() {
// CHECK:STDOUT: .Dest = <poisoned>
// CHECK:STDOUT: .Convert = %assoc0.loc4_35.1
// CHECK:STDOUT: witness = (%ImplicitAs.Convert.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -263,6 +265,8 @@ fn InstanceCallFail() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F1 = %assoc0
// CHECK:STDOUT: witness = (%NonInstance1.F1.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @struct_type.a.as.NonInstance1.impl: %struct_type.a as %NonInstance1.ref {
@@ -394,6 +398,8 @@ fn InstanceCallFail() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F2 = %assoc0
// CHECK:STDOUT: witness = (%NonInstance2.F2.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic interface @ImplicitAs(imports.%Core.import_ref.efcd44.1: type) [from "core.carbon"] {
@@ -412,6 +418,8 @@ fn InstanceCallFail() {
// CHECK:STDOUT: .Self = imports.%Core.import_ref.d6f
// CHECK:STDOUT: .Convert = imports.%Core.import_ref.b9c
// CHECK:STDOUT: witness = (imports.%Core.Convert)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -577,6 +585,8 @@ fn InstanceCallFail() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F3 = %assoc0
// CHECK:STDOUT: witness = (%NonInstance3.F3.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic interface @ImplicitAs(imports.%Core.import_ref.efcd44.1: type) [from "core.carbon"] {
@@ -595,6 +605,8 @@ fn InstanceCallFail() {
// CHECK:STDOUT: .Self = imports.%Core.import_ref.d6f
// CHECK:STDOUT: .Convert = imports.%Core.import_ref.b9c
// CHECK:STDOUT: witness = (imports.%Core.Convert)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -756,6 +768,8 @@ fn InstanceCallFail() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .G1 = %assoc0
// CHECK:STDOUT: witness = (%Instance1.G1.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @struct_type.d.as.Instance1.impl: %struct_type.d as %Instance1.ref {
@@ -885,6 +899,8 @@ fn InstanceCallFail() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .G2 = %assoc0
// CHECK:STDOUT: witness = (%Instance2.G2.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @struct_type.e.as.Instance2.impl: %struct_type.e as %Instance2.ref {
+2
View File
@@ -66,6 +66,8 @@ impl i32 as I {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @i32.as.I.impl: %i32.loc17 as %I.ref.loc17 {
+2
View File
@@ -61,6 +61,8 @@ impl i32 as Empty {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @i32.as.Empty.impl: %i32 as %Empty.ref {
+2
View File
@@ -55,6 +55,8 @@ impl forall [T: type] C as I { }
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl: %C.ref as %I.ref {
@@ -214,6 +214,8 @@ class X(U:! type) {
// CHECK:STDOUT: .F = %assoc0.loc5_14.1
// CHECK:STDOUT: .Param = <poisoned>
// CHECK:STDOUT: witness = (%HasF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -487,6 +489,8 @@ class X(U:! type) {
// CHECK:STDOUT: .F = %assoc0.loc5_25.1
// CHECK:STDOUT: .U = <poisoned>
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
+2
View File
@@ -71,6 +71,8 @@ impl AC as AI {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl.7de31e.1: %AC.ref as %AI.ref {
@@ -114,6 +114,8 @@ fn InstanceCall(n: i32) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .G = %assoc0
// CHECK:STDOUT: witness = (%Simple.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @i32.as.Simple.impl: %i32 as %Simple.ref {
@@ -94,6 +94,8 @@ class C {
// CHECK:STDOUT: .T = <poisoned>
// CHECK:STDOUT: .F = %assoc0.loc16_13.1
// CHECK:STDOUT: witness = (%GenericInterface.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -102,6 +102,8 @@ fn F() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.I.impl: %.loc9_14.2 as %I.ref {
@@ -144,6 +146,8 @@ fn F() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_struct_type.as.J.impl: %.loc10_16.2 as %J.ref {
@@ -230,6 +234,8 @@ fn F() {
// CHECK:STDOUT: .Zero = %assoc0
// CHECK:STDOUT: .Z = <poisoned>
// CHECK:STDOUT: witness = (%Z.Zero.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @<error>.as.Z.impl(@Z.%Self: %Z.type) {
@@ -97,6 +97,8 @@ class E {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @i32.as.I.impl: %i32 as %I.ref {
@@ -52,6 +52,8 @@ interface I {
// CHECK:STDOUT: .C = %C.decl
// CHECK:STDOUT: .I = <poisoned>
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @C.as.I.impl(@I.%Self: %I.type) {
+10
View File
@@ -140,6 +140,8 @@ class X {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @<error>.as.I.impl: <error> as %I.ref {
@@ -197,6 +199,8 @@ class X {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @<error>.as.J.impl: <error> as %J.ref {
@@ -312,6 +316,8 @@ class X {
// CHECK:STDOUT: .Method = %assoc1
// CHECK:STDOUT: .Z = <poisoned>
// CHECK:STDOUT: witness = (%Z.Zero.decl, %Z.Method.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @<error>.as.Z.impl(@Z.%Self: %Z.type) {
@@ -537,6 +543,8 @@ class X {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .B = %assoc0
// CHECK:STDOUT: witness = (%A.B.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @C {
@@ -545,6 +553,8 @@ class X {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @X.as.A.impl: %Self.ref as %A.ref {
@@ -58,6 +58,8 @@ impl () as I {}
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(@I.%Self: %I.type) {
@@ -452,6 +452,8 @@ class SelfNestedBadReturnType {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @J {
@@ -490,6 +492,8 @@ class SelfNestedBadReturnType {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%J.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @SelfNested {
@@ -530,6 +534,8 @@ class SelfNestedBadReturnType {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%SelfNested.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @NoF.as.I.impl: %Self.ref as %I.ref {
@@ -222,6 +222,8 @@ impl {.a: bool} as type where .Self impls I {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @struct_type.a.as.<error>.impl: %struct_type.a as %.loc10_25 {
@@ -62,6 +62,8 @@ impl true as I {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @<error>.as.I.impl: <error> as %I.ref {
@@ -73,6 +73,8 @@ impl i32 as I {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @i32.as.I.impl.36ba5e.1: %i32 as %I.ref {
@@ -164,6 +164,8 @@ impl i32 as I {
// CHECK:STDOUT: .C = <poisoned>
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @bool.as.I.impl: %.loc28_6.2 as %I.ref {
@@ -182,6 +182,8 @@ impl C as J where .Self impls Incomplete and .T = ();
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Incomplete;
@@ -260,6 +262,8 @@ impl C as J where .Self impls Incomplete and .T = ();
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Incomplete;
+34
View File
@@ -323,6 +323,8 @@ interface I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_struct_type.as.I.impl: %.loc4_7.2 as %I.ref.loc4 {
@@ -384,6 +386,8 @@ interface I {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .G = %assoc0
// CHECK:STDOUT: witness = (%I.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_struct_type.as.I.impl: %.loc4_7.2 as %I.ref.loc4 {
@@ -477,6 +481,8 @@ interface I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_struct_type.as.I.impl: %.loc4_7.2 as file.%.loc4_14.2 {
@@ -564,6 +570,8 @@ interface I {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(@I.%Self: %I.type) {
@@ -679,6 +687,8 @@ interface I {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(@I.%Self: %I.type) {
@@ -812,6 +822,8 @@ interface I {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(@I.%Self: %I.type) {
@@ -911,6 +923,8 @@ interface I {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(@I.%Self: %I.type) {
@@ -1004,6 +1018,8 @@ interface I {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .T = <poisoned>
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @D.as.<error>.impl: %D.ref.loc13 as %.loc13 {
@@ -1140,6 +1156,8 @@ interface I {
// CHECK:STDOUT: .Self = %Self.loc3_23.1
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -1292,6 +1310,8 @@ interface I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @D.as.I.impl: %D.ref.loc5 as %I.ref.loc5 {
@@ -1398,6 +1418,8 @@ interface I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @J {
@@ -1406,6 +1428,8 @@ interface I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_struct_type.as.<error>.impl: %.loc10_7.2 as file.%.loc10_14.2;
@@ -1497,6 +1521,8 @@ interface I {
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: .U = @U.%assoc1
// CHECK:STDOUT: witness = (%T, %U)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(@I.%Self: %I.type) {
@@ -1672,6 +1698,8 @@ interface I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Y {
@@ -1680,6 +1708,8 @@ interface I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.X.impl: %C.ref.loc12 as %X.ref.loc12 {
@@ -1810,6 +1840,8 @@ interface I {
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: .I = <poisoned>
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @C.as.I.impl(@I.%Self: %I.type) {
@@ -1922,6 +1954,8 @@ interface I {
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: .I = <poisoned>
// CHECK:STDOUT: witness = (%U, %I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @U(@I.%Self: %I.type) {
@@ -293,6 +293,8 @@ impl forall [T:! type] T as I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I {
@@ -301,6 +303,8 @@ impl forall [T:! type] T as I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @J {
@@ -309,6 +313,8 @@ impl forall [T:! type] T as I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @K {
@@ -317,6 +323,8 @@ impl forall [T:! type] T as I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @L {
@@ -325,6 +333,8 @@ impl forall [T:! type] T as I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @T.binding.as_type.as.Interface.impl.de7(%T.loc12_14.1: %I.type) {
@@ -470,6 +480,8 @@ impl forall [T:! type] T as I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @J {
@@ -478,6 +490,8 @@ impl forall [T:! type] T as I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @T.binding.as_type.as.J.impl.8399b6.1(%T.loc7_14.1: %I.type) {
@@ -571,6 +585,8 @@ impl forall [T:! type] T as I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl.7de31e.1: %C.ref as %I.ref {
@@ -649,6 +665,8 @@ impl forall [T:! type] T as I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @T.as.I.impl.381c92.1(%T.loc4_14.2: type) {
+2
View File
@@ -82,6 +82,8 @@ class C {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%Simple.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.Simple.impl: %Self.ref as %Simple.ref {
@@ -233,6 +233,8 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3,
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .X = @X.%assoc0
// CHECK:STDOUT: witness = (%X)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @X(@I.%Self: %I.type) {
@@ -409,6 +411,8 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3,
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .X = @X.%assoc0
// CHECK:STDOUT: witness = (%X)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @X(@I.%Self: %I.type) {
+2
View File
@@ -65,6 +65,8 @@ impl forall [T:! type] T as Simple {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%Simple.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @T.as.Simple.impl(%T.loc19_14.2: type) {
@@ -250,6 +250,8 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Op = %assoc0
// CHECK:STDOUT: witness = (%Add.Op.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @MyInt.as.Add.impl(%N.loc15_14.2: Core.IntLiteral) {
@@ -545,6 +547,8 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
// CHECK:STDOUT: .Self = imports.%Main.import_ref.c52
// CHECK:STDOUT: .Op = imports.%Main.import_ref.f99
// CHECK:STDOUT: witness = (imports.%Main.Op)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @MyInt.as.Add.impl(imports.%Main.import_ref.40af26.2: Core.IntLiteral) [from "generic_impl.carbon"] {
+14
View File
@@ -171,6 +171,8 @@ fn InstanceCallImportFail() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%NonInstance.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Instance {
@@ -193,6 +195,8 @@ fn InstanceCallImportFail() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .G = %assoc0
// CHECK:STDOUT: witness = (%Instance.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @struct_type.i.as.NonInstance.impl: %struct_type.i as %NonInstance.ref {
@@ -312,6 +316,8 @@ fn InstanceCallImportFail() {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.700
// CHECK:STDOUT: .F = imports.%Main.import_ref.e3c
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @struct_type.i.as.NonInstance.impl: imports.%Main.import_ref.c9a as imports.%Main.import_ref.ef5 [from "lib.carbon"] {
@@ -403,6 +409,8 @@ fn InstanceCallImportFail() {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.700
// CHECK:STDOUT: .F = imports.%Main.import_ref.e3c
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @NonInstanceCallImportFail(%n.param: %struct_type.i) {
@@ -484,6 +492,8 @@ fn InstanceCallImportFail() {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.700
// CHECK:STDOUT: .F = imports.%Main.import_ref.e3c
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @NonInstanceCallIndirectImport(%p.param: %ptr) {
@@ -592,6 +602,8 @@ fn InstanceCallImportFail() {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.34d
// CHECK:STDOUT: .G = imports.%Main.import_ref.124
// CHECK:STDOUT: witness = (imports.%Main.G)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @struct_type.i.as.Instance.impl: imports.%Main.import_ref.c9a as imports.%Main.import_ref.b49 [from "lib.carbon"] {
@@ -694,6 +706,8 @@ fn InstanceCallImportFail() {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.34d
// CHECK:STDOUT: .G = imports.%Main.import_ref.124
// CHECK:STDOUT: witness = (imports.%Main.G)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @struct_type.i.as.Instance.impl: imports.%Main.import_ref.c9a as imports.%Main.import_ref.b49 [from "lib.carbon"] {
@@ -73,6 +73,8 @@ fn G(c: C) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl: %Self.ref as %I.ref {
@@ -175,6 +177,8 @@ fn G(c: C) {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .F = imports.%Main.import_ref.c44
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl: imports.%Main.import_ref.0ed as imports.%Main.import_ref.3019d1.2 [from "extend_impl_library.carbon"] {
+8
View File
@@ -186,6 +186,8 @@ impl forall [T:! type] D as J(T*) {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self.loc5_23.1
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -360,6 +362,8 @@ impl forall [T:! type] D as J(T*) {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%Main.import_ref.769
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -563,6 +567,8 @@ impl forall [T:! type] D as J(T*) {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self.loc5_23.1
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -711,6 +717,8 @@ impl forall [T:! type] D as J(T*) {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%Main.import_ref.b3b
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -244,6 +244,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I3 {
@@ -264,6 +266,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .T2 = @T2.%assoc1
// CHECK:STDOUT: .T3 = @T3.%assoc2
// CHECK:STDOUT: witness = (%T1, %T2, %T3)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @NonType {
@@ -276,6 +280,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Y = @Y.%assoc0
// CHECK:STDOUT: witness = (%Y)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(@I.%Self: %I.type) {
@@ -373,6 +379,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .T = imports.%Main.import_ref.4fb
// CHECK:STDOUT: witness = (imports.%Main.T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(imports.%Main.import_ref.e33: %I.type) [from "interface.carbon"] {
@@ -477,6 +485,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .T = imports.%Main.import_ref.4fb
// CHECK:STDOUT: witness = (imports.%Main.T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(imports.%Main.import_ref.e33: %I.type) [from "interface.carbon"] {
@@ -572,6 +582,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .T = imports.%Main.import_ref.4fb
// CHECK:STDOUT: witness = (imports.%Main.T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(imports.%Main.import_ref.e33: %I.type) [from "interface.carbon"] {
@@ -684,6 +696,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .T = imports.%Main.import_ref.4fb
// CHECK:STDOUT: witness = (imports.%Main.T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(imports.%Main.import_ref.e33: %I.type) [from "interface.carbon"] {
@@ -837,6 +851,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .T2 = imports.%Main.import_ref.680
// CHECK:STDOUT: .T3 = imports.%Main.import_ref.181
// CHECK:STDOUT: witness = (imports.%Main.T1, imports.%Main.T2, imports.%Main.T3)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T1(imports.%Main.import_ref.fbb73e.1: %I3.type) [from "interface.carbon"] {
@@ -950,6 +966,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .T = imports.%Main.import_ref.4fb
// CHECK:STDOUT: witness = (imports.%Main.T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(imports.%Main.import_ref.e33: %I.type) [from "interface.carbon"] {
@@ -1045,6 +1063,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .T = imports.%Main.import_ref.4fb
// CHECK:STDOUT: witness = (imports.%Main.T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(imports.%Main.import_ref.e33: %I.type) [from "interface.carbon"] {
@@ -1138,6 +1158,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .T = imports.%Main.import_ref.4fb
// CHECK:STDOUT: witness = (imports.%Main.T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(imports.%Main.import_ref.e33: %I.type) [from "interface.carbon"] {
@@ -1230,6 +1252,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .T = imports.%Main.import_ref.4fb
// CHECK:STDOUT: witness = (imports.%Main.T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(imports.%Main.import_ref.e33: %I.type) [from "interface.carbon"] {
@@ -1322,6 +1346,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .T = imports.%Main.import_ref.4fb
// CHECK:STDOUT: witness = (imports.%Main.T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(imports.%Main.import_ref.e33: %I.type) [from "interface.carbon"] {
@@ -1419,6 +1445,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .T = imports.%Main.import_ref.4fb
// CHECK:STDOUT: witness = (imports.%Main.T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(imports.%Main.import_ref.e33: %I.type) [from "interface.carbon"] {
@@ -1514,6 +1542,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.b1e
// CHECK:STDOUT: .Y = imports.%Main.import_ref.9fa
// CHECK:STDOUT: witness = (imports.%Main.Y)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @Y(imports.%Main.import_ref.046: %NonType.type) [from "interface.carbon"] {
@@ -1564,6 +1594,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%IF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @IF.F(@IF.%Self: %IF.type) {
@@ -1637,6 +1669,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.14d
// CHECK:STDOUT: .F = imports.%Main.import_ref.f22
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @CD.as.IF.impl: %CD.ref as %.loc10_15 {
+4
View File
@@ -99,6 +99,8 @@ fn F(x: (), y: ()) -> () {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Op = %assoc0
// CHECK:STDOUT: witness = (%Add.Op.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @Add.Op(@Add.%Self: %Add.type) {
@@ -198,6 +200,8 @@ fn F(x: (), y: ()) -> () {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.c52
// CHECK:STDOUT: .Op = imports.%Main.import_ref.f99
// CHECK:STDOUT: witness = (imports.%Main.Op)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.Add.impl: %.loc6_7.2 as %Add.ref {
@@ -147,6 +147,8 @@ impl forall [N:! E] D(N) as I where .Assoc = () {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Z {
@@ -155,6 +157,8 @@ impl forall [N:! E] D(N) as I where .Assoc = () {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I {
@@ -187,6 +191,8 @@ impl forall [N:! E] D(N) as I where .Assoc = () {
// CHECK:STDOUT: .C = <poisoned>
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: witness = (%Assoc, %I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @Assoc(@I.%Self: %I.type) {
@@ -428,18 +434,24 @@ impl forall [N:! E] D(N) as I where .Assoc = () {
// CHECK:STDOUT: .Assoc = imports.%Main.import_ref.9ff
// CHECK:STDOUT: .F = imports.%Main.import_ref.abf
// CHECK:STDOUT: witness = (imports.%Main.Assoc, imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Y [from "impl_def.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%Main.import_ref.581
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Z [from "impl_def.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%Main.import_ref.462
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @Assoc(imports.%Main.import_ref.e339be.1: %I.type) [from "impl_def.carbon"] {
+6
View File
@@ -89,6 +89,8 @@ fn G() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) {
@@ -206,6 +208,8 @@ fn G() {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .F = imports.%Main.import_ref.507
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @C.as.I.impl(%Y.loc7_14.2: %empty_tuple.type) {
@@ -474,6 +478,8 @@ fn G() {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .F = imports.%Main.import_ref.c44
// CHECK:STDOUT: witness = (imports.%Main.F.8b9)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @C.as.I.impl(imports.%Main.import_ref.7a8327.2: %empty_tuple.type) [from "b.carbon"] {
@@ -112,6 +112,8 @@ fn H() -> C({}).(I.F)() {}
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @C.as.I.impl(%T.loc10_14.2: type) {
@@ -291,6 +293,8 @@ fn H() -> C({}).(I.F)() {}
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .F = imports.%Main.import_ref.c44
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @C.as.I.impl(imports.%Main.import_ref.efcd44.2: type) [from "import_generic.carbon"] {
+14
View File
@@ -177,6 +177,8 @@ fn InstanceC(a: A) -> C {
// CHECK:STDOUT: .Dest = <poisoned>
// CHECK:STDOUT: .Convert = %assoc0.loc4_35.1
// CHECK:STDOUT: witness = (%ImplicitAs.Convert.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -319,6 +321,8 @@ fn InstanceC(a: A) -> C {
// CHECK:STDOUT: .Self = %Self.loc4_28.1
// CHECK:STDOUT: .Op = %assoc0.loc5_22.1
// CHECK:STDOUT: witness = (%Action.Op.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -528,6 +532,8 @@ fn InstanceC(a: A) -> C {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.0fd
// CHECK:STDOUT: .Op = imports.%Main.import_ref.2c8
// CHECK:STDOUT: witness = (imports.%Main.Op)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -708,6 +714,8 @@ fn InstanceC(a: A) -> C {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.0fd
// CHECK:STDOUT: .Op = imports.%Main.import_ref.2c8
// CHECK:STDOUT: witness = (imports.%Main.Op)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -923,6 +931,8 @@ fn InstanceC(a: A) -> C {
// CHECK:STDOUT: .Make = %assoc0.loc6_17.1
// CHECK:STDOUT: .Method = %assoc1.loc8_31.1
// CHECK:STDOUT: witness = (%Factory.Make.decl, %Factory.Method.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -1183,6 +1193,8 @@ fn InstanceC(a: A) -> C {
// CHECK:STDOUT: .Make = imports.%Main.import_ref.2a0
// CHECK:STDOUT: .Method = imports.%Main.import_ref.da9
// CHECK:STDOUT: witness = (imports.%Main.Make, imports.%Main.Method)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -1437,6 +1449,8 @@ fn InstanceC(a: A) -> C {
// CHECK:STDOUT: .Make = imports.%Main.import_ref.2a0
// CHECK:STDOUT: .Method = imports.%Main.import_ref.da9
// CHECK:STDOUT: witness = (imports.%Main.Make, imports.%Main.Method)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
+2
View File
@@ -85,6 +85,8 @@ fn G(c: C) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%HasF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.HasF.impl: %C.ref as %HasF.ref {
@@ -193,6 +193,8 @@ fn G() {
// CHECK:STDOUT: .JJ = <poisoned>
// CHECK:STDOUT: .J = <poisoned>
// CHECK:STDOUT: witness = (%I.II.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @J {
@@ -215,6 +217,8 @@ fn G() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .JJ = %assoc0
// CHECK:STDOUT: witness = (%J.JJ.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl: %Self.ref as %I.ref {
@@ -77,6 +77,8 @@ fn F(c: C) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: class @C {
@@ -101,6 +101,8 @@ fn G() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl.bd0: %Self.ref as %I.ref;
+12
View File
@@ -220,6 +220,8 @@ fn G(x: A) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%HasF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @T.as.HasF.impl(%T.loc8_14.2: type) {
@@ -452,6 +454,8 @@ fn G(x: A) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%HasF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @ptr.as.HasF.impl(%T.loc8_14.2: type) {
@@ -692,6 +696,8 @@ fn G(x: A) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%HasF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @C.as.HasF.impl(%T.loc10_14.2: type) {
@@ -947,6 +953,8 @@ fn G(x: A) {
// CHECK:STDOUT: .Self = %Self.loc4_26.1
// CHECK:STDOUT: .F = %assoc0.loc5_21.1
// CHECK:STDOUT: witness = (%HasF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -1168,6 +1176,8 @@ fn G(x: A) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%HasF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @T.as.HasF.impl(%T.loc12_14.2: type, %U.loc12_24.2: type) {
@@ -1362,6 +1372,8 @@ fn G(x: A) {
// CHECK:STDOUT: .Self = %Self.loc4_26.1
// CHECK:STDOUT: .F = %assoc0.loc5_21.1
// CHECK:STDOUT: witness = (%HasF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
+68
View File
@@ -288,6 +288,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%HasF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.HasF.impl: %C.ref as %HasF.ref {
@@ -448,6 +450,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .G = %assoc0
// CHECK:STDOUT: witness = (%HasG.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @HasF [from "package_a.carbon"] {
@@ -455,6 +459,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%PackageA.import_ref.2fb
// CHECK:STDOUT: .F = imports.%PackageA.import_ref.c63
// CHECK:STDOUT: witness = (imports.%PackageA.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.HasG.impl: %C.ref as %HasG.ref {
@@ -655,6 +661,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%PackageA.import_ref.2fb
// CHECK:STDOUT: .F = imports.%PackageA.import_ref.b36
// CHECK:STDOUT: witness = (imports.%PackageA.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.HasF.impl: imports.%PackageA.import_ref.29a as imports.%PackageA.import_ref.e8c [from "package_a.carbon"] {
@@ -785,6 +793,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%PackageA.import_ref.2fb
// CHECK:STDOUT: .F = imports.%PackageA.import_ref.b36
// CHECK:STDOUT: witness = (imports.%PackageA.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.HasF.impl: imports.%PackageA.import_ref.29a as imports.%PackageA.import_ref.e8c [from "package_a.carbon"] {
@@ -927,6 +937,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%PackageB.import_ref.103
// CHECK:STDOUT: .G = imports.%PackageB.import_ref.6c2
// CHECK:STDOUT: witness = (imports.%PackageB.G)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.HasG.impl: imports.%PackageB.import_ref.dfb as imports.%PackageB.import_ref.cee586.1 [from "package_b.carbon"] {
@@ -1064,6 +1076,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%PackageB.import_ref.103
// CHECK:STDOUT: .G = imports.%PackageB.import_ref.6c2
// CHECK:STDOUT: witness = (imports.%PackageB.G)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.HasG.impl: imports.%PackageB.import_ref.dfb as imports.%PackageB.import_ref.cee586.1 [from "package_b.carbon"] {
@@ -1180,6 +1194,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .H = %assoc0
// CHECK:STDOUT: witness = (%Z.H.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.Z.impl: %.loc8_7.2 as %Z.ref {
@@ -1282,6 +1298,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%PackageAssociatedInterface.import_ref.462
// CHECK:STDOUT: .H = imports.%PackageAssociatedInterface.import_ref.609
// CHECK:STDOUT: witness = (imports.%PackageAssociatedInterface.H)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.Z.impl: imports.%PackageAssociatedInterface.import_ref.e5c as imports.%PackageAssociatedInterface.import_ref.df1 [from "associated_interface.carbon"] {
@@ -1393,6 +1411,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .K = %assoc0
// CHECK:STDOUT: witness = (%Y.K.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic class @AnyParam(%T.loc4_16.2: type, %X.loc4_26.2: @AnyParam.%T.loc4_16.1 (%T)) {
@@ -1551,6 +1571,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self.loc6_38.1
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -1559,6 +1581,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%PackageHasParam.import_ref.581
// CHECK:STDOUT: .K = imports.%PackageHasParam.import_ref.f69
// CHECK:STDOUT: witness = (imports.%PackageHasParam.K)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @AnyParam.as.Y.impl: %AnyParam as %Y.ref {
@@ -1777,6 +1801,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%PackageGenericInterface.import_ref.4d7
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -1785,6 +1811,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%PackageHasParam.import_ref.581
// CHECK:STDOUT: .K = imports.%PackageHasParam.import_ref.f69
// CHECK:STDOUT: witness = (imports.%PackageHasParam.K)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @AnyParam.as.Y.impl: imports.%PackageGenericInterface.import_ref.321 as imports.%PackageGenericInterface.import_ref.ca6 [from "has_generic_interface.carbon"] {
@@ -1984,6 +2012,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%PackageHasParam.import_ref.581
// CHECK:STDOUT: .K = imports.%PackageHasParam.import_ref.f69
// CHECK:STDOUT: witness = (imports.%PackageHasParam.K)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @AnyParam.as.Y.impl: %AnyParam as %Y.ref {
@@ -2209,6 +2239,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%PackageHasParam.import_ref.581
// CHECK:STDOUT: .K = imports.%PackageHasParam.import_ref.f69
// CHECK:STDOUT: witness = (imports.%PackageHasParam.K)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @AnyParam.as.Y.impl: imports.%PackageGenericClass.import_ref.a0e as imports.%PackageGenericClass.import_ref.ca6 [from "has_generic_class.carbon"] {
@@ -2424,6 +2456,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra2 {
@@ -2432,6 +2466,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra3 {
@@ -2440,6 +2476,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra4 {
@@ -2448,6 +2486,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra5 {
@@ -2456,6 +2496,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra6 {
@@ -2464,6 +2506,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra7 {
@@ -2472,6 +2516,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra8 {
@@ -2480,6 +2526,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I {
@@ -2502,6 +2550,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl: %C as %I.ref {
@@ -2660,54 +2710,72 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%HasExtraInterfaces.import_ref.8df
// CHECK:STDOUT: .F = imports.%HasExtraInterfaces.import_ref.be9
// CHECK:STDOUT: witness = (imports.%HasExtraInterfaces.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra8 [from "has_extra_interfaces.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%HasExtraInterfaces.import_ref.c8c
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra7 [from "has_extra_interfaces.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%HasExtraInterfaces.import_ref.591
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra6 [from "has_extra_interfaces.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%HasExtraInterfaces.import_ref.16e
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra5 [from "has_extra_interfaces.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%HasExtraInterfaces.import_ref.e5e
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra4 [from "has_extra_interfaces.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%HasExtraInterfaces.import_ref.178
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra3 [from "has_extra_interfaces.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%HasExtraInterfaces.import_ref.e5d
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra2 [from "has_extra_interfaces.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%HasExtraInterfaces.import_ref.7fd
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra1 [from "has_extra_interfaces.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%HasExtraInterfaces.import_ref.642
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl: imports.%HasExtraInterfaces.import_ref.ef7 as imports.%HasExtraInterfaces.import_ref.301 [from "has_extra_interfaces.carbon"] {
@@ -119,6 +119,8 @@ fn F(c: C) -> i32 {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl: %Self.ref as %I.ref {
@@ -217,6 +217,8 @@ fn F() {
// CHECK:STDOUT: .Self = %Self.loc50_15.1
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -512,6 +514,8 @@ fn F() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Z2 {
@@ -520,6 +524,8 @@ fn F() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic interface @Y(@Outer.%OuterParam.loc6_13.2: %Z1.type) {
@@ -540,6 +546,8 @@ fn F() {
// CHECK:STDOUT: .Self = %Self.loc7_15.1
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -264,6 +264,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
// CHECK:STDOUT: .Self = %Self.loc3_23.1
// CHECK:STDOUT: .X = @X.%assoc0
// CHECK:STDOUT: witness = (%X)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -605,6 +607,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
// CHECK:STDOUT: .Self = %Self.loc3_23.1
// CHECK:STDOUT: .X = @X.%assoc0
// CHECK:STDOUT: witness = (%X)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -614,6 +618,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @X(@Z.%T.loc3_13.2: type, @Z.%Self.loc3_23.1: @Z.%Z.type (%Z.type.4d7)) {
@@ -879,6 +885,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Type = @Type.%assoc0
// CHECK:STDOUT: witness = (%Type)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @Type(@Ptr.%Self: %Ptr.type) {
@@ -1084,6 +1092,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Type = @Type.%assoc0
// CHECK:STDOUT: witness = (%Type)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @Type(@Ptr.%Self: %Ptr.type) {
@@ -1288,6 +1298,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Type = @Type.%assoc0
// CHECK:STDOUT: witness = (%Type)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @Type(@Ptr.%Self: %Ptr.type) {
@@ -133,6 +133,8 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
// CHECK:STDOUT: .Self = %Self.loc4_23.1
// CHECK:STDOUT: .F = %assoc0.loc4_43.1
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -265,6 +267,8 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
// CHECK:STDOUT: .Self = imports.%Main.import_ref.769
// CHECK:STDOUT: .F = imports.%Main.import_ref.2de
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -440,6 +444,8 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
// CHECK:STDOUT: .Self = imports.%Main.import_ref.769
// CHECK:STDOUT: .F = imports.%Main.import_ref.715
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -601,6 +607,8 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
// CHECK:STDOUT: .Self = imports.%Main.import_ref.769
// CHECK:STDOUT: .F = imports.%Main.import_ref.2de
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -809,6 +817,8 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
// CHECK:STDOUT: .Self = imports.%Main.import_ref.769
// CHECK:STDOUT: .F = imports.%Main.import_ref.715
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -96,6 +96,8 @@ fn Call() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) {
@@ -165,6 +167,8 @@ fn Call() {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .F = imports.%Main.import_ref.507
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl: %C.ref as %I.ref {
@@ -336,6 +340,8 @@ fn Call() {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .F = imports.%Main.import_ref.c44
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl: imports.%Main.import_ref.29a as imports.%Main.import_ref.f50 [from "c.carbon"] {
+16
View File
@@ -229,6 +229,8 @@ fn P(o: O) {
// CHECK:STDOUT: .HasG = <poisoned>
// CHECK:STDOUT: .G = <poisoned>
// CHECK:STDOUT: witness = (%HasF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @HasG {
@@ -241,6 +243,8 @@ fn P(o: O) {
// CHECK:STDOUT: .G = %assoc0
// CHECK:STDOUT: .F = <poisoned>
// CHECK:STDOUT: witness = (%HasG.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.HasF.impl: %Self.ref as %HasF.ref {
@@ -393,6 +397,8 @@ fn P(o: O) {
// CHECK:STDOUT: .A = %assoc0
// CHECK:STDOUT: .HasA2 = <poisoned>
// CHECK:STDOUT: witness = (%HasA1.A.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @HasA2 {
@@ -404,6 +410,8 @@ fn P(o: O) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .A = %assoc0
// CHECK:STDOUT: witness = (%HasA2.A.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @D.as.HasA1.impl: %Self.ref as %HasA1.ref {
@@ -541,6 +549,8 @@ fn P(o: O) {
// CHECK:STDOUT: .I = %assoc0
// CHECK:STDOUT: .J = <poisoned>
// CHECK:STDOUT: witness = (%HasI.I.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @E.as.HasI.impl: %Self.ref as %HasI.ref {
@@ -679,6 +689,8 @@ fn P(o: O) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .K = %assoc0
// CHECK:STDOUT: witness = (%HasK.K.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @L.as.HasK.impl: %Self.ref as %HasK.ref {
@@ -821,6 +833,8 @@ fn P(o: O) {
// CHECK:STDOUT: .N = %assoc0
// CHECK:STDOUT: .HasN2 = <poisoned>
// CHECK:STDOUT: witness = (%HasN1.N.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @HasN2 {
@@ -832,6 +846,8 @@ fn P(o: O) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .N = %assoc0
// CHECK:STDOUT: witness = (%HasN2.N.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @O.as.HasN1.impl: %Self.ref as %HasN1.ref {
@@ -133,6 +133,8 @@ impl () as D;
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.A.impl: %.loc10_7.2 as %A.ref;
@@ -173,6 +175,8 @@ impl () as D;
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%Main.import_ref.3b8
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.A.impl.766c6e.1: imports.%Main.import_ref.e5c as imports.%Main.import_ref.831 [from "fail_decl_in_api_definition_in_impl.carbon"];
@@ -233,6 +237,8 @@ impl () as D;
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.B.impl: %.loc10_7.2 as %B.ref;
@@ -263,6 +269,8 @@ impl () as D;
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%Main.import_ref.5c0
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.B.impl: imports.%Main.import_ref.e5c as imports.%Main.import_ref.171 [from "fail_decl_only_in_api.carbon"];
@@ -296,6 +304,8 @@ impl () as D;
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.C.impl: %.loc10_7.2 as %C.ref;
@@ -331,6 +341,8 @@ impl () as D;
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%Main.import_ref.a1a
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.C.impl.130841.1: imports.%Main.import_ref.e5c as imports.%Main.import_ref.653 [from "fail_decl_in_api_decl_in_impl.carbon"];
@@ -374,6 +386,8 @@ impl () as D;
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.D.impl: %.loc10_7.2 as %D.ref;
+2
View File
@@ -75,6 +75,8 @@ impl i32 as I {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @i32.as.I.impl: %i32.loc17 as %I.ref.loc17 {
+2
View File
@@ -78,6 +78,8 @@ class A {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Make = %assoc0
// CHECK:STDOUT: witness = (%DefaultConstructible.Make.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.DefaultConstructible.impl: %C.ref as %DefaultConstructible.ref {
@@ -171,6 +171,8 @@ impl D as SelfNested {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%UseSelf.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @SelfNested {
@@ -202,6 +204,8 @@ impl D as SelfNested {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%SelfNested.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.UseSelf.impl: %C.ref as %UseSelf.ref {
@@ -63,6 +63,8 @@ class X {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .B = %assoc0
// CHECK:STDOUT: witness = (%A.B.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @X.as.A.impl: %Self.ref as %A.ref {
+28
View File
@@ -486,6 +486,8 @@ fn F() {
// CHECK:STDOUT: .U = @U.%assoc0
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: witness = (%U, %J.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) {
@@ -791,6 +793,8 @@ fn F() {
// CHECK:STDOUT: .U = @U.%assoc0
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: witness = (%U, %J.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) {
@@ -1145,6 +1149,8 @@ fn F() {
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: .G = %assoc2
// CHECK:STDOUT: witness = (%U, %J.F.decl, %J.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) {
@@ -1670,6 +1676,8 @@ fn F() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Op = %assoc0
// CHECK:STDOUT: witness = (%I.Op.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @J {
@@ -1706,6 +1714,8 @@ fn F() {
// CHECK:STDOUT: .U = @U.%assoc0
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: witness = (%U, %J.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) {
@@ -1980,6 +1990,8 @@ fn F() {
// CHECK:STDOUT: .U = @U.%assoc0
// CHECK:STDOUT: .G = %assoc1
// CHECK:STDOUT: witness = (%U, %J.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) {
@@ -2203,6 +2215,8 @@ fn F() {
// CHECK:STDOUT: .U = @U.%assoc0
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: witness = (%U, %J.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) {
@@ -2361,6 +2375,8 @@ fn F() {
// CHECK:STDOUT: .U = @U.%assoc0
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: witness = (%U, %J.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) {
@@ -2606,6 +2622,8 @@ fn F() {
// CHECK:STDOUT: .U2 = @U2.%assoc0
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: witness = (%U2, %J2.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @U2(@J2.%Self: %J2.type) {
@@ -2895,6 +2913,8 @@ fn F() {
// CHECK:STDOUT: .V = @V.%assoc0
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: witness = (%V, %K.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @V(@K.%Self: %K.type) {
@@ -3098,6 +3118,8 @@ fn F() {
// CHECK:STDOUT: .Z = @Z.%assoc0
// CHECK:STDOUT: .G = %assoc1
// CHECK:STDOUT: witness = (%Z, %M.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @Z(@M.%Self: %M.type) {
@@ -3299,6 +3321,8 @@ fn F() {
// CHECK:STDOUT: .Z = @Z.%assoc0
// CHECK:STDOUT: .G = %assoc1
// CHECK:STDOUT: witness = (%Z, %M.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @Z(@M.%Self: %M.type) {
@@ -3595,6 +3619,8 @@ fn F() {
// CHECK:STDOUT: .N = @N.%assoc0
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: witness = (%N, %I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @N(@I.%Self: %I.type) {
@@ -3798,6 +3824,8 @@ fn F() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .X = @X.%assoc0
// CHECK:STDOUT: witness = (%X)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @X(@Z.%Self: %Z.type) {