xazax.hun added inline comments. ================ Comment at: lib/StaticAnalyzer/Checkers/DynamicTypePropagation.cpp:675 @@ +674,3 @@ + + QualType ResultType = Method->getReturnType().substObjCTypeArgs( + C, TypeArgs, ObjCSubstitutionContext::Result); ---------------- zaks.anna wrote: > Could you use StaticResultType here? In StaticResultType every occurrence of a Type Argument is replaced with id, which is not suitable for type checking.
================ Comment at: lib/StaticAnalyzer/Checkers/DynamicTypePropagation.cpp:795 @@ -817,1 +794,3 @@ + // Checking that the return type is used correctly is done in pre-call to get + // cleaner diagnostic paths. checkReturnType(MessageExpr, *TrackedType, Sym, Method, *TypeArgs, ---------------- zaks.anna wrote: > The path is longer if the call is inlined, correct? (Not much difference > otherwise..) In fact there is a heuristic that omits the stepping in into the function when the diagnostic is generated. I moved this check to the post call callback. ================ Comment at: lib/StaticAnalyzer/Checkers/DynamicTypePropagation.cpp:803 @@ +802,3 @@ +/// initialized with by invoking the 'class' method on a class. +/// This method is also used to infer the type information for the return +/// types. ---------------- zaks.anna wrote: > It looks like it's only inferring the type information of the specializations > and not for non-generic types.. Added a todo for the missing case. http://reviews.llvm.org/D12889 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits