diff options
author | Peter Collingbourne <pcc@google.com> | 2014-04-03 23:53:01 -0700 |
---|---|---|
committer | Peter Collingbourne <pcc@google.com> | 2014-04-04 11:41:11 -0700 |
commit | e3b58660760830e774eff283f957ac5abb8a9b47 (patch) | |
tree | 814de114097bf214bcb9e7683481c9fd2aafd9d2 | |
parent | b3d9f1469b66e5409b1b6e8cbaca91d16e802761 (diff) | |
download | klee-e3b58660760830e774eff283f957ac5abb8a9b47.tar.gz |
Add the ability to control whether the pretty printer uses line breaks
This change makes it possible to more reliably write unit tests which check that an expression is equivalent to an expected pretty printed string.
-rw-r--r-- | include/klee/util/ExprPPrinter.h | 1 | ||||
-rw-r--r-- | lib/Expr/ExprPPrinter.cpp | 8 |
2 files changed, 8 insertions, 1 deletions
diff --git a/include/klee/util/ExprPPrinter.h b/include/klee/util/ExprPPrinter.h index 4d1930d8..cf4ebb18 100644 --- a/include/klee/util/ExprPPrinter.h +++ b/include/klee/util/ExprPPrinter.h @@ -25,6 +25,7 @@ namespace klee { virtual ~ExprPPrinter() {} virtual void setNewline(const std::string &newline) = 0; + virtual void setForceNoLineBreaks(bool forceNoLineBreaks) = 0; virtual void reset() = 0; virtual void scan(const ref<Expr> &e) = 0; virtual void print(const ref<Expr> &e, unsigned indent=0) = 0; diff --git a/lib/Expr/ExprPPrinter.cpp b/lib/Expr/ExprPPrinter.cpp index ac1d1d01..d58358b5 100644 --- a/lib/Expr/ExprPPrinter.cpp +++ b/lib/Expr/ExprPPrinter.cpp @@ -51,6 +51,7 @@ private: unsigned counter; unsigned updateCounter; bool hasScan; + bool forceNoLineBreaks; std::string newline; /// shouldPrintWidth - Predicate for whether this expression should @@ -307,10 +308,15 @@ public: newline = _newline; } + void setForceNoLineBreaks(bool _forceNoLineBreaks) { + forceNoLineBreaks = _forceNoLineBreaks; + } + void reset() { counter = 0; updateCounter = 0; hasScan = false; + forceNoLineBreaks = false; bindings.clear(); updateBindings.clear(); couldPrint.clear(); @@ -412,7 +418,7 @@ public: /* Public utility functions */ void printSeparator(PrintContext &PC, bool simple, unsigned indent) { - if (simple) { + if (simple || forceNoLineBreaks) { PC << ' '; } else { PC.breakLine(indent); |