llvmorg-github-actions[bot] wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: Kazu Hirata (kazutakahirata)

<details>
<summary>Changes</summary>

PointerUnion::dyn_cast has been soft-deprecated in favor of
llvm::dyn_cast and llvm::dyn_cast_if_present.  This patch replaces
PointerUnion::dyn_cast with llvm::dyn_cast_if_present in
SARIFDiagnostic::emitDiagnosticMessage, and adds a test case to cover
the null operand case.

Note that DiagnosticRenderer::emitSingleMacroExpansion invokes
emitDiagnosticMessage with a null DiagOrStoredDiag when emitting a
macro expansion note.

This patch completes the migration away from PointerUnion::dyn_cast
under clang/.

Assisted-by: Antigravity


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


3 Files Affected:

- (modified) clang/lib/Frontend/SARIFDiagnostic.cpp (+1-1) 
- (modified) 
clang/test/Frontend/Inputs/expected-sarif/sarif-diagnostics.cpp.sarif (+36-1) 
- (modified) clang/test/Frontend/sarif-diagnostics.cpp (+3) 


``````````diff
diff --git a/clang/lib/Frontend/SARIFDiagnostic.cpp 
b/clang/lib/Frontend/SARIFDiagnostic.cpp
index 5183462b76f413..f6f3feb7bd86cd 100644
--- a/clang/lib/Frontend/SARIFDiagnostic.cpp
+++ b/clang/lib/Frontend/SARIFDiagnostic.cpp
@@ -41,7 +41,7 @@ void SARIFDiagnostic::emitDiagnosticMessage(
     StringRef Message, ArrayRef<clang::CharSourceRange> Ranges,
     DiagOrStoredDiag D) {
 
-  const auto *Diag = D.dyn_cast<const Diagnostic *>();
+  const auto *Diag = dyn_cast_if_present<const Diagnostic *>(D);
 
   if (!Diag)
     return;
diff --git 
a/clang/test/Frontend/Inputs/expected-sarif/sarif-diagnostics.cpp.sarif 
b/clang/test/Frontend/Inputs/expected-sarif/sarif-diagnostics.cpp.sarif
index 21f06bf0a1b234..df46841bc624af 100644
--- a/clang/test/Frontend/Inputs/expected-sarif/sarif-diagnostics.cpp.sarif
+++ b/clang/test/Frontend/Inputs/expected-sarif/sarif-diagnostics.cpp.sarif
@@ -295,6 +295,29 @@ clang: warning: diagnostic formatting in SARIF mode is 
currently unstable [-Wsar
           },
           "ruleId": "err_typecheck_invalid_operands",
           "ruleIndex": 8
+        },
+        {
+          "level": "error",
+          "locations": [
+            {
+              "physicalLocation": {
+                "artifactLocation": {
+                  "index": 0,
+                  "uri": "file:///[...]/sarif-diagnostics.cpp"
+                },
+                "region": {
+                  "endColumn": 9,
+                  "startColumn": 9,
+                  "startLine": 31
+                }
+              }
+            }
+          ],
+          "message": {
+            "text": "expected expression"
+          },
+          "ruleId": "err_expected_expression",
+          "ruleIndex": 9
         }
       ],
       "tool": {
@@ -411,6 +434,18 @@ clang: warning: diagnostic formatting in SARIF mode is 
currently unstable [-Wsar
               },
               "id": "err_typecheck_invalid_operands",
               "name": ""
+            },
+            {
+              "defaultConfiguration": {
+                "enabled": true,
+                "level": "error",
+                "rank": 50
+              },
+              "fullDescription": {
+                "text": ""
+              },
+              "id": "err_expected_expression",
+              "name": ""
             }
           ],
           "version": "[clang version]"
@@ -421,4 +456,4 @@ clang: warning: diagnostic formatting in SARIF mode is 
currently unstable [-Wsar
   "version": "[SARIF version]"
 }
 
-2 warnings and 6 errors generated.
\ No newline at end of file
+2 warnings and 7 errors generated.
\ No newline at end of file
diff --git a/clang/test/Frontend/sarif-diagnostics.cpp 
b/clang/test/Frontend/sarif-diagnostics.cpp
index 04cd19516fc0aa..99a6fa46d0f722 100644
--- a/clang/test/Frontend/sarif-diagnostics.cpp
+++ b/clang/test/Frontend/sarif-diagnostics.cpp
@@ -26,3 +26,6 @@ struct t1 { };
 void f1(t1 x, t1 y) {
     x + y;
 }
+
+#define BAD ;
+int x = BAD;

``````````

</details>


https://github.com/llvm/llvm-project/pull/236619
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to