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] fix infinite loop in limited-with


Tested on i686-linux, committed on trunk

Additional guards to prevent assertion errors or infinite loops when a limited_
with clause appears in an illegal context.
	
The command:

   gcc bad_3.adb -c -gnat05 -O0 -gnatE -gnato -gnatv -gnatf -gnatws -gnatd7

must yield:

Compiling: bad_3.adb

==============Error messages for source file: bad_3-test_it.adb
     2. limited with Bad_0;          -- ERROR: Limited with on a subunit.
                     |
        >>> limited with_clause not allowed here

 4 lines: 1 error

package Bad_0 is
    type My_Item is tagged record
        B : Boolean;
    end record;
end Bad_0;

limited with Bad_0;          -- ERROR: Limited with on a subunit.
separate (Bad_3)
procedure Test_It is
begin
    null;
end Test_It;

package body Bad_3 is
    procedure Test_It is separate;
end Bad_3;

package Bad_3 is
    procedure Test_It;
end Bad_3;

2007-08-31  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Analyze_Subunit_Context): When analyzing context
	clauses of subunits, ignore limited_with_clauses that are illegal and
	have not been fully analyzed.

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]