Commit a26ddf11 by Kriang Lerdsuwanakij Committed by Kriang Lerdsuwanakij

re PR c++/19375 (Access violation diagnostic given twice)

	PR c++/19375
	* semantics.c (finish_id_expression): Disable access checking for
	already lookuped FIELD_DECL.

From-SVN: r93897
parent 625d4524
2005-01-19 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
PR c++/19375
* semantics.c (finish_id_expression): Disable access checking for
already lookuped FIELD_DECL.
2005-01-18 Kazu Hirata <kazu@cs.umass.edu>
* decl.c (delete_block): Remove.
......
......@@ -3,7 +3,7 @@
building RTL. These routines are used both during actual parsing
and during the instantiation of template functions.
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
Written by Mark Mitchell (mmitchell@usa.net) based on code found
formerly in parse.y and pt.c.
......@@ -2639,9 +2639,17 @@ finish_id_expression (tree id_expression,
/* The same is true for FIELD_DECL, but we also need to
make sure that the syntax is correct. */
else if (TREE_CODE (decl) == FIELD_DECL)
return finish_non_static_data_member
(decl, current_class_ref,
/*qualifying_scope=*/NULL_TREE);
{
/* Since SCOPE is NULL here, this is an unqualified name.
Access checking has been performed during name lookup
already. Turn off checking to avoid duplicate errors. */
push_deferring_access_checks (dk_no_check);
decl = finish_non_static_data_member
(decl, current_class_ref,
/*qualifying_scope=*/NULL_TREE);
pop_deferring_access_checks ();
return decl;
}
return id_expression;
}
......@@ -2706,8 +2714,15 @@ finish_id_expression (tree id_expression,
}
}
else if (TREE_CODE (decl) == FIELD_DECL)
decl = finish_non_static_data_member (decl, current_class_ref,
/*qualifying_scope=*/NULL_TREE);
{
/* Since SCOPE is NULL here, this is an unqualified name.
Access checking has been performed during name lookup
already. Turn off checking to avoid duplicate errors. */
push_deferring_access_checks (dk_no_check);
decl = finish_non_static_data_member (decl, current_class_ref,
/*qualifying_scope=*/NULL_TREE);
pop_deferring_access_checks ();
}
else if (is_overloaded_fn (decl))
{
tree first_fn = OVL_CURRENT (decl);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment