+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,
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>
/* 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);
--- /dev/null
+// 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 *-*-* } }
+ }
+};