<div dir="ltr">There probably was an error, but I missed it.  I am working on a clang-tidy module, and sometimes it gets quite a bit of noise on the output.</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jul 1, 2014 at 3:24 PM, Nikola Smiljanic <span dir="ltr"><<a href="mailto:popizdeh@gmail.com" target="_blank">popizdeh@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I thought no error was reported? I'm not surprised that getName returns an empty string for invalid code :)</div>
<div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jul 2, 2014 at 8:21 AM, Reid Kleckner <span dir="ltr"><<a href="mailto:rnk@google.com" target="_blank">rnk@google.com</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid"><div dir="ltr">Why?  The AST is invalid, and Clang diagnoses it.<div>
<br><div><div>$ cat t.cpp</div><div>namespace N { };</div>

<div>struct N::A { };</div><div><br></div><div>$ clang -c t.cpp<br></div><div>t.cpp:2:11: error: no struct named 'A' in namespace 'N'</div>
<div>struct N::A { };</div></div><div><br></div></div></div><div><div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jul 1, 2014 at 3:13 PM, Nikola Smiljanic <span dir="ltr"><<a href="mailto:popizdeh@gmail.com" target="_blank">popizdeh@gmail.com</a>></span> wrote:<br>



<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid"><div dir="ltr">Could you file a bug report for this Daniel?</div>
<div><div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Wed, Jul 2, 2014 at 3:02 AM, Daniel Dilts <span dir="ltr"><<a href="mailto:diltsman@gmail.com" target="_blank">diltsman@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid"><div dir="ltr"><div>I found my answer in 9p11 in the standard.  Seems that without the forward declaration it is invalid.</div>





<div><br></div><div>If a class-head-name contains a nested-name-specifier, the class-specifier shall refer to a class that was previously declared directly in the class or namespace to which the nested-name-specifier refers, or in an element of the inline namespace set of that namespace (i.e., not merely inherited or introduced by a using-declaration), and the class-specifier shall appear in a namespace enclosing the previous declaration. </div>






</div><div><div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jul 1, 2014 at 9:21 AM, Daniel Dilts <span dir="ltr"><<a href="mailto:diltsman@gmail.com" target="_blank">diltsman@gmail.com</a>></span> wrote:<br>






<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid"><div dir="ltr"><div>If I have this code then everything works.  If I get rid of the forward declaration, then any method returns an empty string.  Is the forward declaration mandatory when defining the class like this?</div>







<div><br></div><div>namespace N {</div><div>  class BaseClass1;</div><div><div>}</div><div>class N::BaseClass1 {<br>public:<br>  BaseClass1(int i);<br>  BaseClass1(const BaseClass1 &right);<br>  virtual ~BaseClass1();<br>






  BaseClass1 &operator=(const BaseClass1 &right);</div>
<div>}</div></div></div><div><div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jun 30, 2014 at 3:35 PM, Reid Kleckner <span dir="ltr"><<a href="mailto:rnk@google.com" target="_blank">rnk@google.com</a>></span> wrote:<br>







<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid"><div dir="ltr">Try getDeclName(), getNameAsString(), or others.  getName() only works if the name is a simple identifier:<div>







<br></div><div><div>  /// getName - Get the name of identifier for this declaration as a StringRef.</div>
<div>  /// This requires that the declaration have a name and that it be a simple</div><div>  /// identifier.</div><div>  StringRef getName() const {</div><div>    assert(Name.isIdentifier() && "Name is not a simple identifier");</div>








<div>    return getIdentifier() ? getIdentifier()->getName() : "";</div><div>  }</div><div><br></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote"><div><div>On Mon, Jun 30, 2014 at 3:21 PM, Daniel Dilts <span dir="ltr"><<a href="mailto:diltsman@gmail.com" target="_blank">diltsman@gmail.com</a>></span> wrote:<br>








</div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid"><div><div><div dir="ltr"><div>I am attempting to get the name of a CXXRecordDecl that I have identified with an AST matcher.  I am using Class->getName().str() to get the class name.</div>








<div><br></div><div>namespace N {<br>class SomeNonInterface {<br>
  virtual void func1() = 0;<br>  virtual void func2() {}<br>};</div><div>}</div><div><br></div><div>It works great for the above code.  Gives me "SomeNonInterface" as the name.</div><div><br></div><div>class N::BaseClass1 {<br>









public:<br>  BaseClass1(int i);<br>  BaseClass1(const BaseClass1 &right);<br>  virtual ~BaseClass1();<br>  BaseClass1 &operator=(const BaseClass1 &right);<br>};</div><div><br></div><div>For the above code it gives me "" as the name.</div>









<div><br></div><div>How would I get the class name so that it works in all cases, even if the name in the declaration/definition is namespace qualified?  Or...did I hit a case that isn't legal?</div></div>
<br></div></div>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><br></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>