[clang] [clang] fix parsing typeid with pack index (PR #94299)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Jun 3 18:01:17 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: None (c8ef)
<details>
<summary>Changes</summary>
close: #<!-- -->93650
---
Full diff: https://github.com/llvm/llvm-project/pull/94299.diff
2 Files Affected:
- (modified) clang/lib/AST/Expr.cpp (+1-3)
- (added) clang/test/SemaCXX/GH93650.cpp (+12)
``````````diff
diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp
index ac0b1b38f0162..f9d634550dc06 100644
--- a/clang/lib/AST/Expr.cpp
+++ b/clang/lib/AST/Expr.cpp
@@ -3618,12 +3618,10 @@ bool Expr::HasSideEffects(const ASTContext &Ctx,
case ConceptSpecializationExprClass:
case RequiresExprClass:
case SYCLUniqueStableNameExprClass:
+ case PackIndexingExprClass:
// These never have a side-effect.
return false;
- case PackIndexingExprClass:
- return cast<PackIndexingExpr>(this)->getSelectedExpr()->HasSideEffects(
- Ctx, IncludePossibleEffects);
case ConstantExprClass:
// FIXME: Move this into the "return false;" block above.
return cast<ConstantExpr>(this)->getSubExpr()->HasSideEffects(
diff --git a/clang/test/SemaCXX/GH93650.cpp b/clang/test/SemaCXX/GH93650.cpp
new file mode 100644
index 0000000000000..cc82bd084248e
--- /dev/null
+++ b/clang/test/SemaCXX/GH93650.cpp
@@ -0,0 +1,12 @@
+// RUN: %clang_cc1 -std=c++2c -fsyntax-only -verify %s
+// expected-no-diagnostics
+
+namespace std {
+struct type_info {
+ const char *name;
+};
+} // namespace std
+
+namespace GH93650_bug {
+auto func(auto... inputArgs) { return typeid(inputArgs...[0]); }
+} // namespace GH93650_bug
``````````
</details>
https://github.com/llvm/llvm-project/pull/94299
More information about the cfe-commits
mailing list