Don't trigger needless_return lint in macros
This commit is contained in:
parent
0c5ba9a883
commit
f18cf82ca8
@ -217,6 +217,9 @@ fn check_final_expr<'tcx>(
|
||||
}
|
||||
|
||||
fn emit_return_lint(cx: &LateContext<'_>, ret_span: Span, inner_span: Option<Span>, replacement: RetReplacement) {
|
||||
if ret_span.from_expansion() {
|
||||
return;
|
||||
}
|
||||
match inner_span {
|
||||
Some(inner_span) => {
|
||||
if in_external_macro(cx.tcx.sess, inner_span) || inner_span.from_expansion() {
|
||||
|
@ -86,6 +86,21 @@ fn borrows_but_not_last(value: bool) -> String {
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! needed_return {
|
||||
($e:expr) => {
|
||||
if $e > 3 {
|
||||
return;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
fn test_return_in_macro() {
|
||||
// This will return and the macro below won't be executed. Removing the `return` from the macro
|
||||
// will change semantics.
|
||||
needed_return!(10);
|
||||
needed_return!(0);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let _ = test_end_of_fn();
|
||||
let _ = test_no_semicolon();
|
||||
|
@ -86,6 +86,21 @@ fn borrows_but_not_last(value: bool) -> String {
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! needed_return {
|
||||
($e:expr) => {
|
||||
if $e > 3 {
|
||||
return;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
fn test_return_in_macro() {
|
||||
// This will return and the macro below won't be executed. Removing the `return` from the macro
|
||||
// will change semantics.
|
||||
needed_return!(10);
|
||||
needed_return!(0);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let _ = test_end_of_fn();
|
||||
let _ = test_no_semicolon();
|
||||
|
Loading…
Reference in New Issue
Block a user