From 28617f0ed2d16491c86d040b323bfe07dcdf2421 Mon Sep 17 00:00:00 2001
From: Brian Norris <banorris@uci.edu>
Date: Sun, 3 Mar 2013 20:34:26 -0800
Subject: [PATCH] model: add promise printing to execution summaries

---
 model.cc   |  8 ++++++++
 promise.cc | 10 ++++++++--
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/model.cc b/model.cc
index c713d1e1..62550da7 100644
--- a/model.cc
+++ b/model.cc
@@ -2872,6 +2872,14 @@ void ModelChecker::print_summary() const
 		print_infeasibility(" INFEASIBLE");
 	print_list(action_trace);
 	model_print("\n");
+	if (!promises->empty()) {
+		model_print("Pending promises:\n");
+		for (unsigned int i = 0; i < promises->size(); i++) {
+			model_print(" [P%u] ", i);
+			(*promises)[i]->print();
+		}
+		model_print("\n");
+	}
 }
 
 /**
diff --git a/promise.cc b/promise.cc
index c1f1c5c0..26a1095f 100644
--- a/promise.cc
+++ b/promise.cc
@@ -101,10 +101,16 @@ bool Promise::thread_is_available(thread_id_t tid) const
 /** @brief Print debug info about the Promise */
 void Promise::print() const
 {
-	model_print("Promised value %#" PRIx64 ", first read from thread %d, available threads to resolve: ", fv.value, id_to_int(get_reader(0)->get_tid()));
+	model_print("Promised value %#" PRIx64 ", first read from thread %d, available threads to resolve: ",
+			fv.value, id_to_int(get_reader(0)->get_tid()));
+	bool failed = true;
 	for (unsigned int i = 0; i < available_thread.size(); i++)
-		if (available_thread[i])
+		if (available_thread[i]) {
 			model_print("[%d]", i);
+			failed = false;
+		}
+	if (failed)
+		model_print("(none)");
 	model_print("\n");
 }
 
-- 
2.34.1