[vala: 3/8] vala: Properly restore SemanticAnalyzer.current_symbol to its original value




commit 4769941b14462ec366ef0b5a5cb934254d20ee02
Author: Rico Tzschichholz <ricotz ubuntu com>
Date:   Sat Nov 14 15:55:10 2020 +0100

    vala: Properly restore SemanticAnalyzer.current_symbol to its original value

 vala/valaconstructor.vala      | 3 ++-
 vala/valadestructor.vala       | 3 ++-
 vala/valaforeachstatement.vala | 3 ++-
 3 files changed, 6 insertions(+), 3 deletions(-)
---
diff --git a/vala/valaconstructor.vala b/vala/valaconstructor.vala
index 97f4bf4f4..2c923246c 100644
--- a/vala/valaconstructor.vala
+++ b/vala/valaconstructor.vala
@@ -71,6 +71,7 @@ public class Vala.Constructor : Subroutine {
                        this_parameter.check (context);
                }
 
+               var old_symbol = context.analyzer.current_symbol;
                context.analyzer.current_symbol = this;
 
                if (body != null) {
@@ -87,7 +88,7 @@ public class Vala.Constructor : Subroutine {
                        }
                }
 
-               context.analyzer.current_symbol = parent_symbol;
+               context.analyzer.current_symbol = old_symbol;
 
                return !error;
        }
diff --git a/vala/valadestructor.vala b/vala/valadestructor.vala
index 61797ea22..f363fee1b 100644
--- a/vala/valadestructor.vala
+++ b/vala/valadestructor.vala
@@ -71,13 +71,14 @@ public class Vala.Destructor : Subroutine {
                        this_parameter.check (context);
                }
 
+               var old_symbol = context.analyzer.current_symbol;
                context.analyzer.current_symbol = this;
 
                if (body != null) {
                        body.check (context);
                }
 
-               context.analyzer.current_symbol = parent_symbol;
+               context.analyzer.current_symbol = old_symbol;
 
                return !error;
        }
diff --git a/vala/valaforeachstatement.vala b/vala/valaforeachstatement.vala
index 2c81b202a..7f77cdc33 100644
--- a/vala/valaforeachstatement.vala
+++ b/vala/valaforeachstatement.vala
@@ -378,6 +378,7 @@ public class Vala.ForeachStatement : Block {
                element_variable.checked = true;
 
                // analyze body
+               var old_symbol = context.analyzer.current_symbol;
                owner = context.analyzer.current_symbol.scope;
                context.analyzer.current_symbol = this;
 
@@ -391,7 +392,7 @@ public class Vala.ForeachStatement : Block {
                        local.active = false;
                }
 
-               context.analyzer.current_symbol = context.analyzer.current_symbol.parent_symbol;
+               context.analyzer.current_symbol = old_symbol;
 
                collection_variable = new LocalVariable (collection_type.copy (), "%s_collection".printf 
(variable_name));
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]