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