aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs
diff options
context:
space:
mode:
authorFawzi Mohamed <[email protected]>2013-10-16 14:59:28 +0200
committerFawzi Mohamed <[email protected]>2013-10-23 00:35:16 +0200
commit0a4310d3148861062b9679e1415197b3a883164f (patch)
treebdc93dcc43e1ada315aca79883e1e890327d5faa /src/libs
parentab71755326eeee537fb9eee157d7fffcd54cb723 (diff)
qmljs: added qmljsconstants.h
Moved Document::Language, Import::Type and StaticAnalysis::Severity enums to qmljsconstants.h and renamed values removing the redundant part. Thus the effective length changed little or improved (Document::QmlLanguage => Language::Qml). The separate file allows better reuse of enum values without introducing circular dependencies. Change-Id: I5186d7c04f5d3f6c289068b919be5ff1ff118326 Reviewed-by: Fawzi Mohamed <[email protected]>
Diffstat (limited to 'src/libs')
-rw-r--r--src/libs/qmljs/parser/qmljsengine_p.h13
-rw-r--r--src/libs/qmljs/parser/qmljsparser.cpp18
-rw-r--r--src/libs/qmljs/parser/qmljsparser_p.h2
-rw-r--r--src/libs/qmljs/qmljs-lib.pri3
-rw-r--r--src/libs/qmljs/qmljs.qbs1
-rw-r--r--src/libs/qmljs/qmljsbind.cpp10
-rw-r--r--src/libs/qmljs/qmljsbundle.cpp8
-rw-r--r--src/libs/qmljs/qmljsbundle.h8
-rw-r--r--src/libs/qmljs/qmljsconstants.h76
-rw-r--r--src/libs/qmljs/qmljsdocument.cpp73
-rw-r--r--src/libs/qmljs/qmljsdocument.h33
-rw-r--r--src/libs/qmljs/qmljsinterpreter.cpp34
-rw-r--r--src/libs/qmljs/qmljsinterpreter.h16
-rw-r--r--src/libs/qmljs/qmljslink.cpp28
-rw-r--r--src/libs/qmljs/qmljsscopechain.cpp6
-rw-r--r--src/libs/qmljs/qmljsstaticanalysismessage.cpp30
-rw-r--r--src/libs/qmljs/qmljsstaticanalysismessage.h14
-rw-r--r--src/libs/qmljs/qmljsutils.cpp2
-rw-r--r--src/libs/qmljs/qmljsutils.h2
19 files changed, 213 insertions, 164 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);
}