This patch fixes an issue in the compiler whereby using anonymous access
types as abstract overridden subprogram formals for a derived abtract type
may lead to compile-time errors.
gcc/ada/ChangeLog:
* accessibility.adb (Type_Access_Level): Add handling for
subprogram aliases.
return Scope_Depth (Standard_Standard);
end if;
- return Scope_Depth (Enclosing_Dynamic_Scope (Btyp));
+ -- It is possible that the current scope is an aliased subprogram -
+ -- this can happen when an abstract primitive from a root type is not
+ -- not visible.
+
+ if Is_Subprogram (Enclosing_Dynamic_Scope (Btyp))
+ and then Present (Alias (Enclosing_Dynamic_Scope (Btyp)))
+ then
+ return Scope_Depth (Ultimate_Alias (Enclosing_Dynamic_Scope (Btyp)));
+
+ -- Otherwise, simply use the enclosing dynamic scope
+
+ else
+ return Scope_Depth (Enclosing_Dynamic_Scope (Btyp));
+ end if;
end Type_Access_Level;
end Accessibility;