aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2016-09-30 10:35:49 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2016-09-30 10:42:28 +0200
commitbf3a7979a41b166b8dc178a3cc6a22f15a4e6ea5 (patch)
treeef02290769e610427f052a53a0e24e71b4adc9e1 /src
parentd17105376102c4cd846757c7f091b9f3cd90e4d7 (diff)
parented69ed958d6ca25cb97dc81b21322f8ab398b7df (diff)
Merge 1.6 into master
Diffstat (limited to 'src')
-rw-r--r--src/app/qbs/parser/commandlineoption.cpp1
-rw-r--r--src/app/qbs/parser/commandlineoption.h2
-rw-r--r--src/app/qbs/parser/commandlineparser.cpp2
-rw-r--r--src/lib/corelib/buildgraph/depscanner.cpp18
-rw-r--r--src/lib/corelib/jsextensions/jsextensions.cpp37
-rw-r--r--src/lib/corelib/jsextensions/jsextensions.h6
-rw-r--r--src/lib/corelib/tools/buildgraphlocker.cpp2
-rw-r--r--src/lib/corelib/tools/commandechomode.cpp4
-rw-r--r--src/lib/corelib/tools/commandechomode.h2
-rw-r--r--src/plugins/scanner/cpp/Token.cpp1
-rw-r--r--src/plugins/scanner/cpp/Token.h3
-rw-r--r--src/plugins/scanner/cpp/cppscanner.cpp4
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