| Index: mojo/public/tools/bindings/pylib/mojom/parse/ast.py
|
| diff --git a/mojo/public/tools/bindings/pylib/mojom/parse/ast.py b/mojo/public/tools/bindings/pylib/mojom/parse/ast.py
|
| index b30859127d671f7f2a075c5b4fda015a5a5aea0d..3de077966dd83f30dbfcd094973963917f491f66 100644
|
| --- a/mojo/public/tools/bindings/pylib/mojom/parse/ast.py
|
| +++ b/mojo/public/tools/bindings/pylib/mojom/parse/ast.py
|
| @@ -17,6 +17,9 @@ class NodeBase(object):
|
| self.filename = filename
|
| self.lineno = lineno
|
|
|
| + def __eq__(self, other):
|
| + return type(self) == type(other)
|
| +
|
|
|
| # TODO(vtl): Some of this is complicated enough that it should be tested.
|
| class NodeListBase(NodeBase):
|
| @@ -26,7 +29,7 @@ class NodeListBase(NodeBase):
|
|
|
| def __init__(self, item_or_items=None, **kwargs):
|
| assert issubclass(self._list_item_type, NodeBase)
|
| - NodeBase.__init__(self, **kwargs)
|
| + super(NodeListBase, self).__init__(**kwargs)
|
| if item_or_items is None:
|
| self.elements = []
|
| elif isinstance(item_or_items, list):
|
| @@ -45,7 +48,7 @@ class NodeListBase(NodeBase):
|
| return self.elements.__iter__()
|
|
|
| def __eq__(self, other):
|
| - return type(self) == type(other) and \
|
| + return super(NodeListBase, self).__eq__(other) and \
|
| len(self.elements) == len(other.elements) and \
|
| all(self.elements[i] == other.elements[i] \
|
| for i in xrange(len(self.elements)))
|
| @@ -74,12 +77,12 @@ class Attribute(NodeBase):
|
|
|
| def __init__(self, key, value, **kwargs):
|
| assert isinstance(key, str)
|
| - NodeBase.__init__(self, **kwargs)
|
| + super(Attribute, self).__init__(**kwargs)
|
| self.key = key
|
| self.value = value
|
|
|
| def __eq__(self, other):
|
| - return type(self) == type(other) and \
|
| + return super(Attribute, self).__eq__(other) and \
|
| self.key == other.key and \
|
| self.value == other.value
|
|
|
| @@ -98,12 +101,12 @@ class EnumValue(NodeBase):
|
| # The optional value is either an int (which is current a string) or a
|
| # "wrapped identifier".
|
| assert value is None or isinstance(value, str) or isinstance(value, tuple)
|
| - NodeBase.__init__(self, **kwargs)
|
| + super(EnumValue, self).__init__(**kwargs)
|
| self.name = name
|
| self.value = value
|
|
|
| def __eq__(self, other):
|
| - return type(self) == type(other) and \
|
| + return super(EnumValue, self).__eq__(other) and \
|
| self.name == other.name and \
|
| self.value == other.value
|
|
|
| @@ -120,11 +123,11 @@ class Import(NodeBase):
|
|
|
| def __init__(self, import_filename, **kwargs):
|
| assert isinstance(import_filename, str)
|
| - NodeBase.__init__(self, **kwargs)
|
| + super(Import, self).__init__(**kwargs)
|
| self.import_filename = import_filename
|
|
|
| def __eq__(self, other):
|
| - return type(self) == type(other) and \
|
| + return super(Import, self).__eq__(other) and \
|
| self.import_filename == other.import_filename
|
|
|
|
|
| @@ -141,12 +144,12 @@ class Module(NodeBase):
|
| # |name| is either none or a "wrapped identifier".
|
| assert name is None or isinstance(name, tuple)
|
| assert attribute_list is None or isinstance(attribute_list, AttributeList)
|
| - NodeBase.__init__(self, **kwargs)
|
| + super(Module, self).__init__(**kwargs)
|
| self.name = name
|
| self.attribute_list = attribute_list
|
|
|
| def __eq__(self, other):
|
| - return type(self) == type(other) and \
|
| + return super(Module, self).__eq__(other) and \
|
| self.name == other.name and \
|
| self.attribute_list == other.attribute_list
|
|
|
| @@ -158,13 +161,13 @@ class Mojom(NodeBase):
|
| assert module is None or isinstance(module, Module)
|
| assert isinstance(import_list, ImportList)
|
| assert isinstance(definition_list, list)
|
| - NodeBase.__init__(self, **kwargs)
|
| + super(Mojom, self).__init__(**kwargs)
|
| self.module = module
|
| self.import_list = import_list
|
| self.definition_list = definition_list
|
|
|
| def __eq__(self, other):
|
| - return type(self) == type(other) and \
|
| + return super(Mojom, self).__eq__(other) and \
|
| self.module == other.module and \
|
| self.import_list == other.import_list and \
|
| self.definition_list == other.definition_list
|
| @@ -179,11 +182,12 @@ class Ordinal(NodeBase):
|
|
|
| def __init__(self, value, **kwargs):
|
| assert value is None or isinstance(value, int)
|
| - NodeBase.__init__(self, **kwargs)
|
| + super(Ordinal, self).__init__(**kwargs)
|
| self.value = value
|
|
|
| def __eq__(self, other):
|
| - return type(self) == type(other) and self.value == other.value
|
| + return super(Ordinal, self).__eq__(other) and \
|
| + self.value == other.value
|
|
|
|
|
| class Parameter(NodeBase):
|
| @@ -191,13 +195,13 @@ class Parameter(NodeBase):
|
|
|
| def __init__(self, typename, name, ordinal, **kwargs):
|
| assert isinstance(ordinal, Ordinal)
|
| - NodeBase.__init__(self, **kwargs)
|
| + super(Parameter, self).__init__(**kwargs)
|
| self.typename = typename
|
| self.name = name
|
| self.ordinal = ordinal
|
|
|
| def __eq__(self, other):
|
| - return type(self) == type(other) and \
|
| + return super(Parameter, self).__eq__(other) and \
|
| self.typename == other.typename and \
|
| self.name == other.name and \
|
| self.ordinal == other.ordinal
|
|
|