diff options
author | Tristan Gingold <tgingold@free.fr> | 2022-06-28 03:03:31 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2022-06-28 03:03:31 +0200 |
commit | d66272b1571d1e111fd5660ac0f5a68311850fe3 (patch) | |
tree | 7cc584d680cf0f3bb814826f4b8e53306ce400b4 /src | |
parent | b722e6e03801eaed1d8f64ad70119658c3898ec2 (diff) | |
download | ghdl-d66272b1571d1e111fd5660ac0f5a68311850fe3.tar.gz ghdl-d66272b1571d1e111fd5660ac0f5a68311850fe3.tar.bz2 ghdl-d66272b1571d1e111fd5660ac0f5a68311850fe3.zip |
vhdl-sem_names: avoid duplicate error message. For #2100
Diffstat (limited to 'src')
-rw-r--r-- | src/vhdl/vhdl-sem_names.adb | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/vhdl/vhdl-sem_names.adb b/src/vhdl/vhdl-sem_names.adb index 3ecaeb6f3..9dd2b4bd2 100644 --- a/src/vhdl/vhdl-sem_names.adb +++ b/src/vhdl/vhdl-sem_names.adb @@ -2964,6 +2964,22 @@ package body Vhdl.Sem_Names is Assoc_Chain, True, Missing_Parameter, Name, Match); end Error_Parenthesis_Function; + function Has_Error_In_Assocs (Chain : Iir) return Boolean + is + Assoc : Iir; + begin + Assoc := Chain; + while Assoc /= Null_Iir loop + if Get_Kind (Assoc) = Iir_Kind_Association_Element_By_Expression + and then Is_Error (Get_Actual (Assoc)) + then + return True; + end if; + Assoc := Get_Chain (Assoc); + end loop; + return False; + end Has_Error_In_Assocs; + Actual : Iir; Actual_Expr : Iir; begin @@ -3068,7 +3084,9 @@ package body Vhdl.Sem_Names is Free_Overload_List (Prefix); Set_Named_Entity (Prefix_Name, Res_Prefix); end; - if Res = Null_Iir then + if Res = Null_Iir and then not Has_Error_In_Assocs (Assoc_Chain) + then + -- Emit an error, but avoid a storm. Error_Msg_Sem (+Name, "no overloaded function found matching %n", +Prefix_Name); |