]>
Commit | Line | Data |
---|---|---|
cdc7bbd5 XL |
1 | use clippy_utils::diagnostics::span_lint; |
2 | use clippy_utils::is_ty_param_diagnostic_item; | |
f20569fa XL |
3 | use rustc_hir::{self as hir, def_id::DefId, QPath}; |
4 | use rustc_lint::LateContext; | |
5 | use rustc_span::symbol::sym; | |
6 | ||
f20569fa XL |
7 | use super::OPTION_OPTION; |
8 | ||
9 | pub(super) fn check(cx: &LateContext<'_>, hir_ty: &hir::Ty<'_>, qpath: &QPath<'_>, def_id: DefId) -> bool { | |
10 | if cx.tcx.is_diagnostic_item(sym::option_type, def_id) | |
11 | && is_ty_param_diagnostic_item(cx, qpath, sym::option_type).is_some() | |
12 | { | |
13 | span_lint( | |
14 | cx, | |
15 | OPTION_OPTION, | |
16 | hir_ty.span, | |
17 | "consider using `Option<T>` instead of `Option<Option<T>>` or a custom \ | |
18 | enum if you need to distinguish all 3 cases", | |
19 | ); | |
20 | true | |
21 | } else { | |
22 | false | |
23 | } | |
24 | } |