#include "ui_contextpanewidgetrectangle.h"
#include "contextpanewidget.h"
#include <qmljs/qmljspropertyreader.h>
-#include <qmljs/qmljscheck.h>
+#include <qmljs/qmljsutils.h>
#include <customcolordialog.h>
#include <QtCore/QDebug>
$$PWD/qmljsscopeastpath.h \
$$PWD/qmljsvalueowner.h \
$$PWD/qmljscontext.h \
- $$PWD/qmljsscopechain.h
+ $$PWD/qmljsscopechain.h \
+ $$PWD/qmljsutils.h
SOURCES += \
$$PWD/qmljsbind.cpp \
$$PWD/qmljsscopeastpath.cpp \
$$PWD/qmljsvalueowner.cpp \
$$PWD/qmljscontext.cpp \
- $$PWD/qmljsscopechain.cpp
+ $$PWD/qmljsscopechain.cpp \
+ $$PWD/qmljsutils.cpp
RESOURCES += \
$$PWD/qmljs.qrc
#include "parser/qmljsast_p.h"
#include "qmljsbind.h"
-#include "qmljscheck.h"
+#include "qmljsutils.h"
#include "qmljsdocument.h"
#include <languageutils/componentversion.h>
return oldObjectValue;
}
-QString Bind::toString(UiQualifiedId *qualifiedId, QChar delimiter)
-{
- QString result;
-
- for (UiQualifiedId *iter = qualifiedId; iter; iter = iter->next) {
- if (iter != qualifiedId)
- result += delimiter;
-
- result += iter->name;
- }
-
- return result;
-}
-
ObjectValue *Bind::bindObject(UiQualifiedId *qualifiedTypeNameId, UiObjectInitializer *initializer)
{
ObjectValue *parentObjectValue = 0;
ObjectValue *findAttachedJSScope(AST::Node *node) const;
bool isGroupedPropertyBinding(AST::Node *node) const;
- static QString toString(AST::UiQualifiedId *qualifiedId, QChar delimiter = QChar('.'));
-
protected:
using AST::Visitor::visit;
#include "qmljsbind.h"
#include "qmljscontext.h"
#include "qmljsevaluate.h"
+#include "qmljsutils.h"
#include "parser/qmljsast_p.h"
#include <QtCore/QDebug>
using namespace QmlJS;
using namespace QmlJS::AST;
-QColor QmlJS::toQColor(const QString &qmlColorString)
-{
- QColor color;
- if (qmlColorString.size() == 9 && qmlColorString.at(0) == QLatin1Char('#')) {
- bool ok;
- const int alpha = qmlColorString.mid(1, 2).toInt(&ok, 16);
- if (ok) {
- QString name(qmlColorString.at(0));
- name.append(qmlColorString.right(6));
- if (QColor::isValidColor(name)) {
- color.setNamedColor(name);
- color.setAlpha(alpha);
- }
- }
- } else {
- if (QColor::isValidColor(qmlColorString))
- color.setNamedColor(qmlColorString);
- }
- return color;
-}
-
-SourceLocation QmlJS::locationFromRange(const SourceLocation &start,
- const SourceLocation &end)
-{
- return SourceLocation(start.offset,
- end.end() - start.begin(),
- start.startLine,
- start.startColumn);
-}
-
-SourceLocation QmlJS::fullLocationForQualifiedId(AST::UiQualifiedId *qualifiedId)
-{
- SourceLocation start = qualifiedId->identifierToken;
- SourceLocation end = qualifiedId->identifierToken;
-
- for (UiQualifiedId *iter = qualifiedId; iter; iter = iter->next) {
- if (iter->identifierToken.isValid())
- end = iter->identifierToken;
- }
-
- return locationFromRange(start, end);
-}
-
-
-DiagnosticMessage QmlJS::errorMessage(const AST::SourceLocation &loc, const QString &message)
-{
- return DiagnosticMessage(DiagnosticMessage::Error, loc, message);
-}
-
-namespace {
-class SharedData
-{
-public:
- SharedData()
- {
- validBuiltinPropertyNames.insert(QLatin1String("action"));
- validBuiltinPropertyNames.insert(QLatin1String("bool"));
- validBuiltinPropertyNames.insert(QLatin1String("color"));
- validBuiltinPropertyNames.insert(QLatin1String("date"));
- validBuiltinPropertyNames.insert(QLatin1String("double"));
- validBuiltinPropertyNames.insert(QLatin1String("enumeration"));
- validBuiltinPropertyNames.insert(QLatin1String("font"));
- validBuiltinPropertyNames.insert(QLatin1String("int"));
- validBuiltinPropertyNames.insert(QLatin1String("list"));
- validBuiltinPropertyNames.insert(QLatin1String("point"));
- validBuiltinPropertyNames.insert(QLatin1String("real"));
- validBuiltinPropertyNames.insert(QLatin1String("rect"));
- validBuiltinPropertyNames.insert(QLatin1String("size"));
- validBuiltinPropertyNames.insert(QLatin1String("string"));
- validBuiltinPropertyNames.insert(QLatin1String("time"));
- validBuiltinPropertyNames.insert(QLatin1String("url"));
- validBuiltinPropertyNames.insert(QLatin1String("var"));
- validBuiltinPropertyNames.insert(QLatin1String("variant")); // obsolete in Qt 5
- validBuiltinPropertyNames.insert(QLatin1String("vector3d"));
- validBuiltinPropertyNames.insert(QLatin1String("alias"));
- }
-
- QSet<QString> validBuiltinPropertyNames;
-};
-} // anonymous namespace
-Q_GLOBAL_STATIC(SharedData, sharedData)
-
-bool QmlJS::isValidBuiltinPropertyType(const QString &name)
-{
- return sharedData()->validBuiltinPropertyNames.contains(name);
-}
-
namespace {
class AssignmentCheck : public ValueVisitor
void Check::checkProperty(UiQualifiedId *qualifiedId)
{
- const QString id = Bind::toString(qualifiedId);
+ const QString id = toString(qualifiedId);
if (id.at(0).isLower()) {
if (m_propertyStack.top().contains(id)) {
error(fullLocationForQualifiedId(qualifiedId),
dynamic_cast<const QmlPrototypeReference *>(lastPrototype->prototype())) {
error(typeErrorLocation,
Check::tr("could not resolve the prototype %1 of %2").arg(
- Bind::toString(ref->qmlTypeName()), lastPrototype->className()));
+ toString(ref->qmlTypeName()), lastPrototype->className()));
} else {
error(typeErrorLocation,
Check::tr("could not resolve the prototype of %1").arg(
QStack<StringSet> m_propertyStack;
};
-QMLJS_EXPORT QColor toQColor(const QString &qmlColorString);
-
-QMLJS_EXPORT AST::SourceLocation locationFromRange(const AST::SourceLocation &start,
- const AST::SourceLocation &end);
-
-QMLJS_EXPORT AST::SourceLocation fullLocationForQualifiedId(AST::UiQualifiedId *);
-
-QMLJS_EXPORT DiagnosticMessage errorMessage(const AST::SourceLocation &loc,
- const QString &message);
-
-QMLJS_EXPORT bool isValidBuiltinPropertyType(const QString &name);
-
-template <class T>
-DiagnosticMessage errorMessage(const T *node, const QString &message)
-{
- return DiagnosticMessage(DiagnosticMessage::Error,
- locationFromRange(node->firstSourceLocation(),
- node->lastSourceLocation()),
- message);
-}
-
} // namespace QmlJS
#endif // QMLJSCHECK_H
**************************************************************************/
#include "qmljsdelta.h"
+#include "qmljsutils.h"
#include <qmljs/parser/qmljsast_p.h>
#include <qmljs/parser/qmljsastvisitor_p.h>
static QList<UiObjectMember *> children(UiObjectMember *ast)
{
QList<UiObjectMember *> ret;
- if (UiObjectDefinition* foo = cast<UiObjectDefinition *>(ast)) {
- UiObjectMemberList* list = foo->initializer->members;
- while (list) {
- ret.append(list->member);
- list = list->next;
- }
- } else if(UiObjectBinding *foo = cast<UiObjectBinding *>(ast)) {
- UiObjectMemberList* list = foo->initializer->members;
+ if (UiObjectInitializer * foo = QmlJS::initializerOfObject(ast)) {
+ UiObjectMemberList* list = foo->members;
while (list) {
ret.append(list->member);
list = list->next;
static UiObjectMemberList *objectMembers(UiObjectMember *object)
{
- if (UiObjectDefinition *def = cast<UiObjectDefinition *>(object))
- return def->initializer->members;
- else if (UiObjectBinding *binding = cast<UiObjectBinding *>(object))
- return binding->initializer->members;
+ if (UiObjectInitializer *init = QmlJS::initializerOfObject(object))
+ return init->members;
return 0;
}
#include "parser/qmljsast_p.h"
#include "qmljsdocument.h"
#include "qmljsbind.h"
-#include "qmljscheck.h"
+#include "qmljsutils.h"
#include "qmljsmodelmanagerinterface.h"
#include <QtCore/QFileInfo>
QHash<QString, QList<DiagnosticMessage> > *allDiagnosticMessages;
- static AST::UiQualifiedId *qualifiedTypeNameId(AST::Node *node);
-
Context::ImportsPerDocument linkImports();
void populateImportedTypes(Imports *imports, Document::Ptr doc);
return true;
}
-UiQualifiedId *LinkPrivate::qualifiedTypeNameId(Node *node)
-{
- if (UiObjectBinding *binding = AST::cast<UiObjectBinding *>(node))
- return binding->qualifiedTypeNameId;
- else if (UiObjectDefinition *binding = AST::cast<UiObjectDefinition *>(node))
- return binding->qualifiedTypeNameId;
- else
- return 0;
-}
-
void LinkPrivate::error(const Document::Ptr &doc, const AST::SourceLocation &loc, const QString &message)
{
appendDiagnostic(doc, DiagnosticMessage(DiagnosticMessage::Error, loc, message));
// whether trying to run qmldump makes sense
bool tryQmlDump;
QString qmlDumpPath;
- Utils::Environment qmlDumpEnvironment;
+ ::Utils::Environment qmlDumpEnvironment;
QString qtImportsPath;
QString qtVersionString;
#include "qmljspropertyreader.h"
#include "qmljsdocument.h"
#include <qmljs/parser/qmljsast_p.h>
-#include <qmljs/qmljscheck.h>
+#include <qmljs/qmljsutils.h>
#include <QtGui/QLinearGradient>
return -1;
}
-static inline QString flatten(UiQualifiedId *qualifiedId)
-{
- QString result;
-
- for (UiQualifiedId *iter = qualifiedId; iter; iter = iter->next) {
- if (iter->name.isEmpty())
- continue;
-
- if (!result.isEmpty())
- result.append(QLatin1Char('.'));
-
- result.append(iter->name);
- }
- return result;
-}
-
static bool isEnum(AST::Statement *ast);
bool isEnum(AST::ExpressionNode *ast)
if (UiScriptBinding *property = AST::cast<UiScriptBinding *>(member)) {
if (!property->qualifiedId)
continue; // better safe than sorry.
- const QString propertyName = flatten(property->qualifiedId);
+ const QString propertyName = toString(property->qualifiedId);
const QString astValue = cleanupSemicolon(textAt(doc,
property->statement->firstSourceLocation(),
property->statement->lastSourceLocation()));
for (UiObjectMemberList *iter = objectDefinition->initializer->members; iter; iter = iter->next) {
UiObjectMember *objectMember = iter->member;
if (UiScriptBinding *property = cast<UiScriptBinding *>(objectMember)) {
- const QString propertyNamePart2 = flatten(property->qualifiedId);
+ const QString propertyNamePart2 = toString(property->qualifiedId);
const QString astValue = cleanupSemicolon(textAt(doc,
property->statement->firstSourceLocation(),
property->statement->lastSourceLocation()));
#include <qmljs/parser/qmljsast_p.h>
#include <qmljs/parser/qmljsengine_p.h>
+#include <qmljs/qmljsutils.h>
#include <utils/changeset.h>
// ### FIXME: remove these includes:
if (cast<UiObjectDefinition*>(member))
lastObjectDef = iter;
else if (UiArrayBinding *arrayBinding = cast<UiArrayBinding*>(member))
- idx = propertyOrder.indexOf(flatten(arrayBinding->qualifiedId));
+ idx = propertyOrder.indexOf(toString(arrayBinding->qualifiedId));
else if (UiObjectBinding *objectBinding = cast<UiObjectBinding*>(member))
- idx = propertyOrder.indexOf(flatten(objectBinding->qualifiedId));
+ idx = propertyOrder.indexOf(toString(objectBinding->qualifiedId));
else if (UiScriptBinding *scriptBinding = cast<UiScriptBinding*>(member))
- idx = propertyOrder.indexOf(flatten(scriptBinding->qualifiedId));
+ idx = propertyOrder.indexOf(toString(scriptBinding->qualifiedId));
else if (cast<UiPublicMember*>(member))
idx = propertyOrder.indexOf(QLatin1String("property"));
if (cast<UiObjectDefinition*>(member))
lastObjectDef = iter;
else if (UiArrayBinding *arrayBinding = cast<UiArrayBinding*>(member))
- idx = propertyOrder.indexOf(flatten(arrayBinding->qualifiedId));
+ idx = propertyOrder.indexOf(toString(arrayBinding->qualifiedId));
else if (UiObjectBinding *objectBinding = cast<UiObjectBinding*>(member))
- idx = propertyOrder.indexOf(flatten(objectBinding->qualifiedId));
+ idx = propertyOrder.indexOf(toString(objectBinding->qualifiedId));
else if (UiScriptBinding *scriptBinding = cast<UiScriptBinding*>(member))
- idx = propertyOrder.indexOf(flatten(scriptBinding->qualifiedId));
+ idx = propertyOrder.indexOf(toString(scriptBinding->qualifiedId));
else if (cast<UiPublicMember*>(member))
idx = propertyOrder.indexOf(QLatin1String("property"));
UiObjectMember *member = iter->member;
if (UiArrayBinding *arrayBinding = cast<UiArrayBinding*>(member))
- orderedMembers[flatten(arrayBinding->qualifiedId)] = iter;
+ orderedMembers[toString(arrayBinding->qualifiedId)] = iter;
else if (UiObjectBinding *objectBinding = cast<UiObjectBinding*>(member))
- orderedMembers[flatten(objectBinding->qualifiedId)] = iter;
+ orderedMembers[toString(objectBinding->qualifiedId)] = iter;
else if (cast<UiObjectDefinition*>(member))
orderedMembers[QString::null] = iter;
else if (UiScriptBinding *scriptBinding = cast<UiScriptBinding*>(member))
- orderedMembers[flatten(scriptBinding->qualifiedId)] = iter;
+ orderedMembers[toString(scriptBinding->qualifiedId)] = iter;
else if (cast<UiPublicMember*>(member))
orderedMembers[QLatin1String("property")] = iter;
}
return 0;
}
-QString Rewriter::flatten(UiQualifiedId *first)
-{
- QString flatId;
-
- for (UiQualifiedId* current = first; current; current = current->next) {
- if (current != first)
- flatId += '.';
-
- flatId += current->name;
- }
-
- return flatId;
-}
-
void Rewriter::changeBinding(UiObjectInitializer *ast,
const QString &propertyName,
const QString &newValue,
// for grouped properties:
else if (!prefix.isEmpty()) {
if (UiObjectDefinition *def = cast<UiObjectDefinition *>(member)) {
- if (flatten(def->qualifiedTypeNameId) == prefix) {
+ if (toString(def->qualifiedTypeNameId) == prefix) {
changeBinding(def->initializer, suffix, newValue, binding);
}
}
if (UiPublicMember *publicMember = cast<UiPublicMember*>(member))
return publicMember->name == propertyName;
else if (UiObjectBinding *objectBinding = cast<UiObjectBinding*>(member))
- return flatten(objectBinding->qualifiedId) == propertyName;
+ return toString(objectBinding->qualifiedId) == propertyName;
else if (UiScriptBinding *scriptBinding = cast<UiScriptBinding*>(member))
- return flatten(scriptBinding->qualifiedId) == propertyName;
+ return toString(scriptBinding->qualifiedId) == propertyName;
else if (UiArrayBinding *arrayBinding = cast<UiArrayBinding*>(member))
- return flatten(arrayBinding->qualifiedId) == propertyName;
+ return toString(arrayBinding->qualifiedId) == propertyName;
else
return false;
}
// check for grouped properties:
else if (!prefix.isEmpty()) {
if (UiObjectDefinition *def = cast<UiObjectDefinition *>(member)) {
- if (flatten(def->qualifiedTypeNameId) == prefix) {
+ if (toString(def->qualifiedTypeNameId) == prefix) {
removeGroupedProperty(def, propertyName);
}
}
if (cast<UiObjectDefinition*>(member))
lastObjectDef = iter;
else if (UiArrayBinding *arrayBinding = cast<UiArrayBinding*>(member))
- idx = propertyOrder.indexOf(flatten(arrayBinding->qualifiedId));
+ idx = propertyOrder.indexOf(toString(arrayBinding->qualifiedId));
else if (UiObjectBinding *objectBinding = cast<UiObjectBinding*>(member))
- idx = propertyOrder.indexOf(flatten(objectBinding->qualifiedId));
+ idx = propertyOrder.indexOf(toString(objectBinding->qualifiedId));
else if (UiScriptBinding *scriptBinding = cast<UiScriptBinding*>(member))
- idx = propertyOrder.indexOf(flatten(scriptBinding->qualifiedId));
+ idx = propertyOrder.indexOf(toString(scriptBinding->qualifiedId));
else if (cast<UiPublicMember*>(member))
idx = propertyOrder.indexOf(QLatin1String("property"));
UiObjectMember *member = iter->member;
if (UiArrayBinding *arrayBinding = cast<UiArrayBinding*>(member))
- orderedMembers[flatten(arrayBinding->qualifiedId)] = iter;
+ orderedMembers[toString(arrayBinding->qualifiedId)] = iter;
else if (UiObjectBinding *objectBinding = cast<UiObjectBinding*>(member))
- orderedMembers[flatten(objectBinding->qualifiedId)] = iter;
+ orderedMembers[toString(objectBinding->qualifiedId)] = iter;
else if (cast<UiObjectDefinition*>(member))
orderedMembers[QString::null] = iter;
else if (UiScriptBinding *scriptBinding = cast<UiScriptBinding*>(member))
- orderedMembers[flatten(scriptBinding->qualifiedId)] = iter;
+ orderedMembers[toString(scriptBinding->qualifiedId)] = iter;
else if (cast<UiPublicMember*>(member))
orderedMembers[QLatin1String("property")] = iter;
}
static AST::UiObjectMemberList *searchMemberToInsertAfter(AST::UiObjectMemberList *members, const QStringList &propertyOrder);
static AST::UiArrayMemberList *searchMemberToInsertAfter(AST::UiArrayMemberList *members, const QStringList &propertyOrder);
static AST::UiObjectMemberList *searchMemberToInsertAfter(AST::UiObjectMemberList *members, const QString &propertyName, const QStringList &propertyOrder);
- static QString flatten(AST::UiQualifiedId *first);
static bool includeSurroundingWhitespace(const QString &source, int &start, int &end);
static void includeLeadingEmptyLine(const QString &source, int &start);
#include "qmljscontext.h"
#include "qmljsevaluate.h"
#include "qmljsscopechain.h"
+#include "qmljsutils.h"
#include "parser/qmljsast_p.h"
#include <utils/qtcassert.h>
prototype = isPropertyChangesObject(_scopeChain->context(), prototype);
// find the target script binding
if (prototype) {
- UiObjectInitializer *initializer = 0;
- if (UiObjectDefinition *definition = cast<UiObjectDefinition *>(node))
- initializer = definition->initializer;
- if (UiObjectBinding *binding = cast<UiObjectBinding *>(node))
- initializer = binding->initializer;
+ UiObjectInitializer *initializer = initializerOfObject(node);
if (initializer) {
for (UiObjectMemberList *m = initializer->members; m; m = m->next) {
if (UiScriptBinding *scriptBinding = cast<UiScriptBinding *>(m->member)) {
#include "qmljsbind.h"
#include "qmljsinterpreter.h"
+#include "qmljsutils.h"
#include <QtCore/QIODevice>
#include <QtCore/QBuffer>
}
UiImport *import = ast->imports->import;
- if (Bind::toString(import->importUri) != QLatin1String("QtQuick.tooling")) {
+ if (toString(import->importUri) != QLatin1String("QtQuick.tooling")) {
addError(import->importToken, "Expected import of QtQuick.tooling");
return;
}
return;
}
- if (Bind::toString(module->qualifiedTypeNameId) != "Module") {
+ if (toString(module->qualifiedTypeNameId) != "Module") {
addError(SourceLocation(), "Expected document to contain a Module {} member");
return;
}
for (UiObjectMemberList *it = ast->initializer->members; it; it = it->next) {
UiObjectMember *member = it->member;
UiObjectDefinition *component = dynamic_cast<UiObjectDefinition *>(member);
- if (!component || Bind::toString(component->qualifiedTypeNameId) != "Component") {
+ if (!component || toString(component->qualifiedTypeNameId) != "Component") {
addWarning(member->firstSourceLocation(), "Expected only 'Component' object definitions");
continue;
}
UiObjectDefinition *component = dynamic_cast<UiObjectDefinition *>(member);
UiScriptBinding *script = dynamic_cast<UiScriptBinding *>(member);
if (component) {
- QString name = Bind::toString(component->qualifiedTypeNameId);
+ QString name = toString(component->qualifiedTypeNameId);
if (name == "Property") {
readProperty(component, fmo);
} else if (name == "Method" || name == "Signal") {
addWarning(component->firstSourceLocation(), "Expected only Property, Method, Signal and Enum object definitions");
}
} else if (script) {
- QString name = Bind::toString(script->qualifiedId);
+ QString name = toString(script->qualifiedId);
if (name == "name") {
fmo->setClassName(readStringBinding(script));
} else if (name == "prototype") {
UiObjectDefinition *component = dynamic_cast<UiObjectDefinition *>(member);
UiScriptBinding *script = dynamic_cast<UiScriptBinding *>(member);
if (component) {
- QString name = Bind::toString(component->qualifiedTypeNameId);
+ QString name = toString(component->qualifiedTypeNameId);
if (name == "Parameter") {
readParameter(component, &fmm);
} else {
addWarning(component->firstSourceLocation(), "Expected only Parameter object definitions");
}
} else if (script) {
- QString name = Bind::toString(script->qualifiedId);
+ QString name = toString(script->qualifiedId);
if (name == "name") {
fmm.setMethodName(readStringBinding(script));
} else if (name == "type") {
continue;
}
- QString id = Bind::toString(script->qualifiedId);
+ QString id = toString(script->qualifiedId);
if (id == "name") {
name = readStringBinding(script);
} else if (id == "type") {
continue;
}
- QString name = Bind::toString(script->qualifiedId);
+ QString name = toString(script->qualifiedId);
if (name == "name") {
fme.setName(readStringBinding(script));
} else if (name == "values") {
continue;
}
- QString id = Bind::toString(script->qualifiedId);
+ QString id = toString(script->qualifiedId);
if (id == "name") {
id = readStringBinding(script);
} else if (id == "type") {
--- /dev/null
+#include "qmljsutils.h"
+
+#include "parser/qmljsast_p.h"
+
+using namespace QmlJS;
+using namespace QmlJS::AST;
+
+namespace {
+class SharedData
+{
+public:
+ SharedData()
+ {
+ validBuiltinPropertyNames.insert(QLatin1String("action"));
+ validBuiltinPropertyNames.insert(QLatin1String("bool"));
+ validBuiltinPropertyNames.insert(QLatin1String("color"));
+ validBuiltinPropertyNames.insert(QLatin1String("date"));
+ validBuiltinPropertyNames.insert(QLatin1String("double"));
+ validBuiltinPropertyNames.insert(QLatin1String("enumeration"));
+ validBuiltinPropertyNames.insert(QLatin1String("font"));
+ validBuiltinPropertyNames.insert(QLatin1String("int"));
+ validBuiltinPropertyNames.insert(QLatin1String("list"));
+ validBuiltinPropertyNames.insert(QLatin1String("point"));
+ validBuiltinPropertyNames.insert(QLatin1String("real"));
+ validBuiltinPropertyNames.insert(QLatin1String("rect"));
+ validBuiltinPropertyNames.insert(QLatin1String("size"));
+ validBuiltinPropertyNames.insert(QLatin1String("string"));
+ validBuiltinPropertyNames.insert(QLatin1String("time"));
+ validBuiltinPropertyNames.insert(QLatin1String("url"));
+ validBuiltinPropertyNames.insert(QLatin1String("var"));
+ validBuiltinPropertyNames.insert(QLatin1String("variant")); // obsolete in Qt 5
+ validBuiltinPropertyNames.insert(QLatin1String("vector3d"));
+ validBuiltinPropertyNames.insert(QLatin1String("alias"));
+ }
+
+ QSet<QString> validBuiltinPropertyNames;
+};
+} // anonymous namespace
+Q_GLOBAL_STATIC(SharedData, sharedData)
+
+QColor QmlJS::toQColor(const QString &qmlColorString)
+{
+ QColor color;
+ if (qmlColorString.size() == 9 && qmlColorString.at(0) == QLatin1Char('#')) {
+ bool ok;
+ const int alpha = qmlColorString.mid(1, 2).toInt(&ok, 16);
+ if (ok) {
+ QString name(qmlColorString.at(0));
+ name.append(qmlColorString.right(6));
+ if (QColor::isValidColor(name)) {
+ color.setNamedColor(name);
+ color.setAlpha(alpha);
+ }
+ }
+ } else {
+ if (QColor::isValidColor(qmlColorString))
+ color.setNamedColor(qmlColorString);
+ }
+ return color;
+}
+
+QString QmlJS::toString(UiQualifiedId *qualifiedId, QChar delimiter)
+{
+ QString result;
+
+ for (UiQualifiedId *iter = qualifiedId; iter; iter = iter->next) {
+ if (iter != qualifiedId)
+ result += delimiter;
+
+ result += iter->name;
+ }
+
+ return result;
+}
+
+
+SourceLocation QmlJS::locationFromRange(const SourceLocation &start,
+ const SourceLocation &end)
+{
+ return SourceLocation(start.offset,
+ end.end() - start.begin(),
+ start.startLine,
+ start.startColumn);
+}
+
+SourceLocation QmlJS::fullLocationForQualifiedId(AST::UiQualifiedId *qualifiedId)
+{
+ SourceLocation start = qualifiedId->identifierToken;
+ SourceLocation end = qualifiedId->identifierToken;
+
+ for (UiQualifiedId *iter = qualifiedId; iter; iter = iter->next) {
+ if (iter->identifierToken.isValid())
+ end = iter->identifierToken;
+ }
+
+ return locationFromRange(start, end);
+}
+
+QString QmlJS::idOfObject(UiObjectDefinition *object)
+{
+ if (!object)
+ return QString();
+ return idOfObject(object->initializer);
+}
+QString QmlJS::idOfObject(UiObjectBinding *object)
+{
+ if (!object)
+ return QString();
+ return idOfObject(object->initializer);
+}
+QString QmlJS::idOfObject(UiObjectInitializer *initializer)
+{
+ if (!initializer)
+ return QString();
+
+ for (UiObjectMemberList *iter = initializer->members; iter; iter = iter->next) {
+ if (UiScriptBinding *script = cast<UiScriptBinding*>(iter->member)) {
+ if (!script->qualifiedId)
+ continue;
+ if (script->qualifiedId->next)
+ continue;
+ if (script->qualifiedId->name != QLatin1String("id"))
+ continue;
+ if (ExpressionStatement *expstmt = cast<ExpressionStatement *>(script->statement)) {
+ if (IdentifierExpression *idexp = cast<IdentifierExpression *>(expstmt->expression)) {
+ return idexp->name.toString();
+ }
+ }
+ }
+ }
+
+ return QString();
+}
+
+UiObjectInitializer *QmlJS::initializerOfObject(Node *node)
+{
+ if (UiObjectDefinition *definition = cast<UiObjectDefinition *>(node))
+ return definition->initializer;
+ if (UiObjectBinding *binding = cast<UiObjectBinding *>(node))
+ return binding->initializer;
+ return 0;
+}
+
+UiQualifiedId *QmlJS::qualifiedTypeNameId(Node *node)
+{
+ if (UiObjectBinding *binding = AST::cast<UiObjectBinding *>(node))
+ return binding->qualifiedTypeNameId;
+ else if (UiObjectDefinition *binding = AST::cast<UiObjectDefinition *>(node))
+ return binding->qualifiedTypeNameId;
+ return 0;
+}
+
+DiagnosticMessage QmlJS::errorMessage(const AST::SourceLocation &loc, const QString &message)
+{
+ return DiagnosticMessage(DiagnosticMessage::Error, loc, message);
+}
+
+bool QmlJS::isValidBuiltinPropertyType(const QString &name)
+{
+ return sharedData()->validBuiltinPropertyNames.contains(name);
+}
+
--- /dev/null
+#ifndef QMLJS_QMLJSUTILS_H
+#define QMLJS_QMLJSUTILS_H
+
+#include "qmljs_global.h"
+#include "parser/qmljsastfwd_p.h"
+#include "parser/qmljsengine_p.h"
+
+#include <QtGui/QColor>
+
+namespace QmlJS {
+
+QMLJS_EXPORT QColor toQColor(const QString &qmlColorString);
+QMLJS_EXPORT QString toString(AST::UiQualifiedId *qualifiedId,
+ const QChar delimiter = QLatin1Char('.'));
+
+QMLJS_EXPORT AST::SourceLocation locationFromRange(const AST::SourceLocation &start,
+ const AST::SourceLocation &end);
+
+QMLJS_EXPORT AST::SourceLocation fullLocationForQualifiedId(AST::UiQualifiedId *);
+
+QMLJS_EXPORT QString idOfObject(AST::UiObjectDefinition *object);
+QMLJS_EXPORT QString idOfObject(AST::UiObjectBinding *object);
+QMLJS_EXPORT QString idOfObject(AST::UiObjectInitializer *initializer);
+
+QMLJS_EXPORT AST::UiObjectInitializer *initializerOfObject(AST::Node *node);
+QMLJS_EXPORT AST::UiQualifiedId *qualifiedTypeNameId(AST::Node *node);
+
+QMLJS_EXPORT bool isValidBuiltinPropertyType(const QString &name);
+
+QMLJS_EXPORT DiagnosticMessage errorMessage(const AST::SourceLocation &loc,
+ const QString &message);
+
+template <class T>
+DiagnosticMessage errorMessage(const T *node, const QString &message)
+{
+ return DiagnosticMessage(DiagnosticMessage::Error,
+ locationFromRange(node->firstSourceLocation(),
+ node->lastSourceLocation()),
+ message);
+}
+
+} // namespace QmlJS
+
+#endif // QMLJS_QMLJSUTILS_H
{
for (UiObjectMemberList *iter = ast; iter; iter = iter->next) {
if (UiArrayBinding *arrayBinding = cast<UiArrayBinding*>(iter->member)) {
- if (flatten(arrayBinding->qualifiedId) == m_propertyName)
+ if (toString(arrayBinding->qualifiedId) == m_propertyName)
insertInto(arrayBinding);
} else if (UiObjectBinding *objectBinding = cast<UiObjectBinding*>(iter->member)) {
- if (flatten(objectBinding->qualifiedId) == m_propertyName && willConvertObjectBindingIntoArrayBinding())
+ if (toString(objectBinding->qualifiedId) == m_propertyName && willConvertObjectBindingIntoArrayBinding())
convertAndAdd(objectBinding);
}
}
bool ChangeImportsVisitor::equals(QmlJS::AST::UiImport *ast, const Import &import)
{
if (import.isLibraryImport()) {
- return flatten(ast->importUri) == import.url();
+ return toString(ast->importUri) == import.url();
} else if (import.isFileImport()) {
return ast->fileName == import.file();
} else {
// for grouped properties:
else if (!prefix.isEmpty()) {
if (UiObjectDefinition *def = cast<UiObjectDefinition *>(member)) {
- if (flatten(def->qualifiedTypeNameId) == prefix) {
+ if (toString(def->qualifiedTypeNameId) == prefix) {
replaceInMembers(def->initializer, suffix);
}
}
UiObjectMember *member)
{
if (UiObjectBinding *objectBinding = AST::cast<UiObjectBinding *>(member)) {
- return propName == flatten(objectBinding->qualifiedId);
+ return propName == toString(objectBinding->qualifiedId);
} else if (UiScriptBinding *scriptBinding = AST::cast<UiScriptBinding *>(member)) {
- return propName == flatten(scriptBinding->qualifiedId);
+ return propName == toString(scriptBinding->qualifiedId);
} else if (UiArrayBinding *arrayBinding = AST::cast<UiArrayBinding *>(member)) {
- return propName == flatten(arrayBinding->qualifiedId);
+ return propName == toString(arrayBinding->qualifiedId);
} else if (UiPublicMember *publicMember = AST::cast<UiPublicMember *>(member)) {
return propName == publicMember->name;
} else {
UiObjectMember *member = iter->member;
if (UiArrayBinding *arrayBinding = cast<UiArrayBinding*>(member)) {
- if (flatten(arrayBinding->qualifiedId) == targetPropertyName) {
+ if (toString(arrayBinding->qualifiedId) == targetPropertyName) {
appendToArray(arrayBinding);
setDidRewriting(true);
}
// FIXME: duplicate code in the QmlJS::Rewriter class, remove this
-QString QMLRewriter::flatten(UiQualifiedId *first)
-{
- QString flatId;
-
- for (UiQualifiedId* current = first; current; current = current->next) {
- if (current != first)
- flatId += '.';
-
- flatId += current->name;
- }
-
- return flatId;
-}
-
-// FIXME: duplicate code in the QmlJS::Rewriter class, remove this
bool QMLRewriter::includeSurroundingWhitespace(int &start, int &end) const
{
QTextDocument *doc = m_textModifier->textDocument();
if (cast<UiObjectDefinition*>(member))
lastObjectDef = iter;
else if (UiArrayBinding *arrayBinding = cast<UiArrayBinding*>(member))
- idx = propertyOrder.indexOf(flatten(arrayBinding->qualifiedId));
+ idx = propertyOrder.indexOf(toString(arrayBinding->qualifiedId));
else if (UiObjectBinding *objectBinding = cast<UiObjectBinding*>(member))
- idx = propertyOrder.indexOf(flatten(objectBinding->qualifiedId));
+ idx = propertyOrder.indexOf(toString(objectBinding->qualifiedId));
else if (UiScriptBinding *scriptBinding = cast<UiScriptBinding*>(member))
- idx = propertyOrder.indexOf(flatten(scriptBinding->qualifiedId));
+ idx = propertyOrder.indexOf(toString(scriptBinding->qualifiedId));
else if (cast<UiPublicMember*>(member))
idx = propertyOrder.indexOf(QLatin1String("property"));
UiObjectMember *member = iter->member;
if (UiArrayBinding *arrayBinding = cast<UiArrayBinding*>(member))
- orderedMembers[flatten(arrayBinding->qualifiedId)] = iter;
+ orderedMembers[toString(arrayBinding->qualifiedId)] = iter;
else if (UiObjectBinding *objectBinding = cast<UiObjectBinding*>(member))
- orderedMembers[flatten(objectBinding->qualifiedId)] = iter;
+ orderedMembers[toString(objectBinding->qualifiedId)] = iter;
else if (cast<UiObjectDefinition*>(member))
orderedMembers[QString::null] = iter;
else if (UiScriptBinding *scriptBinding = cast<UiScriptBinding*>(member))
- orderedMembers[flatten(scriptBinding->qualifiedId)] = iter;
+ orderedMembers[toString(scriptBinding->qualifiedId)] = iter;
else if (cast<UiPublicMember*>(member))
orderedMembers[QLatin1String("property")] = iter;
}
#include "textmodifier.h"
#include <qmljs/parser/qmljsastvisitor_p.h>
+#include <qmljs/qmljsutils.h>
#include <QtCore/QStack>
#include <QtCore/QString>
static QmlJS::AST::SourceLocation calculateLocation(QmlJS::AST::UiQualifiedId *id);
static bool isMissingSemicolon(QmlJS::AST::UiObjectMember *member);
static bool isMissingSemicolon(QmlJS::AST::Statement *stmt);
- static QString flatten(QmlJS::AST::UiQualifiedId *first);
QmlDesigner::TextModifier *textModifier() const
{ return m_textModifier; }
// check for grouped properties:
else if (!prefix.isEmpty()) {
if (UiObjectDefinition *def = cast<UiObjectDefinition *>(member)) {
- if (flatten(def->qualifiedTypeNameId) == prefix) {
+ if (toString(def->qualifiedTypeNameId) == prefix) {
removeGroupedProperty(def);
}
}
if (UiPublicMember *publicMember = cast<UiPublicMember*>(ast))
return publicMember->name == propertyName;
else if (UiObjectBinding *objectBinding = cast<UiObjectBinding*>(ast))
- return flatten(objectBinding->qualifiedId) == propertyName;
+ return toString(objectBinding->qualifiedId) == propertyName;
else if (UiScriptBinding *scriptBinding = cast<UiScriptBinding*>(ast))
- return flatten(scriptBinding->qualifiedId) == propertyName;
+ return toString(scriptBinding->qualifiedId) == propertyName;
else if (UiArrayBinding *arrayBinding = cast<UiArrayBinding*>(ast))
- return flatten(arrayBinding->qualifiedId) == propertyName;
+ return toString(arrayBinding->qualifiedId) == propertyName;
else
return false;
}
#include <qmljs/qmljsscopechain.h>
#include <qmljs/parser/qmljsast_p.h>
#include <qmljs/qmljscheck.h>
+#include <qmljs/qmljsutils.h>
#include <qmljs/qmljsmodelmanagerinterface.h>
#include <QtCore/QSet>
return QVariant(value);
}
-static QString flatten(UiQualifiedId *qualifiedId)
-{
- QString result;
-
- for (UiQualifiedId *iter = qualifiedId; iter; iter = iter->next) {
- if (iter->name.isEmpty())
- continue;
-
- if (!result.isEmpty())
- result.append(QLatin1Char('.'));
-
- result.append(iter->name);
- }
-
- return result;
-}
-
static bool isLiteralValue(ExpressionNode *expr)
{
if (cast<NumericLiteral*>(expr))
const ObjectValue *containingObject = 0;
QString name;
if (!lookupProperty(propertyPrefix, propertyId, &property, &containingObject, &name)) {
- qWarning() << "Unknown property" << propertyPrefix + QLatin1Char('.') + flatten(propertyId)
+ qWarning() << "Unknown property" << propertyPrefix + QLatin1Char('.') + toString(propertyId)
<< "on line" << propertyId->identifierToken.startLine
<< "column" << propertyId->identifierToken.startColumn;
return hasQuotes ? QVariant(cleanedValue) : cleverConvert(cleanedValue);
if (!existingImports.removeOne(newImport))
differenceHandler.modelMissesImport(newImport);
} else {
- QString importUri = flatten(import->importUri);
+ QString importUri = toString(import->importUri);
if (importUri == QLatin1String("Qt") && version == QLatin1String("4.7")) {
importUri = QLatin1String("QtQuick");
version = QLatin1String("1.0");
ReadingContext *context,
DifferenceHandler &differenceHandler)
{
- UiQualifiedId *astObjectType = 0;
- UiObjectInitializer *astInitializer = 0;
- if (UiObjectDefinition *def = cast<UiObjectDefinition *>(astNode)) {
- astObjectType = def->qualifiedTypeNameId;
- astInitializer = def->initializer;
- } else if (UiObjectBinding *bin = cast<UiObjectBinding *>(astNode)) {
- astObjectType = bin->qualifiedTypeNameId;
- astInitializer = bin->initializer;
- }
+ UiQualifiedId *astObjectType = qualifiedTypeNameId(astNode);
+ UiObjectInitializer *astInitializer = initializerOfObject(astNode);
if (!astObjectType || !astInitializer)
return;
defaultPropertyName = modelNode.metaInfo().defaultPropertyName();
if (typeName.isEmpty()) {
- qWarning() << "Skipping node with unknown type" << flatten(astObjectType);
+ qWarning() << "Skipping node with unknown type" << toString(astObjectType);
return;
}
continue;
if (UiArrayBinding *array = cast<UiArrayBinding *>(member)) {
- const QString astPropertyName = flatten(array->qualifiedId);
+ const QString astPropertyName = toString(array->qualifiedId);
if (isPropertyChangesType(typeName) || context->lookupProperty(QString(), array->qualifiedId)) {
AbstractProperty modelProperty = modelNode.property(astPropertyName);
QList<UiObjectMember *> arrayMembers;
defaultPropertyItems.append(member);
}
} else if (UiObjectBinding *binding = cast<UiObjectBinding *>(member)) {
- const QString astPropertyName = flatten(binding->qualifiedId);
+ const QString astPropertyName = toString(binding->qualifiedId);
if (binding->hasOnToken) {
// skip value sources
} else {
ReadingContext *context,
DifferenceHandler &differenceHandler)
{
- QString astPropertyName = flatten(script->qualifiedId);
+ QString astPropertyName = toString(script->qualifiedId);
if (!prefix.isEmpty())
astPropertyName.prepend(prefix + QLatin1Char('.'));
context->lookup(binding->qualifiedTypeNameId, typeName, majorVersion, minorVersion, dummy);
if (typeName.isEmpty()) {
- qWarning() << "Skipping node with unknown type" << flatten(binding->qualifiedTypeNameId);
+ qWarning() << "Skipping node with unknown type" << toString(binding->qualifiedTypeNameId);
return;
}
{
QString nodeSource;
- UiQualifiedId *astObjectType = 0;
- if (UiObjectDefinition *def = cast<UiObjectDefinition *>(astNode)) {
- astObjectType = def->qualifiedTypeNameId;
- } else if (UiObjectBinding *bin = cast<UiObjectBinding *>(astNode)) {
- astObjectType = bin->qualifiedTypeNameId;
- }
+ UiQualifiedId *astObjectType = qualifiedTypeNameId(astNode);
if (isCustomParserType(typeName))
nodeSource = textAt(context->doc(),
context->lookup(astObjectType, typeName, majorVersion, minorVersion, dummy);
if (typeName.isEmpty()) {
- qWarning() << "Skipping node with unknown type" << flatten(astObjectType);
+ qWarning() << "Skipping node with unknown type" << toString(astObjectType);
return ModelNode();
}
#include <qmljs/parser/qmljsast_p.h>
#include <qmljs/qmljsdocument.h>
+#include <qmljs/qmljsutils.h>
#include <qmljstools/qmljsrefactoringchanges.h>
#include <QtCore/QCoreApplication>
namespace {
-static QString toString(Statement *statement)
-{
- ExpressionStatement *expStmt = cast<ExpressionStatement *>(statement);
- if (!expStmt)
- return QString();
- if (IdentifierExpression *idExp = cast<IdentifierExpression *>(expStmt->expression)) {
- return idExp->name.toString();
- } else if (StringLiteral *strExp = cast<StringLiteral *>(expStmt->expression)) {
- return strExp->value.toString();
- }
- return QString();
-}
-
-static QString getIdProperty(UiObjectDefinition *def)
-{
- QString objectName;
-
- if (def && def->initializer) {
- for (UiObjectMemberList *iter = def->initializer->members; iter; iter = iter->next) {
- if (UiScriptBinding *script = cast<UiScriptBinding*>(iter->member)) {
- if (!script->qualifiedId)
- continue;
- if (script->qualifiedId->next)
- continue;
- if (!script->qualifiedId->name.isEmpty()) {
- if (script->qualifiedId->name == QLatin1String("id"))
- return toString(script->statement);
- if (script->qualifiedId->name == QLatin1String("objectName"))
- objectName = toString(script->statement);
- }
- }
- }
- }
-
- return objectName;
-}
-
class Operation: public QmlJSQuickFixOperation
{
UiObjectDefinition *m_objDef;
{
Q_ASSERT(m_objDef != 0);
- m_idName = getIdProperty(m_objDef);
+ m_idName = idOfObject(m_objDef);
if (m_idName.isEmpty()) {
setDescription(QCoreApplication::translate("QmlJSEditor::ComponentFromObjectDef",
#include <qmljs/qmljsicontextpane.h>
#include <qmljs/qmljsmodelmanagerinterface.h>
#include <qmljs/qmljsscopebuilder.h>
+#include <qmljs/qmljsutils.h>
#include <qmljs/parser/qmljsastvisitor_p.h>
#include <qmljs/parser/qmljsast_p.h>
#include <qmljs/parser/qmljsengine_p.h>
}
}
-static UiQualifiedId *qualifiedTypeNameId(Node *m)
-{
- if (UiObjectDefinition *def = cast<UiObjectDefinition *>(m))
- return def->qualifiedTypeNameId;
- else if (UiObjectBinding *binding = cast<UiObjectBinding *>(m))
- return binding->qualifiedTypeNameId;
- return 0;
-}
-
class QtQuickToolbarMarker {};
Q_DECLARE_METATYPE(QtQuickToolbarMarker)
bool isSelectable(UiObjectMember *member) const
{
- UiQualifiedId *id = 0;
- if (UiObjectDefinition *def = cast<UiObjectDefinition *>(member))
- id = def->qualifiedTypeNameId;
- else if (UiObjectBinding *binding = cast<UiObjectBinding *>(member))
- id = binding->qualifiedTypeNameId;
-
+ UiQualifiedId *id = qualifiedTypeNameId(member);
if (id) {
const QStringRef &name = id->name;
if (!name.isEmpty() && name.at(0).isUpper()) {
return false;
}
- inline UiObjectInitializer *initializer(UiObjectMember *member) const
- {
- if (UiObjectDefinition *def = cast<UiObjectDefinition *>(member))
- return def->initializer;
- else if (UiObjectBinding *binding = cast<UiObjectBinding *>(member))
- return binding->initializer;
- return 0;
- }
-
inline bool isIdBinding(UiObjectMember *member) const
{
if (UiScriptBinding *script = cast<UiScriptBinding *>(member)) {
if ((isRangeSelected() && intersectsCursor(begin, end))
|| (!isRangeSelected() && containsCursor(begin, end)))
{
- if (initializer(member) && isSelectable(member)) {
+ if (initializerOfObject(member) && isSelectable(member)) {
m_selectedMembers << member;
// move start towards end; this facilitates multiselection so that root is usually ignored.
m_cursorPositionStart = qMin(end, m_cursorPositionEnd);
#include <qmljs/qmljsinterpreter.h>
#include <qmljs/parser/qmljsast_p.h>
#include <qmljs/parser/qmljsastfwd_p.h>
-#include <qmljs/qmljscheck.h>
+#include <qmljs/qmljsutils.h>
#include <texteditor/itexteditor.h>
#include <texteditor/basetexteditor.h>
#include <texteditor/helpitem.h>
#include <qmljs/qmljsevaluate.h>
#include <qmljs/qmljscontext.h>
#include <qmljs/qmljsbind.h>
-#include <qmljs/qmljscheck.h>
+#include <qmljs/qmljsutils.h>
#include <qmljs/parser/qmljsast_p.h>
#include <qmljs/parser/qmljsastvisitor_p.h>
#include <texteditor/syntaxhighlighter.h>
#include <qmljs/qmljsbind.h>
#include <qmljs/qmljsscopebuilder.h>
#include <qmljs/qmljsevaluate.h>
+#include <qmljs/qmljsutils.h>
#include <texteditor/basetexteditor.h>
#include <texteditor/tabsettings.h>
#include <coreplugin/icore.h>
static inline const ObjectValue * getPropertyChangesTarget(Node *node, const ScopeChain &scopeChain)
{
- UiObjectInitializer *initializer = 0;
- if (UiObjectDefinition *definition = cast<UiObjectDefinition *>(node))
- initializer = definition->initializer;
- if (UiObjectBinding *binding = cast<UiObjectBinding *>(node))
- initializer = binding->initializer;
+ UiObjectInitializer *initializer = initializerOfObject(node);
if (initializer) {
for (UiObjectMemberList *members = initializer->members; members; members = members->next) {
if (UiScriptBinding *scriptBinding = cast<UiScriptBinding *>(members->member)) {
#include "qmljslocatordata.h"
#include <qmljs/qmljsmodelmanagerinterface.h>
-#include <qmljs/qmljsbind.h>
+#include <qmljs/qmljsutils.h>
//#include <qmljs/qmljsinterpreter.h>
#include <qmljs/parser/qmljsast_p.h>
+#include <QtCore/QFileInfo>
+
using namespace QmlJSTools::Internal;
using namespace QmlJS;
using namespace QmlJS::AST;
{}
namespace {
-static QString findId(UiObjectInitializer *initializer)
-{
- if (!initializer)
- return QString();
- for (UiObjectMemberList *member = initializer->members; member; member = member->next) {
- if (UiScriptBinding *script = cast<UiScriptBinding *>(member->member)) {
- if (!script->qualifiedId || script->qualifiedId->name.isEmpty() || script->qualifiedId->next)
- continue;
- if (script->qualifiedId->name != QLatin1String("id"))
- continue;
- if (ExpressionStatement *expStmt = cast<ExpressionStatement *>(script->statement)) {
- if (IdentifierExpression *identExp = cast<IdentifierExpression *>(expStmt->expression)) {
- if (!identExp->name.isEmpty())
- return identExp->name.toString();
- }
- }
- }
- }
- return QString();
-}
class FunctionFinder : protected AST::Visitor
{
{
if (!ast->qualifiedId)
return true;
- const QString qualifiedIdString = Bind::toString(ast->qualifiedId);
+ const QString qualifiedIdString = toString(ast->qualifiedId);
if (cast<Block *>(ast->statement)) {
LocatorData::Entry entry = basicEntry(ast->qualifiedId->identifierToken);
m_entries += entry;
}
- accept(ast->statement, contextString(Bind::toString(ast->qualifiedId)));
+ accept(ast->statement, contextString(toString(ast->qualifiedId)));
return false;
}
if (!ast->qualifiedTypeNameId)
return true;
- QString context = Bind::toString(ast->qualifiedTypeNameId);
- const QString id = findId(ast->initializer);
+ QString context = toString(ast->qualifiedTypeNameId);
+ const QString id = idOfObject(ast->initializer);
if (!id.isEmpty())
context = QString("%1 (%2)").arg(id, context);
accept(ast->initializer, contextString(context));
if (!ast->qualifiedTypeNameId)
return true;
- QString context = Bind::toString(ast->qualifiedTypeNameId);
- const QString id = findId(ast->initializer);
+ QString context = toString(ast->qualifiedTypeNameId);
+ const QString id = idOfObject(ast->initializer);
if (!id.isEmpty())
context = QString("%1 (%2)").arg(id, context);
accept(ast->initializer, contextString(context));