+2009-03-19 Jerome Guitton <guitton@adacore.com>
+
+ * gdb.ada/fixed_points/fixed_points.adb: Add a test on overprecise
+ deltas.
+ * gdb.ada/fixed_points.exp: Ditto.
+
2009-03-18 Pedro Alves <pedro@codesourcery.com>
* return-nodebug.c: Don't include stdio.h.
set bp_location [gdb_get_line_number "Set breakpoint here" ${testdir}/fixed_points.adb]
runto "fixed_points.adb:$bp_location"
+# Fixed point subtypes:
+
gdb_test "print base_object" \
"= -50" \
"p on a fixed point type"
gdb_test "print new_type_object" \
"= -50" \
"p on a new fixed point type"
+
+# Overprecise delta:
+
+gdb_test "print Overprecise_Object" \
+ "= 0.13579135791"
+
+gdb_test "ptype Overprecise_Object" \
+ "= delta 0.135791"
procedure Fixed_Points is
+ ------------
+ -- Test 1 --
+ ------------
+
+ -- Fixed point subtypes
+
type Base_Fixed_Point_Type is
delta 1.0 / 16.0
range (System.Min_Int / 2) * 1.0 / 16.0 ..
(System.Max_Int / 2) * 1.0 / 16.0;
- subtype Fixed_Point_Subtype is
- Base_Fixed_Point_Type range -50.0 .. 50.0;
+ subtype Fixed_Point_Subtype is
+ Base_Fixed_Point_Type range -50.0 .. 50.0;
+
+ type New_Fixed_Point_Type is
+ new Base_Fixed_Point_Type range -50.0 .. 50.0;
+
+ Base_Object : Base_Fixed_Point_Type := -50.0;
+ Subtype_Object : Fixed_Point_Subtype := -50.0;
+ New_Type_Object : New_Fixed_Point_Type := -50.0;
+
+
+ ------------
+ -- Test 2 --
+ ------------
+
+ -- Overprecise delta
+
+ Overprecise_Delta : constant := 0.135791357913579;
+ -- delta whose significant figures cannot be stored into a long.
+
+ type Overprecise_Fixed_Point is
+ delta Overprecise_Delta range 0.0 .. 200.0;
+ for Overprecise_Fixed_Point'Small use Overprecise_Delta;
- type New_Fixed_Point_Type is
- new Base_Fixed_Point_Type range -50.0 .. 50.0;
+ Overprecise_Object : Overprecise_Fixed_Point :=
+ Overprecise_Fixed_Point'Small;
- Base_Object : Base_Fixed_Point_Type := -50.0;
- Subtype_Object : Fixed_Point_Subtype := -50.0;
- New_Type_Object : New_Fixed_Point_Type := -50.0;
begin
Base_Object := 1.0/16.0; -- Set breakpoint here
Subtype_Object := 1.0/16.0;
New_Type_Object := 1.0/16.0;
+ Overprecise_Object := Overprecise_Fixed_Point'Small * 2;
end Fixed_Points;