aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2022-06-28 03:03:31 +0200
committerTristan Gingold <tgingold@free.fr>2022-06-28 03:03:31 +0200
commitd66272b1571d1e111fd5660ac0f5a68311850fe3 (patch)
tree7cc584d680cf0f3bb814826f4b8e53306ce400b4 /src
parentb722e6e03801eaed1d8f64ad70119658c3898ec2 (diff)
downloadghdl-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.adb20
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);