smt_lang/problem/expression/
position.rs1use 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}