1 #pragma once
2 
3 #include <mbgl/style/expression/expression.hpp>
4 
5 #include <string>
6 
7 namespace mbgl {
8 namespace style {
9 namespace expression {
10 
11 class Error : public Expression {
12 public:
Error(std::string message_)13     Error(std::string message_)
14         : Expression(Kind::Error, type::Error),
15           message(std::move(message_)) {}
16 
eachChild(const std::function<void (const Expression &)> &) const17     void eachChild(const std::function<void(const Expression&)>&) const override {}
18 
operator ==(const Expression & e) const19     bool operator==(const Expression& e) const override {
20         return e.getKind() == Kind::Error;
21     }
22 
evaluate(const EvaluationContext &) const23     EvaluationResult evaluate(const EvaluationContext&) const override {
24         return EvaluationError{message};
25     }
26 
possibleOutputs() const27     std::vector<optional<Value>> possibleOutputs() const override {
28         return {};
29     }
30 
getOperator() const31     std::string getOperator() const override { return "error"; }
32 
33 private:
34     std::string message;
35 };
36 
37 } // namespace expression
38 } // namespace style
39 } // namespace mbgl
40