diff options
37 files changed, 280 insertions, 231 deletions
diff --git a/src/libs/qmljs/parser/qmljsengine_p.h b/src/libs/qmljs/parser/qmljsengine_p.h index 5b1fe269f0d..b43b1be239d 100644 --- a/src/libs/qmljs/parser/qmljsengine_p.h +++ b/src/libs/qmljs/parser/qmljsengine_p.h @@ -44,6 +44,7 @@ #include "qmljsglobal_p.h" #include "qmljsastfwd_p.h" #include "qmljsmemorypool_p.h" +#include <qmljs/qmljsconstants.h> #include <QString> #include <QSet> @@ -59,21 +60,19 @@ class MemoryPool; class QML_PARSER_EXPORT DiagnosticMessage { public: - enum Kind { Warning, Error }; - DiagnosticMessage() - : kind(Error) {} + : kind(Severity::Error) {} - DiagnosticMessage(Kind kind, const AST::SourceLocation &loc, const QString &message) + DiagnosticMessage(Severity::Enum kind, const AST::SourceLocation &loc, const QString &message) : kind(kind), loc(loc), message(message) {} bool isWarning() const - { return kind == Warning; } + { return kind == Severity::Warning; } bool isError() const - { return kind == Error; } + { return kind == Severity::Error; } - Kind kind; + Severity::Enum kind; AST::SourceLocation loc; QString message; }; diff --git a/src/libs/qmljs/parser/qmljsparser.cpp b/src/libs/qmljs/parser/qmljsparser.cpp index 5b95f16b257..ecf18954804 100644 --- a/src/libs/qmljs/parser/qmljsparser.cpp +++ b/src/libs/qmljs/parser/qmljsparser.cpp @@ -289,7 +289,7 @@ case 20: { if (node) { node->importToken = loc(1); } else { - diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, loc(1), + diagnostic_messages.append(DiagnosticMessage(Severity::Error, loc(1), QLatin1String("Expected a qualified name id or a string literal"))); return false; // ### remove me @@ -583,7 +583,7 @@ case 78: { case 79: { bool rx = lexer->scanRegExp(Lexer::NoPrefix); if (!rx) { - diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, location(lexer), lexer->errorMessage())); + diagnostic_messages.append(DiagnosticMessage(Severity::Error, location(lexer), lexer->errorMessage())); return false; // ### remove me } @@ -599,7 +599,7 @@ case 79: { case 80: { bool rx = lexer->scanRegExp(Lexer::EqualPrefix); if (!rx) { - diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, location(lexer), lexer->errorMessage())); + diagnostic_messages.append(DiagnosticMessage(Severity::Error, location(lexer), lexer->errorMessage())); return false; } @@ -680,7 +680,7 @@ case 88: { case 89: { if (AST::ArrayMemberExpression *mem = AST::cast<AST::ArrayMemberExpression *>(sym(1).Expression)) { - diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Warning, mem->lbracketToken, + diagnostic_messages.append(DiagnosticMessage(Severity::Warning, mem->lbracketToken, QLatin1String("Ignored annotation"))); sym(1).Expression = mem->base; @@ -691,7 +691,7 @@ case 89: { } else { sym(1).UiQualifiedId = 0; - diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, loc(1), + diagnostic_messages.append(DiagnosticMessage(Severity::Error, loc(1), QLatin1String("Expected a qualified name id"))); return false; // ### recover @@ -1747,7 +1747,7 @@ case 347: { msg = qApp->translate("QmlParser", "Syntax error"); else msg = qApp->translate("QmlParser", "Unexpected token `%1'").arg(QLatin1String(spell[token])); - diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, token_buffer[0].loc, msg)); + diagnostic_messages.append(DiagnosticMessage(Severity::Error, token_buffer[0].loc, msg)); action = errorState; goto _Lcheck_token; @@ -1775,7 +1775,7 @@ case 347: { int a = t_action(errorState, *tk); if (a > 0 && t_action(a, yytoken)) { const QString msg = qApp->translate("QmlParser", "Expected token `%1'").arg(QLatin1String(spell[*tk])); - diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, token_buffer[0].loc, msg)); + diagnostic_messages.append(DiagnosticMessage(Severity::Error, token_buffer[0].loc, msg)); yytoken = *tk; yylval = 0; @@ -1799,7 +1799,7 @@ case 347: { int a = t_action(errorState, tk); if (a > 0 && t_action(a, yytoken)) { const QString msg = qApp->translate("QmlParser", "Expected token `%1'").arg(QLatin1String(spell[tk])); - diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, token_buffer[0].loc, msg)); + diagnostic_messages.append(DiagnosticMessage(Severity::Error, token_buffer[0].loc, msg)); yytoken = tk; yylval = 0; @@ -1812,7 +1812,7 @@ case 347: { } const QString msg = qApp->translate("QmlParser", "Syntax error"); - diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, token_buffer[0].loc, msg)); + diagnostic_messages.append(DiagnosticMessage(Severity::Error, token_buffer[0].loc, msg)); } return false; diff --git a/src/libs/qmljs/parser/qmljsparser_p.h b/src/libs/qmljs/parser/qmljsparser_p.h index eafea8f405d..9b41ce3412e 100644 --- a/src/libs/qmljs/parser/qmljsparser_p.h +++ b/src/libs/qmljs/parser/qmljsparser_p.h @@ -162,7 +162,7 @@ public: inline DiagnosticMessage diagnosticMessage() const { foreach (const DiagnosticMessage &d, diagnostic_messages) { - if (d.kind != DiagnosticMessage::Warning) + if (d.kind != Severity::Warning) return d; } diff --git a/src/libs/qmljs/qmljs-lib.pri b/src/libs/qmljs/qmljs-lib.pri index 1ea154d3ad2..d4e83127daa 100644 --- a/src/libs/qmljs/qmljs-lib.pri +++ b/src/libs/qmljs/qmljs-lib.pri @@ -38,7 +38,8 @@ HEADERS += \ $$PWD/iscriptevaluator.h \ $$PWD/qmljssimplereader.h \ $$PWD/persistenttrie.h \ - $$PWD/qmljsqrcparser.h + $$PWD/qmljsqrcparser.h \ + $$PWD/qmljsconstants.h SOURCES += \ $$PWD/qmljsbind.cpp \ diff --git a/src/libs/qmljs/qmljs.qbs b/src/libs/qmljs/qmljs.qbs index ae5334c4bbc..c79197475fe 100644 --- a/src/libs/qmljs/qmljs.qbs +++ b/src/libs/qmljs/qmljs.qbs @@ -28,6 +28,7 @@ QtcLibrary { "qmljscheck.cpp", "qmljscheck.h", "qmljscodeformatter.cpp", "qmljscodeformatter.h", "qmljscompletioncontextfinder.cpp", "qmljscompletioncontextfinder.h", + "qmljsconstants.h", "qmljscontext.cpp", "qmljscontext.h", "qmljsdelta.cpp", "qmljsdelta.h", "qmljsdocument.cpp", "qmljsdocument.h", diff --git a/src/libs/qmljs/qmljsbind.cpp b/src/libs/qmljs/qmljsbind.cpp index fd7c7c68cb8..65804d72a09 100644 --- a/src/libs/qmljs/qmljsbind.cpp +++ b/src/libs/qmljs/qmljsbind.cpp @@ -204,17 +204,17 @@ bool Bind::visit(UiImport *ast) const QString importId = ast->importId.toString(); ImportInfo import = ImportInfo::moduleImport(toString(ast->importUri), version, importId, ast); - if (_doc->language() == Document::QmlLanguage) { + if (_doc->language() == Language::Qml) { const QString importStr = import.name() + importId; QmlLanguageBundles langBundles = ModelManagerInterface::instance()->extendedBundles(); - QmlBundle qq1 = langBundles.bundleForLanguage(Document::QmlQtQuick1Language); - QmlBundle qq2 = langBundles.bundleForLanguage(Document::QmlQtQuick2Language); + QmlBundle qq1 = langBundles.bundleForLanguage(Language::QmlQtQuick1); + QmlBundle qq2 = langBundles.bundleForLanguage(Language::QmlQtQuick2); bool isQQ1 = qq1.supportedImports().contains(importStr); bool isQQ2 = qq2.supportedImports().contains(importStr); if (isQQ1 && ! isQQ2) - _doc->setLanguage(Document::QmlQtQuick1Language); + _doc->setLanguage(Language::QmlQtQuick1); if (isQQ2 && ! isQQ1) - _doc->setLanguage(Document::QmlQtQuick2Language); + _doc->setLanguage(Language::QmlQtQuick2); } _imports += import; } else if (!ast->fileName.isEmpty()) { diff --git a/src/libs/qmljs/qmljsbundle.cpp b/src/libs/qmljs/qmljsbundle.cpp index 8b2ff587b43..198808a9f29 100644 --- a/src/libs/qmljs/qmljsbundle.cpp +++ b/src/libs/qmljs/qmljsbundle.cpp @@ -288,14 +288,14 @@ bool QmlBundle::readFrom(QString path, QStringList *errors) return errs.isEmpty(); } -QmlBundle QmlLanguageBundles::bundleForLanguage(Document::Language l) const +QmlBundle QmlLanguageBundles::bundleForLanguage(Language::Enum l) const { if (m_bundles.contains(l)) return m_bundles.value(l); return QmlBundle(); } -void QmlLanguageBundles::mergeBundleForLanguage(Document::Language l, const QmlBundle &bundle) +void QmlLanguageBundles::mergeBundleForLanguage(Language::Enum l, const QmlBundle &bundle) { if (bundle.isEmpty()) return; @@ -305,14 +305,14 @@ void QmlLanguageBundles::mergeBundleForLanguage(Document::Language l, const QmlB m_bundles.insert(l,bundle); } -QList<Document::Language> QmlLanguageBundles::languages() const +QList<Language::Enum> QmlLanguageBundles::languages() const { return m_bundles.keys(); } void QmlLanguageBundles::mergeLanguageBundles(const QmlLanguageBundles &o) { - foreach (Document::Language l, o.languages()) + foreach (Language::Enum l, o.languages()) mergeBundleForLanguage(l, o.bundleForLanguage(l)); } diff --git a/src/libs/qmljs/qmljsbundle.h b/src/libs/qmljs/qmljsbundle.h index 63acca2da53..3357ee5a0c9 100644 --- a/src/libs/qmljs/qmljsbundle.h +++ b/src/libs/qmljs/qmljsbundle.h @@ -102,12 +102,12 @@ private: class QMLJS_EXPORT QmlLanguageBundles { public: - QmlBundle bundleForLanguage(Document::Language l) const; - void mergeBundleForLanguage(Document::Language l, const QmlBundle &bundle); - QList<Document::Language> languages() const; + QmlBundle bundleForLanguage(Language::Enum l) const; + void mergeBundleForLanguage(Language::Enum l, const QmlBundle &bundle); + QList<Language::Enum> languages() const; void mergeLanguageBundles(const QmlLanguageBundles &); private: - QHash<Document::Language,QmlBundle> m_bundles; + QHash<Language::Enum,QmlBundle> m_bundles; }; } // namespace QmlJS diff --git a/src/libs/qmljs/qmljsconstants.h b/src/libs/qmljs/qmljsconstants.h new file mode 100644 index 00000000000..fcb117050f0 --- /dev/null +++ b/src/libs/qmljs/qmljsconstants.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#ifndef QMLJSCONSTANTS_H +#define QMLJSCONSTANTS_H + +namespace QmlJS { + +namespace ImportType { +enum Enum { + Invalid, + ImplicitDirectory, + Library, + File, + Directory, + QrcFile, + QrcDirectory, + ImplicitQrcDirectory, + UnknownFile // refers a file/directory that wasn't found +}; +} + +namespace Severity { +enum Enum +{ + Hint, // cosmetic or convention + MaybeWarning, // possibly a warning, insufficient information + Warning, // could cause unintended behavior + MaybeError, // possibly an error, insufficient information + Error // definitely an error +}; +} + +namespace Language { +enum Enum +{ + Unknown = 0, + JavaScript = 1, + Json = 2, + Qml = 3, + QmlQtQuick1 = 4, + QmlQtQuick2 = 5, + QmlQbs = 6, + QmlProject = 7, + QmlTypeInfo = 8 +}; +} + +} // namespace QmlJS +#endif // QMLJSCONSTANTS_H diff --git a/src/libs/qmljs/qmljsdocument.cpp b/src/libs/qmljs/qmljsdocument.cpp index 942882ef1ac..fe169f795c4 100644 --- a/src/libs/qmljs/qmljsdocument.cpp +++ b/src/libs/qmljs/qmljsdocument.cpp @@ -29,6 +29,7 @@ #include "qmljsdocument.h" #include "qmljsbind.h" +#include "qmljsconstants.h" #include <qmljs/parser/qmljslexer_p.h> #include <qmljs/parser/qmljsparser_p.h> @@ -81,56 +82,56 @@ using namespace QmlJS::AST; */ -bool Document::isQmlLikeLanguage(Document::Language language) +bool Document::isQmlLikeLanguage(Language::Enum language) { switch (language) { - case QmlLanguage: - case QmlQtQuick1Language: - case QmlQtQuick2Language: - case QmlQbsLanguage: - case QmlProjectLanguage: - case QmlTypeInfoLanguage: + case Language::Qml: + case Language::QmlQtQuick1: + case Language::QmlQtQuick2: + case Language::QmlQbs: + case Language::QmlProject: + case Language::QmlTypeInfo: return true; default: return false; } } -bool Document::isFullySupportedLanguage(Document::Language language) +bool Document::isFullySupportedLanguage(Language::Enum language) { switch (language) { - case JavaScriptLanguage: - case JsonLanguage: - case QmlLanguage: - case QmlQtQuick1Language: - case QmlQtQuick2Language: + case Language::JavaScript: + case Language::Json: + case Language::Qml: + case Language::QmlQtQuick1: + case Language::QmlQtQuick2: return true; - case UnknownLanguage: - case QmlQbsLanguage: - case QmlProjectLanguage: - case QmlTypeInfoLanguage: + case Language::Unknown: + case Language::QmlQbs: + case Language::QmlProject: + case Language::QmlTypeInfo: break; } return false; } -bool Document::isQmlLikeOrJsLanguage(Document::Language language) +bool Document::isQmlLikeOrJsLanguage(Language::Enum language) { switch (language) { - case QmlLanguage: - case QmlQtQuick1Language: - case QmlQtQuick2Language: - case QmlQbsLanguage: - case QmlProjectLanguage: - case QmlTypeInfoLanguage: - case JavaScriptLanguage: + case Language::Qml: + case Language::QmlQtQuick1: + case Language::QmlQtQuick2: + case Language::QmlQbs: + case Language::QmlProject: + case Language::QmlTypeInfo: + case Language::JavaScript: return true; default: return false; } } -Document::Document(const QString &fileName, Language language) +Document::Document(const QString &fileName, Language::Enum language) : _engine(0) , _ast(0) , _bind(0) @@ -163,24 +164,24 @@ Document::~Document() delete _engine; } -Document::MutablePtr Document::create(const QString &fileName, Language language) +Document::MutablePtr Document::create(const QString &fileName, Language::Enum language) { Document::MutablePtr doc(new Document(fileName, language)); doc->_ptr = doc; return doc; } -Document::Language Document::guessLanguageFromSuffix(const QString &fileName) +Language::Enum Document::guessLanguageFromSuffix(const QString &fileName) { if (fileName.endsWith(QLatin1String(".qml"), Qt::CaseInsensitive)) - return QmlLanguage; + return Language::Qml; if (fileName.endsWith(QLatin1String(".qbs"), Qt::CaseInsensitive)) - return QmlQbsLanguage; + return Language::QmlQbs; if (fileName.endsWith(QLatin1String(".js"), Qt::CaseInsensitive)) - return JavaScriptLanguage; + return Language::JavaScript; if (fileName.endsWith(QLatin1String(".json"), Qt::CaseInsensitive)) - return JsonLanguage; - return UnknownLanguage; + return Language::Json; + return Language::Unknown; } Document::Ptr Document::ptr() const @@ -193,12 +194,12 @@ bool Document::isQmlDocument() const return isQmlLikeLanguage(_language); } -Document::Language Document::language() const +Language::Enum Document::language() const { return _language; } -void Document::setLanguage(Document::Language l) +void Document::setLanguage(Language::Enum l) { _language = l; } @@ -428,7 +429,7 @@ void Snapshot::remove(const QString &fileName) Document::MutablePtr Snapshot::documentFromSource( const QString &code, const QString &fileName, - Document::Language language) const + Language::Enum language) const { Document::MutablePtr newDoc = Document::create(fileName, language); diff --git a/src/libs/qmljs/qmljsdocument.h b/src/libs/qmljs/qmljsdocument.h index 56ebb7061e8..3d9491e165f 100644 --- a/src/libs/qmljs/qmljsdocument.h +++ b/src/libs/qmljs/qmljsdocument.h @@ -50,36 +50,23 @@ public: typedef QSharedPointer<const Document> Ptr; typedef QSharedPointer<Document> MutablePtr; - enum Language - { - UnknownLanguage = 0, - JavaScriptLanguage = 1, - JsonLanguage = 2, - QmlLanguage = 3, - QmlQtQuick1Language = 4, - QmlQtQuick2Language = 5, - QmlQbsLanguage = 6, - QmlProjectLanguage = 7, - QmlTypeInfoLanguage = 8 - }; - - static bool isQmlLikeLanguage(Language languge); - static bool isFullySupportedLanguage(Language language); - static bool isQmlLikeOrJsLanguage(Language language); + static bool isQmlLikeLanguage(Language::Enum languge); + static bool isFullySupportedLanguage(Language::Enum language); + static bool isQmlLikeOrJsLanguage(Language::Enum language); protected: - Document(const QString &fileName, Language language); + Document(const QString &fileName, Language::Enum language); public: ~Document(); - static MutablePtr create(const QString &fileName, Language language); - static Language guessLanguageFromSuffix(const QString &fileName); + static MutablePtr create(const QString &fileName, Language::Enum language); + static Language::Enum guessLanguageFromSuffix(const QString &fileName); Document::Ptr ptr() const; bool isQmlDocument() const; - Language language() const; - void setLanguage(Language l); + Language::Enum language() const; + void setLanguage(Language::Enum l); AST::UiProgram *qmlProgram() const; AST::Program *jsProgram() const; @@ -124,7 +111,7 @@ private: QString _source; QWeakPointer<Document> _ptr; int _editorRevision; - Language _language; + Language::Enum _language; bool _parsedCorrectly; // for documentFromSource @@ -237,7 +224,7 @@ public: Document::MutablePtr documentFromSource(const QString &code, const QString &fileName, - Document::Language language) const; + Language::Enum language) const; }; } // namespace QmlJS diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp index ddecffd2f19..feb6fa65057 100644 --- a/src/libs/qmljs/qmljsinterpreter.cpp +++ b/src/libs/qmljs/qmljsinterpreter.cpp @@ -2074,7 +2074,7 @@ bool ASTSignal::getSourceLocation(QString *fileName, int *line, int *column) con ImportInfo::ImportInfo() - : _type(InvalidImport) + : _type(ImportType::Invalid) , _ast(0) { } @@ -2089,7 +2089,7 @@ ImportInfo ImportInfo::moduleImport(QString uri, ComponentVersion version, } ImportInfo info; - info._type = LibraryImport; + info._type = ImportType::Library; info._name = uri; info._path = uri; info._path.replace(QLatin1Char('.'), QDir::separator()); @@ -2111,17 +2111,17 @@ ImportInfo ImportInfo::pathImport(const QString &docPath, const QString &path, info._path = importFileInfo.absoluteFilePath(); if (importFileInfo.isFile()) { - info._type = FileImport; + info._type = ImportType::File; } else if (importFileInfo.isDir()) { - info._type = DirectoryImport; + info._type = ImportType::Directory; } else if (path.startsWith(QLatin1String("qrc:"))) { info._path = path; if (ModelManagerInterface::instance()->filesAtQrcPath(info.path()).isEmpty()) - info._type = QrcDirectoryImport; + info._type = ImportType::QrcDirectory; else - info._type = QrcFileImport; + info._type = ImportType::QrcFile; } else { - info._type = UnknownFileImport; + info._type = ImportType::UnknownFile; } info._version = version; info._as = as; @@ -2132,7 +2132,7 @@ ImportInfo ImportInfo::pathImport(const QString &docPath, const QString &path, ImportInfo ImportInfo::invalidImport(UiImport *ast) { ImportInfo info; - info._type = InvalidImport; + info._type = ImportType::Invalid; info._ast = ast; return info; } @@ -2140,17 +2140,17 @@ ImportInfo ImportInfo::invalidImport(UiImport *ast) ImportInfo ImportInfo::implicitDirectoryImport(const QString &directory) { ImportInfo info; - info._type = ImplicitDirectoryImport; + info._type = ImportType::ImplicitDirectory; info._path = directory; return info; } bool ImportInfo::isValid() const { - return _type != InvalidImport; + return _type != ImportType::Invalid; } -ImportInfo::Type ImportInfo::type() const +ImportType::Enum ImportInfo::type() const { return _type; } @@ -2201,7 +2201,7 @@ const Value *TypeScope::lookupMember(const QString &name, const Context *context const ImportInfo &info = i.info; // JS import has no types - if (info.type() == ImportInfo::FileImport || info.type() == ImportInfo::QrcFileImport) + if (info.type() == ImportType::File || info.type() == ImportType::QrcFile) continue; if (!info.as().isEmpty()) { @@ -2231,7 +2231,7 @@ void TypeScope::processMembers(MemberProcessor *processor) const const ImportInfo &info = i.info; // JS import has no types - if (info.type() == ImportInfo::FileImport || info.type() == ImportInfo::QrcFileImport) + if (info.type() == ImportType::File || info.type() == ImportType::QrcFile) continue; if (!info.as().isEmpty()) @@ -2258,7 +2258,7 @@ const Value *JSImportScope::lookupMember(const QString &name, const Context *, const ImportInfo &info = i.info; // JS imports are always: import "somefile.js" as Foo - if (info.type() != ImportInfo::FileImport && info.type() != ImportInfo::QrcFileImport) + if (info.type() != ImportType::File && info.type() != ImportType::QrcFile) continue; if (info.as() == name) { @@ -2281,7 +2281,7 @@ void JSImportScope::processMembers(MemberProcessor *processor) const const ObjectValue *import = i.object; const ImportInfo &info = i.info; - if (info.type() == ImportInfo::FileImport || info.type() == ImportInfo::QrcFileImport) + if (info.type() == ImportType::File || info.type() == ImportType::QrcFile) processor->processProperty(info.as(), import); } } @@ -2338,7 +2338,7 @@ ImportInfo Imports::info(const QString &name, const Context *context) const continue; } - if (info.type() == ImportInfo::FileImport || info.type() == ImportInfo::QrcFileImport) { + if (info.type() == ImportType::File || info.type() == ImportType::QrcFile) { if (import->className() == firstId) return info; } else { @@ -2358,7 +2358,7 @@ QString Imports::nameForImportedObject(const ObjectValue *value, const Context * const ObjectValue *import = i.object; const ImportInfo &info = i.info; - if (info.type() == ImportInfo::FileImport || info.type() == ImportInfo::QrcFileImport) { + if (info.type() == ImportType::File || info.type() == ImportType::QrcFile) { if (import == value) return import->className(); } else { diff --git a/src/libs/qmljs/qmljsinterpreter.h b/src/libs/qmljs/qmljsinterpreter.h index 356f52bb387..936edced6e6 100644 --- a/src/libs/qmljs/qmljsinterpreter.h +++ b/src/libs/qmljs/qmljsinterpreter.h @@ -32,6 +32,7 @@ #include <qmljs/qmljsdocument.h> #include <qmljs/qmljs_global.h> +#include <qmljs/qmljsconstants.h> #include <QFileInfoList> #include <QList> @@ -866,17 +867,6 @@ public: class QMLJS_EXPORT ImportInfo { public: - enum Type { - InvalidImport, - ImplicitDirectoryImport, - LibraryImport, - FileImport, - DirectoryImport, - QrcFileImport, - QrcDirectoryImport, - UnknownFileImport // refers a file/directory that wasn't found - }; - ImportInfo(); static ImportInfo moduleImport(QString uri, LanguageUtils::ComponentVersion version, @@ -888,7 +878,7 @@ public: static ImportInfo implicitDirectoryImport(const QString &directory); bool isValid() const; - Type type() const; + ImportType::Enum type() const; // LibraryImport: uri with ',' separator // Other: non-absolute path @@ -905,7 +895,7 @@ public: AST::UiImport *ast() const; private: - Type _type; + ImportType::Enum _type; LanguageUtils::ComponentVersion _version; QString _name; QString _path; diff --git a/src/libs/qmljs/qmljslink.cpp b/src/libs/qmljs/qmljslink.cpp index 1515286a54f..8868ceee21f 100644 --- a/src/libs/qmljs/qmljslink.cpp +++ b/src/libs/qmljs/qmljslink.cpp @@ -244,16 +244,16 @@ void LinkPrivate::populateImportedTypes(Imports *imports, Document::Ptr doc) if (!import.object) { switch (info.type()) { - case ImportInfo::FileImport: - case ImportInfo::DirectoryImport: - case ImportInfo::QrcFileImport: - case ImportInfo::QrcDirectoryImport: + case ImportType::File: + case ImportType::Directory: + case ImportType::QrcFile: + case ImportType::QrcDirectory: import = importFileOrDirectory(doc, info); break; - case ImportInfo::LibraryImport: + case ImportType::Library: import = importNonFile(doc, info); break; - case ImportInfo::UnknownFileImport: + case ImportType::UnknownFile: imports->setImportFailed(); if (info.ast()) { error(doc, info.ast()->fileNameToken, @@ -290,8 +290,8 @@ Import LinkPrivate::importFileOrDirectory(Document::Ptr doc, const ImportInfo &i QString path = importInfo.path(); - if (importInfo.type() == ImportInfo::DirectoryImport - || importInfo.type() == ImportInfo::ImplicitDirectoryImport) { + if (importInfo.type() == ImportType::Directory + || importInfo.type() == ImportType::ImplicitDirectory) { import.object = new ObjectValue(valueOwner); importLibrary(doc, path, &import); @@ -303,11 +303,11 @@ Import LinkPrivate::importFileOrDirectory(Document::Ptr doc, const ImportInfo &i import.object->setMember(targetName, importedDoc->bind()->rootObjectValue()); } } - } else if (importInfo.type() == ImportInfo::FileImport) { + } else if (importInfo.type() == ImportType::File) { Document::Ptr importedDoc = snapshot.document(path); if (importedDoc) import.object = importedDoc->bind()->rootObjectValue(); - } else if (importInfo.type() == ImportInfo::QrcFileImport) { + } else if (importInfo.type() == ImportType::QrcFile) { QLocale locale; QStringList filePaths = ModelManagerInterface::instance() ->filesAtQrcPath(path, &locale, 0, ModelManagerInterface::ActiveQrcResources); @@ -319,7 +319,7 @@ Import LinkPrivate::importFileOrDirectory(Document::Ptr doc, const ImportInfo &i if (importedDoc) import.object = importedDoc->bind()->rootObjectValue(); } - } else if (importInfo.type() == ImportInfo::QrcDirectoryImport){ + } else if (importInfo.type() == ImportType::QrcDirectory){ import.object = new ObjectValue(valueOwner); importLibrary(doc, path, &import); @@ -454,7 +454,7 @@ bool LinkPrivate::importLibrary(Document::Ptr doc, if (libraryInfo.pluginTypeInfoStatus() == LibraryInfo::NoTypeInfo) { ModelManagerInterface *modelManager = ModelManagerInterface::instance(); if (modelManager) { - if (importInfo.type() == ImportInfo::LibraryImport) { + if (importInfo.type() == ImportType::Library) { if (version.isValid()) { const QString uri = importInfo.name(); modelManager->loadPluginTypes( @@ -510,12 +510,12 @@ bool LinkPrivate::importLibrary(Document::Ptr doc, void LinkPrivate::error(const Document::Ptr &doc, const AST::SourceLocation &loc, const QString &message) { - appendDiagnostic(doc, DiagnosticMessage(DiagnosticMessage::Error, loc, message)); + appendDiagnostic(doc, DiagnosticMessage(Severity::Error, loc, message)); } void LinkPrivate::warning(const Document::Ptr &doc, const AST::SourceLocation &loc, const QString &message) { - appendDiagnostic(doc, DiagnosticMessage(DiagnosticMessage::Warning, loc, message)); + appendDiagnostic(doc, DiagnosticMessage(Severity::Warning, loc, message)); } void LinkPrivate::appendDiagnostic(const Document::Ptr &doc, const DiagnosticMessage &message) diff --git a/src/libs/qmljs/qmljsscopechain.cpp b/src/libs/qmljs/qmljsscopechain.cpp index 9ec4d0cf374..41cb3fb3567 100644 --- a/src/libs/qmljs/qmljsscopechain.cpp +++ b/src/libs/qmljs/qmljsscopechain.cpp @@ -258,7 +258,7 @@ void ScopeChain::update() const m_all += m_cppContextProperties; // the root scope in js files doesn't see instantiating components - if (m_document->language() != Document::JavaScriptLanguage || m_jsScopes.count() != 1) { + if (m_document->language() != Language::JavaScript || m_jsScopes.count() != 1) { if (m_qmlComponentScope) { foreach (const QmlComponentChain *parent, m_qmlComponentScope->instantiatingComponents()) collectScopes(parent, &m_all); @@ -312,8 +312,8 @@ void ScopeChain::initializeRootScope() if (!m_document->bind()->isJsLibrary()) { foreach (Document::Ptr otherDoc, snapshot) { foreach (const ImportInfo &import, otherDoc->bind()->imports()) { - if ((import.type() == ImportInfo::FileImport && m_document->fileName() == import.path()) - || (import.type() == ImportInfo::QrcFileImport + if ((import.type() == ImportType::File && m_document->fileName() == import.path()) + || (import.type() == ImportType::QrcFile && ModelManagerInterface::instance()->filesAtQrcPath(import.path()) .contains(m_document->fileName()))) { QmlComponentChain *component = new QmlComponentChain(otherDoc); diff --git a/src/libs/qmljs/qmljsstaticanalysismessage.cpp b/src/libs/qmljs/qmljsstaticanalysismessage.cpp index 6336bc21e29..57dc9b9ba70 100644 --- a/src/libs/qmljs/qmljsstaticanalysismessage.cpp +++ b/src/libs/qmljs/qmljsstaticanalysismessage.cpp @@ -28,6 +28,7 @@ ****************************************************************************/ #include "qmljsstaticanalysismessage.h" +#include "qmljsconstants.h" #include <utils/qtcassert.h> @@ -35,6 +36,7 @@ using namespace QmlJS; using namespace QmlJS::StaticAnalysis; +using namespace QmlJS::Severity; namespace { @@ -43,7 +45,7 @@ class StaticAnalysisMessages Q_DECLARE_TR_FUNCTIONS(QmlJS::StaticAnalysisMessages) public: - void newMsg(Type type, Severity severity, const QString &message, int placeholders = 0) + void newMsg(Type type, Enum severity, const QString &message, int placeholders = 0) { PrototypeMessageData prototype; prototype.type = type; @@ -152,7 +154,7 @@ StaticAnalysisMessages::StaticAnalysisMessages() tr("Unnecessary parentheses.")); newMsg(MaybeWarnEqualityTypeCoercion, MaybeWarning, tr("== and != may perform type coercion, use === or !== to avoid it.")); - newMsg(WarnConfusingExpressionStatement, Warning, + newMsg(WarnConfusingExpressionStatement, Error, tr("Expression statements should be assignments, calls or delete expressions only.")); newMsg(HintDeclarationsShouldBeAtStartOfFunction, Hint, tr("Place var declarations at the start of a function.")); @@ -168,17 +170,17 @@ StaticAnalysisMessages::StaticAnalysisMessages() tr("Prototype cycle, the last non-repeated component is '%1'."), 1); newMsg(ErrInvalidPropertyType, Error, tr("Invalid property type '%1'."), 1); - newMsg(WarnEqualityTypeCoercion, Warning, + newMsg(WarnEqualityTypeCoercion, Error, tr("== and != perform type coercion, use === or !== to avoid it.")); - newMsg(WarnExpectedNewWithUppercaseFunction, Warning, + newMsg(WarnExpectedNewWithUppercaseFunction, Error, tr("Calls of functions that start with an uppercase letter should use 'new'.")); - newMsg(WarnNewWithLowercaseFunction, Warning, + newMsg(WarnNewWithLowercaseFunction, Error, tr("Use 'new' only with functions that start with an uppercase letter.")); - newMsg(WarnNumberConstructor, Warning, + newMsg(WarnNumberConstructor, Error, msgInvalidConstructor("Function")); newMsg(HintBinaryOperatorSpacing, Hint, tr("Use spaces around binary operators.")); - newMsg(WarnUnintentinalEmptyBlock, Warning, + newMsg(WarnUnintentinalEmptyBlock, Error, tr("Unintentional empty block, use ({}) for empty object literal.")); newMsg(HintPreferNonVarPropertyType, Hint, tr("Use %1 instead of 'var' or 'variant' to improve performance."), 1); @@ -206,16 +208,16 @@ StaticAnalysisMessages::StaticAnalysisMessages() tr("Maximum string value length is %1."), 1); newMsg(ErrInvalidArrayValueLength, Error, tr("%1 elements expected in array value."), 1); - newMsg(WarnImperativeCodeNotEditableInVisualDesigner, Warning, + newMsg(WarnImperativeCodeNotEditableInVisualDesigner, Error, tr("Imperative code is not supported in the Qt Quick Designer.")); - newMsg(WarnUnsupportedTypeInVisualDesigner, Warning, + newMsg(WarnUnsupportedTypeInVisualDesigner, Error, tr("This type is not supported in the Qt Quick Designer.")); - newMsg(WarnReferenceToParentItemNotSupportedByVisualDesigner, Warning, + newMsg(WarnReferenceToParentItemNotSupportedByVisualDesigner, Error, tr("Reference to parent item cannot be resolved correctly by the Qt Quick Designer.")); - newMsg(WarnUndefinedValueForVisualDesigner, Warning, + newMsg(WarnUndefinedValueForVisualDesigner, Error, tr("This visual property binding cannot be evaluated in the local context " "and might not show up in Qt Quick Designer as expected.")); - newMsg(WarnStatesOnlyInRootItemForVisualDesigner, Warning, + newMsg(WarnStatesOnlyInRootItemForVisualDesigner, Error, tr("Qt Quick Designer only supports states in the root item.")); } @@ -271,10 +273,10 @@ DiagnosticMessage Message::toDiagnosticMessage() const case Hint: case MaybeWarning: case Warning: - diagnostic.kind = DiagnosticMessage::Warning; + diagnostic.kind = Warning; break; default: - diagnostic.kind = DiagnosticMessage::Error; + diagnostic.kind = Error; break; } diagnostic.loc = location; diff --git a/src/libs/qmljs/qmljsstaticanalysismessage.h b/src/libs/qmljs/qmljsstaticanalysismessage.h index 3cf29d7bba0..4e1ca5afc60 100644 --- a/src/libs/qmljs/qmljsstaticanalysismessage.h +++ b/src/libs/qmljs/qmljsstaticanalysismessage.h @@ -31,6 +31,7 @@ #define QMLJS_STATICANALYSIS_QMLJSSTATICANALYSISMESSAGE_H #include "qmljs_global.h" +#include "qmljsconstants.h" #include "parser/qmljsengine_p.h" #include <QRegExp> @@ -40,15 +41,6 @@ namespace QmlJS { namespace StaticAnalysis { -enum Severity -{ - Hint, // cosmetic or convention - MaybeWarning, // possibly a warning, insufficient information - Warning, // could cause unintended behavior - MaybeError, // possibly an error, insufficient information - Error // definitely an error -}; - enum Type { // Changing the numbers can break user code. @@ -134,7 +126,7 @@ enum Type class QMLJS_EXPORT PrototypeMessageData { public: Type type; - Severity severity; + Severity::Enum severity; QString message; int placeholders; }; @@ -159,7 +151,7 @@ public: AST::SourceLocation location; QString message; Type type; - Severity severity; + Severity::Enum severity; static const PrototypeMessageData prototypeForMessageType(Type type); }; diff --git a/src/libs/qmljs/qmljsutils.cpp b/src/libs/qmljs/qmljsutils.cpp index 28363502912..764a5c0f486 100644 --- a/src/libs/qmljs/qmljsutils.cpp +++ b/src/libs/qmljs/qmljsutils.cpp @@ -194,7 +194,7 @@ UiQualifiedId *QmlJS::qualifiedTypeNameId(Node *node) DiagnosticMessage QmlJS::errorMessage(const AST::SourceLocation &loc, const QString &message) { - return DiagnosticMessage(DiagnosticMessage::Error, loc, message); + return DiagnosticMessage(Severity::Error, loc, message); } bool QmlJS::isValidBuiltinPropertyType(const QString &name) diff --git a/src/libs/qmljs/qmljsutils.h b/src/libs/qmljs/qmljsutils.h index 30ec1ba69e7..5ac47f72077 100644 --- a/src/libs/qmljs/qmljsutils.h +++ b/src/libs/qmljs/qmljsutils.h @@ -67,7 +67,7 @@ AST::SourceLocation locationFromRange(const T *node) template <class T> DiagnosticMessage errorMessage(const T *node, const QString &message) { - return DiagnosticMessage(DiagnosticMessage::Error, + return DiagnosticMessage(Severity::Error, locationFromRange(node), message); } diff --git a/src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.cpp b/src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.cpp index 0bb87dd813e..97f0a00eba4 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.cpp +++ b/src/plugins/qmldesigner/designercore/filemanager/astobjecttextextractor.cpp @@ -36,7 +36,7 @@ using namespace QmlDesigner; using namespace QmlJS::AST; ASTObjectTextExtractor::ASTObjectTextExtractor(const QString &text): - m_document(Document::create("<ASTObjectTextExtractor>", Document::QmlLanguage)) + m_document(Document::create("<ASTObjectTextExtractor>", Language::Qml)) { m_document->setSource(text); m_document->parseQml(); diff --git a/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.cpp b/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.cpp index d35b1d5f931..615d049925d 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.cpp +++ b/src/plugins/qmldesigner/designercore/filemanager/firstdefinitionfinder.cpp @@ -38,7 +38,7 @@ using namespace QmlDesigner; using namespace QmlJS::AST; FirstDefinitionFinder::FirstDefinitionFinder(const QString &text): - m_doc(Document::create("<internal>", Document::QmlLanguage)) + m_doc(Document::create("<internal>", Language::Qml)) { m_doc->setSource(text); bool ok = m_doc->parseQml(); diff --git a/src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.cpp b/src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.cpp index 7e0cedd4d47..3290c86d454 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.cpp +++ b/src/plugins/qmldesigner/designercore/filemanager/objectlengthcalculator.cpp @@ -36,7 +36,7 @@ using namespace QmlDesigner; using namespace QmlJS::AST; ObjectLengthCalculator::ObjectLengthCalculator(): - m_doc(Document::create("<internal>", Document::QmlLanguage)) + m_doc(Document::create("<internal>", Language::Qml)) { } diff --git a/src/plugins/qmldesigner/designercore/filemanager/qmlrefactoring.cpp b/src/plugins/qmldesigner/designercore/filemanager/qmlrefactoring.cpp index 674e2a1aa7f..5b1916a9b12 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/qmlrefactoring.cpp +++ b/src/plugins/qmldesigner/designercore/filemanager/qmlrefactoring.cpp @@ -59,7 +59,7 @@ bool QmlRefactoring::reparseDocument() // qDebug() << "QmlRefactoring::reparseDocument() new QML source:" << newSource; - Document::MutablePtr tmpDocument(Document::create("<ModelToTextMerger>", Document::QmlLanguage)); + Document::MutablePtr tmpDocument(Document::create("<ModelToTextMerger>", Language::Qml)); tmpDocument->setSource(newSource); if (tmpDocument->parseQml()) { diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp index 9d56d7a857e..e5b5180233a 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp @@ -545,7 +545,7 @@ NodeMetaInfoPrivate::NodeMetaInfoPrivate(Model *model, TypeName type, int maj, i m_isFileComponent = true; const Imports *imports = context()->imports(document()); ImportInfo importInfo = imports->info(lookupNameComponent().last(), context().data()); - if (importInfo.isValid() && importInfo.type() == ImportInfo::LibraryImport) { + if (importInfo.isValid() && importInfo.type() == ImportType::Library) { m_majorVersion = importInfo.version().majorVersion(); m_minorVersion = importInfo.version().minorVersion(); } @@ -950,9 +950,9 @@ QString NodeMetaInfoPrivate::importDirectoryPath() const const Imports *imports = context()->imports(document()); ImportInfo importInfo = imports->info(lookupNameComponent().last(), context().data()); - if (importInfo.type() == ImportInfo::DirectoryImport) { + if (importInfo.type() == ImportType::Directory) { return importInfo.path(); - } else if (importInfo.type() == ImportInfo::LibraryImport) { + } else if (importInfo.type() == ImportType::Library) { if (modelManager) { foreach (const QString &importPath, modelManager->importPaths()) { const QString targetPath = QDir(importPath).filePath(importInfo.path()); diff --git a/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp b/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp index 69191cbe9e9..2405ef8412c 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp @@ -91,7 +91,7 @@ static inline bool checkIfDerivedFromItem(const QString &fileName) QmlJS::Document::MutablePtr document = QmlJS::Document::create(fileName.isEmpty() ? - QLatin1String("<internal>") : fileName, QmlJS::Document::QmlLanguage); + QLatin1String("<internal>") : fileName, QmlJS::Language::Qml); document->setSource(source); document->parseQml(); diff --git a/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp b/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp index 232b2151c66..67cf034d62e 100644 --- a/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp @@ -221,7 +221,7 @@ void ModelToTextMerger::applyChanges() if (m_rewriteActions.isEmpty()) return; - Document::MutablePtr tmpDocument(Document::create(QLatin1String("<ModelToTextMerger>"), Document::QmlLanguage)); + Document::MutablePtr tmpDocument(Document::create(QLatin1String("<ModelToTextMerger>"), Language::Qml)); tmpDocument->setSource(m_rewriterView->textModifier()->text()); if (!tmpDocument->parseQml()) { qDebug() << "*** Possible problem: QML file wasn't parsed correctly."; diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index 520b07dac7c..106af608691 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -359,12 +359,12 @@ public: const Imports *imports = m_context->imports(m_doc.data()); ImportInfo importInfo = imports->info(fullTypeName, m_context.data()); - if (importInfo.isValid() && importInfo.type() == ImportInfo::LibraryImport) { + if (importInfo.isValid() && importInfo.type() == ImportType::Library) { QString name = importInfo.name(); majorVersion = importInfo.version().majorVersion(); minorVersion = importInfo.version().minorVersion(); typeName.prepend(name + QLatin1Char('.')); - } else if (importInfo.isValid() && importInfo.type() == ImportInfo::DirectoryImport) { + } else if (importInfo.isValid() && importInfo.type() == ImportType::Directory) { QString path = importInfo.path(); QDir dir(m_doc->path()); // should probably try to make it relatve to some import path, not to the document path @@ -372,7 +372,7 @@ public: QString name = relativeDir.replace(QLatin1Char('/'), QLatin1Char('.')); if (!name.isEmpty()) typeName.prepend(name + QLatin1Char('.')); - } else if (importInfo.isValid() && importInfo.type() == ImportInfo::QrcDirectoryImport) { + } else if (importInfo.isValid() && importInfo.type() == ImportType::QrcDirectory) { QString path = QrcParser::normalizedQrcDirectoryPath(importInfo.path()); path = path.mid(1, path.size() - ((path.size() > 1) ? 2 : 1)); const QString name = path.replace(QLatin1Char('/'), QLatin1Char('.')); @@ -738,7 +738,7 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH try { Snapshot snapshot = m_rewriterView->textModifier()->getSnapshot(); const QString fileName = url.toLocalFile(); - Document::MutablePtr doc = Document::create(fileName.isEmpty() ? QLatin1String("<internal>") : fileName, Document::QmlLanguage); + Document::MutablePtr doc = Document::create(fileName.isEmpty() ? QLatin1String("<internal>") : fileName, Language::Qml); doc->setSource(data); doc->parseQml(); @@ -766,13 +766,13 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH setupImports(doc, differenceHandler); if (m_rewriterView->model()->imports().isEmpty()) { - const QmlJS::DiagnosticMessage diagnosticMessage(QmlJS::DiagnosticMessage::Error, AST::SourceLocation(0, 0, 0, 0), QCoreApplication::translate("QmlDesigner::TextToModelMerger", "No import statements found")); + const QmlJS::DiagnosticMessage diagnosticMessage(QmlJS::Severity::Error, AST::SourceLocation(0, 0, 0, 0), QCoreApplication::translate("QmlDesigner::TextToModelMerger", "No import statements found")); errors.append(RewriterView::Error(diagnosticMessage, QUrl::fromLocalFile(doc->fileName()))); } foreach (const QmlDesigner::Import &import, m_rewriterView->model()->imports()) { if (import.isLibraryImport() && import.url() == QLatin1String("QtQuick") && !supportedQtQuickVersion(import.version())) { - const QmlJS::DiagnosticMessage diagnosticMessage(QmlJS::DiagnosticMessage::Error, AST::SourceLocation(0, 0, 0, 0), + const QmlJS::DiagnosticMessage diagnosticMessage(QmlJS::Severity::Error, AST::SourceLocation(0, 0, 0, 0), QCoreApplication::translate("QmlDesigner::TextToModelMerger", "Unsupported QtQuick version")); errors.append(RewriterView::Error(diagnosticMessage, QUrl::fromLocalFile(doc->fileName()))); } @@ -787,8 +787,8 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH foreach (StaticAnalysis::Type type, StaticAnalysis::Message::allMessageTypes()) { StaticAnalysis::PrototypeMessageData prototypeMessageData = StaticAnalysis::Message::prototypeForMessageType(type); - if (prototypeMessageData.severity == StaticAnalysis::MaybeWarning - || prototypeMessageData.severity == StaticAnalysis::Warning) { + if (prototypeMessageData.severity == Severity::MaybeWarning + || prototypeMessageData.severity == Severity::Warning) { check.disableMessage(type); } } @@ -800,9 +800,9 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH check.enableMessage(StaticAnalysis::WarnStatesOnlyInRootItemForVisualDesigner); foreach (const StaticAnalysis::Message &message, check()) { - if (message.severity == StaticAnalysis::Error) + if (message.severity == Severity::Error) errors.append(RewriterView::Error(message.toDiagnosticMessage(), QUrl::fromLocalFile(doc->fileName()))); - if (message.severity == StaticAnalysis::Warning) + if (message.severity == Severity::Warning) warnings.append(RewriterView::Error(message.toDiagnosticMessage(), QUrl::fromLocalFile(doc->fileName()))); } diff --git a/src/plugins/qmljseditor/qmlexpressionundercursor.cpp b/src/plugins/qmljseditor/qmlexpressionundercursor.cpp index 7e7ea48f656..5f2fe8f94c1 100644 --- a/src/plugins/qmljseditor/qmlexpressionundercursor.cpp +++ b/src/plugins/qmljseditor/qmlexpressionundercursor.cpp @@ -134,7 +134,7 @@ QmlJS::AST::ExpressionNode *QmlExpressionUnderCursor::operator()(const QTextCurs _text = expressionUnderCursor(cursor); Document::MutablePtr newDoc = Document::create( - QLatin1String("<expression>"), Document::JavaScriptLanguage); + QLatin1String("<expression>"), Language::JavaScript); newDoc->setSource(_text); newDoc->parseExpression(); exprDoc = newDoc; diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index c8b71c9bdad..dc0b419a0a1 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -1079,7 +1079,7 @@ TextEditor::BaseTextEditorWidget::Link QmlJSTextEditorWidget::findLinkAt(const Q if (AST::UiImport *importAst = cast<AST::UiImport *>(node)) { // if it's a file import, link to the file foreach (const ImportInfo &import, semanticInfo.document->bind()->imports()) { - if (import.ast() == importAst && import.type() == ImportInfo::FileImport) { + if (import.ast() == importAst && import.type() == ImportType::File) { BaseTextEditorWidget::Link link(import.path()); link.linkTextStart = importAst->firstSourceLocation().begin(); link.linkTextEnd = importAst->lastSourceLocation().end(); diff --git a/src/plugins/qmljseditor/qmljsfindreferences.cpp b/src/plugins/qmljseditor/qmljsfindreferences.cpp index 11e22d50285..a8b7d70914d 100644 --- a/src/plugins/qmljseditor/qmljsfindreferences.cpp +++ b/src/plugins/qmljseditor/qmljsfindreferences.cpp @@ -812,7 +812,7 @@ static void find_helper(QFutureInterface<FindReferences::Usage> &future, if (oldDoc && oldDoc->editorRevision() == it.value().second) continue; - Document::Language language; + Language::Enum language; if (oldDoc) language = oldDoc->language(); else diff --git a/src/plugins/qmljseditor/qmljshoverhandler.cpp b/src/plugins/qmljseditor/qmljshoverhandler.cpp index 472cff9c269..b32537362ee 100644 --- a/src/plugins/qmljseditor/qmljshoverhandler.cpp +++ b/src/plugins/qmljseditor/qmljshoverhandler.cpp @@ -115,7 +115,7 @@ static inline QString getModuleName(const ScopeChain &scopeChain, const Document const QString moduleName = qmlValue->moduleName(); const Imports *imports = scopeChain.context()->imports(qmlDocument.data()); const ImportInfo importInfo = imports->info(qmlValue->className(), scopeChain.context().data()); - if (importInfo.isValid() && importInfo.type() == ImportInfo::LibraryImport) { + if (importInfo.isValid() && importInfo.type() == ImportType::Library) { const int majorVersion = importInfo.version().majorVersion(); const int minorVersion = importInfo.version().minorVersion(); return moduleName + QString::number(majorVersion) + QLatin1Char('.') @@ -127,20 +127,20 @@ static inline QString getModuleName(const ScopeChain &scopeChain, const Document const Imports *imports = scopeChain.context()->imports(qmlDocument.data()); const ImportInfo importInfo = imports->info(typeName, scopeChain.context().data()); - if (importInfo.isValid() && importInfo.type() == ImportInfo::LibraryImport) { + if (importInfo.isValid() && importInfo.type() == ImportType::Library) { const QString moduleName = importInfo.name(); const int majorVersion = importInfo.version().majorVersion(); const int minorVersion = importInfo.version().minorVersion(); return moduleName + QString::number(majorVersion) + QLatin1Char('.') + QString::number(minorVersion) ; - } else if (importInfo.isValid() && importInfo.type() == ImportInfo::DirectoryImport) { + } else if (importInfo.isValid() && importInfo.type() == ImportType::Directory) { const QString path = importInfo.path(); const QDir dir(qmlDocument->path()); // should probably try to make it relatve to some import path, not to the document path QString relativeDir = dir.relativeFilePath(path); const QString name = relativeDir.replace(QLatin1Char('/'), QLatin1Char('.')); return name; - } else if (importInfo.isValid() && importInfo.type() == ImportInfo::QrcDirectoryImport) { + } else if (importInfo.isValid() && importInfo.type() == ImportType::QrcDirectory) { QString path = QrcParser::normalizedQrcDirectoryPath(importInfo.path()); path = path.mid(1, path.size() - ((path.size() > 1) ? 2 : 1)); const QString name = path.replace(QLatin1Char('/'), QLatin1Char('.')); @@ -350,7 +350,7 @@ void HoverHandler::handleImport(const ScopeChain &scopeChain, AST::UiImport *nod foreach (const Import &import, imports->all()) { if (import.info.ast() == node) { - if (import.info.type() == ImportInfo::LibraryImport + if (import.info.type() == ImportType::Library && !import.libraryPath.isEmpty()) { QString msg = tr("Library at %1").arg(import.libraryPath); const LibraryInfo &libraryInfo = scopeChain.context()->snapshot().libraryInfo(import.libraryPath); diff --git a/src/plugins/qmljseditor/qmljssemantichighlighter.cpp b/src/plugins/qmljseditor/qmljssemantichighlighter.cpp index 7350583abb9..ffafb7a8fe0 100644 --- a/src/plugins/qmljseditor/qmljssemantichighlighter.cpp +++ b/src/plugins/qmljseditor/qmljssemantichighlighter.cpp @@ -413,11 +413,11 @@ protected: length = end-begin; } QTextCharFormat format; - if (d.severity == StaticAnalysis::Warning || d.severity == StaticAnalysis::MaybeWarning) + if (d.severity == Severity::Warning || d.severity == Severity::MaybeWarning) format.setUnderlineColor(Qt::darkYellow); - else if (d.severity == StaticAnalysis::Error || d.severity == StaticAnalysis::MaybeError) + else if (d.severity == Severity::Error || d.severity == Severity::MaybeError) format.setUnderlineColor(Qt::red); - else if (d.severity == StaticAnalysis::Hint) + else if (d.severity == Severity::Hint) format.setUnderlineColor(Qt::darkGreen); format.setUnderlineStyle(QTextCharFormat::WaveUnderline); diff --git a/src/plugins/qmljseditor/qmljssemanticinfoupdater.cpp b/src/plugins/qmljseditor/qmljssemanticinfoupdater.cpp index 38674c9b0c4..2e4a73b57e7 100644 --- a/src/plugins/qmljseditor/qmljssemanticinfoupdater.cpp +++ b/src/plugins/qmljseditor/qmljssemanticinfoupdater.cpp @@ -128,7 +128,7 @@ QmlJSTools::SemanticInfo SemanticInfoUpdater::makeNewSemanticInfo(const QmlJS::D ScopeChain *scopeChain = new ScopeChain(doc, semanticInfo.context); semanticInfo.setRootScopeChain(QSharedPointer<const ScopeChain>(scopeChain)); - if (doc->language() == Document::JsonLanguage) { + if (doc->language() == Language::Json) { Utils::JsonSchema *schema = QmlJSEditorPlugin::instance()->jsonManager()->schemaForFile(doc->fileName()); if (schema) { diff --git a/src/plugins/qmljstools/qmljsbundleprovider.cpp b/src/plugins/qmljstools/qmljsbundleprovider.cpp index 390618c2bbb..a938e9d18cb 100644 --- a/src/plugins/qmljstools/qmljsbundleprovider.cpp +++ b/src/plugins/qmljstools/qmljsbundleprovider.cpp @@ -31,6 +31,7 @@ #include <coreplugin/icore.h> #include <qmljs/qmljsbundle.h> +#include <qmljs/qmljsconstants.h> #include <qtsupport/qtkitinformation.h> #include <qtsupport/qtsupportconstants.h> @@ -39,10 +40,10 @@ namespace QmlJSTools { namespace { -typedef QmlJS::Document::Language Language; typedef QmlJS::QmlBundle QmlBundle; typedef QmlJS::QmlLanguageBundles QmlLanguageBundles; } +using namespace QmlJS; /*! \class QmlJSEditor::BasicBundleProvider @@ -106,27 +107,26 @@ QmlBundle BasicBundleProvider::defaultQmlprojectBundle() } void BasicBundleProvider::mergeBundlesForKit(ProjectExplorer::Kit *kit - , QmlJS::QmlLanguageBundles &bundles + , QmlLanguageBundles &bundles , const QHash<QString,QString> &replacements) { - typedef QmlJS::Document Doc; QHash<QString,QString> myReplacements = replacements; - bundles.mergeBundleForLanguage(Doc::QmlQbsLanguage, defaultQbsBundle()); - bundles.mergeBundleForLanguage(Doc::QmlTypeInfoLanguage, defaultQmltypesBundle()); - bundles.mergeBundleForLanguage(Doc::QmlProjectLanguage, defaultQmlprojectBundle()); + bundles.mergeBundleForLanguage(Language::QmlQbs, defaultQbsBundle()); + bundles.mergeBundleForLanguage(Language::QmlTypeInfo, defaultQmltypesBundle()); + bundles.mergeBundleForLanguage(Language::QmlProject, defaultQmlprojectBundle()); QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitInformation::qtVersion(kit); if (!qtVersion) { QmlBundle b1(defaultQt4QtQuick1Bundle()); - bundles.mergeBundleForLanguage(Doc::QmlLanguage, b1); - bundles.mergeBundleForLanguage(Doc::QmlQtQuick1Language, b1); + bundles.mergeBundleForLanguage(Language::Qml, b1); + bundles.mergeBundleForLanguage(Language::QmlQtQuick1, b1); QmlBundle b11(defaultQt5QtQuick1Bundle()); - bundles.mergeBundleForLanguage(Doc::QmlLanguage, b11); - bundles.mergeBundleForLanguage(Doc::QmlQtQuick1Language, b11); + bundles.mergeBundleForLanguage(Language::Qml, b11); + bundles.mergeBundleForLanguage(Language::QmlQtQuick1, b11); QmlBundle b2(defaultQt5QtQuick2Bundle()); - bundles.mergeBundleForLanguage(Doc::QmlLanguage, b2); - bundles.mergeBundleForLanguage(Doc::QmlQtQuick2Language, b2); + bundles.mergeBundleForLanguage(Language::Qml, b2); + bundles.mergeBundleForLanguage(Language::QmlQtQuick2, b2); return; } QString qtImportsPath = qtVersion->qmakeProperty("QT_INSTALL_IMPORTS"); @@ -150,15 +150,15 @@ void BasicBundleProvider::mergeBundlesForKit(ProjectExplorer::Kit *kit qtQuick1Bundle.merge(bAtt); } if (!qtQuick1Bundle.supportedImports().contains(QLatin1String("QtQuick 1."), - QmlJS::PersistentTrie::Partial)) { + PersistentTrie::Partial)) { if (qtVersion->qtVersion().majorVersion == 4) qtQuick1Bundle.merge(defaultQt4QtQuick1Bundle()); else if (qtVersion->qtVersion().majorVersion > 4) qtQuick1Bundle.merge(defaultQt5QtQuick1Bundle()); } qtQuick1Bundle.replaceVars(myReplacements); - bundles.mergeBundleForLanguage(Doc::QmlLanguage, qtQuick1Bundle); - bundles.mergeBundleForLanguage(Doc::QmlQtQuick1Language, qtQuick1Bundle); + bundles.mergeBundleForLanguage(Language::Qml, qtQuick1Bundle); + bundles.mergeBundleForLanguage(Language::QmlQtQuick1, qtQuick1Bundle); } if (features.contains(Core::Feature(QtSupport::Constants::FEATURE_QT_QUICK_2))) { myReplacements.insert(QLatin1String("$(CURRENT_DIRECTORY)"), qtQmlPath); @@ -175,12 +175,12 @@ void BasicBundleProvider::mergeBundlesForKit(ProjectExplorer::Kit *kit qtQuick2Bundle.merge(bAtt); } if (!qtQuick2Bundle.supportedImports().contains(QLatin1String("QtQuick 2."), - QmlJS::PersistentTrie::Partial)) { + PersistentTrie::Partial)) { qtQuick2Bundle.merge(defaultQt5QtQuick2Bundle()); } qtQuick2Bundle.replaceVars(myReplacements); - bundles.mergeBundleForLanguage(Doc::QmlLanguage, qtQuick2Bundle); - bundles.mergeBundleForLanguage(Doc::QmlQtQuick2Language, qtQuick2Bundle); + bundles.mergeBundleForLanguage(Language::Qml, qtQuick2Bundle); + bundles.mergeBundleForLanguage(Language::QmlQtQuick2, qtQuick2Bundle); } } diff --git a/src/plugins/qmljstools/qmljsmodelmanager.cpp b/src/plugins/qmljstools/qmljsmodelmanager.cpp index a0bdef083c6..24134e4da08 100644 --- a/src/plugins/qmljstools/qmljsmodelmanager.cpp +++ b/src/plugins/qmljstools/qmljsmodelmanager.cpp @@ -178,7 +178,7 @@ static void mergeSuffixes(QStringList &l1, const QStringList &l2) l1 = l2; } -QmlJS::Document::Language QmlJSTools::languageOfFile(const QString &fileName) +QmlJS::Language::Enum QmlJSTools::languageOfFile(const QString &fileName) { QStringList jsSuffixes(QLatin1String("js")); QStringList qmlSuffixes(QLatin1String("qml")); @@ -202,14 +202,14 @@ QmlJS::Document::Language QmlJSTools::languageOfFile(const QString &fileName) const QFileInfo info(fileName); const QString fileSuffix = info.suffix(); if (jsSuffixes.contains(fileSuffix)) - return QmlJS::Document::JavaScriptLanguage; + return QmlJS::Language::JavaScript; if (qbsSuffixes.contains(fileSuffix)) - return QmlJS::Document::QmlQbsLanguage; + return QmlJS::Language::QmlQbs; if (qmlSuffixes.contains(fileSuffix) || qmlProjectSuffixes.contains(fileSuffix)) - return QmlJS::Document::QmlLanguage; + return QmlJS::Language::Qml; if (jsonSuffixes.contains(fileSuffix)) - return QmlJS::Document::JsonLanguage; - return QmlJS::Document::UnknownLanguage; + return QmlJS::Language::Json; + return QmlJS::Language::Unknown; } QStringList QmlJSTools::qmlAndJsGlobPatterns() @@ -666,23 +666,23 @@ static void findNewFileImports(const Document::Ptr &doc, const Snapshot &snapsho // scan files and directories that are explicitly imported foreach (const ImportInfo &import, doc->bind()->imports()) { const QString &importName = import.path(); - if (import.type() == ImportInfo::FileImport) { + if (import.type() == ImportType::File) { if (! snapshot.document(importName)) *importedFiles += importName; - } else if (import.type() == ImportInfo::DirectoryImport) { + } else if (import.type() == ImportType::Directory) { if (snapshot.documentsInDirectory(importName).isEmpty()) { if (! scannedPaths->contains(importName)) { *importedFiles += qmlFilesInDirectory(importName); scannedPaths->insert(importName); } } - } else if (import.type() == ImportInfo::QrcFileImport) { + } else if (import.type() == ImportType::QrcFile) { QStringList importPaths = ModelManagerInterface::instance()->filesAtQrcPath(importName); foreach (const QString &importPath, importPaths) { if (! snapshot.document(importPath)) *importedFiles += importPath; } - } else if (import.type() == ImportInfo::QrcDirectoryImport) { + } else if (import.type() == ImportType::QrcDirectory) { QMapIterator<QString,QStringList> dirContents(ModelManagerInterface::instance()->filesInQrcPath(importName)); while (dirContents.hasNext()) { dirContents.next(); @@ -792,13 +792,13 @@ static void findNewLibraryImports(const Document::Ptr &doc, const Snapshot &snap // scan dir and lib imports const QStringList importPaths = modelManager->importPaths(); foreach (const ImportInfo &import, doc->bind()->imports()) { - if (import.type() == ImportInfo::DirectoryImport) { + if (import.type() == ImportType::Directory) { const QString targetPath = import.path(); findNewQmlLibraryInPath(targetPath, snapshot, modelManager, importedFiles, scannedPaths, newLibraries); } - if (import.type() == ImportInfo::LibraryImport) { + if (import.type() == ImportType::Library) { if (!import.version().isValid()) continue; foreach (const QString &importPath, importPaths) { @@ -829,8 +829,8 @@ void ModelManager::parse(QFutureInterface<void> &future, const QString fileName = files.at(i); - Document::Language language = languageOfFile(fileName); - if (language == Document::UnknownLanguage) { + Language::Enum language = languageOfFile(fileName); + if (language == Language::Unknown) { if (fileName.endsWith(QLatin1String(".qrc"))) modelManager->updateQrcFile(fileName); continue; @@ -951,7 +951,7 @@ void ModelManager::updateImportPaths() while (it.hasNext()) { it.next(); activeBundles.mergeLanguageBundles(it.value().activeBundle); - foreach (Document::Language l, it.value().activeBundle.languages()) { + foreach (Language::Enum l, it.value().activeBundle.languages()) { foreach (const QString &path, it.value().activeBundle.bundleForLanguage(l) .searchPaths().stringList()) { const QString canonicalPath = QFileInfo(path).canonicalFilePath(); @@ -964,7 +964,7 @@ void ModelManager::updateImportPaths() while (it.hasNext()) { it.next(); extendedBundles.mergeLanguageBundles(it.value().extendedBundle); - foreach (Document::Language l, it.value().extendedBundle.languages()) { + foreach (Language::Enum l, it.value().extendedBundle.languages()) { foreach (const QString &path, it.value().extendedBundle.bundleForLanguage(l) .searchPaths().stringList()) { const QString canonicalPath = QFileInfo(path).canonicalFilePath(); diff --git a/src/plugins/qmljstools/qmljsmodelmanager.h b/src/plugins/qmljstools/qmljsmodelmanager.h index 9f6d2a35f36..f9f4121e39a 100644 --- a/src/plugins/qmljstools/qmljsmodelmanager.h +++ b/src/plugins/qmljstools/qmljsmodelmanager.h @@ -58,7 +58,7 @@ class QrcParser; namespace QmlJSTools { -QMLJSTOOLS_EXPORT QmlJS::Document::Language languageOfFile(const QString &fileName); +QMLJSTOOLS_EXPORT QmlJS::Language::Enum languageOfFile(const QString &fileName); QMLJSTOOLS_EXPORT QStringList qmlAndJsGlobPatterns(); namespace Internal { diff --git a/src/plugins/qmljstools/qmljsrefactoringchanges.cpp b/src/plugins/qmljstools/qmljsrefactoringchanges.cpp index 827a3fddde8..06381b313b8 100644 --- a/src/plugins/qmljstools/qmljsrefactoringchanges.cpp +++ b/src/plugins/qmljstools/qmljsrefactoringchanges.cpp @@ -123,7 +123,7 @@ QmlJSRefactoringFile::QmlJSRefactoringFile(const QString &fileName, const QShare : RefactoringFile(fileName, data) { // the RefactoringFile is invalid if its not for a file with qml or js code - if (languageOfFile(fileName) == Document::UnknownLanguage) + if (languageOfFile(fileName) == Language::Unknown) m_fileName.clear(); } |