When I run the following test code through clang-tidy -checks=*, I get a crash from some relatively strange behavior with FunctionDecl.
template <class T> struct remove_reference {typedef T type;}; template <class T> struct remove_reference<T&> {typedef T type;}; template <class T> struct remove_reference<T&&> {typedef T type;}; template <typename T> typename remove_reference<T>::type&& move(T&& arg) { return static_cast<typename remove_reference<T>::type&&>(arg); } AnalysisConsumer::getModeForDecl() is called, and it has code that does: D->hasBody() ? D->getBody()->stuff : stuff; What's strange is that hasBody() returns true, but getBody() returns nullptr. I don't think that this should be possible. I'm wondering whether it's purposeful that hasBody() does not check Definition->Body? Also, the FunctionDecl in question is for move(), which does have a body, so I do not understand why the definition would claim there is no body. Ideas, or should I file a bug report? ~Aaron _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits