[Ada] Crash on inherited private operation in child package
2019-12-13 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch7.adb (Analyze_Package_Body_Helper): Do not call Declare_Inherited_Private_Subprograms on s child body: the required operations have already been created when analyzing the corresponding package declaration. This prevents a redeclaration of inehrited operation, and a crash when inserting the new operation in the current scope. From-SVN: r279349
This commit is contained in:
parent
0a8ff576db
commit
7f8ad8f001
@ -1,3 +1,12 @@
|
||||
2019-12-13 Ed Schonberg <schonberg@adacore.com>
|
||||
|
||||
* sem_ch7.adb (Analyze_Package_Body_Helper): Do not call
|
||||
Declare_Inherited_Private_Subprograms on s child body: the
|
||||
required operations have already been created when analyzing the
|
||||
corresponding package declaration. This prevents a redeclaration
|
||||
of inehrited operation, and a crash when inserting the new
|
||||
operation in the current scope.
|
||||
|
||||
2019-12-13 Yannick Moy <moy@adacore.com>
|
||||
|
||||
* sem_prag.adb (Analyze_Depends_In_Decl_Part,
|
||||
|
@ -925,9 +925,12 @@ package body Sem_Ch7 is
|
||||
-- This is a nested package, so it may be necessary to declare certain
|
||||
-- inherited subprograms that are not yet visible because the parent
|
||||
-- type's subprograms are now visible.
|
||||
-- Note that for child units these operations were generated when
|
||||
-- analyzing the package specification.
|
||||
|
||||
if Ekind (Scope (Spec_Id)) = E_Package
|
||||
and then Scope (Spec_Id) /= Standard_Standard
|
||||
and then not Is_Child_Unit (Spec_Id)
|
||||
then
|
||||
Declare_Inherited_Private_Subprograms (Spec_Id);
|
||||
end if;
|
||||
|
Loading…
Reference in New Issue
Block a user