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 <fawzi.mohamed@digia.com>
This commit is contained in:
Fawzi Mohamed
2013-10-16 14:59:28 +02:00
parent ab71755326
commit 0a4310d314
37 changed files with 280 additions and 231 deletions

View File

@@ -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);
}
}

View File

@@ -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();

View File

@@ -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 {

View File

@@ -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();
}