with Ada.Assertions; package body Casesi is function Process (X : Natural) return String is begin case X is when 0 => raise Ada.Assertions.Assertion_Error; when 1 => raise Ada.Assertions.Assertion_Error; when 2 => return (1 .. 4 => 'T'); when 3 => return (2 .. 8 => 'T'); when 4 => return "hello"; when others => return (1 .. 0 => <>); end case; end; procedure Try (X : Natural) is begin declare Code : String := Process (X); begin if X < 2 then raise Program_Error; end if; end; exception when Ada.Assertions.Assertion_Error => null; end; end;