C++ PATCH: fix PR 10668
Gabriel Dos Reis
gdr@integrable-solutions.net
Thu Jul 17 11:53:00 GMT 2003
This improves diagnostics in ill-formed program like:
struct A {
int i;
struct B {
void f();
};
};
void A::B::f()
{
int* p = &i; // ERROR
}
We used to say:
error: `A::i' is not a member of `A::B'
Now say say
error: invalid use of nonstatic data member 'A::i'
as improvement requested in the audit trail.
Bootstrapped and regtested on an i686-pc-linux-gnu.
Applied to mainline.
-- Gaby
Index: ChangeLog
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cp/ChangeLog,v
retrieving revision 1.3531
diff -p -r1.3531 ChangeLog
*** ChangeLog 17 Jul 2003 04:31:37 -0000 1.3531
--- ChangeLog 17 Jul 2003 11:46:48 -0000
***************
*** 1,3 ****
--- 1,8 ----
+ 2003-07-17 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ PR c++/10668
+ * typeck.c (build_class_member_access_expr): Improve diagnostic.
+
2003-07-16 Mark Mitchell <mark@codesourcery.com>
PR c++/11547
Index: typeck.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cp/typeck.c,v
retrieving revision 1.481
diff -p -r1.481 typeck.c
*** typeck.c 15 Jul 2003 23:31:52 -0000 1.481
--- typeck.c 17 Jul 2003 11:46:51 -0000
*************** build_class_member_access_expr (tree obj
*** 1805,1811 ****
member_scope = TYPE_CONTEXT (member_scope);
if (!member_scope || !DERIVED_FROM_P (member_scope, object_type))
{
! error ("`%D' is not a member of `%T'", member, object_type);
return error_mark_node;
}
--- 1805,1814 ----
member_scope = TYPE_CONTEXT (member_scope);
if (!member_scope || !DERIVED_FROM_P (member_scope, object_type))
{
! if (TREE_CODE (member) == FIELD_DECL)
! error ("invalid use of nonstatic data member '%E'", member);
! else
! error ("`%D' is not a member of `%T'", member, object_type);
return error_mark_node;
}
More information about the Gcc-patches
mailing list