================
@@ -0,0 +1,138 @@
+// RUN: %check_clang_tidy %s abseil-unchecked-statusor-access %t --
-header-filter='' -- -I %S/Inputs
+
+#include "absl/status/statusor.h"
+void unchecked_value_access(const absl::StatusOr<int>& sor) {
+ sor.value();
+ // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: unchecked access to
'absl::StatusOr' value [abseil-unchecked-statusor-access]
+}
+
+void unchecked_value_or_die_access(const absl::StatusOr<int>& sor) {
+ sor.ValueOrDie();
+ // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: unchecked access to
'absl::StatusOr' value [abseil-unchecked-statusor-access]
+}
+
+void unchecked_deref_operator_access(const absl::StatusOr<int>& sor) {
+ *sor;
+ // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: unchecked access to
'absl::StatusOr' value [abseil-unchecked-statusor-access]
+}
+
+struct Foo {
+ void foo() const {}
+};
+
+void unchecked_arrow_operator_access(const absl::StatusOr<Foo>& sor) {
+ sor->foo();
+ // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: unchecked access to
'absl::StatusOr' value [abseil-unchecked-statusor-access]
+}
+
+void f2(const absl::StatusOr<int>& sor) {
+ if (sor.ok()) {
+ sor.value();
+ }
+}
+
+template <typename T>
+void function_template_without_user(const absl::StatusOr<T>& sor) {
+ sor.value(); // no-warning
+}
+
+template <typename T>
+void function_template_with_user(const absl::StatusOr<T>& sor) {
+ sor.value();
+ // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: unchecked access to
'absl::StatusOr' value [abseil-unchecked-statusor-access]
+}
+
+void function_template_user(const absl::StatusOr<int>& sor) {
+ // Instantiate the f3 function template so that it gets matched by the check.
----------------
jvoung wrote:
nit: f3 is renamed to "function_template_with_user" ?
https://github.com/llvm/llvm-project/pull/171188
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits