diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ada/repinfo.adb | 18 |
2 files changed, 22 insertions, 2 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index e139e2d..83685b4 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +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 diff --git a/gcc/ada/repinfo.adb b/gcc/ada/repinfo.adb index b2bc9ca..d5c099f 100644 --- a/gcc/ada/repinfo.adb +++ b/gcc/ada/repinfo.adb @@ -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 (" ]"); |