<meta http-equiv="content-type" content="text/html; charset=utf-8"><span class="Apple-style-span" style="font-size: medium; "><pre><font class="Apple-style-span" face="'Times New Roman'"><span class="Apple-style-span" style="white-space: normal;">Hi Sebastian,</span></font></pre>
<pre><font class="Apple-style-span" face="'Times New Roman'"><span class="Apple-style-span" style="white-space: normal;">I don't subscribe to the mailing list, so please cc me in any replies or I won't see them until I browse the archives.</span></font></pre>
<pre><font class="Apple-style-span" face="'Times New Roman'"><span class="Apple-style-span" style="white-space: normal;">For your question, is there any difference between determining when to print an AKA earlier rather than later?  If an AKA is required, does it hurt that it is figured out earlier rather than later?  The other point is that during conversion to a string, each diagnostic argument can only see the previous arguments.  That means the first type in a diagnostic can't see the other types, so it can't determine if it needs to print an AKA.</span></font></pre>
<pre style="font-family: 'Times New Roman'; "><meta http-equiv="content-type" content="text/html; charset=utf-8"><span class="Apple-style-span" style="font-family: 'Times New Roman'; white-space: normal; "><b>Sebastian Redl wrote:</b></span></pre>
<pre style="font-family: 'Times New Roman'; ">Is this the best way to do it? Can we be less eager about this, i.e. 
determine whether we need the AKA when generating the string instead of 
when adding the argument?</pre></span><br><div class="gmail_quote">On Mon, Apr 25, 2011 at 8:38 PM, Richard Trieu <span dir="ltr"><<a href="mailto:rtrieu@google.com">rtrieu@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Ping.  Any comments on this patch?<div><div></div><div class="h5"><br><br><div class="gmail_quote">On Fri, Apr 15, 2011 at 10:25 PM, Richard Trieu <span dir="ltr"><<a href="mailto:rtrieu@google.com" target="_blank">rtrieu@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
See <a href="http://llvm.org/bugs/show_bug.cgi?id=9548" target="_blank">http://llvm.org/bugs/show_bug.cgi?id=9548</a><div><br></div><div>When two different types has the same text representation in the same diagnostic message, print an a.k.a. after the type if the a.k.a. gives extra information about the type.</div>


<div><br></div><div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">class versa_string;</span></div>
<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"><br></span></div><div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"></span><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">typedef versa_string string;</span></div>


<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"><br></span></div><div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"></span><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">namespace std {template <typename T> class vector;}</span></div>


<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"><br></span></div><div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"></span><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">using std::vector;</span></div>


<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"><br></span></div><div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"></span><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">void f(vector<string> v);</span></div>


<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"><br></span></div><div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"></span><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">namespace std {</span></div>


<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"></span><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">class basic_string;</span></div>
<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"></span><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">typedef basic_string string;</span></div>
<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"></span><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">template <typename T> class vector {};</span></div>
<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"></span><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">void g() {</span></div>
<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"></span><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">  vector<string> v;</span></div>
<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"></span><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">  f(v);</span></div>
<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"></span><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">}</span></div>
<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">}</span></div><div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"><br>
</span></div><div><font face="monospace" size="3"><span style="white-space:pre-wrap">Old message:</span></font></div>
<div><font face="monospace" size="3"><span style="white-space:pre-wrap">----------------</span></font></div>
<div><font face="monospace" size="3"><span style="white-space:pre-wrap"></span></font><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">test.cc:15:3: error: no matching function for call to 'f'</span></div>


<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"></span><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">  f(&v);</span></div>
<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"></span><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">  ^</span></div>
<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"></span><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">test.cc:7:6: note: candidate function not viable: no known conversion from</span></div>


<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">      'vector<string>' to 'vector<string>' for 1st argument</span></div>
<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"></span><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">void f(vector<string> v);</span></div>
<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">     ^</span></div><div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"></span><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">1 error generated.</span></div>


<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"><br></span></div><div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">New message:</span></div>
<div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">---------------</span></div><div>
<font face="monospace" size="3"><span style="white-space:pre-wrap">test.cc:15:3: error: no matching function for call to 'f'
  f(v);
  ^
test.cc:7:6: note: candidate function not viable: no known conversion from
      'vector<string>' (aka 'std::vector<std::basic_string>') to
      'vector<string>' (aka 'std::vector<versa_string>') for 1st argument
void f(vector<string> v);
     ^
1 error generated.</span></font><span style="font-family:monospace;white-space:pre-wrap;font-size:medium">
</span></div><div><span style="font-family:monospace;white-space:pre-wrap;font-size:medium"><br></span></div><div>
<span style="font-family:monospace;white-space:pre-wrap;font-size:medium"><br></span></div>
</blockquote></div><br>
</div></div></blockquote></div><br>