From 426d19056ce11ca6029d28e7c529481de07cd2f9 Mon Sep 17 00:00:00 2001 From: Juerg Billeter Date: Mon, 20 Aug 2007 13:33:26 +0000 Subject: [PATCH] report error and fix critical to prevent private members in namespaces 2007-08-20 Juerg Billeter * vala/valasemanticanalyzer.vala: report error and fix critical to prevent private members in namespaces svn path=/trunk/; revision=484 --- ChangeLog | 5 +++++ vala/valasemanticanalyzer.vala | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 7993697..b3b7ca7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-08-20 Jürg Billeter + + * vala/valasemanticanalyzer.vala: report error and fix critical to + prevent private members in namespaces + 2007-08-19 Mathias Hasselmann * gobject/valacodegenerator.vala: also use _vala_array_free to diff --git a/vala/valasemanticanalyzer.vala b/vala/valasemanticanalyzer.vala index 8844596..161beb3 100644 --- a/vala/valasemanticanalyzer.vala +++ b/vala/valasemanticanalyzer.vala @@ -338,6 +338,12 @@ public class Vala.SemanticAnalyzer : CodeVisitor { current_source_file.add_symbol_dependency (f.type_reference.data_type, SourceFileDependencyType.HEADER_SHALLOW); } } else { + if (f.parent_symbol is Namespace) { + f.error = true; + Report.error (f.source_reference, "Namespaces may not have private members"); + return; + } + if (f.type_reference.data_type != null) { /* is null if it references a type parameter */ current_source_file.add_symbol_dependency (f.type_reference.data_type, SourceFileDependencyType.SOURCE); @@ -1279,7 +1285,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor { } if (access == MemberAccessibility.PRIVATE) { - var target_type = (DataType) member.parent_symbol; + var target_type = member.parent_symbol; bool in_target_type = false; for (Symbol this_symbol = current_symbol; this_symbol != null; this_symbol = this_symbol.parent_symbol) { -- 2.7.4