On 07/11/2013 02:59 PM, Andrew Sutton wrote:
pp_cxx_requirement_parameter_list (cxx_pretty_printer *pp, tree t)
This should be merged with pp_cxx_parameter_declaration_clause.
+reqparms_to_string (tree p)
And this should have a more generic name.
+ // requries clause.
"requires"
+ if (check_requirements (t, args))
+ return;
+
+ ++processing_template_decl;
+ tree subst = instantiate_requirements (t, args);
+ --processing_template_decl;
Surely you need to instantiate before checking, here and elsewhere.
+ inform (loc, " %qE is not valid syntax", TREE_OPERAND (t, 0));
I don't think I would mention "syntax" here, since a syntax error would
have been diagnosed at parse time rather than constraint checking time.
+// In an unevaluated context, the substitution of parm decls are not
+// properly chained during substitution. Do that here.
+static tree
+fix_local_parms (tree sparms)
....
A lot of the new code in pt.c doesn't seem like it needs to be there;
let's put as much in constraint.cc as we can. Let's move some of the
bits out of semantics.c as well.
Incidentally, I notice a funny thing about the headers of the new files:
/* Process declarations and variables for C++ compiler.
...
// Components for processing constraints and evaluating constraints.
The second line should move to the top of the file, replacing the first
line.
Jason