================ @@ -0,0 +1,209 @@ +//===- WPASuite.cpp -------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "JSONFormatImpl.h" + +#include "clang/ScalableStaticAnalysisFramework/Core/WholeProgramAnalysis/WPASuite.h" + +namespace clang::ssaf { + +//---------------------------------------------------------------------------- +// AnalysisResultMapEntry +//---------------------------------------------------------------------------- + +llvm::Expected<std::pair<AnalysisName, std::unique_ptr<AnalysisResult>>> +JSONFormat::analysisResultMapEntryFromJSON(const Object &Entry) const { + auto OptName = Entry.getString("analysis_name"); + if (!OptName) { + return ErrorBuilder::create(std::errc::invalid_argument, + ErrorMessages::FailedToReadObjectAtField, + "AnalysisName", "analysis_name", "string") + .build(); + } + + AnalysisName Name = analysisNameFromJSON(*OptName); + + auto ExpectedFns = AnalysisResultRegistry::lookup(Name); + if (!ExpectedFns) { + return ExpectedFns.takeError(); + } + + const Object *ResultObj = Entry.getObject("result"); + if (!ResultObj) { + return ErrorBuilder::create(std::errc::invalid_argument, + ErrorMessages::FailedToReadObjectAtField, + "AnalysisResult", "result", "object") + .build(); + } + + auto ExpectedResult = + ExpectedFns->second(*ResultObj, &entityIdFromJSONObject); ---------------- steakhal wrote:
I was scratching my head and thinking about what is `second` here. When I looked it up, it made sense, but maybe using a structured binding decomposing the `*ExpectedFns` would have helped with a more appropriate name. Similar note goes for calling `first` in the next fn. https://github.com/llvm/llvm-project/pull/187403 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
