| 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 ead89bca3cbcb277d6b04212de2e554150a75502..8622ecfc7734f4d7c17cc838550c414e351ce369 100644
|
| --- a/mojo/public/tools/bindings/pylib/mojom/parse/ast.py
|
| +++ b/mojo/public/tools/bindings/pylib/mojom/parse/ast.py
|
| @@ -79,7 +79,9 @@ class Attribute(NodeBase):
|
| self.value = value
|
|
|
| def __eq__(self, other):
|
| - return self.key == other.key and self.value == other.value
|
| + return type(self) == type(other) and \
|
| + self.key == other.key and \
|
| + self.value == other.value
|
|
|
|
|
| class AttributeList(NodeListBase):
|
| @@ -97,7 +99,8 @@ class Import(NodeBase):
|
| self.import_filename = import_filename
|
|
|
| def __eq__(self, other):
|
| - return self.import_filename == other.import_filename
|
| + return type(self) == type(other) and \
|
| + self.import_filename == other.import_filename
|
|
|
|
|
| class ImportList(NodeListBase):
|
| @@ -118,10 +121,34 @@ class Module(NodeBase):
|
| self.attribute_list = attribute_list
|
|
|
| def __eq__(self, other):
|
| - return self.name == other.name and \
|
| + return type(self) == type(other) and \
|
| + self.name == other.name and \
|
| self.attribute_list == other.attribute_list
|
|
|
|
|
| +class Mojom(NodeBase):
|
| + """Represents an entire .mojom file. (This is the root node."""
|
| +
|
| + def __init__(self, module, import_list, definition_list, **kwargs):
|
| + assert module is None or isinstance(module, Module)
|
| + assert isinstance(import_list, ImportList)
|
| + assert isinstance(definition_list, list)
|
| + NodeBase.__init__(self, **kwargs)
|
| + self.module = module
|
| + self.import_list = import_list
|
| + self.definition_list = definition_list
|
| +
|
| + def __eq__(self, other):
|
| + return type(self) == type(other) and \
|
| + self.module == other.module and \
|
| + self.import_list == other.import_list and \
|
| + self.definition_list == other.definition_list
|
| +
|
| + def __repr__(self):
|
| + return "%s(%r, %r, %r)" % (self.__class__.__name__, self.module,
|
| + self.import_list, self.definition_list)
|
| +
|
| +
|
| class Ordinal(NodeBase):
|
| """Represents an ordinal value labeling, e.g., a struct field."""
|
|
|
| @@ -131,7 +158,7 @@ class Ordinal(NodeBase):
|
| self.value = value
|
|
|
| def __eq__(self, other):
|
| - return self.value == other.value
|
| + return type(self) == type(other) and self.value == other.value
|
|
|
|
|
| class Parameter(NodeBase):
|
| @@ -145,7 +172,8 @@ class Parameter(NodeBase):
|
| self.ordinal = ordinal
|
|
|
| def __eq__(self, other):
|
| - return self.typename == other.typename and \
|
| + return type(self) == type(other) and \
|
| + self.typename == other.typename and \
|
| self.name == other.name and \
|
| self.ordinal == other.ordinal
|
|
|
|
|