diff options
Diffstat (limited to 'clang/unittests/Basic')
-rw-r--r-- | clang/unittests/Basic/CMakeLists.txt | 1 | ||||
-rw-r--r-- | clang/unittests/Basic/DiagnosticTest.cpp | 47 | ||||
-rw-r--r-- | clang/unittests/Basic/LangOptionsTest.cpp | 56 |
3 files changed, 74 insertions, 30 deletions
diff --git a/clang/unittests/Basic/CMakeLists.txt b/clang/unittests/Basic/CMakeLists.txt index 8c8baa5..f20c8db 100644 --- a/clang/unittests/Basic/CMakeLists.txt +++ b/clang/unittests/Basic/CMakeLists.txt @@ -6,6 +6,7 @@ add_distinct_clang_unittest(BasicTests DiagnosticTest.cpp FileEntryTest.cpp FileManagerTest.cpp + LangOptionsTest.cpp LineOffsetMappingTest.cpp OffloadArchTest.cpp SanitizersTest.cpp diff --git a/clang/unittests/Basic/DiagnosticTest.cpp b/clang/unittests/Basic/DiagnosticTest.cpp index 0f1b1d8..de09086 100644 --- a/clang/unittests/Basic/DiagnosticTest.cpp +++ b/clang/unittests/Basic/DiagnosticTest.cpp @@ -21,7 +21,6 @@ #include "llvm/Support/VirtualFileSystem.h" #include "gmock/gmock.h" #include "gtest/gtest.h" -#include <algorithm> #include <memory> #include <optional> #include <vector> @@ -296,35 +295,23 @@ TEST_F(SuppressionMappingTest, EmitCategoryIsExcluded) { } TEST_F(SuppressionMappingTest, LongestMatchWins) { - StringRef Lines[] = { - "[unused]", - "src:*clang/*", - "src:*clang/lib/Sema/*", - "src:*clang/lib/Sema/*=emit", - "src:*clang/lib/Sema/foo*", - }; - llvm::MutableArrayRef<StringRef> Rules = Lines; - Rules = Rules.drop_front(); - llvm::sort(Rules); - - do { - Diags.getDiagnosticOptions().DiagnosticSuppressionMappingsFile = "foo.txt"; - std::string Contents = join(std::begin(Lines), std::end(Lines), "\n"); - FS->addFile("foo.txt", /*ModificationTime=*/{}, - llvm::MemoryBuffer::getMemBuffer(Contents)); - clang::ProcessWarningOptions(Diags, Diags.getDiagnosticOptions(), *FS); - EXPECT_THAT(diags(), IsEmpty()); - - EXPECT_TRUE(Diags.isSuppressedViaMapping( - diag::warn_unused_function, locForFile("clang/lib/Basic/foo.h"))) - << Contents; - EXPECT_FALSE(Diags.isSuppressedViaMapping( - diag::warn_unused_function, locForFile("clang/lib/Sema/bar.h"))) - << Contents; - EXPECT_TRUE(Diags.isSuppressedViaMapping( - diag::warn_unused_function, locForFile("clang/lib/Sema/foo.h"))) - << Contents; - } while (std::next_permutation(Rules.begin(), Rules.end())); + llvm::StringLiteral SuppressionMappingFile = R"( + [unused] + src:*clang/* + src:*clang/lib/Sema/*=emit + src:*clang/lib/Sema/foo*)"; + Diags.getDiagnosticOptions().DiagnosticSuppressionMappingsFile = "foo.txt"; + FS->addFile("foo.txt", /*ModificationTime=*/{}, + llvm::MemoryBuffer::getMemBuffer(SuppressionMappingFile)); + clang::ProcessWarningOptions(Diags, Diags.getDiagnosticOptions(), *FS); + EXPECT_THAT(diags(), IsEmpty()); + + EXPECT_TRUE(Diags.isSuppressedViaMapping( + diag::warn_unused_function, locForFile("clang/lib/Basic/foo.h"))); + EXPECT_FALSE(Diags.isSuppressedViaMapping( + diag::warn_unused_function, locForFile("clang/lib/Sema/bar.h"))); + EXPECT_TRUE(Diags.isSuppressedViaMapping(diag::warn_unused_function, + locForFile("clang/lib/Sema/foo.h"))); } TEST_F(SuppressionMappingTest, LongShortMatch) { diff --git a/clang/unittests/Basic/LangOptionsTest.cpp b/clang/unittests/Basic/LangOptionsTest.cpp new file mode 100644 index 0000000..0d7d5ec --- /dev/null +++ b/clang/unittests/Basic/LangOptionsTest.cpp @@ -0,0 +1,56 @@ +//===- unittests/Basic/LangOptionsTest.cpp --------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "clang/Basic/LangOptions.h" +#include "gtest/gtest.h" + +using namespace llvm; +using namespace clang; + +namespace { +TEST(LangOptsTest, CStdLang) { + LangOptions opts; + EXPECT_FALSE(opts.getCLangStd()); + opts.GNUMode = 0; + opts.Digraphs = 1; + EXPECT_EQ(opts.getCLangStd(), 199409); + opts.C99 = 1; + EXPECT_EQ(opts.getCLangStd(), 199901); + opts.C11 = 1; + EXPECT_EQ(opts.getCLangStd(), 201112); + opts.C17 = 1; + EXPECT_EQ(opts.getCLangStd(), 201710); + opts.C23 = 1; + EXPECT_EQ(opts.getCLangStd(), 202311); + opts.C2y = 1; + EXPECT_EQ(opts.getCLangStd(), 202400); + + EXPECT_FALSE(opts.getCPlusPlusLangStd()); +} + +TEST(LangOptsTest, CppStdLang) { + LangOptions opts; + EXPECT_FALSE(opts.getCPlusPlusLangStd()); + opts.CPlusPlus = 1; + EXPECT_EQ(opts.getCPlusPlusLangStd(), 199711); + opts.CPlusPlus11 = 1; + EXPECT_EQ(opts.getCPlusPlusLangStd(), 201103); + opts.CPlusPlus14 = 1; + EXPECT_EQ(opts.getCPlusPlusLangStd(), 201402); + opts.CPlusPlus17 = 1; + EXPECT_EQ(opts.getCPlusPlusLangStd(), 201703); + opts.CPlusPlus20 = 1; + EXPECT_EQ(opts.getCPlusPlusLangStd(), 202002); + opts.CPlusPlus23 = 1; + EXPECT_EQ(opts.getCPlusPlusLangStd(), 202302); + opts.CPlusPlus26 = 1; + EXPECT_EQ(opts.getCPlusPlusLangStd(), 202400); + + EXPECT_FALSE(opts.getCLangStd()); +} +} // namespace |