in common/util/cpp/cdynamic.cpp [98:124]
void createDynamic(dynamic* ret, DType ty, DValue* val) noexcept {
switch (static_cast<dynamic::Type>(ty)) {
case dynamic::NULLT:
new (ret) dynamic(nullptr);
break;
case dynamic::BOOL:
new (ret) dynamic(val->boolean != 0);
break;
case dynamic::INT64:
new (ret) dynamic(val->int64);
break;
case dynamic::DOUBLE:
new (ret) dynamic(val->doubl);
break;
case dynamic::STRING:
new (ret) dynamic(val->string);
break;
case dynamic::ARRAY:
folly::terminate_with<std::invalid_argument>(
"call writeDynamicArray for dynamic::ARRAY");
case dynamic::OBJECT:
folly::terminate_with<std::invalid_argument>(
"call writeDynamicObject for dynamic::OBJECT");
default:
__builtin_unreachable();
}
}