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] Add missing restrictions


This patch adds the missing restrictions No_Local_Timing_Events
and No_Specific_Termination_Handlers. It also properly marks
No_Asynchronous_Control, No_Unchecked_Conversion, and
No_Unchecked_Deallocation as GNAT defined restrictions (they
were in the RM previously, but were removed once the No_Dependence
restriction was added, but we retain them in GNAT anyway.

The following example shows the changes in action
(compiled with -gnat05 -gnatj60):

     1. pragma Restrictions (No_Local_Timing_Events);
     2. pragma Restrictions (No_Specific_Termination_Handlers);
     3. pragma Restrictions (No_Implementation_Restrictions);
     4. pragma Restrictions (No_Asynchronous_Control);
                             |
        >>> violation of restriction
            "No_Implementation_Restrictions" at line 3

     5. pragma Restrictions (No_Unchecked_Conversion);
                             |
        >>> violation of restriction
            "No_Implementation_Restrictions" at line 3

     6. pragma Restrictions (No_Unchecked_Deallocation);
                             |
        >>> violation of restriction
            "No_Implementation_Restrictions" at line 3

     7. with Ada.Real_Time.Timing_Events;
     8. with Ada.Task_Termination;
     9. with Ada.Task_Identification;
    10. procedure NewRestrictions is
    11.    E : Ada.Real_Time.Timing_Events.Timing_Event;
           |
        >>> violation of restriction
            "No_Local_Timing_Events" at line 1

    12.    T : Ada.Task_Identification.Task_Id;
    13.    H : Ada.Task_Termination.Termination_Handler;
    14. begin
    15.    Ada.Task_Termination.Set_Specific_Handler (T, H);
                               |
        >>> violation of restriction
            "No_Specific_Termination_Handlers" at line 2

    16.    H := Ada.Task_Termination.Specific_Handler (T);
                                    |
        >>> violation of restriction
            "No_Specific_Termination_Handlers" at line 2

    17. end;

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

2008-05-28  Robert Dewar  <dewar@adacore.com>

	* restrict.ads:
	Add missing restrictions, and properly label all GNAT defined ones
	
	* rtsfind.ads:
	Add entry for Ada_Real_Time.Timing_Events.Timing_Event
	Add entry for Ada.Task_Termination.Set_Specific_Handler
	Add entry for Ada.Task_Termination.Specific_Handler
	
	* s-rident.ads:
	Add missing restrictions and properly mark all gnat defined ones
	
	* sem_ch3.adb:
	(Analyze_Object_Declaration): Check No_Local_Timing_Events restriction
	
	* sem_res.adb:
	(Resolve_Call): Check violation of No_Specific_Termination_Handlers

	* gnat_rm.texi: Add missing restrictions, and properly label all
	GNAT defined ones

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]