summaryrefslogtreecommitdiff
path: root/vala/valaobjectcreationexpression.vala
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2009-08-16 17:06:50 +0200
committerJürg Billeter <j@bitron.ch>2009-08-16 17:18:29 +0200
commitec5a591a714d9ad0ecb04f969a703ffb0b2e5bec (patch)
treed4b532d2359eccdd242d9617dca770bc19220f13 /vala/valaobjectcreationexpression.vala
parent380b0786f633baa40b877f079317ab070b6402fb (diff)
downloadvala-ec5a591a714d9ad0ecb04f969a703ffb0b2e5bec.tar.gz
Respect accessibility of creation methods
Fixes bug 560974.
Diffstat (limited to 'vala/valaobjectcreationexpression.vala')
-rw-r--r--vala/valaobjectcreationexpression.vala16
1 files changed, 16 insertions, 0 deletions
diff --git a/vala/valaobjectcreationexpression.vala b/vala/valaobjectcreationexpression.vala
index 763c5a438..860ccf7e9 100644
--- a/vala/valaobjectcreationexpression.vala
+++ b/vala/valaobjectcreationexpression.vala
@@ -256,6 +256,22 @@ public class Vala.ObjectCreationExpression : Expression {
}
}
+ if (symbol_reference != null && symbol_reference.access == SymbolAccessibility.PRIVATE) {
+ bool in_target_type = false;
+ for (Symbol this_symbol = analyzer.current_symbol; this_symbol != null; this_symbol = this_symbol.parent_symbol) {
+ if (this_symbol == cl) {
+ in_target_type = true;
+ break;
+ }
+ }
+
+ if (!in_target_type) {
+ error = true;
+ Report.error (source_reference, "Access to private member `%s' denied".printf (symbol_reference.get_full_name ()));
+ return false;
+ }
+ }
+
while (cl != null) {
if (cl.get_ref_sink_function () != null) {
value_type.floating_reference = true;