[lit] Change lit.Test.ResultCode to be unique across pickling.
authorDaniel Dunbar <daniel@zuster.org>
Thu, 29 Aug 2013 00:48:39 +0000 (00:48 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Thu, 29 Aug 2013 00:48:39 +0000 (00:48 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189549 91177308-0d34-0410-b5e6-96231b3b80d8

utils/lit/lit/Test.py

index 59ca6943e7648c97e039fc8c214b41a9e9a6bf62..05cae99a2f607236e583a2f10ec8188775531ebf 100644 (file)
@@ -5,6 +5,17 @@ import os
 class ResultCode(object):
     """Test result codes."""
 
+    # We override __new__ and __getnewargs__ to ensure that pickling still
+    # provides unique ResultCode objects in any particular instance.
+    _instances = {}
+    def __new__(cls, name, isFailure):
+        res = cls._instances.get(name)
+        if res is None:
+            cls._instances[name] = res = super(ResultCode, cls).__new__(cls)
+        return res
+    def __getnewargs__(self):
+        return (self.name, self.isFailure)
+
     def __init__(self, name, isFailure):
         self.name = name
         self.isFailure = isFailure