From 372da02a4273086ce52ea845f7cb4d0acea77742 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Wed, 16 Dec 2015 00:40:37 +0100 Subject: [PATCH] Link [Abstract] to the existing concrete descriptor field This makes codegen not emit anything strictly related to the interface which are never used in the case of abstract interfaces, such as the Wrap method or the DOMJSClass. --- components/script/dom/bindings/codegen/CodegenRust.py | 3 ++- components/script/dom/bindings/codegen/Configuration.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 199ec0c28ce..bb85fac6533 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -4986,7 +4986,8 @@ class CGDescriptor(CGThing): cgThings.append(CGWrapMethod(descriptor)) if not descriptor.interface.isCallback(): - cgThings.append(CGIDLInterface(descriptor)) + if descriptor.concrete or descriptor.hasDescendants(): + cgThings.append(CGIDLInterface(descriptor)) cgThings.append(CGInterfaceTrait(descriptor)) if descriptor.weakReferenceable: cgThings.append(CGWeakReferenceableTrait(descriptor)) diff --git a/components/script/dom/bindings/codegen/Configuration.py b/components/script/dom/bindings/codegen/Configuration.py index d0af7e37929..58958b61dab 100644 --- a/components/script/dom/bindings/codegen/Configuration.py +++ b/components/script/dom/bindings/codegen/Configuration.py @@ -180,7 +180,7 @@ class Descriptor(DescriptorProvider): # If we're concrete, we need to crawl our ancestor interfaces and mark # them as having a concrete descendant. self.concrete = (not self.interface.isCallback() and - desc.get('concrete', True)) + not self.interface.getExtendedAttribute("Abstract")) self.hasUnforgeableMembers = (self.concrete and any(MemberIsUnforgeable(m, self) for m in self.interface.members))