whisperity accepted this revision.
whisperity added a comment.

Alright, I think we should have this in and let C++17 things to be future work. 
Please see the inline comment, but otherwise this should be good enough. Can 
always improve in a future version. 😉

LLVM 15 has branched off, so this should be rebased for the last time against 
the current main branch, just to ensure everything is good.



================
Comment at: clang-tools-extra/clang-tidy/bugprone/SignalHandlerCheck.cpp:284-298
+bool isCXXOnlyStmt(const Stmt *S) {
+  StringRef Name = S->getStmtClassName();
+  if (Name.startswith("CXX"))
+    return true;
+  // Check for all other class names in ExprCXX.h that have no 'CXX' prefix.
+  return isa<ArrayTypeTraitExpr, BuiltinBitCastExpr, CUDAKernelCallExpr,
+             CoawaitExpr, CoreturnStmt, CoroutineBodyStmt, 
CoroutineSuspendExpr,
----------------
I have an overarching solution idea for this, @balazske, which requires a 
separate patch independently of this. (I believe this will not be a //hard// 
thing to implement, just tedious, because of all the classes that need to be 
changed.)

Let's consider adding a new member function to `Decl`, `Stmt`, `Type`, etc. 
instances. While `bool isCXX() const` seems tempting, I believe it should be 
something like `bool isAvailableIn(const LangOptions&) const`, which returns 
whether a particular node (representing a language feature) //is available in// 
a particular //language option set//. And this way, we could query if a node is 
available in C++ (whichever version) and not in C, in which case the check can 
deduce that it is "C++-only".

This way, the future maintenance burden will be completely lifted from the 
check, and the AST library/API gets a useful generic feature that we can start 
using elsewhere, too!

----

So, e.g., `LambdaExpr` will have:

```lang=cpp
bool LambdaExpr::isAvailableIn(const LangOptions& LO) const
{
  return LO.CPlusPlus11;
}
```


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D118996/new/

https://reviews.llvm.org/D118996

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

Reply via email to