<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" 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>
</body>
</html>