diff options
author | Ed Schonberg <schonberg@adacore.com> | 2018-01-11 08:54:17 +0000 |
---|---|---|
committer | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2018-01-11 08:54:17 +0000 |
commit | a2fd4f0efe04ccf7052b367b407de4c92acfa795 (patch) | |
tree | 96695641879293e94fc9892d6c86eba0019cef4f /gcc/ada/init.c | |
parent | 6560f85165c084768a77dda7086269604781ce5e (diff) | |
download | gcc-a2fd4f0efe04ccf7052b367b407de4c92acfa795.zip gcc-a2fd4f0efe04ccf7052b367b407de4c92acfa795.tar.gz gcc-a2fd4f0efe04ccf7052b367b407de4c92acfa795.tar.bz2 |
[Ada] Spurious error on referene to subcoponrnt in dynamic predicate
This patch fixes a visibility error in the expression for a dynamic predicate
of a record type, when the expression contains a reference to a subcomponent
of the record given by a selected component whose prefix is the name of the
enclosing component.
Executing
gnatmake -q -gnata main
./main
must yield:
TGV OK
Amtrak broken, as usual
----
with Text_IO; use Text_IO;
with Recpred; use Recpred;
procedure Main is
TGV : Train_Data;
Amtrak : Train_Data;
begin
TGV := (20, (10,10));
Put_Line ("TGV OK");
begin
Amtrak := (30, (40, 40));
exception
when Others =>
Put_Line ("Amtrak broken, as usual");
end;
end;
----
package Recpred is
type Train_Position is record
TTD : Integer;
VSS : Integer;
end record;
type Train_Data is record
MA : Integer;
Front_Position : Train_Position;
end record
with Dynamic_Predicate => MA >= Front_Position.TTD;
end Recpred;
2018-01-11 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* sem_ch13.adb (Replace_Type_Ref): Handle properly reference to a
subcomponent of the current entity when building the body for a dynamic
predicate function for a record with composite subcomponents.
From-SVN: r256514
Diffstat (limited to 'gcc/ada/init.c')
0 files changed, 0 insertions, 0 deletions