erichkeane added a comment.

The switching that to 'done' seems to have broken cases where the partial 
specialization itself has requires clauses on it, see 
https://github.com/llvm/llvm-project/blob/main/clang/test/CXX/temp/temp.constr/temp.constr.order/class-template-partial-specializations.cpp#L75

Static Assert on 75 and 76 now fail with:

   error: 'error' diagnostics seen but not expected:
    File 
/localdisk2/ekeane1/workspaces/llvm-project/clang/test/CXX/temp/temp.constr/temp.constr.order/class-template-partial-specializations.cpp
 Line 75: static assertion failed due to requirement 'S<1>::F<unsigned 
int>::value == 2'
    File 
/localdisk2/ekeane1/workspaces/llvm-project/clang/test/CXX/temp/temp.constr/temp.constr.order/class-template-partial-specializations.cpp
 Line 76: static assertion failed due to requirement 'S<1>::F<char[10]>::value 
== 3'
  error: 'note' diagnostics seen but not expected:
    File 
/localdisk2/ekeane1/workspaces/llvm-project/clang/test/CXX/temp/temp.constr/temp.constr.order/class-template-partial-specializations.cpp
 Line 75: expression evaluates to '1 == 2'
    File 
/localdisk2/ekeane1/workspaces/llvm-project/clang/test/CXX/temp/temp.constr/temp.constr.order/class-template-partial-specializations.cpp
 Line 76: expression evaluates to '1 == 3'
  4 errors generated.

AND 
https://github.com/llvm/llvm-project/blob/main/clang/test/SemaTemplate/concepts.cpp#L323

  error: 'error' diagnostics seen but not expected:
    File 
/localdisk2/ekeane1/workspaces/llvm-project/clang/test/SemaTemplate/concepts.cpp
 Line 332: no type named 'type' in 
'DeducedTemplateArgs::ItrTraits<DeducedTemplateArgs::not_complete_itr>::Ptr<DeducedTemplateArgs::not_complete_itr>'
  error: 'note' diagnostics seen but not expected:
    File 
/localdisk2/ekeane1/workspaces/llvm-project/clang/test/SemaTemplate/concepts.cpp
 Line 341: in instantiation of template class 
'DeducedTemplateArgs::ItrTraits<DeducedTemplateArgs::complete_itr>' requested 
here
  2 errors generated.

So I think it is causing something to not be in the right order there 
(particularly the 1st one).  I'll look into the identity replacement of 
template args.



================
Comment at: clang/lib/Sema/SemaTemplateInstantiate.cpp:291
 /// encountering a lambda generic call operator, and continue looking for
 /// arguments on an enclosing class template.
 
----------------
alexander-shaposhnikov wrote:
> /* not directly related to this patch, just one thought while we are here */ 
> it would be useful to add missing documentation (comments) for the last 
> parameter
> (SkipForSpecialization)
> p.s. perhaps, expanding the comment (or even adding some examples) would be 
> super helpful as well (for future readers)
I definitely agree.. I don't particularly understand what happened there, but I 
couldn't come up with an alternate fix/come up with a 'better' solution to the 
problem.  See original commit here: https://reviews.llvm.org/D134128



CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D147722/new/

https://reviews.llvm.org/D147722

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to