mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-28 20:16:58 +03:00
string_slice should detect on Cow
This commit is contained in:
@@ -190,7 +190,7 @@ fn check_expr(&mut self, cx: &LateContext<'tcx>, e: &'tcx Expr<'_>) {
|
||||
}
|
||||
},
|
||||
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,
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user