This revision was automatically updated to reflect the committed changes. Closed by commit rG987a21522f2c: [clang-tidy] Use `hasCanonicalType()` matcher in `bugprone-unused-raii` check (authored by fwolff).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D113429/new/ https://reviews.llvm.org/D113429 Files: clang-tools-extra/clang-tidy/bugprone/UnusedRaiiCheck.cpp clang-tools-extra/test/clang-tidy/checkers/bugprone-unused-raii.cpp Index: clang-tools-extra/test/clang-tidy/checkers/bugprone-unused-raii.cpp =================================================================== --- clang-tools-extra/test/clang-tidy/checkers/bugprone-unused-raii.cpp +++ clang-tools-extra/test/clang-tidy/checkers/bugprone-unused-raii.cpp @@ -82,6 +82,28 @@ (void)i; } +template <typename T> +void aliastest() { + using X = Foo; + using Y = X; + using Z = Y; + Z(42); + // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: object destroyed immediately after creation; did you mean to name the object? + // CHECK-FIXES: Z give_me_a_name(42); + + typedef Z ZT; + ZT(42, 13); + // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: object destroyed immediately after creation; did you mean to name the object? + // CHECK-FIXES: ZT give_me_a_name(42, 13); + + using TT = TCtorDefaultArg<T>; + TT(42); + // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: object destroyed immediately after creation; did you mean to name the object? + // CHECK-FIXES: TT give_me_a_name(42); + + (void)0; +} + void test() { Foo(42); // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: object destroyed immediately after creation; did you mean to name the object? 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 @@ -29,10 +29,11 @@ Finder->addMatcher( mapAnyOf(cxxConstructExpr, cxxUnresolvedConstructExpr) .with(hasParent(compoundStmt().bind("compound")), - anyOf(hasType(cxxRecordDecl(hasNonTrivialDestructor())), - hasType(templateSpecializationType( + anyOf(hasType(hasCanonicalType(recordType(hasDeclaration( + cxxRecordDecl(hasNonTrivialDestructor()))))), + hasType(hasCanonicalType(templateSpecializationType( hasDeclaration(classTemplateDecl(has( - cxxRecordDecl(hasNonTrivialDestructor())))))))) + cxxRecordDecl(hasNonTrivialDestructor()))))))))) .bind("expr"), this); }
Index: clang-tools-extra/test/clang-tidy/checkers/bugprone-unused-raii.cpp =================================================================== --- clang-tools-extra/test/clang-tidy/checkers/bugprone-unused-raii.cpp +++ clang-tools-extra/test/clang-tidy/checkers/bugprone-unused-raii.cpp @@ -82,6 +82,28 @@ (void)i; } +template <typename T> +void aliastest() { + using X = Foo; + using Y = X; + using Z = Y; + Z(42); + // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: object destroyed immediately after creation; did you mean to name the object? + // CHECK-FIXES: Z give_me_a_name(42); + + typedef Z ZT; + ZT(42, 13); + // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: object destroyed immediately after creation; did you mean to name the object? + // CHECK-FIXES: ZT give_me_a_name(42, 13); + + using TT = TCtorDefaultArg<T>; + TT(42); + // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: object destroyed immediately after creation; did you mean to name the object? + // CHECK-FIXES: TT give_me_a_name(42); + + (void)0; +} + void test() { Foo(42); // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: object destroyed immediately after creation; did you mean to name the object? 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 @@ -29,10 +29,11 @@ Finder->addMatcher( mapAnyOf(cxxConstructExpr, cxxUnresolvedConstructExpr) .with(hasParent(compoundStmt().bind("compound")), - anyOf(hasType(cxxRecordDecl(hasNonTrivialDestructor())), - hasType(templateSpecializationType( + anyOf(hasType(hasCanonicalType(recordType(hasDeclaration( + cxxRecordDecl(hasNonTrivialDestructor()))))), + hasType(hasCanonicalType(templateSpecializationType( hasDeclaration(classTemplateDecl(has( - cxxRecordDecl(hasNonTrivialDestructor())))))))) + cxxRecordDecl(hasNonTrivialDestructor()))))))))) .bind("expr"), this); }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits