From 04caf7594eb998b039c2a7a1712946092289bfb2 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Tue, 9 Oct 2018 09:16:26 +0200 Subject: [PATCH] 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 5900766ecb6aa25f363660c5ad2ef15777db5053 Change-Id: I88cca71ae66cc5d49b644e88658aaa5806862fba Reviewed-by: Christian Stenger Reviewed-by: Ivan Donchevskii --- src/plugins/projectexplorer/toolchain.cpp | 34 ++++++++++------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/src/plugins/projectexplorer/toolchain.cpp b/src/plugins/projectexplorer/toolchain.cpp index dfff01af18f..0bfbeafbe41 100644 --- a/src/plugins/projectexplorer/toolchain.cpp +++ b/src/plugins/projectexplorer/toolchain.cpp @@ -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; } }