From 9d827cd5792155202a12d13b04c36abc1b29189d Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Thu, 31 Jul 2014 12:11:39 +0200 Subject: [PATCH] [multiple changes] 2014-07-31 Ed Schonberg * sem_ch3.adb (Make_Index): Reject properly the use of 'Length in a discrete range, when 'range was probably intended. 2014-07-31 Robert Dewar * sem_warn.adb, sem_warn.ads (Has_Junk_Name): Moved from body to spec. From-SVN: r213339 --- gcc/ada/ChangeLog | 9 +++++++++ gcc/ada/sem_ch3.adb | 10 ++++++++-- gcc/ada/sem_warn.adb | 10 ---------- gcc/ada/sem_warn.ads | 16 +++++++++++++++- 4 files changed, 32 insertions(+), 13 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index dbfad40a48c..c4d668a1beb 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,12 @@ +2014-07-31 Ed Schonberg + + * sem_ch3.adb (Make_Index): Reject properly the use of 'Length + in a discrete range, when 'range was probably intended. + +2014-07-31 Robert Dewar + + * sem_warn.adb, sem_warn.ads (Has_Junk_Name): Moved from body to spec. + 2014-07-31 Robert Dewar * frontend.adb: Minor reformatting. diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index b5df7095c7e..2d5a430d435 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -17285,10 +17285,16 @@ package body Sem_Ch3 is elsif Nkind (N) = N_Attribute_Reference then - -- The parser guarantees that the attribute is a RANGE attribute + -- Catch beginner's error (use of attribute other than 'Range) + + if Attribute_Name (N) /= Name_Range then + Error_Msg_N ("expect attribute ''Range", N); + Set_Etype (N, Any_Type); + return; + end if; -- If the node denotes the range of a type mark, that is also the - -- resulting type, and we do no need to create an Itype for it. + -- resulting type, and we do not need to create an Itype for it. if Is_Entity_Name (Prefix (N)) and then Comes_From_Source (N) diff --git a/gcc/ada/sem_warn.adb b/gcc/ada/sem_warn.adb index 8db68351497..6974c454c11 100644 --- a/gcc/ada/sem_warn.adb +++ b/gcc/ada/sem_warn.adb @@ -128,16 +128,6 @@ package body Sem_Warn is -- If E is a parameter entity for a subprogram body, then this function -- returns the corresponding spec entity, if not, E is returned unchanged. - function Has_Junk_Name (E : Entity_Id) return Boolean; - -- Return True if the entity name contains any of the following substrings: - -- discard - -- dummy - -- ignore - -- junk - -- unused - -- Used to suppress warnings on names matching these patterns. The contents - -- of Name_Buffer and Name_Len are destroyed by this call. - function Has_Pragma_Unmodified_Check_Spec (E : Entity_Id) return Boolean; -- Tests Has_Pragma_Unmodified flag for entity E. If E is not a formal, -- this is simply the setting of the flag Has_Pragma_Unmodified. If E is diff --git a/gcc/ada/sem_warn.ads b/gcc/ada/sem_warn.ads index efd31950518..41c5a22e3e9 100644 --- a/gcc/ada/sem_warn.ads +++ b/gcc/ada/sem_warn.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1999-2013, Free Software Foundation, Inc. -- +-- Copyright (C) 1999-2014, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -239,4 +239,18 @@ package Sem_Warn is -- block or subprogram to see if there are any variables for which useless -- assignments were made (assignments whose values were never read). + ---------------------- + -- Utility Routines -- + ---------------------- + + function Has_Junk_Name (E : Entity_Id) return Boolean; + -- Return True if the entity name contains any of the following substrings: + -- discard + -- dummy + -- ignore + -- junk + -- unused + -- Used to suppress warnings on names matching these patterns. The contents + -- of Name_Buffer and Name_Len are destroyed by this call. + end Sem_Warn;