This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
RM 4.5.3 (28) specifies that (except for records and limited types) a membership operation uses the predefined equality, regardless of whether user-defined equality for the type is available. This can be confusing and deserves a new warning. Compiling code.adb must yield: code.adb:19:42: warning: membership test on "Var" uses predefined equality code.adb:19:42: warning: even if user-defined equality exists (RM 4.5.2 (28.1/3) -- with Ada.Characters.Handling; with Ada.Text_IO; use Ada.Text_IO; procedure Code is type Var is new Character; function "=" (C1, C2 : Var) return Boolean; function "=" (C1, C2 : Var) return Boolean is use Ada.Characters.Handling; begin return To_Lower (Character (C1)) = To_Lower (Character (C2)); end "="; V : Var := 'A'; begin Put_Line ("equal " & Boolean'Image (V = 'a')); Put_Line ("in " & Boolean'Image (V in 'a' | 'o')); end Code; Tested on x86_64-pc-linux-gnu, committed on trunk 2017-12-15 Ed Schonberg <schonberg@adacore.com> * sem_res.adb (Resolve_Membership_Op): Add warning on a membership operation on a scalar type for which there is a user-defined equality operator.
Attachment:
difs
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |