diff options
| author | Chayim Refael Friedman <chayimfr@gmail.com> | 2024-09-22 06:17:33 +0300 |
|---|---|---|
| committer | Chayim Refael Friedman <chayimfr@gmail.com> | 2024-09-22 15:00:01 +0300 |
| commit | 393f9cc0ba2bc40700722830e14a0e659a42f96a (patch) | |
| tree | 5150e5c5d2cf48408b4a1095ed3519bd185a9905 | |
| parent | 814da15d8baf2391f4d19cbc4bf73f81ffbeabdf (diff) | |
| download | rust-393f9cc0ba2bc40700722830e14a0e659a42f96a.tar.gz rust-393f9cc0ba2bc40700722830e14a0e659a42f96a.zip | |
Consider lifetime GATs object unsafe
| -rw-r--r-- | src/tools/rust-analyzer/crates/hir-ty/src/object_safety.rs | 2 | ||||
| -rw-r--r-- | src/tools/rust-analyzer/crates/hir-ty/src/object_safety/tests.rs | 13 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/tools/rust-analyzer/crates/hir-ty/src/object_safety.rs b/src/tools/rust-analyzer/crates/hir-ty/src/object_safety.rs index 89bf3619a0c..a4c66268555 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/object_safety.rs +++ b/src/tools/rust-analyzer/crates/hir-ty/src/object_safety.rs @@ -349,7 +349,7 @@ where ControlFlow::Continue(()) } else { let generic_params = db.generic_params(item.into()); - if generic_params.len_type_or_consts() > 0 { + if !generic_params.is_empty() { cb(ObjectSafetyViolation::GAT(it)) } else { ControlFlow::Continue(()) diff --git a/src/tools/rust-analyzer/crates/hir-ty/src/object_safety/tests.rs b/src/tools/rust-analyzer/crates/hir-ty/src/object_safety/tests.rs index 3dc08c4619e..c2a9117c5be 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/object_safety/tests.rs +++ b/src/tools/rust-analyzer/crates/hir-ty/src/object_safety/tests.rs @@ -378,3 +378,16 @@ pub trait Error: core::fmt::Debug + core::fmt::Display { [("Error", vec![])], ); } + +#[test] +fn lifetime_gat_is_object_unsafe() { + check_object_safety( + r#" +//- minicore: dispatch_from_dyn +trait Foo { + type Bar<'a>; +} +"#, + [("Foo", vec![ObjectSafetyViolationKind::GAT])], + ); +} |
