This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Ada] Improve recovery for misordered PRIVATE/ABSTRACT/TAGGED keywords


This patch improves the error recovery for cases in which the keywords
PRIVATE, ABSTRACT, TAGGED are not in the required order, as shown by
this test (previously the diagnostic was missing semicolon with errors
cascaded after this message).

     1. package keyorder is
     2.    type FP is private tagged;
                              |
        >>> "tagged" must come before "private"

     3.    type RP is private abstract tagged;
                              |
        >>> "abstract tagged" must come before "private"

     4.    type RA is private abstract;
                              |
        >>> "abstract tagged" must come before "private"

     5.
     6.    generic
     7.       type OK is abstract tagged private;
     8.       type FT is private tagged;
                                 |
        >>> "tagged" must come before "private"

     9.       type FP is private abstract tagged;
                                 |
        >>> "abstract tagged" must come before "private"

    10.       type RA is private abstract;
                                 |
        >>> "abstract tagged" must come before "private"

    11.    package PP is end;
    12. end;

Tested on x86_64-pc-linux-gnu, committed on trunk

2010-10-12  Robert Dewar  <dewar@adacore.com>

	* par-ch12.adb (P_Formal_Private_Type_Definition): Improve error
	messages and recovery for case of out of order Abstract/Tagged/Private
	keywords.
	* par-ch3.adb (P_Type_Declaration): Improve error messages and recovery
	for case of out of order Abstract/Tagged/Private keywords.

Attachment: difs
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]