mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-19 08:30:28 +08:00
re PR c++/28432 (duplicate "no member function declared" message)
PR c++/28432 * decl2.c (check_classfn): Remove early return. * search.c (lookup_member): Return NULL with bad type. * g++.dg/other/pr28304.C: Change expected error message. * g++.dg/other/pr28432.C: New test. From-SVN: r115857
This commit is contained in:
parent
f47165c975
commit
a82f93ac13
@ -1,3 +1,9 @@
|
||||
2006-08-01 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
PR c++/28432
|
||||
* decl2.c (check_classfn): Remove early return.
|
||||
* search.c (lookup_member): Return NULL with bad type.
|
||||
|
||||
2006-08-01 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
PR c++/28256
|
||||
|
@ -673,11 +673,8 @@ check_classfn (tree ctype, tree function, tree template_parms)
|
||||
else if (!COMPLETE_TYPE_P (ctype))
|
||||
cxx_incomplete_type_error (function, ctype);
|
||||
else
|
||||
{
|
||||
error ("no %q#D member function declared in class %qT",
|
||||
function, ctype);
|
||||
return NULL_TREE;
|
||||
}
|
||||
error ("no %q#D member function declared in class %qT",
|
||||
function, ctype);
|
||||
|
||||
/* If we did not find the method in the class, add it to avoid
|
||||
spurious errors (unless the CTYPE is not yet defined, in which
|
||||
|
@ -1209,7 +1209,8 @@ lookup_member (tree xbasetype, tree name, int protect, bool want_type)
|
||||
}
|
||||
else
|
||||
{
|
||||
gcc_assert (IS_AGGR_TYPE_CODE (TREE_CODE (xbasetype)));
|
||||
if (!IS_AGGR_TYPE_CODE (TREE_CODE (xbasetype)))
|
||||
return NULL_TREE;
|
||||
type = xbasetype;
|
||||
xbasetype = NULL_TREE;
|
||||
}
|
||||
|
@ -1,3 +1,9 @@
|
||||
2006-08-01 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
PR c++/28432
|
||||
* g++.dg/other/pr28304.C: Change expected error message.
|
||||
* g++.dg/other/pr28432.C: New test.
|
||||
|
||||
2006-08-01 Steve Ellcey <sje@cup.hp.com>
|
||||
|
||||
PR c++/28256
|
||||
|
@ -7,5 +7,5 @@ template<typename T> void A::foo(T) {} // { dg-error "" }
|
||||
|
||||
void bar()
|
||||
{
|
||||
A::foo(1); // { dg-error "not a member" }
|
||||
A::foo(1); // { dg-error "no matching function for call" }
|
||||
}
|
||||
|
7
gcc/testsuite/g++.dg/other/pr28432.C
Normal file
7
gcc/testsuite/g++.dg/other/pr28432.C
Normal file
@ -0,0 +1,7 @@
|
||||
|
||||
// Test to make sure we do not ICE on this invalid program.
|
||||
|
||||
// { dg-options "" }
|
||||
|
||||
struct A {};
|
||||
void A::foo(); // { dg-error "member function declared in class|outside of class is not definition" }
|
Loading…
x
Reference in New Issue
Block a user