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
next 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