use if_chain::if_chain;
+use rustc::declare_lint_pass;
use rustc::lint::{in_external_macro, EarlyContext, EarlyLintPass, LintArray, LintContext, LintPass};
-use rustc::{declare_lint_pass, declare_tool_lint};
use rustc_errors::Applicability;
+use rustc_session::declare_tool_lint;
use syntax::ast;
use syntax::source_map::Span;
use syntax::visit::FnKind;
ast::ExprKind::Ret(ref inner) => {
// allow `#[cfg(a)] return a; #[cfg(b)] return b;`
if !expr.attrs.iter().any(attr_is_cfg) {
- self.emit_return_lint(
+ Self::emit_return_lint(
cx,
span.expect("`else return` is not possible"),
inner.as_ref().map(|i| i.span),
}
}
- fn emit_return_lint(
- &mut self,
- cx: &EarlyContext<'_>,
- ret_span: Span,
- inner_span: Option<Span>,
- replacement: RetReplacement,
- ) {
+ fn emit_return_lint(cx: &EarlyContext<'_>, ret_span: Span, inner_span: Option<Span>, replacement: RetReplacement) {
match inner_span {
Some(inner_span) => {
if in_external_macro(cx.sess(), inner_span) || inner_span.from_expansion() {
}
// Check for "let x = EXPR; x"
- fn check_let_return(&mut self, cx: &EarlyContext<'_>, block: &ast::Block) {
+ fn check_let_return(cx: &EarlyContext<'_>, block: &ast::Block) {
let mut it = block.stmts.iter();
// we need both a let-binding stmt and an expr
}
fn check_block(&mut self, cx: &EarlyContext<'_>, block: &ast::Block) {
- self.check_let_return(cx, block);
+ Self::check_let_return(cx, block);
if_chain! {
if let Some(ref stmt) = block.stmts.last();
if let ast::StmtKind::Expr(ref expr) = stmt.kind;