use mago_allocator::Arena;
use mago_syntax::cst::Access;
use crate::analyzable::Analyzable;
use crate::artifacts::AnalysisArtifacts;
use crate::context::Context;
use crate::context::block::BlockContext;
use crate::error::AnalysisError;
pub mod class_constant_access;
pub mod property_access;
pub mod static_property_access;
impl<'ast, 'arena> Analyzable<'ast, 'arena> for Access<'arena> {
fn analyze<'ctx, A>(
&'ast self,
context: &mut Context<'ctx, 'arena, A>,
block_context: &mut BlockContext<'ctx>,
artifacts: &mut AnalysisArtifacts,
) -> Result<(), AnalysisError>
where
A: Arena,
{
match self {
Access::Property(access) => access.analyze(context, block_context, artifacts),
Access::NullSafeProperty(access) => access.analyze(context, block_context, artifacts),
Access::StaticProperty(access) => access.analyze(context, block_context, artifacts),
Access::ClassConstant(access) => access.analyze(context, block_context, artifacts),
}
}
}