diff options
author | nathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-01-03 14:39:10 +0000 |
---|---|---|
committer | nathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-01-03 14:39:10 +0000 |
commit | d8ae764760c1f07beeb7f7c73894c8222f93a45e (patch) | |
tree | acdad70455870f766fb7e96793203aa55d4c5eb1 /gcc/cp/search.c | |
parent | 544f197e807a64ff60b44420eecb112689b35d21 (diff) | |
download | gcc-d8ae764760c1f07beeb7f7c73894c8222f93a45e.tar.gz |
cp:
Implement exceptions specifiers for implicit member functions.
* cp-tree.h (merge_exceptions_specifiers): Declare new function.
* method.c (synthesize_exception_spec): New function.
(locate_dtor, locate_ctor, locate_copy): New functions.
(implicitly_declare_fn): Generate the exception spec too.
* search.c (check_final_overrider): Check artificial functions
too.
* typeck2.c (merge_exception_specifiers): New function.
testsuite:
* g++.old-deja/g++.eh/spec6.C: Remove remaining XFAIL.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38659 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp/search.c')
-rw-r--r-- | gcc/cp/search.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/gcc/cp/search.c b/gcc/cp/search.c index 72f00901350..e2fab522fa9 100644 --- a/gcc/cp/search.c +++ b/gcc/cp/search.c @@ -1964,10 +1964,7 @@ check_final_overrider (overrider, basefn) } /* Check throw specifier is subset. */ - /* XXX At the moment, punt with artificial functions. We - don't generate their exception specifiers, so can't check properly. */ - if (! DECL_ARTIFICIAL (overrider) - && !comp_except_specs (base_throw, over_throw, 0)) + if (!comp_except_specs (base_throw, over_throw, 0)) { cp_error_at ("looser throw specifier for `%#F'", overrider); cp_error_at (" overriding `%#F'", basefn); |