+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:
* @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);
}
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 ()) {
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 ();
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;
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;
}
}