diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2016-09-30 10:35:49 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2016-09-30 10:42:28 +0200 |
commit | bf3a7979a41b166b8dc178a3cc6a22f15a4e6ea5 (patch) | |
tree | ef02290769e610427f052a53a0e24e71b4adc9e1 /src | |
parent | d17105376102c4cd846757c7f091b9f3cd90e4d7 (diff) | |
parent | ed69ed958d6ca25cb97dc81b21322f8ab398b7df (diff) |
Merge 1.6 into master
Change-Id: I5a0de1ab1c38080d6061045d28fa9220a88ef4ba
Diffstat (limited to 'src')
-rw-r--r-- | src/app/qbs/parser/commandlineoption.cpp | 1 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineoption.h | 2 | ||||
-rw-r--r-- | src/app/qbs/parser/commandlineparser.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/buildgraph/depscanner.cpp | 18 | ||||
-rw-r--r-- | src/lib/corelib/jsextensions/jsextensions.cpp | 37 | ||||
-rw-r--r-- | src/lib/corelib/jsextensions/jsextensions.h | 6 | ||||
-rw-r--r-- | src/lib/corelib/tools/buildgraphlocker.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/tools/commandechomode.cpp | 4 | ||||
-rw-r--r-- | src/lib/corelib/tools/commandechomode.h | 2 | ||||
-rw-r--r-- | src/plugins/scanner/cpp/Token.cpp | 1 | ||||
-rw-r--r-- | src/plugins/scanner/cpp/Token.h | 3 | ||||
-rw-r--r-- | src/plugins/scanner/cpp/cppscanner.cpp | 4 |
12 files changed, 45 insertions, 37 deletions
diff --git a/src/app/qbs/parser/commandlineoption.cpp b/src/app/qbs/parser/commandlineoption.cpp index 748457b52..8689b2032 100644 --- a/src/app/qbs/parser/commandlineoption.cpp +++ b/src/app/qbs/parser/commandlineoption.cpp @@ -605,7 +605,6 @@ void SettingsDirOption::doParse(const QString &representation, QStringList &inpu } CommandEchoModeOption::CommandEchoModeOption() - : m_echoMode(static_cast<CommandEchoMode>(-1)) { } diff --git a/src/app/qbs/parser/commandlineoption.h b/src/app/qbs/parser/commandlineoption.h index 25bb72dda..9a9efd7e8 100644 --- a/src/app/qbs/parser/commandlineoption.h +++ b/src/app/qbs/parser/commandlineoption.h @@ -372,7 +372,7 @@ public: private: void doParse(const QString &representation, QStringList &input); - CommandEchoMode m_echoMode; + CommandEchoMode m_echoMode = CommandEchoModeInvalid; }; class SettingsDirOption : public CommandLineOption diff --git a/src/app/qbs/parser/commandlineparser.cpp b/src/app/qbs/parser/commandlineparser.cpp index 994c1545a..3505d5fad 100644 --- a/src/app/qbs/parser/commandlineparser.cpp +++ b/src/app/qbs/parser/commandlineparser.cpp @@ -637,7 +637,7 @@ CommandEchoMode CommandLineParser::CommandLineParserPrivate::echoMode() const if (command->type() == GenerateCommandType) return CommandEchoModeSilent; - if (optionPool.commandEchoModeOption()->commandEchoMode() >= 0) + if (optionPool.commandEchoModeOption()->commandEchoMode() < CommandEchoModeInvalid) return optionPool.commandEchoModeOption()->commandEchoMode(); return defaultCommandEchoMode(); diff --git a/src/lib/corelib/buildgraph/depscanner.cpp b/src/lib/corelib/buildgraph/depscanner.cpp index f7d309f3e..02c63ce5d 100644 --- a/src/lib/corelib/buildgraph/depscanner.cpp +++ b/src/lib/corelib/buildgraph/depscanner.cpp @@ -63,14 +63,24 @@ static void collectCppIncludePaths(const QVariantMap &modules, QSet<QString> *co QMapIterator<QString, QVariant> iterator(modules); while (iterator.hasNext()) { iterator.next(); + const auto properties = iterator.value().toMap(); if (iterator.key() == QLatin1String("cpp")) { - QVariant includePathsVariant = - iterator.value().toMap().value(QLatin1String("includePaths")); + QVariant includePathsVariant = properties.value(QLatin1String("includePaths")); if (includePathsVariant.isValid()) collectedPaths->unite(QSet<QString>::fromList(includePathsVariant.toStringList())); + QVariant systemIncludePathsVariant = + properties.value(QLatin1String("systemIncludePaths")); + if (systemIncludePathsVariant.isValid()) + collectedPaths->unite(QSet<QString>::fromList( + systemIncludePathsVariant.toStringList())); + QVariant compilerIncludePathsVariant = + properties.value(QLatin1String("compilerIncludePaths")); + if (compilerIncludePathsVariant.isValid()) + collectedPaths->unite(QSet<QString>::fromList( + compilerIncludePathsVariant.toStringList())); } else { - collectCppIncludePaths(iterator.value().toMap().value(QLatin1String("modules")).toMap(), - collectedPaths); + collectCppIncludePaths(properties.value(QLatin1String("modules")).toMap(), + collectedPaths); } } } diff --git a/src/lib/corelib/jsextensions/jsextensions.cpp b/src/lib/corelib/jsextensions/jsextensions.cpp index 8b0294245..886998a2b 100644 --- a/src/lib/corelib/jsextensions/jsextensions.cpp +++ b/src/lib/corelib/jsextensions/jsextensions.cpp @@ -51,9 +51,28 @@ #include <QScriptEngine> +#include <utility> + namespace qbs { namespace Internal { +typedef QHash<QString, void (*)(QScriptValue)> InitializerMap; +static InitializerMap initializers() +{ + static const InitializerMap theMap = { + std::make_pair(QLatin1String("Environment"), &initializeJsExtensionEnvironment), + std::make_pair(QLatin1String("File"), &initializeJsExtensionFile), + std::make_pair(QLatin1String("FileInfo"), &initializeJsExtensionFileInfo), + std::make_pair(QLatin1String("Process"), &initializeJsExtensionProcess), + std::make_pair(QLatin1String("Xml"), &initializeJsExtensionXml), + std::make_pair(QLatin1String("TemporaryDir"), &initializeJsExtensionTemporaryDir), + std::make_pair(QLatin1String("TextFile"), &initializeJsExtensionTextFile), + std::make_pair(QLatin1String("PropertyList"), &initializeJsExtensionPropertyList), + std::make_pair(QLatin1String("Utilities"), &initializeJsExtensionUtilities) + }; + return theMap; +} + void JsExtensions::setupExtensions(const QStringList &names, QScriptValue scope) { foreach (const QString &name, names) @@ -75,23 +94,5 @@ bool JsExtensions::hasExtension(const QString &name) return initializers().contains(name); } -JsExtensions::InitializerMap JsExtensions::initializers() -{ - if (m_initializers.isEmpty()) { - m_initializers.insert(QLatin1String("Environment"), &initializeJsExtensionEnvironment); - m_initializers.insert(QLatin1String("File"), &initializeJsExtensionFile); - m_initializers.insert(QLatin1String("FileInfo"), &initializeJsExtensionFileInfo); - m_initializers.insert(QLatin1String("Process"), &initializeJsExtensionProcess); - m_initializers.insert(QLatin1String("Xml"), &initializeJsExtensionXml); - m_initializers.insert(QLatin1String("TemporaryDir"), &initializeJsExtensionTemporaryDir); - m_initializers.insert(QLatin1String("TextFile"), &initializeJsExtensionTextFile); - m_initializers.insert(QLatin1String("PropertyList"), &initializeJsExtensionPropertyList); - m_initializers.insert(QLatin1String("Utilities"), &initializeJsExtensionUtilities); - } - return m_initializers; -} - -JsExtensions::InitializerMap JsExtensions::m_initializers; - } // namespace Internal } // namespace qbs diff --git a/src/lib/corelib/jsextensions/jsextensions.h b/src/lib/corelib/jsextensions/jsextensions.h index 1552b232b..52a1dbb05 100644 --- a/src/lib/corelib/jsextensions/jsextensions.h +++ b/src/lib/corelib/jsextensions/jsextensions.h @@ -57,12 +57,6 @@ public: static void setupExtensions(const QStringList &names, QScriptValue scope); static QScriptValue loadExtension(QScriptEngine *engine, const QString &name); static bool hasExtension(const QString &name); - -private: - typedef QHash<QString, void (*)(QScriptValue)> InitializerMap; - static InitializerMap initializers(); - - static InitializerMap m_initializers; }; } // namespace Internal diff --git a/src/lib/corelib/tools/buildgraphlocker.cpp b/src/lib/corelib/tools/buildgraphlocker.cpp index 8da670401..529ac0973 100644 --- a/src/lib/corelib/tools/buildgraphlocker.cpp +++ b/src/lib/corelib/tools/buildgraphlocker.cpp @@ -122,7 +122,7 @@ BuildGraphLocker::BuildGraphLocker(const QString &buildGraphFilePath, const Logg throw ErrorInfo(Tr::tr("Cannot lock build graph file '%1' (reason unknown).") .arg(buildGraphFilePath)); } - } while (++attemptsToGetInfo < 10); + } while (++attemptsToGetInfo < 10 || waitIndefinitely); // This very unlikely case arises if tryLock() repeatedly returns LockFailedError // with the subsequent getLockInfo() failing as well. diff --git a/src/lib/corelib/tools/commandechomode.cpp b/src/lib/corelib/tools/commandechomode.cpp index be0a70d8b..fc6a3386a 100644 --- a/src/lib/corelib/tools/commandechomode.cpp +++ b/src/lib/corelib/tools/commandechomode.cpp @@ -77,7 +77,7 @@ QString commandEchoModeName(CommandEchoMode mode) CommandEchoMode commandEchoModeFromName(const QString &name) { CommandEchoMode mode = defaultCommandEchoMode(); - for (int i = 0; i <= static_cast<int>(CommandEchoModeLast); ++i) { + for (int i = 0; i < CommandEchoModeInvalid; ++i) { if (commandEchoModeName(static_cast<CommandEchoMode>(i)) == name) { mode = static_cast<CommandEchoMode>(i); break; @@ -90,7 +90,7 @@ CommandEchoMode commandEchoModeFromName(const QString &name) QStringList allCommandEchoModeStrings() { QStringList result; - for (int i = 0; i <= static_cast<int>(CommandEchoModeLast); ++i) + for (int i = 0; i < CommandEchoModeInvalid; ++i) result << commandEchoModeName(static_cast<CommandEchoMode>(i)); return result; } diff --git a/src/lib/corelib/tools/commandechomode.h b/src/lib/corelib/tools/commandechomode.h index bb864d5de..16d5c97dc 100644 --- a/src/lib/corelib/tools/commandechomode.h +++ b/src/lib/corelib/tools/commandechomode.h @@ -52,7 +52,7 @@ enum CommandEchoMode { CommandEchoModeSummary, CommandEchoModeCommandLine, CommandEchoModeCommandLineWithEnvironment, - CommandEchoModeLast = CommandEchoModeCommandLineWithEnvironment + CommandEchoModeInvalid, }; QBS_EXPORT CommandEchoMode defaultCommandEchoMode(); diff --git a/src/plugins/scanner/cpp/Token.cpp b/src/plugins/scanner/cpp/Token.cpp index b7126bf8a..ee125652c 100644 --- a/src/plugins/scanner/cpp/Token.cpp +++ b/src/plugins/scanner/cpp/Token.cpp @@ -109,6 +109,7 @@ static const char *token_names[] = { ("Q_FOREACH"), ("Q_D"), ("Q_Q"), ("Q_INVOKABLE"), ("Q_PROPERTY"), ("Q_INTERFACES"), ("Q_ENUMS"), ("Q_FLAGS"), ("Q_PRIVATE_SLOT"), ("Q_DECLARE_INTERFACE"), ("Q_OBJECT"), ("Q_GADGET"), + ("Q_NAMESPACE"), }; diff --git a/src/plugins/scanner/cpp/Token.h b/src/plugins/scanner/cpp/Token.h index 74f832674..286c71a48 100644 --- a/src/plugins/scanner/cpp/Token.h +++ b/src/plugins/scanner/cpp/Token.h @@ -258,7 +258,8 @@ enum Kind { T_Q_DECLARE_INTERFACE, T_Q_OBJECT, T_Q_GADGET, - T_LAST_KEYWORD = T_Q_GADGET, + T_Q_NAMESPACE, + T_LAST_KEYWORD = T_Q_NAMESPACE, // aliases T_OR = T_PIPE_PIPE, diff --git a/src/plugins/scanner/cpp/cppscanner.cpp b/src/plugins/scanner/cpp/cppscanner.cpp index 4e61fedd9..ab8454ac9 100644 --- a/src/plugins/scanner/cpp/cppscanner.cpp +++ b/src/plugins/scanner/cpp/cppscanner.cpp @@ -136,6 +136,7 @@ static void scanCppFile(void *opaq, Lexer &yylex, bool scanForFileTags, bool sca const QLatin1Literal defineLiteral("define"); const QLatin1Literal qobjectLiteral("Q_OBJECT"); const QLatin1Literal qgadgetLiteral("Q_GADGET"); + const QLatin1Literal qnamespaceLiteral("Q_NAMESPACE"); const QLatin1Literal pluginMetaDataLiteral("Q_PLUGIN_METADATA"); Opaq *opaque = static_cast<Opaq *>(opaq); const TokenComparator tc(opaque->fileContent); @@ -173,7 +174,8 @@ static void scanCppFile(void *opaq, Lexer &yylex, bool scanForFileTags, bool sca // Someone was clever and redefined Q_OBJECT or Q_PLUGIN_METADATA. // Example: iplugin.h in Qt Creator. } else { - if (tc.equals(tk, qobjectLiteral) || tc.equals(tk, qgadgetLiteral)) + if (tc.equals(tk, qobjectLiteral) || tc.equals(tk, qgadgetLiteral) || + tc.equals(tk, qnamespaceLiteral)) { opaque->hasQObjectMacro = true; } else if (opaque->fileType == Opaq::FT_HPP |