summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/TableGen/CodeExpanderTest.cpp
diff options
context:
space:
mode:
authorKristina Brooks <notstina@gmail.com>2019-10-03 11:04:48 +0000
committerKristina Brooks <notstina@gmail.com>2019-10-03 11:04:48 +0000
commit43817e1915bbe5fcead2f33d8effaaf7f10571a5 (patch)
tree2b94f9b96a8b50361196f59b02ce6fe2b2d8ed6b /llvm/unittests/TableGen/CodeExpanderTest.cpp
parentb3af236fb5fc6e50fcc1b54d868f0bff557f3fb1 (diff)
downloadbcm5719-llvm-43817e1915bbe5fcead2f33d8effaaf7f10571a5.tar.gz
bcm5719-llvm-43817e1915bbe5fcead2f33d8effaaf7f10571a5.zip
Revert 373551 (CodeExpander.cpp CMake issue)
Fix buildbots and revert the CodeExpander commit. (See http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20190930/699857.html ) llvm-svn: 373581
Diffstat (limited to 'llvm/unittests/TableGen/CodeExpanderTest.cpp')
-rw-r--r--llvm/unittests/TableGen/CodeExpanderTest.cpp203
1 files changed, 0 insertions, 203 deletions
diff --git a/llvm/unittests/TableGen/CodeExpanderTest.cpp b/llvm/unittests/TableGen/CodeExpanderTest.cpp
deleted file mode 100644
index 75b9b737370..00000000000
--- a/llvm/unittests/TableGen/CodeExpanderTest.cpp
+++ /dev/null
@@ -1,203 +0,0 @@
-//===- llvm/unittest/TableGen/CodeExpanderTest.cpp - Tests ----------------===//
-//
-// 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 "GlobalISel/CodeExpander.h"
-#include "GlobalISel/CodeExpansions.h"
-
-#include "llvm/Support/raw_ostream.h"
-#include "llvm/TableGen/Error.h"
-#include "gtest/gtest.h"
-
-using namespace llvm;
-
-static StringRef bufferize(StringRef Str) {
- std::unique_ptr<MemoryBuffer> Buffer =
- MemoryBuffer::getMemBufferCopy(Str, "TestBuffer");
- StringRef StrBufferRef = Buffer->getBuffer();
- SrcMgr.AddNewSourceBuffer(std::move(Buffer), SMLoc());
- return StrBufferRef;
-}
-
-class RAIIDiagnosticChecker {
- std::string EmittedDiags;
- raw_string_ostream OS;
- std::vector<SMDiagnostic> Expected;
- std::vector<SMDiagnostic> Received;
-
-public:
- RAIIDiagnosticChecker() : OS(EmittedDiags) {
- SrcMgr.setDiagHandler(handler, this);
- }
- ~RAIIDiagnosticChecker() {
- SrcMgr.setDiagHandler(nullptr);
- EXPECT_EQ(Received.size(), Expected.size());
- for (unsigned i = 0; i < Received.size() && i < Expected.size(); ++i) {
- EXPECT_EQ(Received[i].getLoc(), Expected[i].getLoc());
- EXPECT_EQ(Received[i].getFilename(), Expected[i].getFilename());
- EXPECT_EQ(Received[i].getKind(), Expected[i].getKind());
- EXPECT_EQ(Received[i].getLineNo(), Expected[i].getLineNo());
- EXPECT_EQ(Received[i].getColumnNo(), Expected[i].getColumnNo());
- EXPECT_EQ(Received[i].getMessage(), Expected[i].getMessage());
- EXPECT_EQ(Received[i].getLineContents(), Expected[i].getLineContents());
- EXPECT_EQ(Received[i].getRanges(), Expected[i].getRanges());
- }
-
- if (testing::Test::HasFailure())
- errs() << "Emitted diagnostic:\n" << OS.str();
- }
-
- void expect(SMDiagnostic D) { Expected.push_back(D); }
-
- void diag(const SMDiagnostic &D) {
- Received.push_back(D);
- }
-
- static void handler(const SMDiagnostic &D, void *Context) {
- RAIIDiagnosticChecker *Self = static_cast<RAIIDiagnosticChecker *>(Context);
- Self->diag(D);
- SrcMgr.setDiagHandler(nullptr);
- SrcMgr.PrintMessage(Self->OS, D);
- SrcMgr.setDiagHandler(handler, Context);
- };
-};
-
-TEST(CodeExpander, NoExpansions) {
- std::string Result;
- raw_string_ostream OS(Result);
- CodeExpansions Expansions;
-
- RAIIDiagnosticChecker DiagChecker;
- CodeExpander("No expansions", Expansions, SMLoc(), false).emit(OS);
- EXPECT_EQ(OS.str(), "No expansions");
-}
-
-// Indentation is applied to all lines except the first
-TEST(CodeExpander, Indentation) {
- std::string Result;
- raw_string_ostream OS(Result);
- CodeExpansions Expansions;
-
- RAIIDiagnosticChecker DiagChecker;
- CodeExpander("No expansions\nsecond line\nthird line", Expansions, SMLoc(),
- false, " ")
- .emit(OS);
- EXPECT_EQ(OS.str(), "No expansions\n second line\n third line");
-}
-
-// \ is an escape character that removes special meanings from the next
-// character.
-TEST(CodeExpander, Escape) {
- std::string Result;
- raw_string_ostream OS(Result);
- CodeExpansions Expansions;
-
- RAIIDiagnosticChecker DiagChecker;
- CodeExpander("\\\\\\a\\$", Expansions, SMLoc(), false).emit(OS);
- EXPECT_EQ(OS.str(), "\\a$");
-}
-
-// $foo is not an expansion. It should warn though.
-TEST(CodeExpander, NotAnExpansion) {
- std::string Result;
- raw_string_ostream OS(Result);
- CodeExpansions Expansions;
-
- RAIIDiagnosticChecker DiagChecker;
- StringRef In = bufferize(" $foo");
- CodeExpander(" $foo", Expansions, SMLoc::getFromPointer(In.data()), false)
- .emit(OS);
- EXPECT_EQ(OS.str(), " $foo");
- DiagChecker.expect(SMDiagnostic(
- SrcMgr, SMLoc::getFromPointer(In.data() + 1), "TestBuffer", 1, 1,
- SourceMgr::DK_Warning, "Assuming missing escape character", " $foo", {}));
-}
-
-// \$foo is not an expansion but shouldn't warn as it's using the escape.
-TEST(CodeExpander, EscapedNotAnExpansion) {
- std::string Result;
- raw_string_ostream OS(Result);
- CodeExpansions Expansions;
-
- RAIIDiagnosticChecker DiagChecker;
- CodeExpander("\\$foo", Expansions, SMLoc(), false).emit(OS);
- EXPECT_EQ(OS.str(), "$foo");
-}
-
-// \${foo is not an expansion but shouldn't warn as it's using the escape.
-TEST(CodeExpander, EscapedUnterminatedExpansion) {
- std::string Result;
- raw_string_ostream OS(Result);
- CodeExpansions Expansions;
-
- RAIIDiagnosticChecker DiagChecker;
- CodeExpander("\\${foo", Expansions, SMLoc(), false).emit(OS);
- EXPECT_EQ(OS.str(), "${foo");
-}
-
-// \${foo is not an expansion but shouldn't warn as it's using the escape.
-TEST(CodeExpander, EscapedExpansion) {
- std::string Result;
- raw_string_ostream OS(Result);
- CodeExpansions Expansions;
-
- RAIIDiagnosticChecker DiagChecker;
- CodeExpander("\\${foo}", Expansions, SMLoc(), false).emit(OS);
- EXPECT_EQ(OS.str(), "${foo}");
-}
-
-// ${foo} is an undefined expansion and should error.
-TEST(CodeExpander, UndefinedExpansion) {
- std::string Result;
- raw_string_ostream OS(Result);
- CodeExpansions Expansions;
- Expansions.declare("bar", "expansion");
-
- RAIIDiagnosticChecker DiagChecker;
- CodeExpander("${foo}${bar}", Expansions, SMLoc(), false).emit(OS);
- EXPECT_EQ(OS.str(), "expansion");
- DiagChecker.expect(
- SMDiagnostic(SrcMgr, SMLoc(), "<unknown>", 0, -1, SourceMgr::DK_Error,
- "Attempting to expand an undeclared variable foo", "", {}));
-}
-
-// ${foo} is an undefined expansion and should error. When given a valid
-// location for the start of the buffer it should correctly point at the
-// expansion being performed.
-TEST(CodeExpander, UndefinedExpansionWithLoc) {
- std::string Result;
- raw_string_ostream OS(Result);
- CodeExpansions Expansions;
- Expansions.declare("bar", "expansion");
-
- RAIIDiagnosticChecker DiagChecker;
- StringRef In = bufferize("Padding ${foo}${bar}");
- CodeExpander(In, Expansions, SMLoc::getFromPointer(In.data()), false)
- .emit(OS);
- EXPECT_EQ(OS.str(), "Padding expansion");
- DiagChecker.expect(SMDiagnostic(
- SrcMgr, SMLoc::getFromPointer(In.data() + 8), "TestBuffer", 1, 8,
- SourceMgr::DK_Error, "Attempting to expand an undeclared variable foo",
- "Padding ${foo}${bar}", {}));
-}
-
-// ${bar is an unterminated expansion. Warn and implicitly terminate it.
-TEST(CodeExpander, UnterminatedExpansion) {
- std::string Result;
- raw_string_ostream OS(Result);
- CodeExpansions Expansions;
- Expansions.declare("bar", "expansion");
-
- RAIIDiagnosticChecker DiagChecker;
- StringRef In = bufferize(" ${bar");
- CodeExpander(In, Expansions, SMLoc::getFromPointer(In.data()), false)
- .emit(OS);
- EXPECT_EQ(OS.str(), " expansion");
- DiagChecker.expect(SMDiagnostic(SrcMgr, SMLoc::getFromPointer(In.data() + 1),
- "TestBuffer", 1, 1, SourceMgr::DK_Warning,
- "Unterminated expansion", " ${bar", {}));
-}
OpenPOWER on IntegriCloud