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)
|
if (version > 201703L)
|
||||||
return LanguageVersion::LatestCxx;
|
return LanguageVersion::LatestCxx;
|
||||||
|
if (version > 201402L)
|
||||||
|
return LanguageVersion::CXX17;
|
||||||
|
if (version > 201103L)
|
||||||
|
return LanguageVersion::CXX14;
|
||||||
|
if (version == 201103L)
|
||||||
|
return LanguageVersion::CXX11;
|
||||||
|
|
||||||
switch (version) {
|
return LanguageVersion::CXX03;
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LanguageVersion ToolChain::languageVersion(const Core::Id &language, const Macros ¯os)
|
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)
|
if (version > 201710L)
|
||||||
return LanguageVersion::LatestC;
|
return LanguageVersion::LatestC;
|
||||||
|
if (version > 201112L)
|
||||||
|
return LanguageVersion::C18;
|
||||||
|
if (version > 199901L)
|
||||||
|
return LanguageVersion::C11;
|
||||||
|
if (version > 199409L)
|
||||||
|
return LanguageVersion::C99;
|
||||||
|
|
||||||
switch (version) {
|
return LanguageVersion::C89;
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user