comp.lang.ada
 help / color / mirror / Atom feed
From: Maciej Sobczak <see.my.homepage@gmail.com>
Subject: SPARK - strange range check with array assignment
Date: Tue, 18 Aug 2015 13:06:45 -0700 (PDT)
Date: 2015-08-18T13:06:45-07:00	[thread overview]
Message-ID: <6cd2abfc-63e4-4821-b8d3-143ec25f4619@googlegroups.com> (raw)

Consider (extracted from a bigger problem):

-- p.ads:
pragma SPARK_Mode;

package P is

   procedure Foo (S : in out String)
      with Pre => S'Length > 3;

end P;

-- p.adb:
pragma SPARK_Mode;

package body P is

   procedure Foo (S : in out String)
   is
   begin
      S (S'First .. S'First + 2) := "abc";  -- HERE
   end Foo;

end P;


Foo is intended to overwrite the beginning of the given string.
GNATProve (2014) says:

p.adb:8:37: warning: range check might fail

Curiously, the assertion added just before the failing line:

      pragma Assert (S'First + 2 in S'Range);

passes without any warning.

What value or expression above is subject to a range check that might fail?

-- 
Maciej Sobczak * http://www.inspirel.com


             reply	other threads:[~2015-08-18 20:06 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-18 20:06 Maciej Sobczak [this message]
2015-08-18 22:07 ` SPARK - strange range check with array assignment Georg Bauhaus
2015-08-19  0:11 ` Anh Vo
2015-08-19 10:09   ` Maciej Sobczak
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox