| Index: mojo/public/tools/bindings/pylib/mojom/generate/data.py
|
| diff --git a/mojo/public/tools/bindings/pylib/mojom/generate/data.py b/mojo/public/tools/bindings/pylib/mojom/generate/data.py
|
| index 60ae1e0d4c55e3df67b6db1c6cfc508696505527..6fc77ae9e1c951081b5e3ea6ea47912244421b50 100644
|
| --- a/mojo/public/tools/bindings/pylib/mojom/generate/data.py
|
| +++ b/mojo/public/tools/bindings/pylib/mojom/generate/data.py
|
| @@ -397,6 +397,7 @@ def ResolveNumericEnumValues(enum_fields):
|
| def EnumFromData(module, data, parent_kind):
|
| enum = mojom.Enum(module=module)
|
| enum.name = data['name']
|
| + enum.native_only = data['native_only']
|
| name = enum.name
|
| if parent_kind:
|
| name = parent_kind.name + '.' + name
|
| @@ -404,11 +405,18 @@ def EnumFromData(module, data, parent_kind):
|
| enum.parent_kind = parent_kind
|
| enum.fields = map(
|
| lambda field: EnumFieldFromData(module, enum, field, parent_kind),
|
| - data['fields'])
|
| + data['fields']) if not enum.native_only else []
|
| enum.attributes = data.get('attributes')
|
| ResolveNumericEnumValues(enum.fields)
|
|
|
| module.kinds[enum.spec] = enum
|
| +
|
| + # Enforce that a [native=True] attribute is set to make native-only enum
|
| + # declarations more explicit.
|
| + if enum.native_only:
|
| + if not enum.attributes or not enum.attributes.get('native', False):
|
| + raise Exception("Native-only enum declarations must include a " +
|
| + "native=True attribute.")
|
| return enum
|
|
|
| def ConstantFromData(module, data, parent_kind):
|
|
|