<div dir="ltr">I don't believe that information is preserved in Clang's AST (if it was, we'd probably want to use it from the DWARF emission (GCC judiciously emits only referenced alias directives, whereas clang just emits them all, unfortunately) - and also to power a -Wunused... hmm, I thought GCC had a warning for unused using directives, but I can't seem to reproduce that now, so maybe I hallucinated).</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Oct 22, 2019 at 2:02 PM Eric Bayer via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  

    
  
  <div bgcolor="#FFFFFF">
    <p>Hi,</p>
    <p>I have a plugin I'm working on a clang plugin where we need to
      determine all the things used in the creation of a piece of code. 
      Right now we have a situation as follows:</p>
    <pre>namespace X { class Y { enum Z { A=0, B, C }; }; };
using X::Y;

void MyFunc() {
        Y::Z q;
        ...
}
</pre>
    <p>What we currently do is traverse the whole of MyFunc looking for
      referenced elements using VisitStmt().  The problem I have is that
      I can't find any way to determine that "using X::Y;" was used and
      that it was involved in resolving "Y::Z" to "X::Y::Z" in the
      creation of "q".   This has not been a problem for all sorts of
      sugar (like typedefs, type aliases, etc), but I am beside myself
      to find a way in this case.  Is there any way to do this?  I'm
      even interested if it's a sort of "long way around" solution. 
      It's surprising to me that this has been this hard... there have
      been breadcrumbs for every other piece of syntactic sugar.<br>
    </p>
    <p>Thanks in advance,</p>
    <p>    -Eric<br>
    </p>
    <p>PS - I thought I had found some clues, but they only seemed to
      work for functions in one case (DeclRefExpr), and templates in
      another (getInstantiatedFromUsingDecl()).<br>
    </p>
  </div>

_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
</blockquote></div>