mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 14:59:39 +02:00
Ada: Fix internal error on incomplete private tagged type
The code expects the partial view but gets the incomplete view instead. gcc/ada/ PR ada/123096 * exp_put_image.adb (Build_Record_Put_Image_Procedure): Call Incomplete_Or_Partial_View with Partial_Only set to True. gcc/testsuite/ * gnat.dg/specs/put_image2.ads: New test.
This commit is contained in:
@@ -1011,7 +1011,8 @@ package body Exp_Put_Image is
|
||||
-- use the first copy instead.
|
||||
|
||||
Partial_View := Incomplete_Or_Partial_View
|
||||
(Defining_Identifier (Type_Decl));
|
||||
(Defining_Identifier (Type_Decl),
|
||||
Partial_Only => True);
|
||||
|
||||
pragma Assert (Ekind (Partial_View) in
|
||||
E_Private_Type
|
||||
|
||||
21
gcc/testsuite/gnat.dg/specs/put_image2.ads
Normal file
21
gcc/testsuite/gnat.dg/specs/put_image2.ads
Normal file
@@ -0,0 +1,21 @@
|
||||
-- { dg-do compile }
|
||||
-- { dg-options "-gnat2022" }
|
||||
|
||||
package Put_Image2 is
|
||||
|
||||
type Abstract_Configuration_Provider is tagged;
|
||||
|
||||
type Configuration_Provider_Access is
|
||||
access all Abstract_Configuration_Provider'Class;
|
||||
|
||||
type Abstract_Configuration_Provider
|
||||
(Child : Configuration_Provider_Access := null) is
|
||||
abstract tagged limited private;
|
||||
|
||||
private
|
||||
|
||||
type Abstract_Configuration_Provider
|
||||
(Child : Configuration_Provider_Access := null) is
|
||||
abstract tagged limited null record;
|
||||
|
||||
end Put_Image2;
|
||||
Reference in New Issue
Block a user