diff options
author | Samuel Tardieu <sam@rfc1149.net> | 2008-04-15 11:59:39 +0000 |
---|---|---|
committer | Samuel Tardieu <sam@gcc.gnu.org> | 2008-04-15 11:59:39 +0000 |
commit | 462c31ef75b495fd95f18a91864c471d2cb76494 (patch) | |
tree | cf0395dd2f01f475607d971d80fb4604f5aa2f67 /gcc | |
parent | 8abe457acb2207a1d3b3d5e020c532780276dcdd (diff) | |
download | gcc-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/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/ada/sem_ch8.adb | 14 |
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; |