50 const auto *MatchedDecl = Result.Nodes.getNodeAs<CXXDestructorDecl>(
"decl");
53 SourceManager &SM = *Result.SourceManager;
54 const auto *FirstDecl = cast<CXXMethodDecl>(MatchedDecl->getFirstDecl());
56 FirstDecl->getEndLoc(), SM, getLangOpts());
57 const CharSourceRange SecondDeclRange = CharSourceRange::getTokenRange(
58 MatchedDecl->getBeginLoc(),
61 if (FirstDeclEnd.isInvalid() || SecondDeclRange.isInvalid())
65 diag(FirstDecl->getLocation(),
66 "class %0 can be made trivially destructible by defaulting the "
67 "destructor on its first declaration")
68 << FirstDecl->getParent()
69 << FixItHint::CreateInsertion(FirstDeclEnd,
" = default")
70 << FixItHint::CreateRemoval(SecondDeclRange);
71 diag(MatchedDecl->getLocation(),
"destructor definition is here",