Commit fbb076f4 by Steve Baird Committed by Pierre-Marie de Rodat

[Ada] Improved handling of circular compilation dependencies

2019-12-12  Steve Baird  <baird@adacore.com>

gcc/ada/

	* sem_ch10.adb (Install_With_Clause): Check for the case of a
	circular dependency involving a predefined (or GNAT-defined)
	unit and handle that case by generating an appropropriate error
	message.

From-SVN: r279299
parent 4cdd4a33
2019-12-12 Steve Baird <baird@adacore.com>
* sem_ch10.adb (Install_With_Clause): Check for the case of a
circular dependency involving a predefined (or GNAT-defined)
unit and handle that case by generating an appropropriate error
message.
2019-12-12 Gary Dismukes <dismukes@adacore.com> 2019-12-12 Gary Dismukes <dismukes@adacore.com>
* sem_ch4.adb, sem_res.adb: Minor reformatting. * sem_ch4.adb, sem_res.adb: Minor reformatting.
......
...@@ -5336,6 +5336,20 @@ package body Sem_Ch10 is ...@@ -5336,6 +5336,20 @@ package body Sem_Ch10 is
Error_Msg_N Error_Msg_N
("instantiation depends on itself", Name (With_Clause)); ("instantiation depends on itself", Name (With_Clause));
elsif not Analyzed (Uname)
and then Is_Internal_Unit (Current_Sem_Unit)
and then not Is_Visible_Lib_Unit (Uname)
and then No (Scope (Uname))
then
if Is_Predefined_Unit (Current_Sem_Unit) then
Error_Msg_N
("predefined unit depends on itself", Name (With_Clause));
else
Error_Msg_N
("GNAT-defined unit depends on itself", Name (With_Clause));
end if;
return;
elsif not Is_Visible_Lib_Unit (Uname) then elsif not Is_Visible_Lib_Unit (Uname) then
-- Abandon processing in case of previous errors -- Abandon processing in case of previous errors
......
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