<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">I tried to replicate the way the existing ‘missing typename’ diagnostic behaved for MSVC compatibility.  Is there something more that needs to be done here?  I’m not sure how I can verify that the resulting IR is correct on Windows, though...</div><div class=""><br class=""></div><div class=""><blockquote type="cite" class=""><div class="">+void Sema::diagnoseMissingTypename(IdentifierInfo *II, SourceLocation IILoc,</div><div class="">+                                   Scope *S, CXXScopeSpec *SS) {</div><div class="">+  unsigned DiagID = diag::err_typename_missing;</div><div class="">+  if (getLangOpts().MSVCCompat && isMicrosoftMissingTypename(SS, S))</div><div class="">+    DiagID = diag::ext_typename_missing;</div></blockquote><br class=""></div><div class="">Ben</div><div class=""><br class=""></div><div><blockquote type="cite" class=""><div class="">On Feb 11, 2015, at 7:34 PM, Bataev, Alexey <<a href="mailto:a.bataev@gmx.com" class="">a.bataev@gmx.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">
  
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" class="">
  
  <div bgcolor="#FFFFFF" text="#000000" class="">
    <div class="moz-cite-prefix">Hi Ben,<br class="">
      I don't think your patch is compatible with MSVC. MSVC accepts
      this code and clang should accept it and generate proper LLVM IR.
      Actually, you can run into similar code in MSVC system headers.
      That's the main problem<br class="">
      <pre class="moz-signature" cols="72">Best regards,
Alexey Bataev
=============
Software Engineer
Intel Compiler Team
Intel Corp. </pre>
      11.02.2015 20:37, Ben Langmuir пишет:<br class="">
    </div>
    <blockquote cite="mid:%3CD464E701-0272-419E-8AB6-A23596A58CFA@apple.com%3E" type="cite" class="">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" class="">
      Ping
      <div class=""><br class="">
        <div class="">
          <blockquote type="cite" class="">
            <div class="">On Jan 26, 2015, at 9:08 AM, Ben Langmuir <<a moz-do-not-send="true" href="mailto:blangmuir@apple.com" class="">blangmuir@apple.com</a>> wrote:</div>
            <br class="Apple-interchange-newline">
            <div class="">
              <meta http-equiv="Content-Type" content="text/html;
                charset=UTF-8" class="">
              <div style="word-wrap: break-word; -webkit-nbsp-mode:
                space; -webkit-line-break: after-white-space;" class="">This
                patch diagnoses a missing ‘typename’ keyword on nested
                template types like A<T>::B<U>, to fix <a moz-do-not-send="true" href="http://llvm.org/pr16909" class="">llvm.org/pr16909</a>. In addition to fixing
                an accepts-invalid, in C++11 such types would cause
                assertion failures and/or invalid LLVM IR when used with
                ‘auto’.
                <div class=""><br class="">
                </div>
                <div class="">I’m not 100% sure if the changes to
                  test/CXX/basic/basic.lookup/basic.lookup.qual/class.qual/p2.cpp
                  are desirable, or if we should suppress the missing
                  ‘typename’ diagnostic when we’re already recovering on
                  X<T>::X<T>.  I’m open to suggestions :-)</div>
                <div class=""><br class="">
                </div>
                <div class="">Ben</div>
                <div class=""><br class="">
                </div>
              </div>
              <span id="cid:F07AC0C3-0C93-4BAC-9DA0-7121ACA68F5D@apple.com" class=""><pr16909.patch></span>
              <meta http-equiv="Content-Type" content="text/html;
                charset=UTF-8" class="">
            </div>
          </blockquote>
        </div>
        <br class="">
      </div>
    </blockquote>
    <br class="">
  </div>

</div></blockquote></div><br class=""></body></html>