From: Jürg Billeter Date: Fri, 16 Jan 2009 16:44:57 +0000 (+0000) Subject: Detect local variables conflicting with parameters, patch by Andreas X-Git-Tag: VALA_0_5_6~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ca34ef69e44de06aa950ea1def22d35bc725bd6d;p=thirdparty%2Fvala.git Detect local variables conflicting with parameters, patch by Andreas 2009-01-16 Jürg Billeter * 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 --- diff --git a/ChangeLog b/ChangeLog index 260c9f507..20d208133 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2009-01-16 Jürg Billeter + + * 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 * vapi/Makefile.am: diff --git a/vala/valablock.vala b/vala/valablock.vala index 201c5b330..d392c96ea 100644 --- a/vala/valablock.vala +++ b/vala/valablock.vala @@ -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); } diff --git a/vala/valaflowanalyzer.vala b/vala/valaflowanalyzer.vala index bfd427e4b..ba65c7f41 100644 --- a/vala/valaflowanalyzer.vala +++ b/vala/valaflowanalyzer.vala @@ -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 ()) { diff --git a/vala/valaparser.vala b/vala/valaparser.vala index f3c07ac3e..be5abb855 100644 --- a/vala/valaparser.vala +++ b/vala/valaparser.vala @@ -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; } }