diff options
author | Aaron Ballman <aaron@aaronballman.com> | 2013-10-05 22:45:34 +0000 |
---|---|---|
committer | Aaron Ballman <aaron@aaronballman.com> | 2013-10-05 22:45:34 +0000 |
commit | 4c9b7dc92e22f58f7a621e72bb6a90d77d986ef3 (patch) | |
tree | 7581c67b6fd0bba5a0156675aa70bbf67b829f91 /clang | |
parent | dbd2ebb07e54dff6758cc72c0a939a8abfe98c9a (diff) | |
download | bcm5719-llvm-4c9b7dc92e22f58f7a621e72bb6a90d77d986ef3.tar.gz bcm5719-llvm-4c9b7dc92e22f58f7a621e72bb6a90d77d986ef3.zip |
Switching the CallableWhen attribute over to using the string literal helper function instead of custom logic.
llvm-svn: 192050
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Sema/SemaDeclAttr.cpp | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp index 41cc3fd285a..1985de4c1b2 100644 --- a/clang/lib/Sema/SemaDeclAttr.cpp +++ b/clang/lib/Sema/SemaDeclAttr.cpp @@ -1059,25 +1059,19 @@ static void handleCallableWhenAttr(Sema &S, Decl *D, for (unsigned ArgIndex = 0; ArgIndex < Attr.getNumArgs(); ++ArgIndex) { CallableWhenAttr::ConsumedState CallableState; - if (Attr.isArgExpr(ArgIndex) && - isa<StringLiteral>(Attr.getArgAsExpr(ArgIndex))) { - - Expr *Arg = Attr.getArgAsExpr(ArgIndex); - StringRef StateString = cast<StringLiteral>(Arg)->getString(); - - if (!CallableWhenAttr::ConvertStrToConsumedState(StateString, - CallableState)) { - S.Diag(Arg->getExprLoc(), diag::warn_attribute_type_not_supported) - << Attr.getName() << StateString; - return; - } - - States.push_back(CallableState); - } else { - S.Diag(Attr.getLoc(), diag::err_attribute_argument_type) << Attr.getName() - << AANT_ArgumentString; + StringRef StateString; + SourceLocation Loc; + if (!S.checkStringLiteralArgumentAttr(Attr, ArgIndex, StateString, &Loc)) + return; + + if (!CallableWhenAttr::ConvertStrToConsumedState(StateString, + CallableState)) { + S.Diag(Loc, diag::warn_attribute_type_not_supported) + << Attr.getName() << StateString; return; } + + States.push_back(CallableState); } D->addAttr(::new (S.Context) |