From: Yannick Moy Date: Tue, 18 Jul 2023 14:52:26 +0000 (+0200) Subject: ada: Fix generation of JSON output for data representation X-Git-Tag: basepoints/gcc-15~7240 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f9b03ef769578fe9388c32b9364f21d0dc1fb6fa;p=thirdparty%2Fgcc.git ada: Fix generation of JSON output for data representation Using -gnatRj to generate data representation in JSON format could lead to an ill-formed output or an assertion failure. Now fixed. gcc/ada/ * repinfo.adb (List_Common_Type_Info): Fix output when alignment is not statically known, and fix assertion when expansion is not enabled. --- diff --git a/gcc/ada/repinfo.adb b/gcc/ada/repinfo.adb index 6a30bc7898b9..ba4b32b7027e 100644 --- a/gcc/ada/repinfo.adb +++ b/gcc/ada/repinfo.adb @@ -428,12 +428,21 @@ package body Repinfo is end if; -- Alignment is not always set for task, protected, and class-wide - -- types. Representation aspects are not computed for types in a - -- generic unit. + -- types, or when doing semantic analysis only. Representation aspects + -- are not computed for types in a generic unit. else + -- Add unknown alignment entry in JSON format to ensure the format is + -- valid, as a comma is added by the caller before another field. + + if List_Representation_Info_To_JSON then + Write_Str (" ""Alignment"": "); + Write_Unknown_Val; + end if; + pragma Assert - (Is_Concurrent_Type (Ent) or else + (not Expander_Active or else + Is_Concurrent_Type (Ent) or else Is_Class_Wide_Type (Ent) or else Sem_Util.In_Generic_Scope (Ent)); end if;