Charusso added a comment.

Thanks for the reviews so far! I had a contradiction in my mind about regions, 
but now everything is okay and the notes are not misleading.



================
Comment at: clang/lib/StaticAnalyzer/Checkers/CastValueChecker.cpp:183
+  if (Body)
+    DRE = dyn_cast<DeclRefExpr>(Body);
+
----------------
NoQ wrote:
> A body of a function is always either a `CompoundStmt` or (shockingly) a 
> `CXXTryStmt`. This cast will always fail.
I do not remember what I did here, but that was a working solution.


================
Comment at: clang/lib/StaticAnalyzer/Checkers/CastValueChecker.cpp:188
+
+  QualType CastToTy = DRE->getTemplateArgs()->getArgument().getAsType();
+  QualType CastFromTy = getRecordType(Call.parameters()[0]->getType());
----------------
NoQ wrote:
> I suspect that `DRE` may still be null (eg., when calling `isa` through 
> function pointer).
> 
> I think you should just lookup `Call.getDecl()`'s template arguments instead. 
> It's going to be the declaration of the specific instantiation, so it'll have 
> all the arguments.
That was the plan, just I did not realized I am a `FunctionDecl` away to 
achieve that. Thanks!


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

https://reviews.llvm.org/D66423



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

Reply via email to