summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2013-07-05 09:43:13 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2013-07-05 09:43:13 +0000
commite6de9b423dc97093e3930a238bbe24929ceddae7 (patch)
tree31d7de32ea26160d58079a05b74e3e1522cf8169
parent4d6b2b7e965e19733666fe65dde197e052fb7535 (diff)
downloadgcc-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/ChangeLog10
-rw-r--r--gcc/ada/par_sco.adb8
-rw-r--r--gcc/ada/sem_ch12.adb10
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