C++: Add support of ref-qualifier for functions.

Now the ref-qualifier (& or &&) of the function declaration
is propagated to GUI. For example,  'Refactor' -> 'Add Definition'
preserves the ref-qualifier.

Change-Id: I8ac4e1cad4e44985e94230aabbd9858a7e929fee
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
Dmitry Ashkadov
2014-11-13 22:18:53 +03:00
committed by Orgad Shaneh
parent c0f3094866
commit 43075f5fb1
7 changed files with 176 additions and 0 deletions

View File

@@ -3255,6 +3255,14 @@ bool Bind::visit(FunctionDeclaratorAST *ast)
fun->setOverride(type.isOverride());
fun->setFinal(type.isFinal());
// propagate ref-qualifier
if (ast->ref_qualifier_token) {
const Kind kind = tokenAt(ast->ref_qualifier_token).kind();
CPP_CHECK(kind == T_AMPER || kind == T_AMPER_AMPER); // & or && are only allowed
fun->setRefQualifier(kind == T_AMPER ? Function::LvalueRefQualifier :
Function::RvalueRefQualifier);
}
this->exceptionSpecification(ast->exception_specification, type);
if (ast->as_cpp_initializer != 0) {
fun->setAmbiguous(true);