aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2008-04-15 11:59:39 +0000
committerSamuel Tardieu <sam@gcc.gnu.org>2008-04-15 11:59:39 +0000
commit462c31ef75b495fd95f18a91864c471d2cb76494 (patch)
treecf0395dd2f01f475607d971d80fb4604f5aa2f67 /gcc
parent8abe457acb2207a1d3b3d5e020c532780276dcdd (diff)
downloadgcc-462c31ef75b495fd95f18a91864c471d2cb76494.zip
gcc-462c31ef75b495fd95f18a91864c471d2cb76494.tar.gz
gcc-462c31ef75b495fd95f18a91864c471d2cb76494.tar.bz2
re PR ada/28733 (GNAT crash while compiling Ada-2005 code)
2008-04-15 Samuel Tardieu <sam@rfc1149.net> Gary Dismukes <dismukes@adacore.com> gcc/ada/ PR ada/28733 * sem_ch8.adb (Analyze_Use_Package): Do not allow "use" of something which is not an entity (and hence not a package). (End_Use_Package): Ditto. Co-Authored-By: Gary Dismukes <dismukes@adacore.com> From-SVN: r134313
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog8
-rw-r--r--gcc/ada/sem_ch8.adb14
2 files changed, 20 insertions, 2 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index cec2e8c..6743465 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,11 @@
+2008-04-15 Samuel Tardieu <sam@rfc1149.net>
+ Gary Dismukes <dismukes@adacore.com>
+
+ PR ada/28733
+ * sem_ch8.adb (Analyze_Use_Package): Do not allow "use" of something
+ which is not an entity (and hence not a package).
+ (End_Use_Package): Ditto.
+
2008-04-15 Ed Schonberg <schonberg@adacore.com>
PR ada/16086
diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb
index 2d4d7fe..3b28bdf 100644
--- a/gcc/ada/sem_ch8.adb
+++ b/gcc/ada/sem_ch8.adb
@@ -2396,6 +2396,11 @@ package body Sem_Ch8 is
Use_One_Package (Pack, N);
end if;
end if;
+
+ -- Report error because name denotes something other than a package
+
+ else
+ Error_Msg_N ("& is not a package", Pack_Name);
end if;
Next (Pack_Name);
@@ -3066,9 +3071,14 @@ package body Sem_Ch8 is
begin
Pack_Name := First (Names (N));
while Present (Pack_Name) loop
- Pack := Entity (Pack_Name);
- if Ekind (Pack) = E_Package then
+ -- Test that Pack_Name actually denotes a package before processing
+
+ if Is_Entity_Name (Pack_Name)
+ and then Ekind (Entity (Pack_Name)) = E_Package
+ then
+ Pack := Entity (Pack_Name);
+
if In_Open_Scopes (Pack) then
null;