diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-10-26 10:49:55 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-10-26 10:49:55 +0000 |
commit | ff9285665e5b7b7ee5c7a3be5425c7005684ed16 (patch) | |
tree | ca2a2a68b342c6db8cfee825611815cc8efaf51e | |
parent | 12b29cb8ce45abc2b858591ee5d0d46f2776be69 (diff) | |
download | gcc-ff9285665e5b7b7ee5c7a3be5425c7005684ed16.tar.gz |
2015-10-26 Ed Schonberg <schonberg@adacore.com>
* sem_ch6.adb (Find_Corresponding_Spec): Reject a subprogram
body whose signature is type conformant with a previous expression
function.
2015-10-26 Bob Duff <duff@adacore.com>
* treepr.adb: Code clean up.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229326 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ada/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/ada/sem_ch6.adb | 13 | ||||
-rw-r--r-- | gcc/ada/treepr.adb | 8 |
3 files changed, 25 insertions, 6 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 5dff6de4fca..442dafe0853 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,13 @@ +2015-10-26 Ed Schonberg <schonberg@adacore.com> + + * sem_ch6.adb (Find_Corresponding_Spec): Reject a subprogram + body whose signature is type conformant with a previous expression + function. + +2015-10-26 Bob Duff <duff@adacore.com> + + * treepr.adb: Code clean up. + 2015-10-26 Eric Botcazou <ebotcazou@adacore.com> * freeze.adb (Check_Component_Storage_Order): Skip a record diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb index 0f2615861f8..495df3d653e 100644 --- a/gcc/ada/sem_ch6.adb +++ b/gcc/ada/sem_ch6.adb @@ -7310,6 +7310,19 @@ package body Sem_Ch6 is then return E; + -- Expression functions can be completions, but cannot be + -- completed by an explicit body. + + elsif Comes_From_Source (E) + and then Comes_From_Source (N) + and then Nkind (N) = N_Subprogram_Body + and then Nkind (Original_Node (Unit_Declaration_Node (E))) = + N_Expression_Function + then + Error_Msg_Sloc := Sloc (E); + Error_Msg_N ("body conflicts with expression function#", N); + return Empty; + elsif not Has_Completion (E) then if Nkind (N) /= N_Subprogram_Body_Stub then Set_Corresponding_Spec (N, E); diff --git a/gcc/ada/treepr.adb b/gcc/ada/treepr.adb index d11a12bbe9c..a032416587b 100644 --- a/gcc/ada/treepr.adb +++ b/gcc/ada/treepr.adb @@ -1565,13 +1565,9 @@ package body Treepr is Print_Elist_Ref (E); Print_Eol; - M := First_Elmt (E); - - if No (M) then - Print_Str ("<empty element list>"); - Print_Eol; + if Present (E) and then not Is_Empty_Elmt_List (E) then + M := First_Elmt (E); - else loop Print_Char ('|'); Print_Eol; |