diff options
author | Jürg Billeter <j@bitron.ch> | 2009-08-16 17:06:50 +0200 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2009-08-16 17:18:29 +0200 |
commit | ec5a591a714d9ad0ecb04f969a703ffb0b2e5bec (patch) | |
tree | d4b532d2359eccdd242d9617dca770bc19220f13 /vala/valaobjectcreationexpression.vala | |
parent | 380b0786f633baa40b877f079317ab070b6402fb (diff) | |
download | vala-ec5a591a714d9ad0ecb04f969a703ffb0b2e5bec.tar.gz |
Respect accessibility of creation methods
Fixes bug 560974.
Diffstat (limited to 'vala/valaobjectcreationexpression.vala')
-rw-r--r-- | vala/valaobjectcreationexpression.vala | 16 |
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; |