[cfe-dev] (no subject)
Aitor San Juan
aitor.sj at opendeusto.es
Thu May 1 04:31:59 PDT 2014
Hello,
In a checker I want to test whether an argument to a function call is a
String literal, but I'm a bit stuck. Could anybody shed a bit of light on
this?
1. This way seems to not work (although no compile-time error), but I don't
understand why:
const Expr *arg = CE->getArg(0); // CE is a CallExpr
if ((arg != NULL) && (clang::isa<clang::StringLiteral>(arg))){
...
2. The following does not compile:
const Expr *arg = CE->getArg(0); // CE is a CallExpr
if (StringLiteral *SL = dyn_cast<StringLiteral>(arg)) {
invalid conversion from ‘llvm::cast_retty<clang::StringLiteral, const
clang::Expr*>::ret_type {aka const clang::StringLiteral*}’ to
‘clang::StringLiteral*’ [-fpermissive]
if (StringLiteral *SL = dyn_cast<StringLiteral>(arg)) {
^
3. The following does not compile, however there's a non-const getArg()
method:
Expr *arg = CE->getArg(0); // CE is a CallExpr
if (StringLiteral *SL = dyn_cast<StringLiteral>(arg)) {
error: invalid conversion from ‘const clang::Expr*’ to ‘clang::Expr*’
[-fpermissive]
Expr *arg = CE->getArg(0);
^
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20140501/8116fd2e/attachment.html>
More information about the cfe-dev
mailing list