hokein updated this revision to Diff 275994. hokein marked an inline comment as done. hokein added a comment.
fix names. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D83293/new/ https://reviews.llvm.org/D83293 Files: clang-tools-extra/clang-tidy/bugprone/UnusedRaiiCheck.cpp clang-tools-extra/test/clang-tidy/checkers/bugprone-unused-raii-crash.mm Index: clang-tools-extra/test/clang-tidy/checkers/bugprone-unused-raii-crash.mm =================================================================== --- /dev/null +++ clang-tools-extra/test/clang-tidy/checkers/bugprone-unused-raii-crash.mm @@ -0,0 +1,15 @@ +// RUN: clang-tidy %s -checks=-*,bugprone-unused-raii -- | count 0 + +struct CxxClass { + ~CxxClass() {} +}; + +@interface ObjcClass { +} +- (CxxClass)set:(int)p; +@end + +void test(ObjcClass *s) { + [s set:1]; // ok, no crash, no diagnostic emitted. + return; +} Index: clang-tools-extra/clang-tidy/bugprone/UnusedRaiiCheck.cpp =================================================================== --- clang-tools-extra/clang-tidy/bugprone/UnusedRaiiCheck.cpp +++ clang-tools-extra/clang-tidy/bugprone/UnusedRaiiCheck.cpp @@ -27,9 +27,10 @@ // Look for temporaries that are constructed in-place and immediately // destroyed. Look for temporaries created by a functional cast but not for // those returned from a call. - auto BindTemp = - cxxBindTemporaryExpr(unless(has(ignoringParenImpCasts(callExpr())))) - .bind("temp"); + auto BindTemp = cxxBindTemporaryExpr( + unless(has(ignoringParenImpCasts(callExpr()))), + unless(has(ignoringParenImpCasts(objcMessageExpr())))) + .bind("temp"); Finder->addMatcher( traverse(ast_type_traits::TK_AsIs, exprWithCleanups( @@ -79,6 +80,7 @@ auto Matches = match(expr(hasDescendant(typeLoc().bind("t"))), *E, *Result.Context); const auto *TL = selectFirst<TypeLoc>("t", Matches); + assert(TL); D << FixItHint::CreateInsertion( Lexer::getLocForEndOfToken(TL->getEndLoc(), 0, *Result.SourceManager, getLangOpts()),
Index: clang-tools-extra/test/clang-tidy/checkers/bugprone-unused-raii-crash.mm =================================================================== --- /dev/null +++ clang-tools-extra/test/clang-tidy/checkers/bugprone-unused-raii-crash.mm @@ -0,0 +1,15 @@ +// RUN: clang-tidy %s -checks=-*,bugprone-unused-raii -- | count 0 + +struct CxxClass { + ~CxxClass() {} +}; + +@interface ObjcClass { +} +- (CxxClass)set:(int)p; +@end + +void test(ObjcClass *s) { + [s set:1]; // ok, no crash, no diagnostic emitted. + return; +} Index: clang-tools-extra/clang-tidy/bugprone/UnusedRaiiCheck.cpp =================================================================== --- clang-tools-extra/clang-tidy/bugprone/UnusedRaiiCheck.cpp +++ clang-tools-extra/clang-tidy/bugprone/UnusedRaiiCheck.cpp @@ -27,9 +27,10 @@ // Look for temporaries that are constructed in-place and immediately // destroyed. Look for temporaries created by a functional cast but not for // those returned from a call. - auto BindTemp = - cxxBindTemporaryExpr(unless(has(ignoringParenImpCasts(callExpr())))) - .bind("temp"); + auto BindTemp = cxxBindTemporaryExpr( + unless(has(ignoringParenImpCasts(callExpr()))), + unless(has(ignoringParenImpCasts(objcMessageExpr())))) + .bind("temp"); Finder->addMatcher( traverse(ast_type_traits::TK_AsIs, exprWithCleanups( @@ -79,6 +80,7 @@ auto Matches = match(expr(hasDescendant(typeLoc().bind("t"))), *E, *Result.Context); const auto *TL = selectFirst<TypeLoc>("t", Matches); + assert(TL); D << FixItHint::CreateInsertion( Lexer::getLocForEndOfToken(TL->getEndLoc(), 0, *Result.SourceManager, getLangOpts()),
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits