diff --git a/src/libs/qmljs/qmljsutils.cpp b/src/libs/qmljs/qmljsutils.cpp index 956196e5f3d..6d41b9affa7 100644 --- a/src/libs/qmljs/qmljsutils.cpp +++ b/src/libs/qmljs/qmljsutils.cpp @@ -96,29 +96,16 @@ SourceLocation QmlJS::fullLocationForQualifiedId(AST::UiQualifiedId *qualifiedId return locationFromRange(start, end); } -QString QmlJS::idOfObject(UiObjectDefinition *object, UiScriptBinding **idBinding) -{ - if (!object) { - if (idBinding) - *idBinding = 0; - return QString(); - } - return idOfObject(object->initializer, idBinding); -} -QString QmlJS::idOfObject(UiObjectBinding *object, UiScriptBinding **idBinding) -{ - if (!object) { - if (idBinding) - *idBinding = 0; - return QString(); - } - return idOfObject(object->initializer, idBinding); -} -QString QmlJS::idOfObject(UiObjectInitializer *initializer, UiScriptBinding **idBinding) +/*! + \returns the value of the 'id:' binding in \a object + \param idBinding optional out parameter to get the UiScriptBinding for the id binding +*/ +QString QmlJS::idOfObject(Node *object, UiScriptBinding **idBinding) { if (idBinding) *idBinding = 0; + UiObjectInitializer *initializer = initializerOfObject(object); if (!initializer) return QString(); @@ -143,11 +130,14 @@ QString QmlJS::idOfObject(UiObjectInitializer *initializer, UiScriptBinding **id return QString(); } -UiObjectInitializer *QmlJS::initializerOfObject(Node *node) +/*! + \returns the UiObjectInitializer if \a object is a UiObjectDefinition or UiObjectBinding, otherwise 0 +*/ +UiObjectInitializer *QmlJS::initializerOfObject(Node *object) { - if (UiObjectDefinition *definition = cast(node)) + if (UiObjectDefinition *definition = cast(object)) return definition->initializer; - if (UiObjectBinding *binding = cast(node)) + if (UiObjectBinding *binding = cast(object)) return binding->initializer; return 0; } diff --git a/src/libs/qmljs/qmljsutils.h b/src/libs/qmljs/qmljsutils.h index edca7239ce8..1d94e8faf1f 100644 --- a/src/libs/qmljs/qmljsutils.h +++ b/src/libs/qmljs/qmljsutils.h @@ -18,11 +18,10 @@ QMLJS_EXPORT AST::SourceLocation locationFromRange(const AST::SourceLocation &st QMLJS_EXPORT AST::SourceLocation fullLocationForQualifiedId(AST::UiQualifiedId *); -QMLJS_EXPORT QString idOfObject(AST::UiObjectDefinition *object, AST::UiScriptBinding **idBinding = 0); -QMLJS_EXPORT QString idOfObject(AST::UiObjectBinding *object, AST::UiScriptBinding **idBinding = 0); -QMLJS_EXPORT QString idOfObject(AST::UiObjectInitializer *initializer, AST::UiScriptBinding **idBinding = 0); +QMLJS_EXPORT QString idOfObject(AST::Node *object, AST::UiScriptBinding **idBinding = 0); + +QMLJS_EXPORT AST::UiObjectInitializer *initializerOfObject(AST::Node *object); -QMLJS_EXPORT AST::UiObjectInitializer *initializerOfObject(AST::Node *node); QMLJS_EXPORT AST::UiQualifiedId *qualifiedTypeNameId(AST::Node *node); QMLJS_EXPORT bool isValidBuiltinPropertyType(const QString &name); diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index f1b4b2045e2..ee4bf997dc0 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -1695,27 +1695,15 @@ TextEditor::IAssistInterface *QmlJSTextEditorWidget::createAssistInterface( QString QmlJSTextEditorWidget::foldReplacementText(const QTextBlock &block) const { - int curlyIndex = block.text().indexOf(QLatin1Char('{')); + const int curlyIndex = block.text().indexOf(QLatin1Char('{')); - if ((curlyIndex == -1) || !m_semanticInfo.isValid()) - return TextEditor::BaseTextEditorWidget::foldReplacementText(block); + if (curlyIndex != -1 && m_semanticInfo.isValid()) { + const int pos = block.position() + curlyIndex; + Node *node = m_semanticInfo.rangeAt(pos); - int pos = block.position() + curlyIndex; - Node *node = m_semanticInfo.rangeAt(pos); - - if (node) { - UiObjectInitializer *objectInitializer = 0; - if (UiObjectDefinition *def = cast(node)) - objectInitializer = def->initializer; - else if (UiObjectBinding *binding = cast(node)) - objectInitializer = binding->initializer; - - // Get the id value, if it exists, and display it - if (objectInitializer) { - QString objectId = idOfObject(objectInitializer); - if (!objectId.isEmpty()) - return QLatin1String("id: ") + objectId + QLatin1String("..."); - } + const QString objectId = idOfObject(node); + if (!objectId.isEmpty()) + return QLatin1String("id: ") + objectId + QLatin1String("..."); } return TextEditor::BaseTextEditorWidget::foldReplacementText(block); diff --git a/src/plugins/qmljstools/qmljslocatordata.cpp b/src/plugins/qmljstools/qmljslocatordata.cpp index 672a3e360c1..6a93b3da50e 100644 --- a/src/plugins/qmljstools/qmljslocatordata.cpp +++ b/src/plugins/qmljstools/qmljslocatordata.cpp @@ -160,7 +160,7 @@ protected: return true; QString context = toString(ast->qualifiedTypeNameId); - const QString id = idOfObject(ast->initializer); + const QString id = idOfObject(ast); if (!id.isEmpty()) context = QString("%1 (%2)").arg(id, context); accept(ast->initializer, contextString(context)); @@ -173,7 +173,7 @@ protected: return true; QString context = toString(ast->qualifiedTypeNameId); - const QString id = idOfObject(ast->initializer); + const QString id = idOfObject(ast); if (!id.isEmpty()) context = QString("%1 (%2)").arg(id, context); accept(ast->initializer, contextString(context));