comp.lang.ada
 help / color / mirror / Atom feed
* SPARK - strange range check with array assignment
@ 2015-08-18 20:06 Maciej Sobczak
  2015-08-18 22:07 ` Georg Bauhaus
  2015-08-19  0:11 ` Anh Vo
  0 siblings, 2 replies; 4+ messages in thread
From: Maciej Sobczak @ 2015-08-18 20:06 UTC (permalink / 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


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-08-19 10:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-18 20:06 SPARK - strange range check with array assignment Maciej Sobczak
2015-08-18 22:07 ` Georg Bauhaus
2015-08-19  0:11 ` Anh Vo
2015-08-19 10:09   ` Maciej Sobczak

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