refactor needless_return
This commit is contained in:
parent
e120fb10c6
commit
d1dbdcf332
@ -72,6 +72,28 @@ enum RetReplacement {
|
|||||||
Unit,
|
Unit,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl RetReplacement {
|
||||||
|
fn sugg_help(&self) -> &'static str {
|
||||||
|
match *self {
|
||||||
|
Self::Empty => "remove `return`",
|
||||||
|
Self::Block => "replace `return` with an empty block",
|
||||||
|
Self::Unit => "replace `return` with a unit value",
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ToString for RetReplacement {
|
||||||
|
fn to_string(&self) -> String {
|
||||||
|
match *self {
|
||||||
|
Self::Empty => "",
|
||||||
|
Self::Block => "{}",
|
||||||
|
Self::Unit => "()",
|
||||||
|
}
|
||||||
|
.to_string()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
declare_lint_pass!(Return => [LET_AND_RETURN, NEEDLESS_RETURN]);
|
declare_lint_pass!(Return => [LET_AND_RETURN, NEEDLESS_RETURN]);
|
||||||
|
|
||||||
impl<'tcx> LateLintPass<'tcx> for Return {
|
impl<'tcx> LateLintPass<'tcx> for Return {
|
||||||
@ -221,8 +243,7 @@ fn emit_return_lint(
|
|||||||
if ret_span.from_expansion() {
|
if ret_span.from_expansion() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
match inner_span {
|
if let Some(inner_span) = inner_span {
|
||||||
Some(inner_span) => {
|
|
||||||
let mut applicability = Applicability::MachineApplicable;
|
let mut applicability = Applicability::MachineApplicable;
|
||||||
span_lint_hir_and_then(
|
span_lint_hir_and_then(
|
||||||
cx,
|
cx,
|
||||||
@ -235,9 +256,7 @@ fn emit_return_lint(
|
|||||||
diag.span_suggestion(ret_span, "remove `return`", snippet, applicability);
|
diag.span_suggestion(ret_span, "remove `return`", snippet, applicability);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
} else {
|
||||||
None => match replacement {
|
|
||||||
RetReplacement::Empty => {
|
|
||||||
span_lint_hir_and_then(
|
span_lint_hir_and_then(
|
||||||
cx,
|
cx,
|
||||||
NEEDLESS_RETURN,
|
NEEDLESS_RETURN,
|
||||||
@ -247,48 +266,12 @@ fn emit_return_lint(
|
|||||||
|diag| {
|
|diag| {
|
||||||
diag.span_suggestion(
|
diag.span_suggestion(
|
||||||
ret_span,
|
ret_span,
|
||||||
"remove `return`",
|
replacement.sugg_help(),
|
||||||
String::new(),
|
replacement.to_string(),
|
||||||
Applicability::MachineApplicable,
|
Applicability::MachineApplicable,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
)
|
||||||
},
|
|
||||||
RetReplacement::Block => {
|
|
||||||
span_lint_hir_and_then(
|
|
||||||
cx,
|
|
||||||
NEEDLESS_RETURN,
|
|
||||||
emission_place,
|
|
||||||
ret_span,
|
|
||||||
"unneeded `return` statement",
|
|
||||||
|diag| {
|
|
||||||
diag.span_suggestion(
|
|
||||||
ret_span,
|
|
||||||
"replace `return` with an empty block",
|
|
||||||
"{}".to_string(),
|
|
||||||
Applicability::MachineApplicable,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
},
|
|
||||||
RetReplacement::Unit => {
|
|
||||||
span_lint_hir_and_then(
|
|
||||||
cx,
|
|
||||||
NEEDLESS_RETURN,
|
|
||||||
emission_place,
|
|
||||||
ret_span,
|
|
||||||
"unneeded `return` statement",
|
|
||||||
|diag| {
|
|
||||||
diag.span_suggestion(
|
|
||||||
ret_span,
|
|
||||||
"replace `return` with a unit value",
|
|
||||||
"()".to_string(),
|
|
||||||
Applicability::MachineApplicable,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user