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
@@ -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 {