]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Enforce protected member restrictions
authorMarc-André Lureau <marcandre.lureau@gmail.com>
Thu, 28 Jan 2010 23:56:46 +0000 (00:56 +0100)
committerJürg Billeter <j@bitron.ch>
Fri, 29 Jan 2010 18:04:46 +0000 (19:04 +0100)
Fixes bug 592577.

vala/valamemberaccess.vala

index ceb2840ee75a437f841bd3ae91999e68674cf5f7..a3ea746f0ca426d24a5764d705dda00ff21dddb3 100644 (file)
@@ -549,7 +549,15 @@ public class Vala.MemberAccess : Expression {
 
                member.used = true;
 
-               if (access == SymbolAccessibility.PRIVATE) {
+               if (access == SymbolAccessibility.PROTECTED) {
+                       var subtype = (analyzer.current_class != null && analyzer.current_class.is_subtype_of ((TypeSymbol) member.parent_symbol));
+
+                       if (!subtype) {
+                               error = true;
+                               Report.error (source_reference, "Access to protected member `%s' denied".printf (member.get_full_name ()));
+                               return false;
+                       }
+               } else if (access == SymbolAccessibility.PRIVATE) {
                        var target_type = member.parent_symbol;
 
                        bool in_target_type = false;