This is an archive of the discontinued LLVM Phabricator instance.

[Concepts] Implement subsection [dcl.spec.concept]p7 of the Concepts TS
ClosedPublic

Authored by nwilson on Mar 16 2016, 1:18 PM.

Diff Detail

Repository
rL LLVM

Event Timeline

nwilson updated this revision to Diff 50852.Mar 16 2016, 1:18 PM
nwilson retitled this revision from to [Concepts] Implement subsection [dcl.spec.concept]p7 of the Concepts TS.
nwilson updated this object.
nwilson added a subscriber: cfe-commits.
nwilson added inline comments.Mar 16 2016, 1:28 PM
lib/Sema/SemaDecl.cpp
7837 ↗(On Diff #50852)

Please let me know if there are thoughts about better error recovery here. I did this because we don't have the specifier information when checking an explicit specialization. So, we still diagnose for the explication specialization (one of the checks in this patch), when concept is specified, e.g.:
template<typename T> concept bool C() { return true; }
template <> concept bool C<int>() { return true; }

Would it be okay to pass Declarator to Sema::CheckFunctionTemplateSpecialization?

aaron.ballman edited edge metadata.Mar 28 2016, 8:37 AM

Generally looks good to me, but you should wait for @rsmith as he may have other ideas on the error recovery.

lib/Sema/SemaDecl.cpp
6295 ↗(On Diff #50852)

Can you put comments near the magic numbers to describe what they mean? e.g., 1 /*variable*/

Same comment applies elsewhere in the patch as well.

nwilson updated this revision to Diff 53103.Apr 8 2016, 4:52 PM
nwilson edited edge metadata.
  • Address Aaron's comments by putting comments next to the magic numbers
rsmith accepted this revision.Apr 8 2016, 5:21 PM
rsmith edited edge metadata.
This revision is now accepted and ready to land.Apr 8 2016, 5:21 PM
This revision was automatically updated to reflect the committed changes.