This revision was automatically updated to reflect the committed changes.
Closed by commit rLLDB349269: lldb-test: Improve newline handling (authored by 
labath, committed by ).
Herald added a subscriber: abidh.

Changed prior to commit:
  https://reviews.llvm.org/D55597?vs=177841&id=178362#toc

Repository:
  rLLDB LLDB

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55597/new/

https://reviews.llvm.org/D55597

Files:
  lit/Modules/MachO/subsections.yaml
  tools/lldb-test/FormatUtil.cpp
  tools/lldb-test/FormatUtil.h

Index: tools/lldb-test/FormatUtil.h
===================================================================
--- tools/lldb-test/FormatUtil.h
+++ tools/lldb-test/FormatUtil.h
@@ -26,27 +26,36 @@
   int CurrentIndent;
 
 public:
+  class Line {
+    LinePrinter *P;
+
+  public:
+    Line(LinePrinter &P) : P(&P) { P.OS.indent(P.CurrentIndent); }
+    ~Line();
+
+    Line(Line &&RHS) : P(RHS.P) { RHS.P = nullptr; }
+    void operator=(Line &&) = delete;
+
+    operator llvm::raw_ostream &() { return P->OS; }
+  };
+
   LinePrinter(int Indent, llvm::raw_ostream &Stream);
 
   void Indent(uint32_t Amount = 0);
   void Unindent(uint32_t Amount = 0);
   void NewLine();
 
-  void printLine(const llvm::Twine &T);
-  void print(const llvm::Twine &T);
+  void printLine(const llvm::Twine &T) { line() << T; }
   template <typename... Ts> void formatLine(const char *Fmt, Ts &&... Items) {
     printLine(llvm::formatv(Fmt, std::forward<Ts>(Items)...));
   }
-  template <typename... Ts> void format(const char *Fmt, Ts &&... Items) {
-    print(llvm::formatv(Fmt, std::forward<Ts>(Items)...));
-  }
 
   void formatBinary(llvm::StringRef Label, llvm::ArrayRef<uint8_t> Data,
                     uint32_t StartOffset);
   void formatBinary(llvm::StringRef Label, llvm::ArrayRef<uint8_t> Data,
                     uint64_t BaseAddr, uint32_t StartOffset);
 
-  llvm::raw_ostream &getStream() { return OS; }
+  Line line() { return Line(*this); }
   int getIndentLevel() const { return CurrentIndent; }
 };
 
@@ -64,12 +73,6 @@
   uint32_t Amount = 0;
 };
 
-template <class T>
-inline llvm::raw_ostream &operator<<(LinePrinter &Printer, const T &Item) {
-  Printer.getStream() << Item;
-  return Printer.getStream();
-}
-
 } // namespace lldb_private
 
 #endif
Index: tools/lldb-test/FormatUtil.cpp
===================================================================
--- tools/lldb-test/FormatUtil.cpp
+++ tools/lldb-test/FormatUtil.cpp
@@ -14,6 +14,11 @@
 using namespace lldb_private;
 using namespace llvm;
 
+LinePrinter::Line::~Line() {
+  if (P)
+    P->NewLine();
+}
+
 LinePrinter::LinePrinter(int Indent, llvm::raw_ostream &Stream)
     : OS(Stream), IndentSpaces(Indent), CurrentIndent(0) {}
 
@@ -31,39 +36,31 @@
 
 void LinePrinter::NewLine() {
   OS << "\n";
-  OS.indent(CurrentIndent);
-}
-
-void LinePrinter::print(const Twine &T) { OS << T; }
-
-void LinePrinter::printLine(const Twine &T) {
-  NewLine();
-  OS << T;
 }
 
 void LinePrinter::formatBinary(StringRef Label, ArrayRef<uint8_t> Data,
                                uint32_t StartOffset) {
-  NewLine();
-  OS << Label << " (";
-  if (!Data.empty()) {
-    OS << "\n";
-    OS << format_bytes_with_ascii(Data, StartOffset, 32, 4,
-                                  CurrentIndent + IndentSpaces, true);
-    NewLine();
+  if (Data.empty()) {
+    line() << Label << " ()";
+    return;
   }
-  OS << ")";
+  line() << Label << " (";
+  OS << format_bytes_with_ascii(Data, StartOffset, 32, 4,
+                                CurrentIndent + IndentSpaces, true);
+  NewLine();
+  line() << ")";
 }
 
 void LinePrinter::formatBinary(StringRef Label, ArrayRef<uint8_t> Data,
                                uint64_t Base, uint32_t StartOffset) {
-  NewLine();
-  OS << Label << " (";
-  if (!Data.empty()) {
-    OS << "\n";
-    Base += StartOffset;
-    OS << format_bytes_with_ascii(Data, Base, 32, 4,
-                                  CurrentIndent + IndentSpaces, true);
-    NewLine();
+  if (Data.empty()) {
+    line() << Label << " ()";
+    return;
   }
-  OS << ")";
+  line() << Label << " (";
+  Base += StartOffset;
+  OS << format_bytes_with_ascii(Data, Base, 32, 4, CurrentIndent + IndentSpaces,
+                                true);
+  NewLine();
+  line() << ")";
 }
Index: lit/Modules/MachO/subsections.yaml
===================================================================
--- lit/Modules/MachO/subsections.yaml
+++ lit/Modules/MachO/subsections.yaml
@@ -11,8 +11,8 @@
 #CHECK-NEXT:  VM size: 4294967296
 #CHECK-NEXT:  File size: 0
 #CHECK-NEXT:  There are no subsections
-#
-#CHECK:       Index: 1
+#CHECK-EMPTY:
+#CHECK-NEXT:  Index: 1
 #CHECK-NEXT:  Name: __TEXT
 #CHECK-NEXT:  Type: container
 #CHECK-NEXT:  Permissions: r-x
@@ -29,8 +29,8 @@
 #CHECK-NEXT:    VM address: 0x100000f30
 #CHECK-NEXT:    VM size: 22
 #CHECK-NEXT:    File size: 22
-#
-#CHECK:         Index: 1
+#CHECK-EMPTY:
+#CHECK-NEXT:    Index: 1
 #CHECK-NEXT:    Name: __unwind_info
 #CHECK-NEXT:    Type: compact-unwind
 #CHECK-NEXT:    Permissions: r-x
@@ -38,8 +38,8 @@
 #CHECK-NEXT:    VM address: 0x100000f48
 #CHECK-NEXT:    VM size: 76
 #CHECK-NEXT:    File size: 76
-#
-#CHECK:         Index: 2
+#CHECK-EMPTY:
+#CHECK-NEXT:    Index: 2
 #CHECK-NEXT:    Name: __eh_frame
 #CHECK-NEXT:    Type: eh-frame
 #CHECK-NEXT:    Permissions: r-x
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to