From: "Markus Schöpflin" <no.spam@spam.spam>
Subject: Unexpected discriminant check failure involving access types
Date: Mon, 10 Aug 2015 14:38:22 +0200
Date: 2015-08-10T14:38:22+02:00 [thread overview]
Message-ID: <mqa5vs$k1n$1@speranza.aioe.org> (raw)
Given the following piece of code:
---%<---
1 procedure TEST
2 is
3 type T is (T1, T2);
4
5 type RECORD_T (X : T := T1) is record
6 null;
7 end record;
8
9 type PTR_T is access RECORD_T;
10
11 FOO : RECORD_T;
12 FOO_PTR : constant PTR_T := new RECORD_T;
13
14 FOO1 : constant RECORD_T := (X => T1);
15 FOO2 : constant RECORD_T := (X => T2);
16 begin
17 FOO := FOO1;
18 FOO := FOO2;
19
20 FOO_PTR.all := FOO1;
21 FOO_PTR.all := FOO2;
22 end;
--->%---
When compiled and executed, I get:
> ./test
raised CONSTRAINT_ERROR : test.adb:21 discriminant check failed
Can anyone please explain me why I get a discriminant check error when using
access types? I would have expected it to work the same as for the non-access
case.
TIA, Markus
next reply other threads:[~2015-08-10 12:38 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-10 12:38 Markus Schöpflin [this message]
2015-08-10 13:14 ` Unexpected discriminant check failure involving access types Mark Lorenzen
2015-08-10 14:20 ` Markus Schöpflin
2015-08-10 19:00 ` Randy Brukardt
2015-08-10 14:33 ` Niklas Holsti
2015-08-10 14:56 ` Markus Schöpflin
2015-08-10 19:43 ` Niklas Holsti
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox