[cfe-dev] Is it safe to cast-away constness in RecursiveASTVisitors?

Roman Popov via cfe-dev cfe-dev at lists.llvm.org
Tue Jul 10 11:40:52 PDT 2018


Thanks,
I wonder why const overloads are not provided in this case...

вт, 10 июл. 2018 г. в 11:23, David Tarditi <dtarditi at microsoft.com>:

> It should be safe to do, as long as  the new code that you add to your
> visitor doesn’t modify AST objects.   I’ve done this in the past and
> haven’t run into any issues.
>
>
>
> *From:* cfe-dev <cfe-dev-bounces at lists.llvm.org> *On Behalf Of *Roman
> Popov via cfe-dev
> *Sent:* Thursday, June 28, 2018 5:53 AM
> *To:* Clang Dev <cfe-dev at lists.llvm.org>
> *Subject:* [cfe-dev] Is it safe to cast-away constness in
> RecursiveASTVisitors?
>
>
>
> Hi all,
>
>
>
> I want to implement RecursiveASTVisitor to find certain nodes in AST.
> This class should not modify AST, so I want to make a search method to be
> const:
>
>
>
> bool MyCallSearch::FindMyCall (const clang::Stmt *rootStmt ) const {
>
>      this->TraverseStmt(stmt);
>
> }
>
>
>
> Unfortunately,  RecursiveASTVisitor methods are non-const and accept
> non-const pointers to AST nodes. So I wonder, is it safe to cast away
> constness like this ? :
>
>
>
> bool MyCallSearch::FindMyCall (const clang::Stmt *rootStmt ) const {
>
>      const_cast<MyCallSearch*>(this)->TraverseStmt(const_cast<clang::Stmt
> *>(stmt));
>
> }
>
>
>
> Thanks,
>
> Roman
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20180710/24701f2a/attachment.html>


More information about the cfe-dev mailing list