init.c (build_member_call): For now, don't convert to intermediate base if it would cause an error.
* init.c (build_member_call): For now, don't convert to intermediate base if it would cause an error. From-SVN: r52078
This commit is contained in:
parent
1ce7f3c2ab
commit
cd6af0c13a
|
@ -1,3 +1,8 @@
|
|||
2002-04-09 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* init.c (build_member_call): For now, don't convert to
|
||||
intermediate base if it would cause an error.
|
||||
|
||||
2002-04-08 Paolo Carlini <pcarlini@unitus.it>
|
||||
|
||||
* parse.y (namespace_qualifier, maybe_identifier,
|
||||
|
@ -276,8 +281,8 @@
|
|||
|
||||
2002-03-22 Jeff Knaggs <jknaggs@redhat.com>
|
||||
|
||||
* typeck.c (expand_ptrmemfunc_cst): Scale idx down to an index
|
||||
into the vtable_entry array regardless of
|
||||
* typeck.c (get_member_function_from_ptrfunc): Scale idx down to
|
||||
an index into the vtable_entry array regardless of
|
||||
TARGET_PTRMEMFUNC_VBIT_LOCATION.
|
||||
|
||||
2002-03-21 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
|
|
@ -1497,7 +1497,11 @@ build_member_call (type, name, parmlist)
|
|||
|
||||
/* Convert 'this' to the specified type to disambiguate conversion
|
||||
to the function's context. */
|
||||
if (decl == current_class_ref)
|
||||
if (decl == current_class_ref
|
||||
/* ??? this is wrong, but if this conversion is invalid we need to
|
||||
defer it until we know whether we are calling a static or
|
||||
non-static member function. Be conservative for now. */
|
||||
&& ACCESSIBLY_UNIQUELY_DERIVED_P (type, current_class_type))
|
||||
{
|
||||
basetype_path = NULL_TREE;
|
||||
decl = build_scoped_ref (decl, type, &basetype_path);
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
// Test that explicitly scoped references to static members work even if
|
||||
// they belong to an inaccessible base.
|
||||
|
||||
struct A
|
||||
{
|
||||
static int i1;
|
||||
int i2;
|
||||
static void f1 ();
|
||||
void f2 ();
|
||||
};
|
||||
|
||||
struct B: private A { };
|
||||
struct C: public B
|
||||
{
|
||||
void g ()
|
||||
{
|
||||
::A::i1 = 1;
|
||||
::A::i2 = 1; // { dg-error "access" "" }
|
||||
::A::f1 ();
|
||||
::A::f2 (); // { dg-error "access" "" { xfail *-*-* } }
|
||||
}
|
||||
};
|
Loading…
Reference in New Issue