From: dmalcolm Date: Mon, 2 May 2016 18:36:40 +0000 (+0000) Subject: PR c++/62314: add fixit hint for missing "template <> " in explicit specialization X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=002c3f2881626f4dea765f89e4a11be1f4bac240;p=thirdparty%2Fgcc.git PR c++/62314: add fixit hint for missing "template <> " in explicit specialization gcc/cp/ChangeLog: PR c++/62314 * parser.c (cp_parser_class_head): Capture the start location; use it to emit a fix-it insertion hint when complaining about missing "template <> " in explicit specializations. gcc/testsuite/ChangeLog: PR c++/62314 * g++.dg/pr62314.C: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235777 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c40efcfc2cf9..18292e2a7929 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2016-05-02 David Malcolm + + PR c++/62314 + * parser.c (cp_parser_class_head): Capture the start location; + use it to emit a fix-it insertion hint when complaining + about missing "template <> " in explicit specializations. + 2016-05-02 Richard Sandiford * init.c (build_new_1): Use shift operators instead of wi:: shifts. diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index ded0dee6b5fa..667ed97cbec6 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -21656,6 +21656,8 @@ cp_parser_class_head (cp_parser* parser, if (class_key == none_type) return error_mark_node; + location_t class_head_start_location = input_location; + /* Parse the attributes. */ attributes = cp_parser_attributes_opt (parser); @@ -21872,8 +21874,20 @@ cp_parser_class_head (cp_parser* parser, && parser->num_template_parameter_lists == 0 && template_id_p) { - error_at (type_start_token->location, - "an explicit specialization must be preceded by %