diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2015-10-26 11:49:55 +0100 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2015-10-26 11:49:55 +0100 |
commit | e4bda61026bf4b79fecf43698ac76c0ee1de3266 (patch) | |
tree | ca2a2a68b342c6db8cfee825611815cc8efaf51e | |
parent | dc9111cfce884749f12b88d43abb717e6d9d5f27 (diff) | |
download | gcc-e4bda61026bf4b79fecf43698ac76c0ee1de3266.zip gcc-e4bda61026bf4b79fecf43698ac76c0ee1de3266.tar.gz gcc-e4bda61026bf4b79fecf43698ac76c0ee1de3266.tar.bz2 |
[multiple changes]
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.
From-SVN: r229326
-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 5dff6de..442dafe 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 0f26158..495df3d 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 d11a12b..a032416 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; |