Commit af552cd0 by Bob Duff Committed by Pierre-Marie de Rodat

[Ada] Wrong error on hidden must-override primitive

2019-12-18  Bob Duff  <duff@adacore.com>

gcc/ada/

	* sem_ch3.adb (Derive_Subprogram): Do not set the
	Requires_Overriding flag in the above-mentioned case.

From-SVN: r279505
parent 4f691cb2
2019-12-18 Bob Duff <duff@adacore.com> 2019-12-18 Bob Duff <duff@adacore.com>
* sem_ch3.adb (Derive_Subprogram): Do not set the
Requires_Overriding flag in the above-mentioned case.
2019-12-18 Bob Duff <duff@adacore.com>
* sem_ch8.adb (Note_Redundant_Use): It was already checking for * sem_ch8.adb (Note_Redundant_Use): It was already checking for
a use clause in the visible part of the child. Add an additional a use clause in the visible part of the child. Add an additional
check for a use clause in the context clause of the child. check for a use clause in the context clause of the child.
......
...@@ -15606,7 +15606,8 @@ package body Sem_Ch3 is ...@@ -15606,7 +15606,8 @@ package body Sem_Ch3 is
Set_Derived_Name; Set_Derived_Name;
-- Otherwise, the type is inheriting a private operation, so enter it -- Otherwise, the type is inheriting a private operation, so enter it
-- with a special name so it can't be overridden. -- with a special name so it can't be overridden. See also below, where
-- we check for this case, and if so avoid setting Requires_Overriding.
else else
Set_Chars (New_Subp, New_External_Name (Chars (Parent_Subp), 'P')); Set_Chars (New_Subp, New_External_Name (Chars (Parent_Subp), 'P'));
...@@ -15786,7 +15787,15 @@ package body Sem_Ch3 is ...@@ -15786,7 +15787,15 @@ package body Sem_Ch3 is
or else Is_Abstract_Subprogram (Alias (New_Subp)) or else Is_Abstract_Subprogram (Alias (New_Subp))
then then
Set_Is_Abstract_Subprogram (New_Subp); Set_Is_Abstract_Subprogram (New_Subp);
else
-- If the Chars of the new subprogram is different from that of the
-- parent's one, it means that we entered it with a special name so
-- it can't be overridden (see above). In that case we had better not
-- *require* it to be overridden. This is the case where the parent
-- type inherited the operation privately, so there's no danger of
-- dangling dispatching.
elsif Chars (New_Subp) = Chars (Alias (New_Subp)) then
Set_Requires_Overriding (New_Subp); Set_Requires_Overriding (New_Subp);
end if; end if;
......
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