Skip to content
  • Andrew McCreight's avatar
    Bug 1550770 - Error instead of implicitly converting XPCOM interfaces to builtinclass. r=nika · 20b03783
    Andrew McCreight authored
    XPIDL has the requirement that [scriptable] interfaces with [notxpcom]
    methods or attributes are [builtinclass]. Currently, if you don't
    explicitly mark something builtinclass when it should be, then the
    XPIDL compiler will just silently treat it like builtinclass. This
    means that you can cause the JS implementation of an XPCOM to start
    failing without any warning by marking a method notxpcom.
    
    This patch instead makes it an error. A prior patch fixed the existing
    instances in the tree that relied on the implicit behavior.
    
    I also added a test that we reject such classes missing builtinclass
    at compile time, as well as classes that inherit from builtinclass
    interfaces without themselves being builtinclass. I left behind a part
    of the runtime test for this behavior, but now this test just ensures
    that you can't implement a [builtinclass] interface in JS.
    
    Differential Revision: https://phabricator.services.mozilla.com/D30984
    
    --HG--
    extra : moz-landing-system : lando
    20b03783