forked from OSchip/llvm-project
[clang-tidy] Use `hasCanonicalType()` matcher in `bugprone-unused-raii` check
Fixes PR#52217. Reviewed By: simon.giesecke Differential Revision: https://reviews.llvm.org/D113429
This commit is contained in:
parent
ab112c2964
commit
987a21522f
|
@ -29,10 +29,11 @@ void UnusedRaiiCheck::registerMatchers(MatchFinder *Finder) {
|
|||
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);
|
||||
}
|
||||
|
|
|
@ -82,6 +82,28 @@ void templatetest() {
|
|||
(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?
|
||||
|
|
Loading…
Reference in New Issue