smt_lang/problem/expression/
position.rs

1use super::*;
2use crate::parser::Position;
3use crate::problem::WithPosition;
4
5impl WithPosition for Expr {
6    fn position(&self) -> &Option<Position> {
7        match self {
8            Expr::BoolValue(_, p) => p,
9            Expr::IntValue(_, p) => p,
10            Expr::RealValue(_, p) => p,
11            Expr::Unary(_, _, p) => p,
12            Expr::Binary(_, _, _, p) => p,
13            Expr::Nary(_, _, p) => p,
14            Expr::FunctionCall(_, _, p) => p,
15            Expr::Variable(_, p) => p,
16            Expr::Parameter(p) => &p.position(),
17            Expr::Instance(_, p) => p,
18            Expr::StrucSelf(_, p) => p,
19            Expr::StrucAttribute(_, _, p) => p,
20            Expr::StrucMetCall(_, _, _, p) => p,
21            Expr::ClassSelf(_, p) => p,
22            Expr::ClassAttribute(_, _, p) => p,
23            Expr::ClassMetCall(_, _, _, p) => p,
24            Expr::AsClass(_, _) => &None,
25            Expr::AsInterval(_, _, _, p) => p,
26            Expr::AsInt(_, p) => p,
27            Expr::AsReal(_, p) => p,
28            Expr::IfThenElse(_, _, _, _, p) => p,
29            Expr::Quantifier(_, _, _, p) => p,
30            Expr::Unresolved(_, p) => p,
31            Expr::UnresolvedFunCall(_, _, p) => p,
32            Expr::UnresolvedAttribute(_, _, p) => p,
33            Expr::UnresolvedMethCall(_, _, _, p) => p,
34        }
35    }
36}