]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Detect local variables conflicting with parameters, patch by Andreas
authorJürg Billeter <j@bitron.ch>
Fri, 16 Jan 2009 16:44:57 +0000 (16:44 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Fri, 16 Jan 2009 16:44:57 +0000 (16:44 +0000)
2009-01-16  Jürg Billeter  <j@bitron.ch>

* vala/valablock.vala:

Detect local variables conflicting with parameters,
patch by Andreas Brauchli, fixes bug 523189

* vala/valaflowanalyzer.vala:
* vala/valaparser.vala:

Fix conflicts

svn path=/trunk/; revision=2359

ChangeLog
vala/valablock.vala
vala/valaflowanalyzer.vala
vala/valaparser.vala

index 260c9f50763336ebf927a235df353a9493e3fa14..20d208133afc8efc880111570739710a2cb3fe81 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2009-01-16  Jürg Billeter  <j@bitron.ch>
+
+       * vala/valablock.vala:
+
+       Detect local variables conflicting with parameters,
+       patch by Andreas Brauchli, fixes bug 523189
+
+       * vala/valaflowanalyzer.vala:
+       * vala/valaparser.vala:
+
+       Fix conflicts
+
 2009-01-16  Jürg Billeter  <j@bitron.ch>
 
        * vapi/Makefile.am:
index 201c5b330d658fb61ae68ddd0cbef2f9eb4696cf..d392c96ea66edfa40e85e96d816b6901b06bf3ed 100644 (file)
@@ -84,13 +84,13 @@ public class Vala.Block : Symbol, Statement {
         * @param decl a variable declarator
         */
        public void add_local_variable (LocalVariable local) {
-               var parent_block = parent_symbol as Block;
-               while (parent_block != null) {
+               var parent_block = parent_symbol;
+               while (parent_block is Block || parent_block is Method) {
                        if (parent_block.scope.lookup (local.name) != null) {
                                Report.error (local.source_reference, "Local variable `%s' conflicts with another local variable declared in a parent scope".printf (local.name));
                                break;
                        }
-                       parent_block = parent_block.parent_symbol as Block;
+                       parent_block = parent_block.parent_symbol;
                }
                local_variables.add (local);
        }
index bfd427e4bfed42e5730e74d56e5980f4656b187c..ba65c7f41a0f7d7f562a1b91fbd3ca8938323f08 100644 (file)
@@ -622,8 +622,8 @@ public class Vala.FlowAnalyzer : CodeVisitor {
                foreach (SwitchSection section in stmt.get_sections ()) {
                        current_block = new BasicBlock ();
                        condition_block.connect (current_block);
-                       foreach (Statement stmt in section.get_statements ()) {
-                               stmt.accept (this);
+                       foreach (Statement section_stmt in section.get_statements ()) {
+                               section_stmt.accept (this);
                        }
 
                        if (section.has_default_label ()) {
index f3c07ac3ee0075ad3bdda7cfbd87a278ff8f7a4d..be5abb855e0d081da06217f001a5b34cfd230303 100644 (file)
@@ -2261,7 +2261,7 @@ public class Vala.Parser : CodeVisitor {
                                expect (TokenType.SEMICOLON);
                        } else {
                                var accessor_begin = get_location ();
-                               var attrs = parse_attributes ();
+                               var accessor_attrs = parse_attributes ();
                                var accessor_access = parse_access_modifier (SymbolAccessibility.PUBLIC);
 
                                var value_type = type.copy ();
@@ -2282,7 +2282,7 @@ public class Vala.Parser : CodeVisitor {
                                                prop.external = false;
                                        }
                                        prop.get_accessor = new PropertyAccessor (true, false, false, value_type, block, get_src (accessor_begin));
-                                       set_attributes (prop.get_accessor, attrs);
+                                       set_attributes (prop.get_accessor, accessor_attrs);
                                        prop.get_accessor.access = accessor_access;
                                } else {
                                        bool writable, _construct;
@@ -2304,7 +2304,7 @@ public class Vala.Parser : CodeVisitor {
                                                prop.external = false;
                                        }
                                        prop.set_accessor = new PropertyAccessor (false, writable, _construct, value_type, block, get_src (accessor_begin));
-                                       set_attributes (prop.set_accessor, attrs);
+                                       set_attributes (prop.set_accessor, accessor_attrs);
                                        prop.set_accessor.access = accessor_access;
                                }
                        }