* gnat.dg/testint.adb: New test.
* gnat.dg/modular1.adb: New test.
* gnat.dg/test_iface_aggr.adb: New test.
* gnat.dg/specs/tag2.ads: Adjust.
From-SVN: r135635
+2008-05-20 Arnaud Charlet <charlet@adacore.com>
+
+ * gnat.dg/testint.adb: New test.
+ * gnat.dg/modular1.adb: New test.
+ * gnat.dg/test_iface_aggr.adb: New test.
+ * gnat.dg/specs/tag2.ads: Adjust.
+
2008-05-20 Richard Guenther <rguenther@suse.de>
* gcc.dg/tree-ssa/ssa-sink-1.c: Adjust.
--- /dev/null
+-- { dg-do run }
+
+with Ada.Text_IO;
+procedure Modular1 is
+ type T1 is mod 9;
+ package T1_IO is new Ada.Text_IO.Modular_IO(T1);
+ X: T1 := 8;
+ J1: constant := 5;
+begin for J2 in 5..5 loop
+ pragma Assert(X*(2**J1) = X*(2**J2));
+ if X*(2**J1) /= X*(2**J2) then
+ raise Program_Error;
+ end if;
+ end loop;
+end Modular1;
type T6 is tagged;
protected type T1 is end T1; -- { dg-error "must be a tagged type" }
task type T2; -- { dg-error "must be a tagged type" }
- type T3 is null record; -- { dg-error "must be tagged" }
+ type T3 is null record; -- { dg-error "must be a tagged type" }
task type T4 is new I with end;
protected type T5 is new I with end;
type T6 is tagged null record;
--- /dev/null
+-- { dg-do run }
+
+with Ada.Text_IO, Ada.Tags;
+procedure Test_Iface_Aggr is
+ package Pkg is
+ type Iface is interface;
+ function Constructor (S: Iface) return Iface'Class is abstract;
+ procedure Do_Test (It : Iface'class);
+ type Root is abstract tagged record
+ Comp_1 : Natural := 0;
+ end record;
+ type DT_1 is new Root and Iface with record
+ Comp_2, Comp_3 : Natural := 0;
+ end record;
+ function Constructor (S: DT_1) return Iface'Class;
+ type DT_2 is new DT_1 with null record; -- Test
+ function Constructor (S: DT_2) return Iface'Class;
+ end;
+ package body Pkg is
+ procedure Do_Test (It: in Iface'Class) is
+ Obj : Iface'Class := Constructor (It);
+ S : String := Ada.Tags.External_Tag (Obj'Tag);
+ begin
+ null;
+ end;
+ function Constructor (S: DT_1) return Iface'Class is
+ begin
+ return Iface'Class(DT_1'(others => <>));
+ end;
+ function Constructor (S: DT_2) return Iface'Class is
+ Result : DT_2;
+ begin
+ return Iface'Class(DT_2'(others => <>)); -- Test
+ end;
+ end;
+ use Pkg;
+ Obj: DT_2;
+begin
+ Do_Test (Obj);
+end;
--- /dev/null
+-- { dg-do run }
+-- { dg-options "-gnato" }
+
+with Text_IO; use Text_IO;
+procedure testint is
+ function m1 (a, b : short_integer) return integer is
+ begin
+ return integer (a + b);
+ end m1;
+ f : integer;
+begin
+ f := m1 (short_integer'Last, short_integer'Last);
+end testint;