aboutsummaryrefslogtreecommitdiffstats
path: root/src/synth/synth-disp_vhdl.adb
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2022-07-27 05:42:44 +0200
committerTristan Gingold <tgingold@free.fr>2022-07-27 05:42:44 +0200
commit1f3162b29845bbe75bc0d3fac7d67e3eb60a24a7 (patch)
treeee251bc3f2ec78dadfe7dcc1f52c86082f6454ef /src/synth/synth-disp_vhdl.adb
parent14ce9c64ec5e662366fa1c6456283e0704f729f4 (diff)
downloadghdl-1f3162b29845bbe75bc0d3fac7d67e3eb60a24a7.tar.gz
ghdl-1f3162b29845bbe75bc0d3fac7d67e3eb60a24a7.tar.bz2
ghdl-1f3162b29845bbe75bc0d3fac7d67e3eb60a24a7.zip
synth-disp_vhdl: improve output for unsigned. Fix #2139
Diffstat (limited to 'src/synth/synth-disp_vhdl.adb')
-rw-r--r--src/synth/synth-disp_vhdl.adb19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/synth/synth-disp_vhdl.adb b/src/synth/synth-disp_vhdl.adb
index f7ef56c50..01046a297 100644
--- a/src/synth/synth-disp_vhdl.adb
+++ b/src/synth/synth-disp_vhdl.adb
@@ -369,8 +369,23 @@ package body Synth.Disp_Vhdl is
-- unsigned, signed or a compatible array.
W := Typ.Abound.Len;
Put (" " & Pfx & " <= ");
- Put (Name_Table.Image (Get_Identifier
- (Get_Type_Declarator (Btype))));
+ -- First the first non-anonymous parent type of the prefix.
+ -- We could directly use the base type, but:
+ -- * it is less intuitive
+ -- * vhdl2008 base type of 'unsigned' is 'unresolved_unsigned',
+ -- which is barely used and not defined in vhdl93
+ declare
+ Pfx_Type : Node;
+ Type_Decl : Node;
+ begin
+ Pfx_Type := Ptype;
+ loop
+ Type_Decl := Get_Type_Declarator (Pfx_Type);
+ exit when Type_Decl /= Null_Node;
+ Pfx_Type := Get_Parent_Type (Pfx_Type);
+ end loop;
+ Put (Name_Table.Image (Get_Identifier (Type_Decl)));
+ end;
Put ("(");
Disp_Out_Rhs (Mname, Off, W, Full);
Put_Line (");");