| // Copyright 2019 The Fuchsia Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "src/developer/debug/zxdb/expr/resolve_const_value.h" | |
| #include <lib/syslog/cpp/macros.h> | |
| namespace zxdb { | |
| // TESTING NOTE: This code is tested by the collection and value resolution tests (the places | |
| // where const values are converted to ExprValues). | |
| ErrOrValue ResolveConstValue(const fxl::RefPtr<EvalContext>& context, const Value* value) { | |
| FX_DCHECK(value->const_value().has_value()); | |
| const Type* type = value->type().Get()->AsType(); | |
| if (!type) | |
| return Err("Invalid type for '%s'.", value->GetFullName().c_str()); | |
| auto concrete = context->GetConcreteType(type); | |
| return ExprValue(RefPtrTo(type), value->const_value().GetConstValue(concrete->byte_size()), | |
| ExprValueSource(ExprValueSource::Type::kConstant)); | |
| } | |
| } // namespace zxdb |