Commit a08bf2de by Robert Dewar Committed by Arnaud Charlet

freeze.adb (Freeze_Entity, [...]): Add a guard to make sure that the Etype of a…

freeze.adb (Freeze_Entity, [...]): Add a guard to make sure that the Etype of a component of the corresponding...

2014-07-29  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Freeze_Entity, Concurrent_Type case): Add a guard
	to make sure that the Etype of a component of the corresponding
	record type is present before trying to freeze it.
	* sem_ch5.adb: Minor reformatting.

From-SVN: r213165
parent b8b2d982
2014-07-29 Robert Dewar <dewar@adacore.com>
* freeze.adb (Freeze_Entity, Concurrent_Type case): Add a guard
to make sure that the Etype of a component of the corresponding
record type is present before trying to freeze it.
* sem_ch5.adb: Minor reformatting.
2014-07-29 Robert Dewar <dewar@adacore.com>
* exp_attr.adb, types.ads, types.h, exp_ch11.adb, a-except.adb,
a-except-2005.adb: Add new reason code PE_Stream_Operation_Not_Allowed,
and then use it when a stream operation is used from a library generic
......
......@@ -4710,13 +4710,19 @@ package body Freeze is
Freeze_And_Append (Comp, N, Result);
elsif (Ekind (Comp)) /= E_Function then
if Is_Itype (Etype (Comp))
and then Underlying_Type (Scope (Etype (Comp))) = E
then
Undelay_Type (Etype (Comp));
end if;
Freeze_And_Append (Etype (Comp), N, Result);
-- The guard on the presence of the Etype seems to be needed
-- for some CodePeer (-gnatcC) cases, but not clear why???
if Present (Etype (Comp)) then
if Is_Itype (Etype (Comp))
and then Underlying_Type (Scope (Etype (Comp))) = E
then
Undelay_Type (Etype (Comp));
end if;
Freeze_And_Append (Etype (Comp), N, Result);
end if;
end if;
Next_Entity (Comp);
......
......@@ -3184,6 +3184,7 @@ package body Sem_Ch5 is
-- We skip this step if we are not in code generation mode
-- or CodePeer mode.
-- This is the one case where we remove dead code in the
-- semantics as opposed to the expander, and we do not want
-- to remove code if we are not in code generation mode,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment