1 use clippy_utils::diagnostics::span_lint;
2 use clippy_utils::{path_def_id, qpath_generic_tys};
3 use if_chain::if_chain;
4 use rustc_hir::{self as hir, def_id::DefId, QPath};
5 use rustc_lint::LateContext;
6 use rustc_span::symbol::sym;
8 use super::OPTION_OPTION;
10 pub(super) fn check(cx: &LateContext<'_>, hir_ty: &hir::Ty<'_>, qpath: &QPath<'_>, def_id: DefId) -> bool {
12 if cx.tcx.is_diagnostic_item(sym::Option, def_id);
13 if let Some(arg) = qpath_generic_tys(qpath).next();
14 if path_def_id(cx, arg) == Some(def_id);
20 "consider using `Option<T>` instead of `Option<Option<T>>` or a custom \
21 enum if you need to distinguish all 3 cases",