diff options
author | Tristan Gingold <tgingold@free.fr> | 2014-06-29 16:38:56 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2014-06-29 16:38:56 +0200 |
commit | 13f260fca9cd8531b4a2af1d43a78c249197f931 (patch) | |
tree | e7120982652c795cdc37972da7f181d1a3765f3f /sem_expr.adb | |
parent | cde6aede1c8851fa0b64e548c5b9a391c1d6af8a (diff) | |
download | ghdl-13f260fca9cd8531b4a2af1d43a78c249197f931.tar.gz ghdl-13f260fca9cd8531b4a2af1d43a78c249197f931.tar.bz2 ghdl-13f260fca9cd8531b4a2af1d43a78c249197f931.zip |
vhdl 2008: handle all-sensitized processes, handle visibility for alias.
Diffstat (limited to 'sem_expr.adb')
-rw-r--r-- | sem_expr.adb | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/sem_expr.adb b/sem_expr.adb index e29ce8796..26ad5af1a 100644 --- a/sem_expr.adb +++ b/sem_expr.adb @@ -1800,7 +1800,13 @@ package body Sem_Expr is -- The return type is known. -- Search for explicit subprogram. - if Flags.Flag_Explicit then + + -- LRM08 12.4 Use clause + -- b) If two potentially visible declarations are homograph + -- and one is explicitly declared and the other is + -- implicitly declared, then the implicit declaration is not + -- made directly visible. + if Flags.Flag_Explicit or else Flags.Vhdl_Std >= Vhdl_08 then Decl := Get_Explicit_Subprogram (Overload_List); if Decl /= Null_Iir then return Set_Uniq_Interpretation (Decl); @@ -1811,7 +1817,10 @@ package body Sem_Expr is Error_Operator_Overload (Overload_List); -- Give an advice. - if not Flags.Flag_Explicit and not Explicit_Advice_Given then + if not Flags.Flag_Explicit + and then not Explicit_Advice_Given + and then Flags.Vhdl_Std < Vhdl_08 + then Decl := Get_Explicit_Subprogram (Overload_List); if Decl /= Null_Iir then Error_Msg_Sem @@ -3716,7 +3725,7 @@ package body Sem_Expr is if not Valid_Interpretation (Get_Next_Interpretation (Interpretation)) then - Decl := Get_Declaration (Interpretation); + Decl := Get_Non_Alias_Declaration (Interpretation); if A_Type /= Null_Iir and then A_Type = Get_Type (Decl) then -- Free overload list of expr (if any), and expr. Replace_Type (Expr, Null_Iir); @@ -3744,7 +3753,7 @@ package body Sem_Expr is -- Store overloaded interpretation. List := Create_Iir_List; while Valid_Interpretation (Interpretation) loop - Decl := Get_Declaration (Interpretation); + Decl := Get_Non_Alias_Declaration (Interpretation); Append_Element (List, Get_Type (Decl)); Interpretation := Get_Next_Interpretation (Interpretation); end loop; |