|  | // 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 |