baloghadamsoftware added a comment.

In D74735#1880390 <https://reviews.llvm.org/D74735#1880390>, @xazax.hun wrote:

> If the AST is hard to work with would it make sense to try to change the AST 
> a bit?


Hmm, you mean making `CXXConstructExpr` an abstract base with subclasses 
`CXXSimpleConstructExpr` and `CXXInheritedConstructExpr`? For me it seems 
reasonable but I am afraid it would be a huge impact to clang, and not only to 
the analyzer.



================
Comment at: 
clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:896
+public:
+  virtual const CXXInheritedCtorInitExpr *getOriginExpr() const {
+    return cast<CXXInheritedCtorInitExpr>(AnyFunctionCall::getOriginExpr());
----------------
I wonder whether we could reduce code-duplication using some kind of mixin-like 
inheritance here.


================
Comment at: clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp:436
   case CXXConstructExpr::CK_Complete: {
+    assert(CE && "Complete constructors cannot be inherited!");
     std::tie(State, Target) =
----------------
martong wrote:
> Should there be rather `CIE` in the assert? Or the text after `&&` is 
> confusing. 
Surely not `CIE`, since the code below uses `CE`. I see nothing confusing here: 
`CE` must exist because complete constructors cannot be inherited, thus `CIE` 
cannot exist.


================
Comment at: clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp:494
   if (State != Pred->getState()) {
+    assert(CE && "Inherited constructors do not have construction contexts!");
     static SimpleProgramPointTag T("ExprEngine",
----------------
martong wrote:
> `CIE` ?
No. `CE`. Since inherited constructors do not have construction contexts, 
`State` is the same for `CIE` as the previous `State`. Thus if they are 
different, we are facing a `CE`.


================
Comment at: clang/test/Analysis/cxx-inherited-ctor-init-expr.cpp:30
+
+namespace arguments_with_constructors {
+struct S {
----------------
Not `constructors_with_arguments`?


Repository:
  rC Clang

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

https://reviews.llvm.org/D74735



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

Reply via email to