[clang] 29d374b - [NFC] [FlowSensitive] [StatusOr] Add tests for StatusOr ctors
via cfe-commits
cfe-commits at lists.llvm.org
Fri Feb 6 12:55:16 PST 2026
Author: Florian Mayer
Date: 2026-02-06T12:55:11-08:00
New Revision: 29d374bf90de1cd28af5587724f7ba19b225b92e
URL: https://github.com/llvm/llvm-project/commit/29d374bf90de1cd28af5587724f7ba19b225b92e
DIFF: https://github.com/llvm/llvm-project/commit/29d374bf90de1cd28af5587724f7ba19b225b92e.diff
LOG: [NFC] [FlowSensitive] [StatusOr] Add tests for StatusOr ctors
Reviewers: jvoung
Reviewed By: jvoung
Pull Request: https://github.com/llvm/llvm-project/pull/180076
Added:
Modified:
clang/unittests/Analysis/FlowSensitive/UncheckedStatusOrAccessModelTestFixture.cpp
Removed:
################################################################################
diff --git a/clang/unittests/Analysis/FlowSensitive/UncheckedStatusOrAccessModelTestFixture.cpp b/clang/unittests/Analysis/FlowSensitive/UncheckedStatusOrAccessModelTestFixture.cpp
index 41505dd720ef7..c908a98d63af2 100644
--- a/clang/unittests/Analysis/FlowSensitive/UncheckedStatusOrAccessModelTestFixture.cpp
+++ b/clang/unittests/Analysis/FlowSensitive/UncheckedStatusOrAccessModelTestFixture.cpp
@@ -1129,6 +1129,102 @@ TEST_P(UncheckedStatusOrAccessModelTest, BuiltinExpect) {
)cc");
}
+TEST_P(UncheckedStatusOrAccessModelTest, CopyConstructor) {
+ ExpectDiagnosticsFor(
+ R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target() {
+ STATUSOR_INT sor1 = Make<STATUSOR_INT>();
+ auto sor2 = sor1;
+ auto sor3 = sor2;
+ if (sor1.ok()) {
+ sor1.value();
+
+ sor2.value();
+
+ sor3.value();
+ } else {
+ sor1.value(); // [[unsafe]]
+
+ sor2.value(); // [[unsafe]]
+
+ sor3.value(); // [[unsafe]]
+ }
+ }
+ )cc");
+ ExpectDiagnosticsFor(
+ R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target() {
+ STATUSOR_INT sor1 = Make<STATUSOR_INT>();
+ auto sor2 = sor1;
+ auto sor3 = sor2;
+
+ STATUS s = sor1.status();
+ if (s.ok()) {
+ sor1.value();
+
+ sor2.value();
+
+ sor3.value();
+ } else {
+ sor1.value(); // [[unsafe]]
+
+ sor2.value(); // [[unsafe]]
+
+ sor3.value(); // [[unsafe]]
+ }
+ }
+ )cc");
+ ExpectDiagnosticsFor(
+ R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target() {
+ STATUSOR_INT x = Make<STATUSOR_INT>();
+ if (!x.ok()) return;
+
+ STATUSOR_INT y = x;
+ y.value();
+ }
+ )cc");
+ ExpectDiagnosticsFor(
+ R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target() {
+ STATUSOR_INT x = Make<STATUSOR_INT>();
+ if (x.ok()) {
+ STATUSOR_INT y = x;
+ y.value();
+ }
+ }
+ )cc");
+}
+
+TEST_P(UncheckedStatusOrAccessModelTest, MoveConstructor) {
+ ExpectDiagnosticsFor(R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target() {
+ STATUSOR_INT sor1(42);
+ STATUSOR_INT sor2(std::move(sor1));
+ sor2.value();
+ }
+ )cc");
+ ExpectDiagnosticsFor(R"cc(
+#include "unchecked_statusor_access_test_defs.h"
+
+ void target() {
+ STATUSOR_INT sor1 = Make<STATUSOR_INT>();
+ STATUSOR_INT sor2(std::move(sor1));
+ sor2.value(); // [[unsafe]]
+ }
+ )cc");
+}
+
TEST_P(UncheckedStatusOrAccessModelTest, CopyAssignment) {
ExpectDiagnosticsFor(R"cc(
#include "unchecked_statusor_access_test_defs.h"
More information about the cfe-commits
mailing list