use super::INLINE_ALWAYS;
use clippy_utils::diagnostics::span_lint;
use rustc_hir::attrs::InlineAttr;
use rustc_hir::{Attribute, find_attr};
use rustc_lint::LateContext;
use rustc_span::Span;
use rustc_span::symbol::Symbol;

pub(super) fn check(cx: &LateContext<'_>, span: Span, name: Symbol, attrs: &[Attribute]) {
    if span.from_expansion() {
        return;
    }

    if let Some(span) = find_attr!(attrs, Inline(InlineAttr::Always, span) => *span) {
        span_lint(
            cx,
            INLINE_ALWAYS,
            span,
            format!("you have declared `#[inline(always)]` on `{name}`. This is usually a bad idea"),
        );
    }
}
