From 2176c4d01486331c9be066a95ee2e54a2db81d57 Mon Sep 17 00:00:00 2001 From: pmderodat Date: Tue, 11 Dec 2018 11:12:03 +0000 Subject: [PATCH] [Ada] Improve error message when named number passed as global item When a named number is used in Global/Depends contracts as global item, the error message could be confusing to users new to Ada. Now the message explains that named numbers are not objects. For instance on the following illegal code snippet: $ gcc -c bad_global.ads 1. package Bad_Global is 2. 3. X : constant := 1; 4. Y : constant := 1.0; 5. 6. procedure P with 7. Global => (Input => X, | >>> global item must denote object, state or current instance of concurrent type >>> named number "X" is not an object 8. In_Out => Y); | >>> global item must denote object, state or current instance of concurrent type >>> named number "Y" is not an object 9. 10. end Bad_Global; 2018-12-11 Yannick Moy gcc/ada/ * sem_prag.adb (Analyze_Global_Item): Refine error message. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267011 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ada/ChangeLog | 4 ++++ gcc/ada/sem_prag.adb | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 0e317811171b..d38e966d08b2 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,7 @@ +2018-12-11 Yannick Moy + + * sem_prag.adb (Analyze_Global_Item): Refine error message. + 2018-12-11 Ed Schonberg * exp_ch7.adb (Check_Unnesting_In_Declarations): Extend diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index cda8629de68c..4d4b665ffc90 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -2282,6 +2282,12 @@ package body Sem_Prag is SPARK_Msg_N ("global item must denote object, state or current " & "instance of concurrent type", Item); + + if Ekind (Item_Id) in Named_Kind then + SPARK_Msg_NE + ("\named number & is not an object", Item, Item); + end if; + return; end if; -- 2.47.3