forked from qt-creator/qt-creator
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:
@@ -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 ¯os)
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user