Update to match clang r331428.

llvm-svn: 331429
This commit is contained in:
Richard Smith 2018-05-03 03:59:50 +00:00
parent eaf11ad709
commit 800508b825
2 changed files with 10 additions and 15 deletions

View File

@ -89,7 +89,7 @@ void UseNoexceptCheck::check(const MatchFinder::MatchResult &Result) {
Result.Context->getLangOpts());
assert(FnTy && "FunctionProtoType is null.");
bool IsNoThrow = FnTy->isNothrow(*Result.Context);
bool IsNoThrow = FnTy->isNothrow();
StringRef ReplacementStr =
IsNoThrow
? NoexceptMacro.empty() ? "noexcept" : NoexceptMacro.c_str()

View File

@ -47,27 +47,22 @@ void NoexceptMoveConstructorCheck::check(
if (isUnresolvedExceptionSpec(ProtoType->getExceptionSpecType()))
return;
switch (ProtoType->getNoexceptSpec(*Result.Context)) {
case FunctionProtoType::NR_NoNoexcept:
if (!isNoexceptExceptionSpec(ProtoType->getExceptionSpecType())) {
diag(Decl->getLocation(), "move %0s should be marked noexcept")
<< MethodType;
// FIXME: Add a fixit.
break;
case FunctionProtoType::NR_Throw:
// Don't complain about nothrow(false), but complain on nothrow(expr)
// where expr evaluates to false.
if (const Expr *E = ProtoType->getNoexceptExpr()) {
if (isa<CXXBoolLiteralExpr>(E))
break;
return;
}
// Don't complain about nothrow(false), but complain on nothrow(expr)
// where expr evaluates to false.
if (ProtoType->canThrow() == CT_Can) {
Expr *E = ProtoType->getNoexceptExpr();
if (!isa<CXXBoolLiteralExpr>(ProtoType->getNoexceptExpr())) {
diag(E->getExprLoc(),
"noexcept specifier on the move %0 evaluates to 'false'")
<< MethodType;
}
break;
case FunctionProtoType::NR_Nothrow:
case FunctionProtoType::NR_Dependent:
case FunctionProtoType::NR_BadNoexcept:
break;
}
}
}