ilya-biryukov added a comment.

I haven't seen your reply before posting my initial comments. Many thanks for a 
very quick turnaroud on this!
Will wait for module folks to approve.



================
Comment at: clang/lib/Sema/SemaTemplate.cpp:8674
     auto *Old = Previous.getRepresentativeDecl();
     Diag(NameLoc, isa<ConceptDecl>(Old) ? diag::err_redefinition :
          diag::err_redefinition_different_kind) << NewDecl->getDeclName();
----------------
ilya-biryukov wrote:
> Not sure if reporting the redefinition if `isSameEntity` returns false is the 
> right approach here.
> This leads to errors on definitions of something like:
> ```
> // foo.h
> template <class T> concept A = false;
> 
> // bar.h
> template <class T, class U> concept A = true;
> 
> #include "foo.h"
> #include "bar.h" // <-- redefinition error shown here
> ```
> 
> The alternative is the "ambiguous reference" error on the use of the concept. 
> I will check what happens for variables and typedefs in that case and follow 
> the same pattern.
Clang tends to do "ambiguous reference" instead of the behavior we had in this 
patch.
I have updated it to be consistent with what typedefs and other symbols produce.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D128921

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

Reply via email to