[PATCH 3/4] [lambda] Address review comments.

Adam Butcher adam@jessamine.co.uk
Sat Aug 3 13:29:00 GMT 2013


---
 gcc/cp/cp-tree.h | 2 +-
 gcc/cp/decl.c    | 3 ++-
 gcc/cp/lambda.c  | 2 +-
 gcc/cp/parser.c  | 6 ++----
 gcc/cp/pt.c      | 4 ++--
 5 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 64ff4e3..17bb8b9 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -1089,7 +1089,7 @@ struct GTY(()) saved_scope {
 #define processing_specialization scope_chain->x_processing_specialization
 #define processing_explicit_instantiation scope_chain->x_processing_explicit_instantiation
 
-/* Nonzero if the function being declared was made a template due to it's
+/* Nonzero if the function being declared was made a template due to its
    parameter list containing generic type specifiers (`auto' or concept
    identifiers) rather than an explicit template parameter list.  */
 
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 98e8dc9..72332ba 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -10331,7 +10331,8 @@ grokdeclarator (const cp_declarator *declarator,
 
       if (type_uses_auto (type) && cxx_dialect < cxx1y)
 	{
-	  error ("parameter declared %<auto%> (unsupported prior to C++1y)");
+	  error ("use of %<auto%> in parameter declaration only available with "
+		 "-std=c++1y or -std=gnu++1y");
 	  type = error_mark_node;
 	}
 
diff --git a/gcc/cp/lambda.c b/gcc/cp/lambda.c
index cf662bb..015e6d1 100644
--- a/gcc/cp/lambda.c
+++ b/gcc/cp/lambda.c
@@ -776,7 +776,7 @@ maybe_add_lambda_conv_op (tree type)
   if (generic_lambda_p)
     {
       /* Construct the dependent member call for the static member function
-	 '_FUN' and remove 'auto' from it's return type to allow for simple
+	 '_FUN' and remove 'auto' from its return type to allow for simple
 	 implementation of the conversion operator.  */
 
       tree instance = build_nop (type, null_pointer_node);
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 45f5d7e..5169f66 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -8821,9 +8821,8 @@ cp_parser_lambda_declarator_opt (cp_parser* parser, tree lambda_expr)
 
       if (cxx_dialect < cxx1y)
 	cp_parser_error (parser,
-			 "Generic lambdas are only supported in C++1y mode.");
-
-      push_deferring_access_checks (dk_deferred);
+			 "generic lambdas are only available with "
+			 "-std=c++1y or -std=gnu++1y");
 
       template_param_list = cp_parser_template_parameter_list (parser);
 
@@ -8928,7 +8927,6 @@ cp_parser_lambda_declarator_opt (cp_parser* parser, tree lambda_expr)
 	DECL_NAME (DECL_ARGUMENTS (fco)) = get_identifier ("__closure");
 	if (template_param_list)
 	  {
-	    pop_deferring_access_checks ();
 	    fco = finish_member_template_decl (fco);
 	    finish_template_decl (template_param_list);
 	    --parser->num_template_parameter_lists;
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 6e209f8..a7baaba 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -21025,7 +21025,7 @@ is_auto (const_tree type)
 }
 
 /* Returns the first tree within T that is directly matched by PRED.  T may be a
-   type or PARM_DECL and is incrementally decomposed toward it's type-specifier
+   type or PARM_DECL and is incrementally decomposed toward its type-specifier
    until a match is found.  NULL_TREE is returned if PRED does not match any
    part of T.
 
@@ -21341,7 +21341,7 @@ add_implicit_template_parms (size_t count, tree parameters)
    template has no explicit template parameter list so has not been through the
    normal template head and tail processing.  add_implicit_template_parms tries
    to do the head; this tries to do the tail.  MEMBER_DECL_OPT should be
-   provided if the declaration is a class member such that it's template
+   provided if the declaration is a class member such that its template
    declaration can be completed.  If MEMBER_DECL_OPT is provided the finished
    form is returned.  Otherwise NULL_TREE is returned. */
 
-- 
1.8.3



More information about the Gcc-patches mailing list