aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/translate/trans.adb
diff options
context:
space:
mode:
Diffstat (limited to 'src/vhdl/translate/trans.adb')
-rw-r--r--src/vhdl/translate/trans.adb20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/vhdl/translate/trans.adb b/src/vhdl/translate/trans.adb
index 6efa94701..a87c4e7b1 100644
--- a/src/vhdl/translate/trans.adb
+++ b/src/vhdl/translate/trans.adb
@@ -403,6 +403,26 @@ package body Trans is
Kind => Var_Scope_Decl, D => Decl);
end Set_Scope_Via_Decl;
+ procedure Set_Scope_Via_Var
+ (Scope : in out Var_Scope_Type; Var : Var_Type) is
+ begin
+ pragma Assert (Scope.Kind = Var_Scope_None);
+ case Var.Kind is
+ when Var_Scope =>
+ Scope := (Scope_Type => Scope.Scope_Type,
+ Kind => Var_Scope_Field,
+ Field => Var.I_Field,
+ Up_Link => Var.I_Scope);
+ when Var_Global
+ | Var_Local =>
+ Scope := (Scope_Type => Scope.Scope_Type,
+ Kind => Var_Scope_Decl,
+ D => Var.E);
+ when Var_None =>
+ raise Internal_Error;
+ end case;
+ end Set_Scope_Via_Var;
+
procedure Clear_Scope (Scope : in out Var_Scope_Type) is
begin
pragma Assert (Scope.Kind /= Var_Scope_None);