<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Aug 12, 2014 at 9:17 AM, cedlemo <span dir="ltr"><<a href="mailto:cedlemo@gmx.com">cedlemo@gmx.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"><div class="">
<div class="gmail_quote">On 11/08/2014 20:37, Richard Smith wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<p>according to the clang reference on type <a href="http://clang.llvm.org/docs/InternalsManual.html#canonical-types">http://clang.llvm.org/docs/InternalsManual.html#canonical-types</a>
, I thought that the isCanonical() should return true when
no typedef is involved.</p>
</div>
</blockquote>
<div>No, there are lots of other things that can make a type
non-canonical. <br>
</div>
<br>
</div></div>
Could you be a bit more specific ?</div></blockquote><div><br></div><div>Sure. Consider:</div><div><br></div><div> int (x);</div><div><br></div><div>The type of x is not a BuiltinType; it's a ParenType whose canonical type is a BuiltinType. And given</div>
<div><br></div><div> struct X { int n; };</div><div> struct X x;</div><div><br></div><div>the type of x will probably be represented as an ElaboratedType whose canonical type is a RecordType.</div></div></div></div>