Commit 9f01ded6 by Kriang Lerdsuwanakij Committed by Kriang Lerdsuwanakij

PR c++/10230, c++/10481

	PR c++/10230, c++/10481
	* semantics.c (finish_non_static_data_member): Handle when the
	non-static member is not from a base of the current class type.

	* g++.dg/lookup/scoped5.C: New test.

From-SVN: r66683
parent fcea7401
2003-05-11 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
PR c++/10230, c++/10481
* semantics.c (finish_non_static_data_member): Handle when the
non-static member is not from a base of the current class type.
2003-05-11 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
PR c++/10552
* pt.c (tsubst_copy): Handle TEMPLATE_DECL that is a member class
template and has dependent context.
......
......@@ -1276,13 +1276,22 @@ finish_non_static_data_member (tree decl, tree qualifying_scope)
tree access_type = current_class_type;
tree object = current_class_ref;
while (!DERIVED_FROM_P (context_for_name_lookup (decl), access_type))
while (access_type
&& !DERIVED_FROM_P (context_for_name_lookup (decl), access_type))
{
access_type = TYPE_CONTEXT (access_type);
while (DECL_P (access_type))
while (access_type && DECL_P (access_type))
access_type = DECL_CONTEXT (access_type);
}
if (!access_type)
{
cp_error_at ("object missing in reference to `%D'",
decl);
error ("from this location");
return error_mark_node;
}
perform_or_defer_access_check (access_type, decl);
/* If the data member was named `C::M', convert `*this' to `C'
......
2003-05-11 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
PR c++/10230, c++/10481
* g++.dg/lookup/scoped5.C: New test.
2003-05-11 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
PR c++/10552
* g++.dg/template/ttp6.C: New test.
......
// { dg-do compile }
// Origin: pepeaty@yahoo.com
// PR c++/10230: ICE while determining if refered non-static member
// is from a base type of the current class.
class A {
public:
class B {
public:
int a; // { dg-error "member of base" }
};
};
class C {
public:
void f(void) { sizeof(A::B::a); } // { dg-error "this location" }
};
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