| 110 | } |
| 111 | |
| 112 | const DataType* Expression::type() const { |
| 113 | if (impl_ == nullptr) return nullptr; |
| 114 | |
| 115 | if (const Datum* lit = literal()) { |
| 116 | return lit->type().get(); |
| 117 | } |
| 118 | |
| 119 | if (const Parameter* parameter = this->parameter()) { |
| 120 | return parameter->type.type; |
| 121 | } |
| 122 | |
| 123 | return CallNotNull(*this)->type.type; |
| 124 | } |
| 125 | |
| 126 | namespace { |
| 127 |