//EvalUnaryExpr returns an associated Expr which is representive of the UnaryExpr within an ast
EvalUnaryExpr returns an associated Expr which is representive of the UnaryExpr within an ast
// EvalUnaryExpr returns an associated Expr which is representive of the UnaryExpr within an ast
func (s *Solver) EvalUnaryExpr(exp *ast.UnaryExpr) Expr {
	switch exp.Op {
	case token.NOT:
		switch exp.X.(type) {
		case *ast.Ident:
			return s.BvNotExpr(s.Eval(exp.X))
		default:
			return s.NotExpr(s.Eval(exp.X))
		}
	case token.SUB:
		return s.BvUMinusExpr(s.Eval(exp.X))
	}
	return Expr(nil)
}
func ( s * Solver ) EvalUnaryExpr ( exp * ast . UnaryExpr ) Expr { switch exp . Op { case token . NOT : switch exp . X . ( type ) { case * ast . Ident : return s . BvNotExpr ( s . Eval ( exp . X ) ) default : return s . NotExpr ( s . Eval ( exp . X ) ) } case token . SUB : return s . BvUMinusExpr ( s . Eval ( exp . X ) ) } return Expr ( nil ) }
EvalUnaryExpr returns an associated Expr which is representive of the UnaryExpr within an ast
EvalUnaryExpr returns an associated Expr which is representive of the UnaryExpr within an ast