From 90fbfdc31adfff5a614898af64600a4e34371345 Mon Sep 17 00:00:00 2001 From: Nicola Pero Date: Sun, 17 Oct 2010 21:52:09 +0000 Subject: In gcc/: 2010-10-17 Nicola Pero In gcc/: 2010-10-17 Nicola Pero Merge from 'apple/trunk' branch on FSF servers. 2006-03-27 Fariborz Jahanian Radar 4133425 * c-decl.c (undeclared_variable): Issue diagnostic on private 'ivar' access. In gcc/c-family/: 2010-10-17 Nicola Pero Merge from 'apple/trunk' branch on FSF servers. 2006-03-27 Fariborz Jahanian Radar 4133425 * c-common.h (objc_diagnose_private_ivar): New decl. * stub-objc.c (objc_diagnose_private_ivar): New stub. In gcc/cp/: 2010-10-17 Nicola Pero Merge from apple/trunk branch on FSF servers. 2006-03-27 Fariborz Jahanian Radar 4133425 * lex.c (unqualified_name_lookup_error): Issue diagnostic for private 'ivar' access. In gcc/objc/: 2010-10-17 Nicola Pero Merge from 'apple/trunk' branch on FSF servers. 2006-03-27 Fariborz Jahanian Radar 4133425 * objc-act.c (objc_diagnose_private_ivar): New. In gcc/testsuite/: 2010-10-17 Nicola Pero Merge from 'apple/trunk' branch on FSF servers. 2006-03-27 Fariborz Jahanian Radar 4133425 * objc.dg/private-1.m: Test modified. * obj-c++.dg/private-1.mm: Test modified. From-SVN: r165601 --- gcc/objc/objc-act.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'gcc/objc/objc-act.c') diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index 1be52d9..9040954 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -10821,6 +10821,25 @@ generate_objc_image_info (void) finish_var_decl (decl, objc_build_constructor (TREE_TYPE (decl), v)); } +/* Routine is called to issue diagnostic when reference to a private + ivar is made and no other variable with same name is found in + current scope. */ +bool +objc_diagnose_private_ivar (tree id) +{ + tree ivar; + if (!objc_method_context) + return false; + ivar = is_ivar (objc_ivar_chain, id); + if (ivar && is_private (ivar)) + { + error ("instance variable %qs is declared private", + IDENTIFIER_POINTER (id)); + return true; + } + return false; +} + /* Look up ID as an instance variable. OTHER contains the result of the C or C++ lookup, which we may want to use instead. */ /* Also handle use of property as setter/getter. */ -- cgit v1.1