diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-07-05 09:43:13 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-07-05 09:43:13 +0000 |
commit | e6de9b423dc97093e3930a238bbe24929ceddae7 (patch) | |
tree | 31d7de32ea26160d58079a05b74e3e1522cf8169 | |
parent | 4d6b2b7e965e19733666fe65dde197e052fb7535 (diff) | |
download | gcc-e6de9b423dc97093e3930a238bbe24929ceddae7.tar.gz |
2013-07-05 Ed Schonberg <schonberg@adacore.com>
* sem_ch12.adb (Check_Formal_Package_Instance): Handle properly
a formal subprogram that was defaulted in the formal package.
2013-07-05 Thomas Quinot <quinot@adacore.com>
* par_sco.adb (Traverse_Declarations_Or_Statements): Ignore
N_Implicit_Label_Declaration nodes.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@200694 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ada/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/ada/par_sco.adb | 8 | ||||
-rw-r--r-- | gcc/ada/sem_ch12.adb | 10 |
3 files changed, 26 insertions, 2 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 7bf4666f39f..bc4780dac0e 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,13 @@ +2013-07-05 Ed Schonberg <schonberg@adacore.com> + + * sem_ch12.adb (Check_Formal_Package_Instance): Handle properly + a formal subprogram that was defaulted in the formal package. + +2013-07-05 Thomas Quinot <quinot@adacore.com> + + * par_sco.adb (Traverse_Declarations_Or_Statements): Ignore + N_Implicit_Label_Declaration nodes. + 2013-07-05 Robert Dewar <dewar@adacore.com> * a-cfhase.adb, sem_prag.adb, a-cfhama.adb: Minor reformatting. diff --git a/gcc/ada/par_sco.adb b/gcc/ada/par_sco.adb index 29c2daa89e1..2b8824cdf0b 100644 --- a/gcc/ada/par_sco.adb +++ b/gcc/ada/par_sco.adb @@ -2095,7 +2095,13 @@ package body Par_SCO is if Is_Non_Empty_List (L) then N := First (L); while Present (N) loop - Traverse_One (N); + + -- Note: For separate bodies, we see the tree after Par.Labl has + -- introduced implicit labels, so we need to ignore those nodes. + + if Nkind (N) /= N_Implicit_Label_Declaration then + Traverse_One (N); + end if; Next (N); end loop; diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb index 5713dd4dbd1..ed243ce9930 100644 --- a/gcc/ada/sem_ch12.adb +++ b/gcc/ada/sem_ch12.adb @@ -5220,7 +5220,15 @@ package body Sem_Ch12 is -- If the formal entity comes from a formal declaration, it was -- defaulted in the formal package, and no check is needed on it. - elsif Nkind (Parent (E2)) = N_Formal_Object_Declaration then + elsif Nkind (Parent (E2)) = N_Formal_Object_Declaration then + goto Next_E; + + -- Ditto for defaulted formal subprograms. + + elsif Is_Overloadable (E1) + and then Nkind (Unit_Declaration_Node (E2)) + in N_Formal_Subprogram_Declaration + then goto Next_E; elsif Is_Type (E1) then |