[clang] [alpha.webkit.UncountedCallArgsChecker] Allow explicit instantiation of Ref/RefPtr on call arguments. (PR #91875)

2024-05-13 Thread Artem Dergachev via cfe-commits

https://github.com/haoNoQ approved this pull request.

LGTM!

https://github.com/llvm/llvm-project/pull/91875
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [alpha.webkit.UncountedCallArgsChecker] Allow explicit instantiation of Ref/RefPtr on call arguments. (PR #91875)

2024-05-11 Thread Ryosuke Niwa via cfe-commits

https://github.com/rniwa updated https://github.com/llvm/llvm-project/pull/91875

>From d5a676c1cbe6d9804e6b2d3582df3c4977684188 Mon Sep 17 00:00:00 2001
From: Ryosuke Niwa 
Date: Sat, 11 May 2024 16:59:27 -0700
Subject: [PATCH 1/2] [alpha.webkit.UncountedCallArgsChecker] Allow explicit
 instantiation of Ref/RefPtr on call arguments.

---
 clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp | 7 +++
 clang/test/Analysis/Checkers/WebKit/call-args.cpp | 7 +++
 2 files changed, 14 insertions(+)

diff --git a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp 
b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp
index f81db0e67d835..423c2d749bcfb 100644
--- a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp
@@ -28,6 +28,13 @@ bool tryToFindPtrOrigin(
   E = tempExpr->getSubExpr();
   continue;
 }
+if (auto *tempExpr = dyn_cast(E)) {
+  if (auto *C = tempExpr->getConstructor()) {
+if (auto* Class = C->getParent(); Class && isRefCounted(Class))
+  return callback(E, true);
+break;
+  }
+}
 if (auto *tempExpr = dyn_cast(E)) {
   E = tempExpr->getSubExpr();
   continue;
diff --git a/clang/test/Analysis/Checkers/WebKit/call-args.cpp 
b/clang/test/Analysis/Checkers/WebKit/call-args.cpp
index e1bee8a23a250..94efddeaf66cd 100644
--- a/clang/test/Analysis/Checkers/WebKit/call-args.cpp
+++ b/clang/test/Analysis/Checkers/WebKit/call-args.cpp
@@ -358,3 +358,10 @@ namespace call_with_ptr_on_ref {
 // expected-warning@-1{{Call argument for parameter 'bad' is uncounted and 
unsafe}}
   }
 }
+
+namespace call_with_explicit_temporary_obj {
+  void foo() {
+Ref { *provide() }->method();
+RefPtr { provide() }->method();
+  }
+}

>From 9b72796910a694c8c88435c43459bebfd1709e52 Mon Sep 17 00:00:00 2001
From: Ryosuke Niwa 
Date: Sat, 11 May 2024 17:01:42 -0700
Subject: [PATCH 2/2] Fix formatting.

---
 clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp 
b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp
index 423c2d749bcfb..be07cf51eefb3 100644
--- a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp
@@ -30,7 +30,7 @@ bool tryToFindPtrOrigin(
 }
 if (auto *tempExpr = dyn_cast(E)) {
   if (auto *C = tempExpr->getConstructor()) {
-if (auto* Class = C->getParent(); Class && isRefCounted(Class))
+if (auto *Class = C->getParent(); Class && isRefCounted(Class))
   return callback(E, true);
 break;
   }

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [alpha.webkit.UncountedCallArgsChecker] Allow explicit instantiation of Ref/RefPtr on call arguments. (PR #91875)

2024-05-11 Thread via cfe-commits

github-actions[bot] wrote:




:warning: C/C++ code formatter, clang-format found issues in your code. 
:warning:



You can test this locally with the following command:


``bash
git-clang-format --diff 31774b6a8a88b435ce79f9ba048ef8bb00e2817e 
d5a676c1cbe6d9804e6b2d3582df3c4977684188 -- 
clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp 
clang/test/Analysis/Checkers/WebKit/call-args.cpp
``





View the diff from clang-format here.


``diff
diff --git a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp 
b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp
index 423c2d749b..be07cf51ee 100644
--- a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp
@@ -30,7 +30,7 @@ bool tryToFindPtrOrigin(
 }
 if (auto *tempExpr = dyn_cast(E)) {
   if (auto *C = tempExpr->getConstructor()) {
-if (auto* Class = C->getParent(); Class && isRefCounted(Class))
+if (auto *Class = C->getParent(); Class && isRefCounted(Class))
   return callback(E, true);
 break;
   }

``




https://github.com/llvm/llvm-project/pull/91875
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [alpha.webkit.UncountedCallArgsChecker] Allow explicit instantiation of Ref/RefPtr on call arguments. (PR #91875)

2024-05-11 Thread via cfe-commits

llvmbot wrote:



@llvm/pr-subscribers-clang

@llvm/pr-subscribers-clang-static-analyzer-1

Author: Ryosuke Niwa (rniwa)


Changes



---
Full diff: https://github.com/llvm/llvm-project/pull/91875.diff


2 Files Affected:

- (modified) clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp (+7) 
- (modified) clang/test/Analysis/Checkers/WebKit/call-args.cpp (+7) 


``diff
diff --git a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp 
b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp
index f81db0e67d835..423c2d749bcfb 100644
--- a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp
@@ -28,6 +28,13 @@ bool tryToFindPtrOrigin(
   E = tempExpr->getSubExpr();
   continue;
 }
+if (auto *tempExpr = dyn_cast(E)) {
+  if (auto *C = tempExpr->getConstructor()) {
+if (auto* Class = C->getParent(); Class && isRefCounted(Class))
+  return callback(E, true);
+break;
+  }
+}
 if (auto *tempExpr = dyn_cast(E)) {
   E = tempExpr->getSubExpr();
   continue;
diff --git a/clang/test/Analysis/Checkers/WebKit/call-args.cpp 
b/clang/test/Analysis/Checkers/WebKit/call-args.cpp
index e1bee8a23a250..94efddeaf66cd 100644
--- a/clang/test/Analysis/Checkers/WebKit/call-args.cpp
+++ b/clang/test/Analysis/Checkers/WebKit/call-args.cpp
@@ -358,3 +358,10 @@ namespace call_with_ptr_on_ref {
 // expected-warning@-1{{Call argument for parameter 'bad' is uncounted and 
unsafe}}
   }
 }
+
+namespace call_with_explicit_temporary_obj {
+  void foo() {
+Ref { *provide() }->method();
+RefPtr { provide() }->method();
+  }
+}

``




https://github.com/llvm/llvm-project/pull/91875
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [alpha.webkit.UncountedCallArgsChecker] Allow explicit instantiation of Ref/RefPtr on call arguments. (PR #91875)

2024-05-11 Thread Ryosuke Niwa via cfe-commits

https://github.com/rniwa created https://github.com/llvm/llvm-project/pull/91875

None

>From d5a676c1cbe6d9804e6b2d3582df3c4977684188 Mon Sep 17 00:00:00 2001
From: Ryosuke Niwa 
Date: Sat, 11 May 2024 16:59:27 -0700
Subject: [PATCH] [alpha.webkit.UncountedCallArgsChecker] Allow explicit
 instantiation of Ref/RefPtr on call arguments.

---
 clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp | 7 +++
 clang/test/Analysis/Checkers/WebKit/call-args.cpp | 7 +++
 2 files changed, 14 insertions(+)

diff --git a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp 
b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp
index f81db0e67d835..423c2d749bcfb 100644
--- a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp
@@ -28,6 +28,13 @@ bool tryToFindPtrOrigin(
   E = tempExpr->getSubExpr();
   continue;
 }
+if (auto *tempExpr = dyn_cast(E)) {
+  if (auto *C = tempExpr->getConstructor()) {
+if (auto* Class = C->getParent(); Class && isRefCounted(Class))
+  return callback(E, true);
+break;
+  }
+}
 if (auto *tempExpr = dyn_cast(E)) {
   E = tempExpr->getSubExpr();
   continue;
diff --git a/clang/test/Analysis/Checkers/WebKit/call-args.cpp 
b/clang/test/Analysis/Checkers/WebKit/call-args.cpp
index e1bee8a23a250..94efddeaf66cd 100644
--- a/clang/test/Analysis/Checkers/WebKit/call-args.cpp
+++ b/clang/test/Analysis/Checkers/WebKit/call-args.cpp
@@ -358,3 +358,10 @@ namespace call_with_ptr_on_ref {
 // expected-warning@-1{{Call argument for parameter 'bad' is uncounted and 
unsafe}}
   }
 }
+
+namespace call_with_explicit_temporary_obj {
+  void foo() {
+Ref { *provide() }->method();
+RefPtr { provide() }->method();
+  }
+}

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits