diff options
Diffstat (limited to 'chromium/mojo/public/tools/mojom/mojom/parse/ast.py')
-rw-r--r-- | chromium/mojo/public/tools/mojom/mojom/parse/ast.py | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/chromium/mojo/public/tools/mojom/mojom/parse/ast.py b/chromium/mojo/public/tools/mojom/mojom/parse/ast.py index c9b6605cf43..1f0db200549 100644 --- a/chromium/mojo/public/tools/mojom/mojom/parse/ast.py +++ b/chromium/mojo/public/tools/mojom/mojom/parse/ast.py @@ -9,6 +9,15 @@ # failures, especially for more complex types. +import sys + + +def _IsStrOrUnicode(x): + if sys.version_info[0] < 3: + return isinstance(x, (unicode, str)) + return isinstance(x, str) + + class NodeBase(object): """Base class for nodes in the AST.""" @@ -87,7 +96,7 @@ class Definition(NodeBase): include parameter definitions.) This class is meant to be subclassed.""" def __init__(self, mojom_name, **kwargs): - assert isinstance(mojom_name, str) + assert _IsStrOrUnicode(mojom_name) NodeBase.__init__(self, **kwargs) self.mojom_name = mojom_name @@ -99,7 +108,7 @@ class Attribute(NodeBase): """Represents an attribute.""" def __init__(self, key, value, **kwargs): - assert isinstance(key, str) + assert _IsStrOrUnicode(key) super(Attribute, self).__init__(**kwargs) self.key = key self.value = value @@ -122,10 +131,10 @@ class Const(Definition): def __init__(self, mojom_name, attribute_list, typename, value, **kwargs): assert attribute_list is None or isinstance(attribute_list, AttributeList) # The typename is currently passed through as a string. - assert isinstance(typename, str) + assert _IsStrOrUnicode(typename) # The value is either a literal (currently passed through as a string) or a # "wrapped identifier". - assert isinstance(value, str) or isinstance(value, tuple) + assert _IsStrOrUnicode or isinstance(value, tuple) super(Const, self).__init__(mojom_name, **kwargs) self.attribute_list = attribute_list self.typename = typename @@ -161,7 +170,7 @@ class EnumValue(Definition): # The optional value is either an int (which is current a string) or a # "wrapped identifier". assert attribute_list is None or isinstance(attribute_list, AttributeList) - assert value is None or isinstance(value, (str, tuple)) + assert value is None or _IsStrOrUnicode(value) or isinstance(value, tuple) super(EnumValue, self).__init__(mojom_name, **kwargs) self.attribute_list = attribute_list self.value = value @@ -184,7 +193,7 @@ class Import(NodeBase): def __init__(self, attribute_list, import_filename, **kwargs): assert attribute_list is None or isinstance(attribute_list, AttributeList) - assert isinstance(import_filename, str) + assert _IsStrOrUnicode(import_filename) super(Import, self).__init__(**kwargs) self.attribute_list = attribute_list self.import_filename = import_filename @@ -305,10 +314,10 @@ class Parameter(NodeBase): """Represents a method request or response parameter.""" def __init__(self, mojom_name, attribute_list, ordinal, typename, **kwargs): - assert isinstance(mojom_name, str) + assert _IsStrOrUnicode(mojom_name) assert attribute_list is None or isinstance(attribute_list, AttributeList) assert ordinal is None or isinstance(ordinal, Ordinal) - assert isinstance(typename, str) + assert _IsStrOrUnicode(typename) super(Parameter, self).__init__(**kwargs) self.mojom_name = mojom_name self.attribute_list = attribute_list @@ -350,13 +359,14 @@ class StructField(Definition): def __init__(self, mojom_name, attribute_list, ordinal, typename, default_value, **kwargs): - assert isinstance(mojom_name, str) + assert _IsStrOrUnicode(mojom_name) assert attribute_list is None or isinstance(attribute_list, AttributeList) assert ordinal is None or isinstance(ordinal, Ordinal) - assert isinstance(typename, str) + assert _IsStrOrUnicode(typename) # The optional default value is currently either a value as a string or a # "wrapped identifier". - assert default_value is None or isinstance(default_value, (str, tuple)) + assert default_value is None or _IsStrOrUnicode(default_value) or \ + isinstance(default_value, tuple) super(StructField, self).__init__(mojom_name, **kwargs) self.attribute_list = attribute_list self.ordinal = ordinal @@ -396,10 +406,10 @@ class Union(Definition): class UnionField(Definition): def __init__(self, mojom_name, attribute_list, ordinal, typename, **kwargs): - assert isinstance(mojom_name, str) + assert _IsStrOrUnicode(mojom_name) assert attribute_list is None or isinstance(attribute_list, AttributeList) assert ordinal is None or isinstance(ordinal, Ordinal) - assert isinstance(typename, str) + assert _IsStrOrUnicode(typename) super(UnionField, self).__init__(mojom_name, **kwargs) self.attribute_list = attribute_list self.ordinal = ordinal |