================
@@ -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

Reply via email to