diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/vhdl/sem_assocs.adb | 11 | 
1 files changed, 10 insertions, 1 deletions
diff --git a/src/vhdl/sem_assocs.adb b/src/vhdl/sem_assocs.adb index a2c45eeac..adae8b6b4 100644 --- a/src/vhdl/sem_assocs.adb +++ b/src/vhdl/sem_assocs.adb @@ -1620,6 +1620,7 @@ package body Sem_Assocs is              Res := Create_Iir (Iir_Kind_Association_Element_Subprogram);              Location_Copy (Res, Actual);              Set_Actual (Res, Build_Simple_Name (Decl, Get_Location (Actual))); +            Set_Use_Flag (Decl, True);              return Res;           end if;           Interp := Get_Next_Interpretation (Interp); @@ -1787,8 +1788,10 @@ package body Sem_Assocs is                 Error_Msg_Sem                   (+Assoc, "profile of %n doesn't match profile of %n",                    (+Actual, +Inter)); +               --  Explain                 Discard := Has_Interface_Subprogram_Profile                   (Inter, Res, Get_Location (Assoc)); +               return;              end if;           when Iir_Kind_Overload_List =>              declare @@ -1834,13 +1837,19 @@ package body Sem_Assocs is                            (+Assoc, " %n declared at %l", (+El, +El));                       end loop;                    end if; +                  return; +               elsif First_Error then +                  return;                 end if;                 Free_Overload_List (Res); -               Set_Named_Entity (Actual, R); +               Res := R;              end;           when others =>              Error_Kind ("sem_association_subprogram", Res);        end case; + +      Set_Named_Entity (Actual, Res); +      Set_Use_Flag (Res, True);     end Sem_Association_Subprogram;     --  Associate ASSOC with interface INTERFACE  | 
