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): |