view gcc/testsuite/gnat.dg/predicate1.adb @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 84e7813d76e9
children
line wrap: on
line source

--  { dg-do run }
--  { dg-options "-gnata" }

procedure Predicate1 with SPARK_Mode is
    type R is record
       F : Integer;
    end record;

    package Nested is
       subtype S is R with Predicate => S.F = 42;
       procedure P (X : in out S) is null;

       type T is private;
       procedure P (X : in out T) is null;
    private
       type T is new S;
    end Nested;

    X : Nested.T;
    Y : Nested.S;

    X_Uninitialized : Boolean := False;
    Y_Uninitialized : Boolean := False;
begin
   begin
      Nested.P (X);
   exception
      when others => X_Uninitialized := True;
   end;

   begin
      Nested.P (Y);
   exception
      when others => Y_Uninitialized := True;
   end;

   if not X_Uninitialized or else not Y_Uninitialized then
      raise Program_Error;
   end if;
end Predicate1;