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] |
When validity checks and Initialize_Scalars are enabled, an equality test on scalar uninitialized components raises a constraint error. With this patch, a constraint error is also raised when applying the primitive equality function to records that contain uninitialized fields. The following must raise Constraint_Error without any other output: gnatmake -f -q -gnatVa my_test.adb my_test --- with Text_IO; procedure My_Test is type Operation_T is (Flight_Data, Flight_Profiles, Flight_Addressing, Flight_Log); type Function_T is(Command, Query, Counts, Counts_On_Flows, Optimise); type Origin_T is (None, Live, Simul); type T_Abs is abstract tagged record Operation : Operation_T; The_Function : Function_T; end record; type T is new T_Abs with record Origin : Origin_T; end record; X : constant T := (Operation => Flight_Data, The_Function => Command, Origin => None); Y : T; begin Y.Operation := Flight_Data; Y.Origin := None; if Y /= X then -- expect here a constraint error. Text_Io.Put_Line ("X and Y are different"); end if; if Y.The_Function /= X.The_Function then -- Got here a constraint error. Text_Io.Put_Line ("X.The_Function and Y.The_Function are different"); end if; end My_Test; Tested on x86_64-pc-linux-gnu, committed on trunk 2010-06-23 Ed Schonberg <schonberg@adacore.com> * exp_ch13.adb (Expand_Freeze_Actions): If validity checks and Initialize_Scalars are enabled, compile the generated equality function for a composite type with full checks enabled, so that validity checks are performed on individual components.
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] |