ProjectExplorer: Use intervals for detecting language version

...to fix running into unknown __cplusplus values from compilers with
incomplete language support.

This amends

    Toolchains: Detect unspecified language version
    commit 5900766ecb

Change-Id: I88cca71ae66cc5d49b644e88658aaa5806862fba
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
Nikolai Kosjar
2018-10-09 09:16:26 +02:00
parent 4cd527f496
commit 04caf7594e

View File

@@ -298,17 +298,14 @@ LanguageVersion ToolChain::cxxLanguageVersion(const QByteArray &cplusplusMacroVa
if (version > 201703L)
return LanguageVersion::LatestCxx;
if (version > 201402L)
return LanguageVersion::CXX17;
if (version > 201103L)
return LanguageVersion::CXX14;
if (version == 201103L)
return LanguageVersion::CXX11;
switch (version) {
case 201703L: return LanguageVersion::CXX17;
case 201403L: Q_FALLTHROUGH();
case 201402L: return LanguageVersion::CXX14;
case 201103L: return LanguageVersion::CXX11;
case 199711L: return LanguageVersion::CXX03;
default:
QTC_CHECK(false && "Unexpected __cplusplus value, assuming latest C++ we support.");
return LanguageVersion::LatestCxx;
}
return LanguageVersion::CXX03;
}
LanguageVersion ToolChain::languageVersion(const Core::Id &language, const Macros &macros)
@@ -328,17 +325,14 @@ LanguageVersion ToolChain::languageVersion(const Core::Id &language, const Macro
if (version > 201710L)
return LanguageVersion::LatestC;
if (version > 201112L)
return LanguageVersion::C18;
if (version > 199901L)
return LanguageVersion::C11;
if (version > 199409L)
return LanguageVersion::C99;
switch (version) {
case 201710L: return LanguageVersion::C18;
case 201112L: return LanguageVersion::C11;
case 199901L: return LanguageVersion::C99;
case 199409L: return LanguageVersion::C89; // C89 as amended in 1994
default:
QTC_CHECK(false && "Unexpected __STDC_VERSION__ value, "
"assuming latest C version we support.");
return LanguageVersion::LatestC;
}
return LanguageVersion::C89;
}
}