Lines Matching defs:Literal
25 class Literal;
55 class Literal {
57 explicit Literal() = default;
59 explicit Literal(LiteralTag tag, const util::StringView &str) : tag_(tag), value_(str.Mutf8()) {}
60 explicit Literal(const util::StringView &str) : tag_(LiteralTag::STRING), value_(str.Mutf8()) {}
61 explicit Literal(uint32_t number) : tag_(LiteralTag::INTEGER), value_(number) {}
62 explicit Literal(double number) : tag_(LiteralTag::DOUBLE), value_(number) {}
63 explicit Literal(bool boolean) : tag_(LiteralTag::BOOLEAN), value_(static_cast<uint32_t>(boolean)) {}
65 DEFAULT_COPY_SEMANTIC(Literal);
66 DEFAULT_MOVE_SEMANTIC(Literal);
67 ~Literal() = default;
69 static Literal NullLiteral()
71 return Literal(LiteralTag::NULL_VALUE);
74 static Literal UndefinedLiteral()
76 return Literal(LiteralTag::UNDEFINED_VALUE);
79 static Literal AccessorLiteral()
81 return Literal(LiteralTag::ACCESSOR);
128 explicit Literal(LiteralTag tag) : tag_(tag) {}
136 using LiteralBuffer = std::vector<Literal>;