QmlJS: Clean up idOfObject() and folding text code.

Change-Id: Id3e9d24689c67ce0e12b12b82636177a0344ede1
Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com>
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@nokia.com>
This commit is contained in:
Christian Kamm
2011-10-24 09:28:02 +02:00
parent 2ec51f5b2c
commit c8fc9b33ae
4 changed files with 24 additions and 47 deletions

View File

@@ -96,29 +96,16 @@ SourceLocation QmlJS::fullLocationForQualifiedId(AST::UiQualifiedId *qualifiedId
return locationFromRange(start, end); return locationFromRange(start, end);
} }
QString QmlJS::idOfObject(UiObjectDefinition *object, UiScriptBinding **idBinding) /*!
{ \returns the value of the 'id:' binding in \a object
if (!object) { \param idBinding optional out parameter to get the UiScriptBinding for the id binding
if (idBinding) */
*idBinding = 0; QString QmlJS::idOfObject(Node *object, UiScriptBinding **idBinding)
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)
{ {
if (idBinding) if (idBinding)
*idBinding = 0; *idBinding = 0;
UiObjectInitializer *initializer = initializerOfObject(object);
if (!initializer) if (!initializer)
return QString(); return QString();
@@ -143,11 +130,14 @@ QString QmlJS::idOfObject(UiObjectInitializer *initializer, UiScriptBinding **id
return QString(); 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<UiObjectDefinition *>(node)) if (UiObjectDefinition *definition = cast<UiObjectDefinition *>(object))
return definition->initializer; return definition->initializer;
if (UiObjectBinding *binding = cast<UiObjectBinding *>(node)) if (UiObjectBinding *binding = cast<UiObjectBinding *>(object))
return binding->initializer; return binding->initializer;
return 0; return 0;
} }

View File

@@ -18,11 +18,10 @@ QMLJS_EXPORT AST::SourceLocation locationFromRange(const AST::SourceLocation &st
QMLJS_EXPORT AST::SourceLocation fullLocationForQualifiedId(AST::UiQualifiedId *); QMLJS_EXPORT AST::SourceLocation fullLocationForQualifiedId(AST::UiQualifiedId *);
QMLJS_EXPORT QString idOfObject(AST::UiObjectDefinition *object, AST::UiScriptBinding **idBinding = 0); QMLJS_EXPORT QString idOfObject(AST::Node *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 AST::UiObjectInitializer *initializerOfObject(AST::Node *object);
QMLJS_EXPORT AST::UiObjectInitializer *initializerOfObject(AST::Node *node);
QMLJS_EXPORT AST::UiQualifiedId *qualifiedTypeNameId(AST::Node *node); QMLJS_EXPORT AST::UiQualifiedId *qualifiedTypeNameId(AST::Node *node);
QMLJS_EXPORT bool isValidBuiltinPropertyType(const QString &name); QMLJS_EXPORT bool isValidBuiltinPropertyType(const QString &name);

View File

@@ -1695,28 +1695,16 @@ TextEditor::IAssistInterface *QmlJSTextEditorWidget::createAssistInterface(
QString QmlJSTextEditorWidget::foldReplacementText(const QTextBlock &block) const 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()) if (curlyIndex != -1 && m_semanticInfo.isValid()) {
return TextEditor::BaseTextEditorWidget::foldReplacementText(block); const int pos = block.position() + curlyIndex;
int pos = block.position() + curlyIndex;
Node *node = m_semanticInfo.rangeAt(pos); Node *node = m_semanticInfo.rangeAt(pos);
if (node) { const QString objectId = idOfObject(node);
UiObjectInitializer *objectInitializer = 0;
if (UiObjectDefinition *def = cast<UiObjectDefinition *>(node))
objectInitializer = def->initializer;
else if (UiObjectBinding *binding = cast<UiObjectBinding *>(node))
objectInitializer = binding->initializer;
// Get the id value, if it exists, and display it
if (objectInitializer) {
QString objectId = idOfObject(objectInitializer);
if (!objectId.isEmpty()) if (!objectId.isEmpty())
return QLatin1String("id: ") + objectId + QLatin1String("..."); return QLatin1String("id: ") + objectId + QLatin1String("...");
} }
}
return TextEditor::BaseTextEditorWidget::foldReplacementText(block); return TextEditor::BaseTextEditorWidget::foldReplacementText(block);
} }

View File

@@ -160,7 +160,7 @@ protected:
return true; return true;
QString context = toString(ast->qualifiedTypeNameId); QString context = toString(ast->qualifiedTypeNameId);
const QString id = idOfObject(ast->initializer); const QString id = idOfObject(ast);
if (!id.isEmpty()) if (!id.isEmpty())
context = QString("%1 (%2)").arg(id, context); context = QString("%1 (%2)").arg(id, context);
accept(ast->initializer, contextString(context)); accept(ast->initializer, contextString(context));
@@ -173,7 +173,7 @@ protected:
return true; return true;
QString context = toString(ast->qualifiedTypeNameId); QString context = toString(ast->qualifiedTypeNameId);
const QString id = idOfObject(ast->initializer); const QString id = idOfObject(ast);
if (!id.isEmpty()) if (!id.isEmpty())
context = QString("%1 (%2)").arg(id, context); context = QString("%1 (%2)").arg(id, context);
accept(ast->initializer, contextString(context)); accept(ast->initializer, contextString(context));