[cfe-dev] getLHS() and getRHS()
Yang Chen
chenyang at cs.utah.edu
Tue Nov 20 13:56:34 PST 2012
Rambo wrote:
> As far as I know,IgnoreImpCasts, IgnoreParens, IgnoreParenCasts don't help to
> my question. http://a6128786ad6c6ad61b66ad4ddf09b1bd8
> <http://a6128786ad6c6ad61b66ad4ddf09b1bd8> this link show us that
> "IgnoreParens - Ignore parentheses. If this Expr is a ParenExpr, return its
> subexpression. If that subexpression is also a ParenExpr, then this method
> recursively returns its subexpression, and so forth. Otherwise, the method
> returns the current Expr. "I doubt your solution exactly.
>
>
I meant that often you don't need to explicitly dyn_cast an Expr to
ImplicitCastExpr. Instead, you can use IgnoreXXX function to strip off
casts and/or parentheses. For example, your code was:
----------------------------------------------------------------------------------------------
Expr *rhs=Decl2->getRHS();
if(ImplicitCastExpr *ICE = dyn_cast<ImplicitCastExpr>(rhs))
{
Curr=ICE->getSubExpr();
if(DeclRefExpr *ICE1 = dyn_cast<DeclRefExpr>(Curr))
De=ICE1->getNameInfo();
...
---------------------------------------------------------------------------------------------
It could handle cases like "A[4]" based on your example. But how about
"A[(4)]"? You might say that "A[(4)]" is ugly and does not exist in any
real code base, but there is no such guarantee. Anyway, since I don't
know what you are trying to achieve, just my 2 cents.
- Yang
More information about the cfe-dev
mailing list