]> git.ipfire.org Git - thirdparty/gcc.git/commit
Implement N2439 (ref-qualifiers for 'this')
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 1 Apr 2013 19:04:59 +0000 (19:04 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 1 Apr 2013 19:04:59 +0000 (19:04 +0000)
commite116411c3efd8aa1b5ee556b16275c460a143849
treeb559fa7f7e6f0e57d15a631da9a9be7802955ac1
parent1a05e335520ee86c1c59c973f338a1271d1e530c
Implement N2439 (ref-qualifiers for 'this')
* cp-tree.h (FUNCTION_REF_QUALIFIED): New.
(FUNCTION_RVALUE_QUALIFIED): New.
(FUNCTION_OR_METHOD_TYPE_CHECK): New.
(cpp0x_warn_str): Add CPP0X_REF_QUALIFIER.
(cp_ref_qualifier): New enum.
(cp_declarator): Add ref_qualifier.
* parser.c (cp_parser_ref_qualifier_seq_opt): New.
(cp_parser_direct_declarator): Use it.
(make_call_declarator): Adjust.
(cp_parser_lambda_declarator_opt): Adjust.
* call.c (add_function_candidate): Handle ref-qualifier overload
resolution semantics.
(standard_conversion): Adjust.
* class.c (add_method, same_signature_p): Compare ref-qualifiers.
* decl.c (grokdeclarator): Handle ref-qualifiers.
(grokfndecl): Check for invalid ref-qualifiers.
(static_fn_type, revert_static_member_fn): Adjust.
* decl2.c (build_memfn_type): Handle ref-qualifiers.
(check_classfn): Check them.
(cp_reconstruct_complex_type): Retain them.
* error.c (dump_ref_qualifier): New.
(dump_type_suffix, dump_function_decl): Use it.
(maybe_warn_cpp0x): Handle CPP0X_REF_QUALIFIER.
* pt.c (tsubst, tsubst_function_type): Instantiate ref-quals.
(unify): Retain them.
* tree.c (cp_check_qualified_type): New.
(cp_build_qualified_type_real): Keep exception spec and ref-qual.
(build_ref_qualified_type): New.
(strip_typedefs, build_exception_variant): Keep ref-qualifier.
(cp_build_type_attribute_variant): Keep ref-qualifier.
* typeck.c (merge_types): Keep ref-qualifier.
(structural_comptypes): Compare ref-qualifier.
(type_memfn_rqual): New.
(apply_memfn_quals): Take ref-qual argument.
* typeck2.c (build_m_component_ref): Check ref-qualifier.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@197315 138bc75d-0d04-0410-961f-82ee72b054a4
20 files changed:
gcc/cp/ChangeLog
gcc/cp/call.c
gcc/cp/class.c
gcc/cp/cp-tree.h
gcc/cp/decl.c
gcc/cp/decl2.c
gcc/cp/error.c
gcc/cp/parser.c
gcc/cp/pt.c
gcc/cp/tree.c
gcc/cp/typeck.c
gcc/cp/typeck2.c
gcc/testsuite/g++.dg/cpp0x/ref-qual1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/ref-qual2.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/ref-qual3.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/ref-qual4.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/ref-qual5.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/ref-qual6.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/ref-qual7.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/ref-qual8.C [new file with mode: 0644]