mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Remove str_to_string lint
Specialization makes all of the options equally efficient.
This commit is contained in:
parent
c0aa049b0a
commit
efa84862af
4 changed files with 0 additions and 51 deletions
|
@ -70,5 +70,4 @@ fn register_clippy(reg: &mut Registry) {
|
||||||
}
|
}
|
||||||
#[cfg(not(feature = "clippy"))]
|
#[cfg(not(feature = "clippy"))]
|
||||||
fn register_clippy(reg: &mut Registry) {
|
fn register_clippy(reg: &mut Registry) {
|
||||||
reg.register_late_lint_pass(box lints::str_to_string::StrToStringPass);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,5 @@
|
||||||
pub mod ban;
|
pub mod ban;
|
||||||
pub mod inheritance_integrity;
|
pub mod inheritance_integrity;
|
||||||
pub mod privatize;
|
pub mod privatize;
|
||||||
pub mod str_to_string;
|
|
||||||
pub mod transmute_type;
|
pub mod transmute_type;
|
||||||
pub mod unrooted_must_root;
|
pub mod unrooted_must_root;
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
||||||
|
|
||||||
use rustc::lint::{LateContext, LintPass, LintArray, LateLintPass, LintContext};
|
|
||||||
use rustc::ty;
|
|
||||||
use rustc_front::hir;
|
|
||||||
|
|
||||||
declare_lint!(STR_TO_STRING, Deny,
|
|
||||||
"Warn when a String could use to_owned() instead of to_string()");
|
|
||||||
|
|
||||||
/// Prefer str.to_owned() over str.to_string()
|
|
||||||
///
|
|
||||||
/// The latter creates a `Formatter` and is 5x slower than the former
|
|
||||||
pub struct StrToStringPass;
|
|
||||||
|
|
||||||
impl LintPass for StrToStringPass {
|
|
||||||
fn get_lints(&self) -> LintArray {
|
|
||||||
lint_array!(STR_TO_STRING)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl LateLintPass for StrToStringPass {
|
|
||||||
fn check_expr(&mut self, cx: &LateContext, expr: &hir::Expr) {
|
|
||||||
match expr.node {
|
|
||||||
hir::ExprMethodCall(ref method, _, ref args)
|
|
||||||
if method.node.as_str() == "to_string"
|
|
||||||
&& is_str(cx, &*args[0]) => {
|
|
||||||
cx.span_lint(STR_TO_STRING, expr.span,
|
|
||||||
"str.to_owned() is more efficient than str.to_string(), please use it instead");
|
|
||||||
},
|
|
||||||
_ => ()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn is_str(cx: &LateContext, expr: &hir::Expr) -> bool {
|
|
||||||
fn walk_ty<'t>(ty: ty::Ty<'t>) -> ty::Ty<'t> {
|
|
||||||
match ty.sty {
|
|
||||||
ty::TyRef(_, ref tm) | ty::TyRawPtr(ref tm) => walk_ty(tm.ty),
|
|
||||||
_ => ty
|
|
||||||
}
|
|
||||||
}
|
|
||||||
match walk_ty(cx.tcx.expr_ty(expr)).sty {
|
|
||||||
ty::TyStr => true,
|
|
||||||
_ => false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -518,7 +518,6 @@ pub fn default_opts() -> Opts {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(str_to_string)]
|
|
||||||
pub fn from_cmdline_args(args: &[String]) -> ArgumentParsingResult {
|
pub fn from_cmdline_args(args: &[String]) -> ArgumentParsingResult {
|
||||||
let (app_name, args) = args.split_first().unwrap();
|
let (app_name, args) = args.split_first().unwrap();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue