about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2010-05-12T12·15+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2010-05-12T12·15+0000
commitbd25ac2260267abd2181324e1650820da70e5e60 (patch)
tree954b2ecdce037dcf47b0376616ac05dbad8542ab
parent81a4b4e49bf82f17eef20d78c4f505874cf5532e (diff)
* Print attributes in sorted order.
-rw-r--r--src/libexpr/eval.cc9
-rw-r--r--tests/lang/eval-okay-tryeval.exp2
2 files changed, 8 insertions, 3 deletions
diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc
index 69632eb37ef1..26739faf69e8 100644
--- a/src/libexpr/eval.cc
+++ b/src/libexpr/eval.cc
@@ -41,12 +41,17 @@ std::ostream & operator << (std::ostream & str, Value & v)
     case tNull:
         str << "true";
         break;
-    case tAttrs:
+    case tAttrs: {
         str << "{ ";
+        typedef std::map<string, Value *> Sorted;
+        Sorted sorted;
         foreach (Bindings::iterator, i, *v.attrs)
-            str << (string) i->first << " = " << i->second.value << "; ";
+            sorted[i->first] = &i->second.value;
+        foreach (Sorted::iterator, i, sorted)
+            str << i->first << " = " << *i->second << "; ";
         str << "}";
         break;
+    }
     case tList:
         str << "[ ";
         for (unsigned int n = 0; n < v.list.length; ++n)
diff --git a/tests/lang/eval-okay-tryeval.exp b/tests/lang/eval-okay-tryeval.exp
index c2788b412288..2b2e6fa711f4 100644
--- a/tests/lang/eval-okay-tryeval.exp
+++ b/tests/lang/eval-okay-tryeval.exp
@@ -1 +1 @@
-{ x = { value = "x"; success = true; }; y = { value = false; success = false; }; z = { value = false; success = false; }; }
+{ x = { success = true; value = "x"; }; y = { success = false; value = false; }; z = { success = false; value = false; }; }