diff options
author | Marco Bubke <marco.bubke@qt.io> | 2017-02-07 15:00:38 +0100 |
---|---|---|
committer | Marco Bubke <marco.bubke@qt.io> | 2017-09-14 15:23:56 +0000 |
commit | b6e12f4a1c2a8dbc7a672f0cf42ea76ece71b10d (patch) | |
tree | 81550e7fce5053ecb1ead60ddf59534d44517a87 /src/plugins/cpptools/projectpart.cpp | |
parent | 3adb71d45ebebd8c8fc2ec6beeb7a5ee67d64e4e (diff) |
Convert macros from plain QByteArray to a vector of structs
The old code model expected the macros as C++ formatted text
("#define Foo 42) but newer targets like the Clang codemodel expect key
value arguments like "-DFoo=42". So instead of parsing the text again and
again we use an abstract data description.
Task-number: QTCREATORBUG-17915
Change-Id: I0179fd13c48a581e91ee79bba9d42d501c26f19f
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/plugins/cpptools/projectpart.cpp')
-rw-r--r-- | src/plugins/cpptools/projectpart.cpp | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/src/plugins/cpptools/projectpart.cpp b/src/plugins/cpptools/projectpart.cpp index 6a87adf93f7..e77e079c808 100644 --- a/src/plugins/cpptools/projectpart.cpp +++ b/src/plugins/cpptools/projectpart.cpp @@ -25,6 +25,8 @@ #include "projectpart.h" +#include <utils/algorithm.h> + #include <QFile> #include <QDir> #include <QTextStream> @@ -43,16 +45,9 @@ void ProjectPart::updateLanguageFeatures() if (!hasQt) { languageFeatures.qtKeywordsEnabled = false; } else { - const QByteArray noKeywordsMacro = "#define QT_NO_KEYWORDS"; - const int noKeywordsIndex = projectDefines.indexOf(noKeywordsMacro); - if (noKeywordsIndex == -1) { - languageFeatures.qtKeywordsEnabled = true; - } else { - const char nextChar = projectDefines.at(noKeywordsIndex + noKeywordsMacro.length()); - // Detect "#define QT_NO_KEYWORDS" and "#define QT_NO_KEYWORDS 1", but exclude - // "#define QT_NO_KEYWORDS_FOO" - languageFeatures.qtKeywordsEnabled = nextChar != '\n' && nextChar != ' '; - } + languageFeatures.qtKeywordsEnabled = !Utils::contains( + projectMacros, + [] (const ProjectExplorer::Macro ¯o) { return macro.key == "QT_NO_KEYWORDS"; }); } } |