string_slice should detect on Cow

This commit is contained in:
Alexey Semenyuk 2024-08-18 17:50:29 +05:00
parent 5da97d006e
commit 7b7cf440cb
3 changed files with 16 additions and 5 deletions

View file

@ -190,7 +190,7 @@ impl<'tcx> LateLintPass<'tcx> for StringAdd {
}
},
ExprKind::Index(target, _idx, _) => {
let e_ty = cx.typeck_results().expr_ty(target).peel_refs();
let e_ty = cx.typeck_results().expr_ty_adjusted(target).peel_refs();
if e_ty.is_str() || is_type_lang_item(cx, e_ty, LangItem::String) {
span_lint(
cx,

View file

@ -1,3 +1,5 @@
use std::borrow::Cow;
#[warn(clippy::string_slice)]
#[allow(clippy::no_effect)]
@ -11,4 +13,7 @@ fn main() {
let s = String::from(m);
&s[0..2];
//~^ ERROR: indexing into a string may panic if the index is within a UTF-8 character
let a = Cow::Borrowed("foo");
&a[0..3];
//~^ ERROR: indexing into a string may panic if the index is within a UTF-8 character
}

View file

@ -1,5 +1,5 @@
error: indexing into a string may panic if the index is within a UTF-8 character
--> tests/ui/string_slice.rs:5:6
--> tests/ui/string_slice.rs:7:6
|
LL | &"Ölkanne"[1..];
| ^^^^^^^^^^^^^^
@ -8,16 +8,22 @@ LL | &"Ölkanne"[1..];
= help: to override `-D warnings` add `#[allow(clippy::string_slice)]`
error: indexing into a string may panic if the index is within a UTF-8 character
--> tests/ui/string_slice.rs:9:6
--> tests/ui/string_slice.rs:11:6
|
LL | &m[2..5];
| ^^^^^^^
error: indexing into a string may panic if the index is within a UTF-8 character
--> tests/ui/string_slice.rs:12:6
--> tests/ui/string_slice.rs:14:6
|
LL | &s[0..2];
| ^^^^^^^
error: aborting due to 3 previous errors
error: indexing into a string may panic if the index is within a UTF-8 character
--> tests/ui/string_slice.rs:17:6
|
LL | &a[0..3];
| ^^^^^^^
error: aborting due to 4 previous errors