From 6f123e484ce057e9f41079884f2dfb1fd62bbf82 Mon Sep 17 00:00:00 2001 From: Robert Dewar Date: Fri, 8 Oct 2010 12:57:10 +0000 Subject: [PATCH] sem_cat.adb (Check_Categorization_Dependencies): Remote types packages can depend on preleborated packages. 2010-10-08 Robert Dewar * sem_cat.adb (Check_Categorization_Dependencies): Remote types packages can depend on preleborated packages. 2010-10-08 Robert Dewar * sem_prag.adb (Check_Interrupt_Or_Attach_Handler): Pragmas Interrupt_Handler and Attach_Handler not allowed in generics. From-SVN: r165172 --- gcc/ada/ChangeLog | 10 ++++++++++ gcc/ada/sem_cat.adb | 11 +++++++++++ gcc/ada/sem_prag.adb | 4 ++++ 3 files changed, 25 insertions(+) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 2090134..b47253f 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,5 +1,15 @@ 2010-10-08 Robert Dewar + * sem_cat.adb (Check_Categorization_Dependencies): Remote types + packages can depend on preleborated packages. + +2010-10-08 Robert Dewar + + * sem_prag.adb (Check_Interrupt_Or_Attach_Handler): Pragmas + Interrupt_Handler and Attach_Handler not allowed in generics. + +2010-10-08 Robert Dewar + * ali.adb: Set Allocator_In_Body if AB parameter present on M line * ali.ads (Allocator_In_Body): New flag * bcheck.adb (Check_Consistent_Restrictions): Handle case of main diff --git a/gcc/ada/sem_cat.adb b/gcc/ada/sem_cat.adb index 1f4ed10..0bae96d 100644 --- a/gcc/ada/sem_cat.adb +++ b/gcc/ada/sem_cat.adb @@ -206,6 +206,17 @@ package body Sem_Cat is and then In_Package_Body (Unit_Entity) then null; + + -- Special case: Remote_Types can depend on Preelaborated per + -- Ada 2005 AI 0206. + + elsif Unit_Category = Remote_Types + and then Is_Preelaborated (Depended_Entity) + then + null; + + -- All other cases, we do have an error + else Err := True; end if; diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index 90424cd..edad7e3 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -1305,6 +1305,10 @@ package body Sem_Prag is Error_Pragma_Arg ("argument for pragma% must be library level entity", Arg1); end if; + + if Inside_A_Generic then + Error_Pragma ("pragma% cannot be used inside a generic"); + end if; end Check_Interrupt_Or_Attach_Handler; ------------------------------------------- -- 2.7.4