Commit 81d85d4b by Eric Botcazou Committed by Pierre-Marie de Rodat

[Ada] Fix assertion failure on record subtype with -gnatRj

The JSON output of the -gnatR machinery was choking on record subtypes
and the change fixes this oversight.

The following package must now compile properly with -gnatRj:

package P is

  type Rec (D : Integer) is record
      C : Integer;

      case D is
         when 1 =>
            S : String (1 .. 20);
         when 2 =>
            B : Boolean;
         when others =>
            Ch1 : Character;
            F   : Float;
            Ch2 : Character;
      end case;

   end record;

   subtype Rec1 is Rec (1);

end P;

2018-09-26  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* repinfo.adb (List_Record_Layout): Be prepared for JSON output.
	(List_Record_Info): Use the flat representation for record
	subtypes in the JSON format.

From-SVN: r264609
parent 05a84157
2018-09-26 Eric Botcazou <ebotcazou@adacore.com>
* repinfo.adb (List_Record_Layout): Be prepared for JSON output.
(List_Record_Info): Use the flat representation for record
subtypes in the JSON format.
2018-09-26 Justin Squirek <squirek@adacore.com>
* lib-writ.adb, lib-writ.ads (Write_With_Lines): Add
......
......@@ -1358,7 +1358,8 @@ package body Repinfo is
Starting_First_Bit : Uint := Uint_0;
Prefix : String := "")
is
Comp : Entity_Id;
Comp : Entity_Id;
First : Boolean := True;
begin
Comp := First_Component_Or_Discriminant (Ent);
......@@ -1413,6 +1414,15 @@ package body Repinfo is
goto Continue;
end if;
if List_Representation_Info_To_JSON then
if First then
Write_Eol;
First := False;
else
Write_Line (",");
end if;
end if;
List_Component_Layout (Comp,
Starting_Position, Starting_First_Bit, Prefix);
end;
......@@ -1678,7 +1688,11 @@ package body Repinfo is
Write_Line (",");
Write_Str (" ""record"": [");
List_Structural_Record_Layout (Ent, Ent);
if Is_Base_Type (Ent) then
List_Structural_Record_Layout (Ent, Ent);
else
List_Record_Layout (Ent);
end if;
Write_Eol;
Write_Str (" ]");
......
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