Make consistent use of std::variant and std::optional instead of absl::*.
PiperOrigin-RevId: 506436527
diff --git a/doc/domains-reference.md b/doc/domains-reference.md
index e330fcb..ac8ae23 100644
--- a/doc/domains-reference.md
+++ b/doc/domains-reference.md
@@ -60,7 +60,7 @@
```c++
void MyProperty(const absl::flat_hash_map<uint32, MyProtoMessage>& m,
- const absl::optional<std::string>& s) {
+ const std::optional<std::string>& s) {
//...
}
FUZZ_TEST(MySuite, MyProperty);
diff --git a/domain_tests/BUILD b/domain_tests/BUILD
index a07a4ab..c9d1854 100644
--- a/domain_tests/BUILD
+++ b/domain_tests/BUILD
@@ -44,6 +44,8 @@
deps = [
":domain_testing",
"@com_google_absl//absl/random",
+ "@com_google_absl//absl/types:optional",
+ "@com_google_absl//absl/types:variant",
"@com_google_fuzztest//fuzztest:domain",
"@com_google_googletest//:gtest_main",
],
diff --git a/domain_tests/aggregate_combinators_test.cc b/domain_tests/aggregate_combinators_test.cc
index 122f036..ab83bdb 100644
--- a/domain_tests/aggregate_combinators_test.cc
+++ b/domain_tests/aggregate_combinators_test.cc
@@ -30,6 +30,8 @@
#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "absl/random/random.h"
+#include "absl/types/optional.h"
+#include "absl/types/variant.h"
#include "./fuzztest/domain.h"
#include "./domain_tests/domain_testing.h"
diff --git a/fuzztest/BUILD b/fuzztest/BUILD
index bde26bc..d564647 100644
--- a/fuzztest/BUILD
+++ b/fuzztest/BUILD
@@ -353,7 +353,6 @@
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/types:span",
- "@com_google_absl//absl/types:variant",
],
)
diff --git a/fuzztest/internal/serialization.cc b/fuzztest/internal/serialization.cc
index d276d9c..587f5f3 100644
--- a/fuzztest/internal/serialization.cc
+++ b/fuzztest/internal/serialization.cc
@@ -20,13 +20,13 @@
#include <limits>
#include <optional>
#include <string>
+#include <variant>
#include <vector>
#include "absl/strings/numbers.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/str_format.h"
#include "absl/strings/string_view.h"
-#include "absl/types/variant.h"
namespace fuzztest::internal {
@@ -62,10 +62,10 @@
void operator()(const std::vector<IRObject>& value) const {
for (const auto& sub : value) {
const bool sub_is_scalar =
- !absl::holds_alternative<std::vector<IRObject>>(sub.value);
+ !std::holds_alternative<std::vector<IRObject>>(sub.value);
absl::StrAppendFormat(&out, "%*ssub {%s", indent, "",
sub_is_scalar ? " " : "\n");
- absl::visit(OutputVisitor{sub.value.index(), indent + 2, out}, sub.value);
+ std::visit(OutputVisitor{sub.value.index(), indent + 2, out}, sub.value);
absl::StrAppendFormat(&out, "%*s}\n", sub_is_scalar ? 0 : indent,
sub_is_scalar ? " " : "");
}
@@ -175,7 +175,7 @@
std::string IRObject::ToString() const {
std::string out = absl::StrCat(AsAbsl(kHeader), "\n");
- absl::visit(OutputVisitor{value.index(), 0, out}, value);
+ std::visit(OutputVisitor{value.index(), 0, out}, value);
return out;
}
diff --git a/fuzztest/internal/serialization.h b/fuzztest/internal/serialization.h
index 2ce6092..3f91d9f 100644
--- a/fuzztest/internal/serialization.h
+++ b/fuzztest/internal/serialization.h
@@ -23,11 +23,11 @@
#include <tuple>
#include <type_traits>
#include <utility>
+#include <variant>
#include <vector>
#include "absl/numeric/int128.h"
#include "absl/types/span.h"
-#include "absl/types/variant.h"
#include "./fuzztest/internal/meta.h"
namespace fuzztest::internal {
@@ -54,8 +54,8 @@
// set.
struct IRObject {
- using Value = absl::variant<std::monostate, uint64_t, double, std::string,
- std::vector<IRObject>>;
+ using Value = std::variant<std::monostate, uint64_t, double, std::string,
+ std::vector<IRObject>>;
Value value;
IRObject() = default;
@@ -77,15 +77,15 @@
auto inner = GetScalar<std::underlying_type_t<T>>();
return inner ? std::optional(static_cast<T>(*inner)) : std::nullopt;
} else if constexpr (std::is_integral_v<T>) {
- const uint64_t* i = absl::get_if<uint64_t>(&value);
+ const uint64_t* i = std::get_if<uint64_t>(&value);
return i != nullptr ? std::optional(static_cast<T>(*i)) : std::nullopt;
} else if constexpr (std::is_same_v<float, T> ||
std::is_same_v<double, T>) {
- const double* i = absl::get_if<double>(&value);
+ const double* i = std::get_if<double>(&value);
return i != nullptr ? std::optional(static_cast<T>(*i)) : std::nullopt;
} else if constexpr (std::is_same_v<std::string, T>) {
std::optional<std::string_view> out;
- if (const auto* s = absl::get_if<std::string>(&value)) {
+ if (const auto* s = std::get_if<std::string>(&value)) {
out = *s;
}
return out;
@@ -113,12 +113,12 @@
// If this node contains subs, return it as a Span. Otherwise, nullopt.
std::optional<absl::Span<const IRObject>> Subs() const {
- if (const auto* i = absl::get_if<std::vector<IRObject>>(&value)) {
+ if (const auto* i = std::get_if<std::vector<IRObject>>(&value)) {
return *i;
}
// The empty vector is serialized the same way as the monostate: nothing.
// Handle that case too.
- if (absl::holds_alternative<std::monostate>(value)) {
+ if (std::holds_alternative<std::monostate>(value)) {
return absl::Span<const IRObject>{};
}
return std::nullopt;
@@ -128,10 +128,10 @@
// them.
// Overwrites any existing data.
std::vector<IRObject>& MutableSubs() {
- if (!absl::holds_alternative<std::vector<IRObject>>(value)) {
+ if (!std::holds_alternative<std::vector<IRObject>>(value)) {
value.emplace<std::vector<IRObject>>();
}
- return absl::get<std::vector<IRObject>>(value);
+ return std::get<std::vector<IRObject>>(value);
}
// Conversion functions to map IRObject to/from corpus values.
@@ -198,7 +198,7 @@
if constexpr (std::is_const_v<T>) {
return ToCorpus<std::remove_const_t<T>>();
} else if constexpr (is_monostate_v<T>) {
- if (absl::holds_alternative<std::monostate>(value)) return T{};
+ if (std::holds_alternative<std::monostate>(value)) return T{};
return std::nullopt;
} else if constexpr (std::is_same_v<T, IRObject>) {
return *this;
@@ -226,7 +226,7 @@
}
return std::nullopt;
} else if constexpr (is_protocol_buffer_v<T>) {
- const std::string* v = absl::get_if<std::string>(&value);
+ const std::string* v = std::get_if<std::string>(&value);
T out;
if (v && out.ParseFromString(*v)) return out;
return std::nullopt;