emmylua_code_analysis/semantic/infer/
infer_fail_reason.rs

1use emmylua_parser::LuaExpr;
2
3use crate::{LuaDeclId, LuaMemberId, LuaSignatureId};
4
5#[derive(Debug, PartialEq, Eq, Clone)]
6pub enum InferFailReason {
7    None,
8    RecursiveInfer,
9    UnResolveExpr(LuaExpr),
10    UnResolveSignatureReturn(LuaSignatureId),
11    FieldDotFound,
12    UnResolveDeclType(LuaDeclId),
13    UnResolveMemberType(LuaMemberId),
14}
15
16impl InferFailReason {
17    pub fn is_need_resolve(&self) -> bool {
18        match self {
19            InferFailReason::UnResolveExpr(_)
20            | InferFailReason::UnResolveSignatureReturn(_)
21            | InferFailReason::FieldDotFound
22            | InferFailReason::UnResolveDeclType(_)
23            | InferFailReason::UnResolveMemberType(_) => true,
24            _ => false,
25        }
26    }
27}