bool MoveObjectVisitor::visit(UiObjectBinding *ast) { if (didRewriting()) return false; if (ast->qualifiedTypeNameId->identifierToken.offset == objectLocation) { TextModifier::MoveInfo moveInfo; moveInfo.objectStart = objectLocation; moveInfo.objectEnd = ast->lastSourceLocation().end(); // remove leading indentation and property name: int start = ast->firstSourceLocation().offset; int end = moveInfo.objectEnd; includeSurroundingWhitespace(start, end); includeLeadingEmptyLine(start); moveInfo.leadingCharsToRemove = objectLocation - start; // remove trailing indentation moveInfo.trailingCharsToRemove = end - moveInfo.objectEnd; doMove(moveInfo); } return !didRewriting(); }
virtual bool visit(UiObjectDefinition *ast) { if (didRewriting()) return false; if (ast->firstSourceLocation().offset == targetParentObjectLocation) insertInto(ast->initializer); return !didRewriting(); }
virtual bool visit(UiObjectBinding *ast) { if (didRewriting()) return false; if (ast->qualifiedTypeNameId->identifierToken.offset == targetParentObjectLocation) insertInto(ast->initializer); return !didRewriting(); }
bool AddPropertyVisitor::visit(QmlJS::AST::UiObjectBinding *ast) { if (didRewriting()) return false; if (ast->qualifiedTypeNameId->identifierToken.offset == m_parentLocation) { // FIXME: change this to use the QmlJS::Rewriter class addInMembers(ast->initializer); return false; } return !didRewriting(); }
bool AddPropertyVisitor::visit(QmlJS::AST::UiObjectDefinition *ast) { if (didRewriting()) return false; if (ast->firstSourceLocation().offset == m_parentLocation) { // FIXME: change this to use the QmlJS::Rewriter class addInMembers(ast->initializer); return false; } return !didRewriting(); }
bool MoveObjectVisitor::visit(UiArrayBinding *ast) { if (didRewriting()) return false; UiArrayMemberList *currentMember = 0; for (UiArrayMemberList *it = ast->members; it; it = it->next) { if (it->member->firstSourceLocation().offset == objectLocation) { currentMember = it; break; } } if (currentMember) { TextModifier::MoveInfo moveInfo; moveInfo.objectStart = currentMember->member->firstSourceLocation().begin(); moveInfo.objectEnd = currentMember->member->lastSourceLocation().end(); if (currentMember == ast->members && !currentMember->next) { // array with 1 element, which is moved away, so also remove the array binding int start = ast->firstSourceLocation().offset; int end = ast->lastSourceLocation().end(); includeSurroundingWhitespace(start, end); moveInfo.leadingCharsToRemove = objectLocation - start; moveInfo.trailingCharsToRemove = end - moveInfo.objectEnd; } else if (currentMember->next) { // we're not the last element, so remove the trailing comma too Q_ASSERT(currentMember->next->commaToken.isValid()); int start = objectLocation; int end = currentMember->next->commaToken.end(); includeSurroundingWhitespace(start, end); moveInfo.leadingCharsToRemove = objectLocation - start; moveInfo.trailingCharsToRemove = end - moveInfo.objectEnd; } else { // we are the last member, but not the only member, so remove the preceding comma, too Q_ASSERT(currentMember->commaToken.isValid()); int start = currentMember->commaToken.offset; int end = moveInfo.objectEnd; includeSurroundingWhitespace(start, end); moveInfo.leadingCharsToRemove = objectLocation - start; moveInfo.trailingCharsToRemove = end - moveInfo.objectEnd; } doMove(moveInfo); } return !didRewriting(); }