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 e8c71f33d938ae2201981ec35934eaaefda058ae..70b9d40f9f22160ee6bc7d11a6e1c4c780435e17 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,19 @@ 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): |