================
@@ -2173,6 +2173,181 @@ TEST_P(UncheckedStatusOrAccessModelTest, ExpectOkMacro)
{
)cc");
}
+TEST_P(UncheckedStatusOrAccessModelTest, AssertThatMacro) {
+ ExpectDiagnosticsFor(R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target(STATUSOR_INT sor) {
+ ASSERT_THAT(sor, testing::status::IsOk());
+
+ sor.value();
+ }
+ )cc");
+ ExpectDiagnosticsFor(R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target(STATUSOR_INT sor) {
+ ASSERT_THAT(sor, absl_testing::IsOk());
+
+ sor.value();
+ }
+ )cc");
+ ExpectDiagnosticsFor(R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target(STATUSOR_INT sor) {
+ ASSERT_THAT(sor.status(), testing::status::IsOk());
+
+ sor.value();
+ }
+ )cc");
+ ExpectDiagnosticsFor(R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+ void target() {
+ STATUSOR_INT sor = Make<STATUSOR_INT>();
+ ASSERT_THAT(sor, testing::status::IsOk());
+
+ sor.value();
+ }
+ )cc");
+ ExpectDiagnosticsFor(R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target(STATUSOR_INT sor) {
+ using absl::StatusCode::kOk;
+ ASSERT_THAT(sor, testing::status::StatusIs(kOk));
+
+ sor.value();
+ }
+ )cc");
+ ExpectDiagnosticsFor(R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target(STATUSOR_INT sor) {
+ ASSERT_THAT(sor, testing::status::StatusIs(absl::StatusCode::kOk));
+
+ sor.value();
+ }
+ )cc");
+ ExpectDiagnosticsFor(R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target(STATUSOR_INT sor) {
+ ASSERT_THAT(sor,
testing::status::CanonicalStatusIs(absl::StatusCode::kOk));
+
+ sor.value();
+ }
+ )cc");
+ ExpectDiagnosticsFor(R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target(STATUSOR_INT sor) {
+ ASSERT_THAT(sor, absl_testing::CanonicalStatusIs(absl::StatusCode::kOk));
+
+ sor.value();
+ }
+ )cc");
+ ExpectDiagnosticsFor(R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target(STATUSOR_INT sor) {
+ auto matcher = testing::status::StatusIs(absl::StatusCode::kOk);
+ ASSERT_THAT(sor, matcher);
+
+ sor.value();
+ }
+ )cc");
+ ExpectDiagnosticsFor(R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target(STATUSOR_INT sor) {
+ auto matcher = absl_testing::StatusIs(absl::StatusCode::kOk);
+ ASSERT_THAT(sor, matcher);
+
+ sor.value();
+ }
+ )cc");
+ ExpectDiagnosticsFor(R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target(STATUSOR_INT sor) {
+ ASSERT_THAT(
+ sor, testing::status::StatusIs(absl::StatusCode::kInvalidArgument));
+
+ sor.value(); // [[unsafe]]
+ }
+ )cc");
+ ExpectDiagnosticsFor(R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target(STATUSOR_INT sor) {
+ ASSERT_THAT(sor,
absl_testing::StatusIs(absl::StatusCode::kInvalidArgument));
+
+ sor.value(); // [[unsafe]]
+ }
+ )cc");
+
+ ExpectDiagnosticsFor(R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target(STATUSOR_INT sor) {
+ ASSERT_THAT(sor, testing::status::IsOkAndHolds(testing::IsTrue()));
+
+ sor.value();
+ }
+ )cc");
+ ExpectDiagnosticsFor(R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target(STATUSOR_INT sor) {
+ ASSERT_THAT(sor, absl_testing::IsOkAndHolds(testing::IsTrue()));
+
+ sor.value();
+ }
+ )cc");
+}
+
+TEST_P(UncheckedStatusOrAccessModelTest, AssertOkMacro) {
+ ExpectDiagnosticsFor(R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target(STATUSOR_INT sor) {
+ ASSERT_OK(sor);
+
+ sor.value();
+ }
+ )cc");
+ ExpectDiagnosticsFor(R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target(STATUSOR_INT sor) {
+ ASSERT_OK(sor.status());
+
+ sor.value();
+ }
+ )cc");
+ ExpectDiagnosticsFor(R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+ void target() {
+ STATUSOR_INT sor = Make<STATUSOR_INT>();
+ ASSERT_OK(sor);
+
+ sor.value();
+ }
+ )cc");
+
+ ExpectDiagnosticsFor(R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target(std::optional<STATUSOR_INT> sor_opt) {
+ STATUSOR_INT sor = *sor_opt;
+ ASSERT_OK(sor);
+
+ sor.value();
+ }
+ )cc");
+}
+
----------------
fmayer wrote:
These already worked before and are tested
```
TEST_P(UncheckedStatusOrAccessModelTest, AssertOkMacro)
```
https://github.com/llvm/llvm-project/pull/170947
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits