mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Implement unused pattern bindings, continued (#6518)
Implementation of unused pattern bindings #2022, continued. Whereas previous PR #6460 took care of parsing, and PR #6479 prepared the stage by using _ in some test cases, this PR has the the actual implementation, using a simple dataflow analysis. --------- Co-authored-by: Burak Emir <bqe@google.com> Co-authored-by: jonmeow <jperkins@google.com>
This commit is contained in:
co-authored by
Burak Emir
jonmeow
parent
bea24a8bee
commit
fdb188ccfd
@@ -57,7 +57,7 @@ interface J {
|
||||
|
||||
fn INotJ(T:! I where .Self impls J) {
|
||||
// Gets `T.(I.F)`. Doesn't consider `T.(J.F)`, so no ambiguity.
|
||||
let x: () = T.F();
|
||||
let unused x: () = T.F();
|
||||
}
|
||||
|
||||
// --- fail_name_lookup_through_where_self_impls.carbon
|
||||
@@ -145,7 +145,7 @@ fn INotJ[T:! I where .Self impls J](x: T) {
|
||||
library "[[@TEST_NAME]]";
|
||||
|
||||
class WrapType(T:! type) {}
|
||||
fn AssertSame[T:! type](a: WrapType(T), b: WrapType(T)) {}
|
||||
fn AssertSame[T:! type](unused a: WrapType(T), unused b: WrapType(T)) {}
|
||||
fn Type(T:! type) -> WrapType(T) { return {}; }
|
||||
|
||||
interface I;
|
||||
@@ -178,7 +178,7 @@ interface K {}
|
||||
library "[[@TEST_NAME]]";
|
||||
|
||||
class WrapType(T:! type) {}
|
||||
fn AssertSame[T:! type](a: WrapType(T), b: WrapType(T)) {}
|
||||
fn AssertSame[T:! type](unused a: WrapType(T), unused b: WrapType(T)) {}
|
||||
fn Type(T:! type) -> WrapType(T) { return {}; }
|
||||
|
||||
interface I { let A:! type; }
|
||||
@@ -201,7 +201,7 @@ fn Test() {
|
||||
library "[[@TEST_NAME]]";
|
||||
|
||||
class WrapType(T:! type) {}
|
||||
fn Same[T:! type](a: WrapType(T), b: WrapType(T)) {}
|
||||
fn Same[T:! type](unused a: WrapType(T), unused b: WrapType(T)) {}
|
||||
fn Type(T:! type) -> WrapType(T) { return {}; }
|
||||
|
||||
interface I {}
|
||||
@@ -212,8 +212,8 @@ fn Test() {
|
||||
// CHECK:STDERR: Same(Type(I where .Self impls J), Type(J where .Self impls I));
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// CHECK:STDERR: fail_compare_not_equal.carbon:[[@LINE-10]]:1: note: while deducing parameters of generic declared here [DeductionGenericHere]
|
||||
// CHECK:STDERR: fn Same[T:! type](a: WrapType(T), b: WrapType(T)) {}
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// CHECK:STDERR: fn Same[T:! type](unused a: WrapType(T), unused b: WrapType(T)) {}
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// CHECK:STDERR:
|
||||
Same(Type(I where .Self impls J), Type(J where .Self impls I));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user