diff options
| author | Tristan Gingold <tgingold@free.fr> | 2022-03-15 21:23:59 +0100 | 
|---|---|---|
| committer | Tristan Gingold <tgingold@free.fr> | 2022-03-16 07:28:24 +0100 | 
| commit | 987c5b78ab65c897d9e5757abc807df0fe264144 (patch) | |
| tree | 459da83c22d255dfc92c1c2913dd1c4b405896e9 /src | |
| parent | 55e33158573e38a4c385ca705e26784176d9b508 (diff) | |
| download | ghdl-987c5b78ab65c897d9e5757abc807df0fe264144.tar.gz ghdl-987c5b78ab65c897d9e5757abc807df0fe264144.tar.bz2 ghdl-987c5b78ab65c897d9e5757abc807df0fe264144.zip | |
vhdl-19: analyze return identifier
Diffstat (limited to 'src')
| -rw-r--r-- | src/vhdl/vhdl-sem.adb | 18 | 
1 files changed, 18 insertions, 0 deletions
| diff --git a/src/vhdl/vhdl-sem.adb b/src/vhdl/vhdl-sem.adb index 3de7fd78e..3338f77f6 100644 --- a/src/vhdl/vhdl-sem.adb +++ b/src/vhdl/vhdl-sem.adb @@ -29,6 +29,7 @@ with Vhdl.Sem_Names; use Vhdl.Sem_Names;  with Vhdl.Sem_Specs; use Vhdl.Sem_Specs;  with Vhdl.Sem_Decls; use Vhdl.Sem_Decls;  with Vhdl.Sem_Assocs; use Vhdl.Sem_Assocs; +with Vhdl.Sem_Types;  with Vhdl.Sem_Inst;  with Vhdl.Sem_Lib; use Vhdl.Sem_Lib;  with Vhdl.Sem_Psl; @@ -2109,6 +2110,23 @@ package body Vhdl.Sem is        end loop;        Enable_Warning (Warnid_Hide, Warn_Hide_Enabled); +      --  For vhdl-19, handle return identifier. +      if Get_Kind (Spec) = Iir_Kind_Function_Declaration then +         declare +            Ret : constant Iir := Get_Return_Identifier (Spec); +            Ret_Type : Iir; +         begin +            if Ret /= Null_Iir then +               Xrefs.Xref_Decl (Ret); +               Set_Visible_Flag (Ret, True); +               Ret_Type := Get_Type (Spec); +               Ret_Type := Sem_Types.Build_Constrained_Subtype (Ret_Type, Ret); +               Set_Type (Ret, Ret_Type); +               Add_Name (Ret, Get_Identifier (Ret), False); +            end if; +         end; +      end if; +        Sem_Sequential_Statements (Spec, Subprg);        Set_Is_Within_Flag (Spec, False); | 
