#include "binder/expression/literal_expression.h"
#include "common/exception/binder.h"
#include <format>
using namespace lbug::common;
namespace lbug {
namespace binder {
void LiteralExpression::cast(const LogicalType& type) {
// The following is a safeguard to make sure we are not changing literal type unexpectedly.
if (!value.allowTypeChange()) {
// LCOV_EXCL_START
throw BinderException(
std::format("Cannot change literal expression data type from {} to {}.",
dataType.toString(), type.toString()));
// LCOV_EXCL_STOP
}
dataType = type.copy();
value.setDataType(type);
}
} // namespace binder
} // namespace lbug