summaryrefslogtreecommitdiff
path: root/vala/valasemanticanalyzer.vala
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2010-03-22 23:12:47 +0100
committerJürg Billeter <j@bitron.ch>2010-03-22 23:12:47 +0100
commit17028dcb59a9df29c1a1c71a1f1ed48f083f4b77 (patch)
tree941605143239509b534fcab4e9fca2e840a97b8d /vala/valasemanticanalyzer.vala
parente37a70819b26a5dd5d664c26bf9d27f48e608484 (diff)
downloadvala-17028dcb59a9df29c1a1c71a1f1ed48f083f4b77.tar.gz
Report error when using instance method as argument in static methods
Fixes bug 598839.
Diffstat (limited to 'vala/valasemanticanalyzer.vala')
-rw-r--r--vala/valasemanticanalyzer.vala9
1 files changed, 9 insertions, 0 deletions
diff --git a/vala/valasemanticanalyzer.vala b/vala/valasemanticanalyzer.vala
index 130e2ca4d..818ea7d50 100644
--- a/vala/valasemanticanalyzer.vala
+++ b/vala/valasemanticanalyzer.vala
@@ -566,6 +566,15 @@ public class Vala.SemanticAnalyzer : CodeVisitor {
}
}
}
+ var ma = arg as MemberAccess;
+ if (ma != null && ma.prototype_access) {
+ // allow prototype access if target type is delegate without target
+ var deleg_type = arg.target_type as DelegateType;
+ if (deleg_type == null || deleg_type.delegate_symbol.has_target) {
+ Report.error (arg.source_reference, "Access to instance member `%s' denied".printf (arg.symbol_reference.get_full_name ()));
+ }
+ return false;
+ }
return true;
}