<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div><blockquote type="cite" class=""><div class="">On Oct 3, 2017, at 4:51 PM, Roman Popov via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" class="">cfe-dev@lists.llvm.org</a>> wrote:</div><div class=""><div dir="ltr" class="">Yes, this is what I have to do.<div class=""><br class=""></div><div class="">Actually RecursiveASTVisitor does not enforce constness, so probably it is AST matchers that are not consistent with rest of Clang API. </div></div></div></blockquote><div><br class=""></div>Clang is unfortunately just inconsistent about it.</div><div><br class=""></div><div>The AST is largely immutable by design, and the best solution would probably be to adopt what LLVM did to Type and just mass-refactor code to stop passing around const pointers at all.</div><div><br class=""></div><div>John.</div><div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class=""><br class=""></div><div class="">-Roman</div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">2017-10-03 12:49 GMT-07:00 Jonas Toth <span dir="ltr" class=""><<a href="mailto:jonas.toth@gmail.com" target="_blank" class="">jonas.toth@gmail.com</a>></span>:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF" class=""><p class="">Hi,</p><p class="">you can try `const_cast` as first try to do it.<br class="">
    </p><p class="">Jonas<br class="">
    </p><div class=""><div class="h5">
    <br class="">
    <div class="m_5852338317503187888moz-cite-prefix">Am 03.10.2017 um 21:31 schrieb Roman
      Popov via cfe-dev:<br class="">
    </div>
    </div></div><blockquote type="cite" class=""><div class=""><div class="h5">
      <div dir="ltr" class="">Hello,
        <div class=""><br class="">
        </div>
        <div class="">I'm writing a code refactoring tool that needs some static
          analysis capabilities.</div>
        <div class="">I've noticed that AST Matchers return const AST nodes, but
          static analysis sometimes wants to consume non-const pointers.</div>
        <div class=""><br class="">
        </div>
        <div class="">For example to build call graph I need to pass non-const
          pointer:</div>
        <div class=""> CallGraph::addToCallGraph(<wbr class="">Decl *D)</div>
        <div class=""><br class="">
        </div>
        <div class="">So does static analysis modifies AST? Or it's just a bug in
          method signature?</div>
        <div class=""><br class="">
        </div>
        <div class="">Thanks,</div>
        <div class="">Roman</div>
      </div>
      <br class="">
      <fieldset class="m_5852338317503187888mimeAttachmentHeader"></fieldset>
      <br class="">
      </div></div><pre class="">______________________________<wbr class="">_________________
cfe-dev mailing list
<a class="m_5852338317503187888moz-txt-link-abbreviated" href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>
<a class="m_5852338317503187888moz-txt-link-freetext" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" target="_blank">http://lists.llvm.org/cgi-bin/<wbr class="">mailman/listinfo/cfe-dev</a>
</pre>
    </blockquote>
    <br class="">
  </div>

</blockquote></div><br class=""></div>
_______________________________________________<br class="">cfe-dev mailing list<br class=""><a href="mailto:cfe-dev@lists.llvm.org" class="">cfe-dev@lists.llvm.org</a><br class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev<br class=""></div></blockquote></div><br class=""></body></html>