[AST][RecoveryExpr] Fix a bogus unused diagnostic when the type is preserved.

Reviewed By: sammccall

Differential Revision: https://reviews.llvm.org/D85716
This commit is contained in:
Haojian Wu 2020-08-21 15:48:59 +02:00
parent a4c3ed42ba
commit 466590192b
2 changed files with 13 additions and 0 deletions

View File

@ -2658,6 +2658,8 @@ bool Expr::isUnusedResultAWarning(const Expr *&WarnE, SourceLocation &Loc,
// Otherwise, the result of the cast is unused.
if (CE->getCastKind() == CK_ConstructorConversion)
return CE->getSubExpr()->isUnusedResultAWarning(WarnE, Loc, R1, R2, Ctx);
if (CE->getCastKind() == CK_Dependent)
return false;
WarnE = this;
if (const CXXFunctionalCastExpr *CXXCE =

View File

@ -75,3 +75,14 @@ namespace test5 {
template<typename...Ts> U<Ts...>& f(); // expected-error {{pack expansion used as argument for non-pack parameter of alias template}}
double &s1 = f(); // expected-error {{no matching function}}
}
namespace test6 {
struct T {
T() = delete; // expected-note {{has been explicitly marked deleted here}}
};
void func() {
// verify that no -Wunused-value diagnostic.
(T(T())); // expected-error {{call to deleted constructor}}
}
}