Basic support for implementing and using a parameterized interface. (#4203)

The main change here is to form a specific when checking an interface
function against an impl function, instead of just substituting the
`Self` type.
This commit is contained in:
Richard Smith
2024-08-09 01:05:03 +00:00
committed by GitHub
parent b2a13afb73
commit 4a21b6af9b
54 changed files with 998 additions and 266 deletions
@@ -148,3 +148,7 @@ var arr: [i32; 1.(I.F)(2)];
// CHECK:STDOUT: %Self => constants.%Self
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @F.1(i32) {
// CHECK:STDOUT: %Self => i32
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -226,3 +226,7 @@ var arr: [i32; 1 + 2] = (3, 4, 3 + 4);
// CHECK:STDOUT: %Self => constants.%Self
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Op.2(i32) {
// CHECK:STDOUT: %Self => i32
// CHECK:STDOUT: }
// CHECK:STDOUT: