<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Thanks for the answer.  Damn.  Yeah, that is the conclusion I was
      coming to as well.  We had a similar problem capturing
      pre-processor macros as they really are not part of the AST. 
      Eventually I figured out a way to do it because I could capture
      data during the expansions and maintain a data structure on the
      side.  Unfortunately for name resolution there seems to be no
      similar callback/hook.<br>
    </p>
    <p>I also had wondered if there was some stage when maybe they'd be
      unresolved and I could build a data structure for later reference,
      but I've still not explored that avenue.<br>
    </p>
    <div class="moz-cite-prefix">   -Eric<br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">On 10/28/2019 1:08 PM, David Blaikie
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAENS6EvcH8WHnUi+oELn7Df3KPHykqBN7i2RnrJzAt7uvh-MPg@mail.gmail.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <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" moz-do-not-send="true">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"
            moz-do-not-send="true">cfe-dev@lists.llvm.org</a><br>
          <a
href="https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.llvm.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fcfe-dev&data=02%7C01%7Cebayer%40vmware.com%7Cfcbe32289d944707431608d75be2a86b%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C0%7C637078901357964774&sdata=XVbk5ITcs0GRewR5LqgwpXZ6xYulIfZFXVpMt7O8ApY%3D&reserved=0"
originalsrc="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev"
shash="YEJIKIybcZxafiIeA+EGK/qjqcHOFtwlCyushwvmpnv2YkvZwUy8GDCv+PrBSU+siloGdGfecOwdP0MgHwPMUYjaePAH3RiLcu0gqCpzJt+GQSiT26ayEoH0P4cSQX3me3pzn5I4Fypok1xL77Hg1ExaMKMHtBQRDr8iD4E6wIU="
            rel="noreferrer" target="_blank" moz-do-not-send="true">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
        </blockquote>
      </div>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>