[llvm] 2e5fb77 - [llvm] Make TestData compatible with c++20 (#143801)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 12 08:22:07 PDT 2025
Author: Paul Kirth
Date: 2025-06-12T08:22:04-07:00
New Revision: 2e5fb77ce03748608cfad49fd62479fc3d912372
URL: https://github.com/llvm/llvm-project/commit/2e5fb77ce03748608cfad49fd62479fc3d912372
DIFF: https://github.com/llvm/llvm-project/commit/2e5fb77ce03748608cfad49fd62479fc3d912372.diff
LOG: [llvm] Make TestData compatible with c++20 (#143801)
The clang-debian-cpp20 buildbot did not like direct initialization
without a matching constructor. This patch adds a new constructor taking
a json::Object that directly initializes the struct fields. We also
update an internal interface for const correctness.
https://lab.llvm.org/buildbot/#/builders/108/builds/13950
Added:
Modified:
llvm/utils/llvm-test-mustache-spec/llvm-test-mustache-spec.cpp
Removed:
################################################################################
diff --git a/llvm/utils/llvm-test-mustache-spec/llvm-test-mustache-spec.cpp b/llvm/utils/llvm-test-mustache-spec/llvm-test-mustache-spec.cpp
index 28ed1b876672d..1f566e13f070a 100644
--- a/llvm/utils/llvm-test-mustache-spec/llvm-test-mustache-spec.cpp
+++ b/llvm/utils/llvm-test-mustache-spec/llvm-test-mustache-spec.cpp
@@ -146,6 +146,13 @@ static const StringMap<StringSet<>> XFailTestNames = {{
}};
struct TestData {
+ TestData() = default;
+ explicit TestData(const json::Object &TestCase)
+ : TemplateStr(*TestCase.getString("template")),
+ ExpectedStr(*TestCase.getString("expected")),
+ Name(*TestCase.getString("name")), Data(TestCase.get("data")),
+ Partials(TestCase.get("partials")) {}
+
static Expected<TestData> createTestData(json::Object *TestCase,
StringRef InputFile) {
// If any of the needed elements are missing, we cannot continue.
@@ -157,19 +164,14 @@ struct TestData {
llvm::inconvertibleErrorCode(),
"invalid JSON schema in test file: " + InputFile + "\n");
- return TestData{TestCase->getString("template").value(),
- TestCase->getString("expected").value(),
- TestCase->getString("name").value(), TestCase->get("data"),
- TestCase->get("partials")};
+ return TestData(*TestCase);
}
- TestData() = default;
-
StringRef TemplateStr;
StringRef ExpectedStr;
StringRef Name;
- Value *Data;
- Value *Partials;
+ const Value *Data;
+ const Value *Partials;
};
static void reportTestFailure(const TestData &TD, StringRef ActualStr,
@@ -191,7 +193,7 @@ static void reportTestFailure(const TestData &TD, StringRef ActualStr,
}
}
-static void registerPartials(Value *Partials, Template &T) {
+static void registerPartials(const Value *Partials, Template &T) {
if (!Partials)
return;
for (const auto &[Partial, Str] : *Partials->getAsObject())
More information about the llvm-commits
mailing list