Revert Vishal's patch that Enrico commited, at least for the weekend.  With it applied,
starting lldb I get

% ./lldb -x
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/private/tmp/build/Debug/LLDB.framework/Versions/A/Resources/Python/lldb/__init__.py", line 9008
    raise TypeError("No array item of type %s" % str(type(key)))
        ^
SyntaxError: invalid syntax
Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'run_one_line' is not defined
Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'run_one_line' is not defined
Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'run_one_line' is not defined
(lldb)


I did a clean build and still got the problem so I'm backing this out until Enrico can
look at it.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@165356 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/scripts/Python/python-extensions.swig b/scripts/Python/python-extensions.swig
index aa45cee..f9e5a13 100644
--- a/scripts/Python/python-extensions.swig
+++ b/scripts/Python/python-extensions.swig
@@ -539,15 +539,13 @@
         # Allow array access if this value has children...
         if type(key) is int:
             return value(self.sbvalue.GetValueForExpressionPath("[%i]" % key))
-        if type(key) is value:
-            return value(self.sbvalue.GetValueForExpressionPath("[%i]" % int(key))
-        raise TypeError("No array item of type %s" % str(type(key)))
+        raise TypeError
 
     def __getattr__(self, name):
         child_sbvalue = self.sbvalue.GetChildMemberWithName (name)
         if child_sbvalue:
             return value(child_sbvalue)
-        raise AttributeError("Attribute '%s' is not defined" % name)
+        raise AttributeError
 
     def __add__(self, other):
         return int(self) + int(other)
@@ -692,22 +690,15 @@
         return '0x%x' % self.sbvalue.GetValueAsUnsigned()
 
     def __eq__(self, other):
-        if type(other) is int:
-            return int(self) == other
-        elif type(other) is str:
-            return str(self) == other
-        elif type(other) is value:
-                self_err = SBError()
-                other_err = SBError()
-                self_val = self.sbvalue.GetValueAsUnsigned(self_err)
-                if self_err.fail:
-                        raise ValueError("unable to extract value of self")
-                other_val = other.sbvalue.GetValueAsUnsigned(other_err)
-                if other_err.fail:
-                        raise ValueError("unable to extract value of other")
-                return self_val == other_val
-        raise TypeError("Unknown type %s, No equality operation defined." % str(type(other)))
-
+        self_err = SBError()
+        other_err = SBError()
+        self_val = self.sbvalue.GetValueAsUnsigned(self_err)
+        if self_err.fail:
+                raise ValueError("unable to extract value of self")
+        other_val = other.sbvalue.GetValueAsUnsigned(other_err)
+        if other_err.fail:
+                raise ValueError("unable to extract value of other")
+        return self_val == other_val
                                                                     
     def __neq__(self, other):
         return not self.__eq__(other)