forked from mirrors/gecko-dev
Bug 1885914 - Use __slots__ to speedup webidl parsing r=peterv
Per https://wiki.python.org/moin/UsingSlots, slots are more efficient in terms of memory space and speed of access Differential Revision: https://phabricator.services.mozilla.com/D204930
This commit is contained in:
parent
922cbe83d5
commit
4aad7fb908
1 changed files with 228 additions and 6 deletions
|
|
@ -121,6 +121,8 @@ class Location(object):
|
||||||
|
|
||||||
|
|
||||||
class BuiltinLocation(object):
|
class BuiltinLocation(object):
|
||||||
|
__slots__ = "msg", "filename"
|
||||||
|
|
||||||
def __init__(self, text):
|
def __init__(self, text):
|
||||||
self.msg = text + "\n"
|
self.msg = text + "\n"
|
||||||
self.filename = "<builtin>"
|
self.filename = "<builtin>"
|
||||||
|
|
@ -142,9 +144,11 @@ class BuiltinLocation(object):
|
||||||
|
|
||||||
|
|
||||||
class IDLObject(object):
|
class IDLObject(object):
|
||||||
|
__slots__ = "location", "userData", "filename"
|
||||||
|
|
||||||
def __init__(self, location):
|
def __init__(self, location):
|
||||||
self.location = location
|
self.location = location
|
||||||
self.userData = dict()
|
self.userData = {}
|
||||||
self.filename = location and location.filename
|
self.filename = location and location.filename
|
||||||
|
|
||||||
def isInterface(self):
|
def isInterface(self):
|
||||||
|
|
@ -220,6 +224,8 @@ class IDLObject(object):
|
||||||
|
|
||||||
|
|
||||||
class IDLScope(IDLObject):
|
class IDLScope(IDLObject):
|
||||||
|
__slots__ = "parentScope", "_name", "_dict", "globalNames", "globalNameMapping"
|
||||||
|
|
||||||
def __init__(self, location, parentScope, identifier):
|
def __init__(self, location, parentScope, identifier):
|
||||||
IDLObject.__init__(self, location)
|
IDLObject.__init__(self, location)
|
||||||
|
|
||||||
|
|
@ -349,6 +355,8 @@ class IDLScope(IDLObject):
|
||||||
|
|
||||||
|
|
||||||
class IDLIdentifier(IDLObject):
|
class IDLIdentifier(IDLObject):
|
||||||
|
__slots__ = "name", "scope"
|
||||||
|
|
||||||
def __init__(self, location, scope, name):
|
def __init__(self, location, scope, name):
|
||||||
IDLObject.__init__(self, location)
|
IDLObject.__init__(self, location)
|
||||||
|
|
||||||
|
|
@ -373,12 +381,14 @@ class IDLIdentifier(IDLObject):
|
||||||
|
|
||||||
|
|
||||||
class IDLUnresolvedIdentifier(IDLObject):
|
class IDLUnresolvedIdentifier(IDLObject):
|
||||||
|
__slots__ = ("name",)
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self, location, name, allowDoubleUnderscore=False, allowForbidden=False
|
self, location, name, allowDoubleUnderscore=False, allowForbidden=False
|
||||||
):
|
):
|
||||||
IDLObject.__init__(self, location)
|
IDLObject.__init__(self, location)
|
||||||
|
|
||||||
assert len(name) > 0
|
assert name
|
||||||
|
|
||||||
if name == "__noSuchMethod__":
|
if name == "__noSuchMethod__":
|
||||||
raise WebIDLError("__noSuchMethod__ is deprecated", [location])
|
raise WebIDLError("__noSuchMethod__ is deprecated", [location])
|
||||||
|
|
@ -417,6 +427,7 @@ class IDLUnresolvedIdentifier(IDLObject):
|
||||||
|
|
||||||
|
|
||||||
class IDLObjectWithIdentifier(IDLObject):
|
class IDLObjectWithIdentifier(IDLObject):
|
||||||
|
# no slots, incompatible with multiple inheritance
|
||||||
def __init__(self, location, parentScope, identifier):
|
def __init__(self, location, parentScope, identifier):
|
||||||
IDLObject.__init__(self, location)
|
IDLObject.__init__(self, location)
|
||||||
|
|
||||||
|
|
@ -434,6 +445,8 @@ class IDLObjectWithIdentifier(IDLObject):
|
||||||
|
|
||||||
|
|
||||||
class IDLObjectWithScope(IDLObjectWithIdentifier, IDLScope):
|
class IDLObjectWithScope(IDLObjectWithIdentifier, IDLScope):
|
||||||
|
__slots__ = ()
|
||||||
|
|
||||||
def __init__(self, location, parentScope, identifier):
|
def __init__(self, location, parentScope, identifier):
|
||||||
assert isinstance(identifier, IDLUnresolvedIdentifier)
|
assert isinstance(identifier, IDLUnresolvedIdentifier)
|
||||||
|
|
||||||
|
|
@ -442,6 +455,8 @@ class IDLObjectWithScope(IDLObjectWithIdentifier, IDLScope):
|
||||||
|
|
||||||
|
|
||||||
class IDLIdentifierPlaceholder(IDLObjectWithIdentifier):
|
class IDLIdentifierPlaceholder(IDLObjectWithIdentifier):
|
||||||
|
__slots__ = ()
|
||||||
|
|
||||||
def __init__(self, location, identifier):
|
def __init__(self, location, identifier):
|
||||||
assert isinstance(identifier, IDLUnresolvedIdentifier)
|
assert isinstance(identifier, IDLUnresolvedIdentifier)
|
||||||
IDLObjectWithIdentifier.__init__(self, location, None, identifier)
|
IDLObjectWithIdentifier.__init__(self, location, None, identifier)
|
||||||
|
|
@ -459,6 +474,7 @@ class IDLIdentifierPlaceholder(IDLObjectWithIdentifier):
|
||||||
|
|
||||||
|
|
||||||
class IDLExposureMixins:
|
class IDLExposureMixins:
|
||||||
|
# no slots, incompatible with multiple inheritance
|
||||||
def __init__(self, location):
|
def __init__(self, location):
|
||||||
# _exposureGlobalNames are the global names listed in our [Exposed]
|
# _exposureGlobalNames are the global names listed in our [Exposed]
|
||||||
# extended attribute. exposureSet is the exposure set as defined in the
|
# extended attribute. exposureSet is the exposure set as defined in the
|
||||||
|
|
@ -541,6 +557,8 @@ class IDLExposureMixins:
|
||||||
|
|
||||||
|
|
||||||
class IDLExternalInterface(IDLObjectWithIdentifier):
|
class IDLExternalInterface(IDLObjectWithIdentifier):
|
||||||
|
__slots__ = ("parent",)
|
||||||
|
|
||||||
def __init__(self, location, parentScope, identifier):
|
def __init__(self, location, parentScope, identifier):
|
||||||
assert isinstance(identifier, IDLUnresolvedIdentifier)
|
assert isinstance(identifier, IDLUnresolvedIdentifier)
|
||||||
assert isinstance(parentScope, IDLScope)
|
assert isinstance(parentScope, IDLScope)
|
||||||
|
|
@ -591,6 +609,8 @@ class IDLExternalInterface(IDLObjectWithIdentifier):
|
||||||
|
|
||||||
|
|
||||||
class IDLPartialDictionary(IDLObject):
|
class IDLPartialDictionary(IDLObject):
|
||||||
|
__slots__ = "identifier", "members", "_nonPartialDictionary", "_finished"
|
||||||
|
|
||||||
def __init__(self, location, name, members, nonPartialDictionary):
|
def __init__(self, location, name, members, nonPartialDictionary):
|
||||||
assert isinstance(name, IDLUnresolvedIdentifier)
|
assert isinstance(name, IDLUnresolvedIdentifier)
|
||||||
|
|
||||||
|
|
@ -619,6 +639,15 @@ class IDLPartialDictionary(IDLObject):
|
||||||
|
|
||||||
|
|
||||||
class IDLPartialInterfaceOrNamespace(IDLObject):
|
class IDLPartialInterfaceOrNamespace(IDLObject):
|
||||||
|
__slots__ = (
|
||||||
|
"identifier",
|
||||||
|
"members",
|
||||||
|
"propagatedExtendedAttrs",
|
||||||
|
"_haveSecureContextExtendedAttribute",
|
||||||
|
"_nonPartialInterfaceOrNamespace",
|
||||||
|
"_finished",
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self, location, name, members, nonPartialInterfaceOrNamespace):
|
def __init__(self, location, name, members, nonPartialInterfaceOrNamespace):
|
||||||
assert isinstance(name, IDLUnresolvedIdentifier)
|
assert isinstance(name, IDLUnresolvedIdentifier)
|
||||||
|
|
||||||
|
|
@ -726,12 +755,22 @@ def globalNameSetToExposureSet(globalScope, nameSet, exposureSet):
|
||||||
# we use a special class to be able to store them both in the scope for the
|
# we use a special class to be able to store them both in the scope for the
|
||||||
# same identifier.
|
# same identifier.
|
||||||
class IDLOperations:
|
class IDLOperations:
|
||||||
|
__slots__ = "static", "regular"
|
||||||
|
|
||||||
def __init__(self, static=None, regular=None):
|
def __init__(self, static=None, regular=None):
|
||||||
self.static = static
|
self.static = static
|
||||||
self.regular = regular
|
self.regular = regular
|
||||||
|
|
||||||
|
|
||||||
class IDLInterfaceOrInterfaceMixinOrNamespace(IDLObjectWithScope, IDLExposureMixins):
|
class IDLInterfaceOrInterfaceMixinOrNamespace(IDLObjectWithScope, IDLExposureMixins):
|
||||||
|
__slots__ = (
|
||||||
|
"_finished",
|
||||||
|
"members",
|
||||||
|
"_partials",
|
||||||
|
"_extendedAttrDict",
|
||||||
|
"_isKnownNonPartial",
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self, location, parentScope, name):
|
def __init__(self, location, parentScope, name):
|
||||||
assert isinstance(parentScope, IDLScope)
|
assert isinstance(parentScope, IDLScope)
|
||||||
assert isinstance(name, IDLUnresolvedIdentifier)
|
assert isinstance(name, IDLUnresolvedIdentifier)
|
||||||
|
|
@ -897,10 +936,12 @@ class IDLInterfaceOrInterfaceMixinOrNamespace(IDLObjectWithScope, IDLExposureMix
|
||||||
|
|
||||||
|
|
||||||
class IDLInterfaceMixin(IDLInterfaceOrInterfaceMixinOrNamespace):
|
class IDLInterfaceMixin(IDLInterfaceOrInterfaceMixinOrNamespace):
|
||||||
|
__slots__ = ("actualExposureGlobalNames",)
|
||||||
|
|
||||||
def __init__(self, location, parentScope, name, members, isKnownNonPartial):
|
def __init__(self, location, parentScope, name, members, isKnownNonPartial):
|
||||||
self.actualExposureGlobalNames = set()
|
self.actualExposureGlobalNames = set()
|
||||||
|
|
||||||
assert isKnownNonPartial or len(members) == 0
|
assert isKnownNonPartial or not members
|
||||||
IDLInterfaceOrInterfaceMixinOrNamespace.__init__(
|
IDLInterfaceOrInterfaceMixinOrNamespace.__init__(
|
||||||
self, location, parentScope, name
|
self, location, parentScope, name
|
||||||
)
|
)
|
||||||
|
|
@ -1001,9 +1042,27 @@ class IDLInterfaceMixin(IDLInterfaceOrInterfaceMixinOrNamespace):
|
||||||
|
|
||||||
|
|
||||||
class IDLInterfaceOrNamespace(IDLInterfaceOrInterfaceMixinOrNamespace):
|
class IDLInterfaceOrNamespace(IDLInterfaceOrInterfaceMixinOrNamespace):
|
||||||
|
__slots__ = (
|
||||||
|
"parent",
|
||||||
|
"_callback",
|
||||||
|
"maplikeOrSetlikeOrIterable",
|
||||||
|
"legacyFactoryFunctions",
|
||||||
|
"legacyWindowAliases",
|
||||||
|
"includedMixins",
|
||||||
|
"interfacesBasedOnSelf",
|
||||||
|
"_hasChildInterfaces",
|
||||||
|
"_isOnGlobalProtoChain",
|
||||||
|
"totalMembersInSlots",
|
||||||
|
"_ownMembersInSlots",
|
||||||
|
"iterableInterface",
|
||||||
|
"asyncIterableInterface",
|
||||||
|
"hasCrossOriginMembers",
|
||||||
|
"hasDescendantWithCrossOriginMembers",
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self, location, parentScope, name, parent, members, isKnownNonPartial):
|
def __init__(self, location, parentScope, name, parent, members, isKnownNonPartial):
|
||||||
assert isKnownNonPartial or not parent
|
assert isKnownNonPartial or not parent
|
||||||
assert isKnownNonPartial or len(members) == 0
|
assert isKnownNonPartial or not members
|
||||||
|
|
||||||
self.parent = None
|
self.parent = None
|
||||||
self._callback = False
|
self._callback = False
|
||||||
|
|
@ -1011,13 +1070,13 @@ class IDLInterfaceOrNamespace(IDLInterfaceOrInterfaceMixinOrNamespace):
|
||||||
# legacyFactoryFunctions needs deterministic ordering because bindings code
|
# legacyFactoryFunctions needs deterministic ordering because bindings code
|
||||||
# outputs the constructs in the order that legacyFactoryFunctions enumerates
|
# outputs the constructs in the order that legacyFactoryFunctions enumerates
|
||||||
# them.
|
# them.
|
||||||
self.legacyFactoryFunctions = list()
|
self.legacyFactoryFunctions = []
|
||||||
self.legacyWindowAliases = []
|
self.legacyWindowAliases = []
|
||||||
self.includedMixins = set()
|
self.includedMixins = set()
|
||||||
# self.interfacesBasedOnSelf is the set of interfaces that inherit from
|
# self.interfacesBasedOnSelf is the set of interfaces that inherit from
|
||||||
# self, including self itself.
|
# self, including self itself.
|
||||||
# Used for distinguishability checking.
|
# Used for distinguishability checking.
|
||||||
self.interfacesBasedOnSelf = set([self])
|
self.interfacesBasedOnSelf = {self}
|
||||||
self._hasChildInterfaces = False
|
self._hasChildInterfaces = False
|
||||||
self._isOnGlobalProtoChain = False
|
self._isOnGlobalProtoChain = False
|
||||||
|
|
||||||
|
|
@ -1885,6 +1944,8 @@ class IDLInterfaceOrNamespace(IDLInterfaceOrInterfaceMixinOrNamespace):
|
||||||
|
|
||||||
|
|
||||||
class IDLInterface(IDLInterfaceOrNamespace):
|
class IDLInterface(IDLInterfaceOrNamespace):
|
||||||
|
__slots__ = ("classNameOverride",)
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
location,
|
location,
|
||||||
|
|
@ -2103,6 +2164,8 @@ class IDLInterface(IDLInterfaceOrNamespace):
|
||||||
|
|
||||||
|
|
||||||
class IDLNamespace(IDLInterfaceOrNamespace):
|
class IDLNamespace(IDLInterfaceOrNamespace):
|
||||||
|
__slots__ = ()
|
||||||
|
|
||||||
def __init__(self, location, parentScope, name, members, isKnownNonPartial):
|
def __init__(self, location, parentScope, name, members, isKnownNonPartial):
|
||||||
IDLInterfaceOrNamespace.__init__(
|
IDLInterfaceOrNamespace.__init__(
|
||||||
self, location, parentScope, name, None, members, isKnownNonPartial
|
self, location, parentScope, name, None, members, isKnownNonPartial
|
||||||
|
|
@ -2161,6 +2224,16 @@ class IDLNamespace(IDLInterfaceOrNamespace):
|
||||||
|
|
||||||
|
|
||||||
class IDLDictionary(IDLObjectWithScope):
|
class IDLDictionary(IDLObjectWithScope):
|
||||||
|
__slots__ = (
|
||||||
|
"parent",
|
||||||
|
"_finished",
|
||||||
|
"members",
|
||||||
|
"_partialDictionaries",
|
||||||
|
"_extendedAttrDict",
|
||||||
|
"needsConversionToJS",
|
||||||
|
"needsConversionFromJS",
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self, location, parentScope, name, parent, members):
|
def __init__(self, location, parentScope, name, parent, members):
|
||||||
assert isinstance(parentScope, IDLScope)
|
assert isinstance(parentScope, IDLScope)
|
||||||
assert isinstance(name, IDLUnresolvedIdentifier)
|
assert isinstance(name, IDLUnresolvedIdentifier)
|
||||||
|
|
@ -2388,6 +2461,8 @@ class IDLDictionary(IDLObjectWithScope):
|
||||||
|
|
||||||
|
|
||||||
class IDLEnum(IDLObjectWithIdentifier):
|
class IDLEnum(IDLObjectWithIdentifier):
|
||||||
|
__slots__ = ("_values",)
|
||||||
|
|
||||||
def __init__(self, location, parentScope, name, values):
|
def __init__(self, location, parentScope, name, values):
|
||||||
assert isinstance(parentScope, IDLScope)
|
assert isinstance(parentScope, IDLScope)
|
||||||
assert isinstance(name, IDLUnresolvedIdentifier)
|
assert isinstance(name, IDLUnresolvedIdentifier)
|
||||||
|
|
@ -2462,6 +2537,16 @@ class IDLType(IDLObject):
|
||||||
"observablearray",
|
"observablearray",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
__slots__ = (
|
||||||
|
"name",
|
||||||
|
"builtin",
|
||||||
|
"legacyNullToEmptyString",
|
||||||
|
"_clamp",
|
||||||
|
"_enforceRange",
|
||||||
|
"_allowShared",
|
||||||
|
"_extendedAttrDict",
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self, location, name):
|
def __init__(self, location, name):
|
||||||
IDLObject.__init__(self, location)
|
IDLObject.__init__(self, location)
|
||||||
self.name = name
|
self.name = name
|
||||||
|
|
@ -2662,6 +2747,8 @@ class IDLUnresolvedType(IDLType):
|
||||||
Unresolved types are interface types
|
Unresolved types are interface types
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
__slots__ = ("extraTypeAttributes",)
|
||||||
|
|
||||||
def __init__(self, location, name, attrs=[]):
|
def __init__(self, location, name, attrs=[]):
|
||||||
IDLType.__init__(self, location, name)
|
IDLType.__init__(self, location, name)
|
||||||
self.extraTypeAttributes = attrs
|
self.extraTypeAttributes = attrs
|
||||||
|
|
@ -2702,6 +2789,8 @@ class IDLUnresolvedType(IDLType):
|
||||||
|
|
||||||
|
|
||||||
class IDLParametrizedType(IDLType):
|
class IDLParametrizedType(IDLType):
|
||||||
|
__slots__ = "builtin", "inner"
|
||||||
|
|
||||||
def __init__(self, location, name, innerType):
|
def __init__(self, location, name, innerType):
|
||||||
IDLType.__init__(self, location, name)
|
IDLType.__init__(self, location, name)
|
||||||
self.builtin = False
|
self.builtin = False
|
||||||
|
|
@ -2725,6 +2814,8 @@ class IDLParametrizedType(IDLType):
|
||||||
|
|
||||||
|
|
||||||
class IDLNullableType(IDLParametrizedType):
|
class IDLNullableType(IDLParametrizedType):
|
||||||
|
__slots__ = ()
|
||||||
|
|
||||||
def __init__(self, location, innerType):
|
def __init__(self, location, innerType):
|
||||||
assert not innerType == BuiltinTypes[IDLBuiltinType.Types.any]
|
assert not innerType == BuiltinTypes[IDLBuiltinType.Types.any]
|
||||||
|
|
||||||
|
|
@ -2900,6 +2991,8 @@ class IDLNullableType(IDLParametrizedType):
|
||||||
|
|
||||||
|
|
||||||
class IDLSequenceType(IDLParametrizedType):
|
class IDLSequenceType(IDLParametrizedType):
|
||||||
|
__slots__ = ("name",)
|
||||||
|
|
||||||
def __init__(self, location, parameterType):
|
def __init__(self, location, parameterType):
|
||||||
assert not parameterType.isUndefined()
|
assert not parameterType.isUndefined()
|
||||||
|
|
||||||
|
|
@ -2960,6 +3053,8 @@ class IDLSequenceType(IDLParametrizedType):
|
||||||
|
|
||||||
|
|
||||||
class IDLRecordType(IDLParametrizedType):
|
class IDLRecordType(IDLParametrizedType):
|
||||||
|
__slots__ = "keyType", "name"
|
||||||
|
|
||||||
def __init__(self, location, keyType, valueType):
|
def __init__(self, location, keyType, valueType):
|
||||||
assert keyType.isString()
|
assert keyType.isString()
|
||||||
assert keyType.isComplete()
|
assert keyType.isComplete()
|
||||||
|
|
@ -3038,6 +3133,8 @@ class IDLRecordType(IDLParametrizedType):
|
||||||
|
|
||||||
|
|
||||||
class IDLObservableArrayType(IDLParametrizedType):
|
class IDLObservableArrayType(IDLParametrizedType):
|
||||||
|
__slots__ = ()
|
||||||
|
|
||||||
def __init__(self, location, innerType):
|
def __init__(self, location, innerType):
|
||||||
assert not innerType.isUndefined()
|
assert not innerType.isUndefined()
|
||||||
IDLParametrizedType.__init__(self, location, None, innerType)
|
IDLParametrizedType.__init__(self, location, None, innerType)
|
||||||
|
|
@ -3104,6 +3201,14 @@ class IDLObservableArrayType(IDLParametrizedType):
|
||||||
|
|
||||||
|
|
||||||
class IDLUnionType(IDLType):
|
class IDLUnionType(IDLType):
|
||||||
|
__slots__ = (
|
||||||
|
"memberTypes",
|
||||||
|
"hasNullableType",
|
||||||
|
"_dictionaryType",
|
||||||
|
"flatMemberTypes",
|
||||||
|
"builtin",
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self, location, memberTypes):
|
def __init__(self, location, memberTypes):
|
||||||
IDLType.__init__(self, location, "")
|
IDLType.__init__(self, location, "")
|
||||||
self.memberTypes = memberTypes
|
self.memberTypes = memberTypes
|
||||||
|
|
@ -3247,6 +3352,8 @@ class IDLUnionType(IDLType):
|
||||||
|
|
||||||
|
|
||||||
class IDLTypedefType(IDLType):
|
class IDLTypedefType(IDLType):
|
||||||
|
__slots__ = "inner", "builtin"
|
||||||
|
|
||||||
def __init__(self, location, innerType, name):
|
def __init__(self, location, innerType, name):
|
||||||
IDLType.__init__(self, location, name)
|
IDLType.__init__(self, location, name)
|
||||||
self.inner = innerType
|
self.inner = innerType
|
||||||
|
|
@ -3354,6 +3461,8 @@ class IDLTypedefType(IDLType):
|
||||||
|
|
||||||
|
|
||||||
class IDLTypedef(IDLObjectWithIdentifier):
|
class IDLTypedef(IDLObjectWithIdentifier):
|
||||||
|
__slots__ = ("innerType",)
|
||||||
|
|
||||||
def __init__(self, location, parentScope, innerType, name):
|
def __init__(self, location, parentScope, innerType, name):
|
||||||
# Set self.innerType first, because IDLObjectWithIdentifier.__init__
|
# Set self.innerType first, because IDLObjectWithIdentifier.__init__
|
||||||
# will call our __str__, which wants to use it.
|
# will call our __str__, which wants to use it.
|
||||||
|
|
@ -3386,6 +3495,8 @@ class IDLTypedef(IDLObjectWithIdentifier):
|
||||||
|
|
||||||
|
|
||||||
class IDLWrapperType(IDLType):
|
class IDLWrapperType(IDLType):
|
||||||
|
__slots__ = "inner", "_identifier", "builtin"
|
||||||
|
|
||||||
def __init__(self, location, inner):
|
def __init__(self, location, inner):
|
||||||
IDLType.__init__(self, location, inner.identifier.name)
|
IDLType.__init__(self, location, inner.identifier.name)
|
||||||
self.inner = inner
|
self.inner = inner
|
||||||
|
|
@ -3582,6 +3693,8 @@ class IDLWrapperType(IDLType):
|
||||||
|
|
||||||
|
|
||||||
class IDLPromiseType(IDLParametrizedType):
|
class IDLPromiseType(IDLParametrizedType):
|
||||||
|
__slots__ = ()
|
||||||
|
|
||||||
def __init__(self, location, innerType):
|
def __init__(self, location, innerType):
|
||||||
IDLParametrizedType.__init__(self, location, "Promise", innerType)
|
IDLParametrizedType.__init__(self, location, "Promise", innerType)
|
||||||
|
|
||||||
|
|
@ -3745,6 +3858,14 @@ class IDLBuiltinType(IDLType):
|
||||||
Types.Float64Array: "Float64Array",
|
Types.Float64Array: "Float64Array",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__slots__ = (
|
||||||
|
"_typeTag",
|
||||||
|
"_clamped",
|
||||||
|
"_rangeEnforced",
|
||||||
|
"_withLegacyNullToEmptyString",
|
||||||
|
"_withAllowShared",
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
location,
|
location,
|
||||||
|
|
@ -4242,6 +4363,11 @@ class NoCoercionFoundError(WebIDLError):
|
||||||
|
|
||||||
|
|
||||||
class IDLValue(IDLObject):
|
class IDLValue(IDLObject):
|
||||||
|
__slots__ = (
|
||||||
|
"type",
|
||||||
|
"value",
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self, location, type, value):
|
def __init__(self, location, type, value):
|
||||||
IDLObject.__init__(self, location)
|
IDLObject.__init__(self, location)
|
||||||
self.type = type
|
self.type = type
|
||||||
|
|
@ -4374,6 +4500,8 @@ class IDLValue(IDLObject):
|
||||||
|
|
||||||
|
|
||||||
class IDLNullValue(IDLObject):
|
class IDLNullValue(IDLObject):
|
||||||
|
__slots__ = "type", "value"
|
||||||
|
|
||||||
def __init__(self, location):
|
def __init__(self, location):
|
||||||
IDLObject.__init__(self, location)
|
IDLObject.__init__(self, location)
|
||||||
self.type = None
|
self.type = None
|
||||||
|
|
@ -4403,6 +4531,8 @@ class IDLNullValue(IDLObject):
|
||||||
|
|
||||||
|
|
||||||
class IDLEmptySequenceValue(IDLObject):
|
class IDLEmptySequenceValue(IDLObject):
|
||||||
|
__slots__ = "type", "value"
|
||||||
|
|
||||||
def __init__(self, location):
|
def __init__(self, location):
|
||||||
IDLObject.__init__(self, location)
|
IDLObject.__init__(self, location)
|
||||||
self.type = None
|
self.type = None
|
||||||
|
|
@ -4433,6 +4563,8 @@ class IDLEmptySequenceValue(IDLObject):
|
||||||
|
|
||||||
|
|
||||||
class IDLDefaultDictionaryValue(IDLObject):
|
class IDLDefaultDictionaryValue(IDLObject):
|
||||||
|
__slots__ = "type", "value"
|
||||||
|
|
||||||
def __init__(self, location):
|
def __init__(self, location):
|
||||||
IDLObject.__init__(self, location)
|
IDLObject.__init__(self, location)
|
||||||
self.type = None
|
self.type = None
|
||||||
|
|
@ -4463,6 +4595,8 @@ class IDLDefaultDictionaryValue(IDLObject):
|
||||||
|
|
||||||
|
|
||||||
class IDLUndefinedValue(IDLObject):
|
class IDLUndefinedValue(IDLObject):
|
||||||
|
__slots__ = "type", "value"
|
||||||
|
|
||||||
def __init__(self, location):
|
def __init__(self, location):
|
||||||
IDLObject.__init__(self, location)
|
IDLObject.__init__(self, location)
|
||||||
self.type = None
|
self.type = None
|
||||||
|
|
@ -4492,6 +4626,7 @@ class IDLInterfaceMember(IDLObjectWithIdentifier, IDLExposureMixins):
|
||||||
AffectsValues = ("Nothing", "Everything")
|
AffectsValues = ("Nothing", "Everything")
|
||||||
DependsOnValues = ("Nothing", "DOMState", "DeviceState", "Everything")
|
DependsOnValues = ("Nothing", "DOMState", "DeviceState", "Everything")
|
||||||
|
|
||||||
|
# no slots : multiple inheritance
|
||||||
def __init__(self, location, identifier, tag, extendedAttrDict=None):
|
def __init__(self, location, identifier, tag, extendedAttrDict=None):
|
||||||
IDLObjectWithIdentifier.__init__(self, location, None, identifier)
|
IDLObjectWithIdentifier.__init__(self, location, None, identifier)
|
||||||
IDLExposureMixins.__init__(self, location)
|
IDLExposureMixins.__init__(self, location)
|
||||||
|
|
@ -4611,6 +4746,14 @@ class IDLInterfaceMember(IDLObjectWithIdentifier, IDLExposureMixins):
|
||||||
|
|
||||||
|
|
||||||
class IDLMaplikeOrSetlikeOrIterableBase(IDLInterfaceMember):
|
class IDLMaplikeOrSetlikeOrIterableBase(IDLInterfaceMember):
|
||||||
|
__slots__ = (
|
||||||
|
"keyType",
|
||||||
|
"valueType",
|
||||||
|
"maplikeOrSetlikeOrIterableType",
|
||||||
|
"disallowedMemberNames",
|
||||||
|
"disallowedNonMethodNames",
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self, location, identifier, ifaceType, keyType, valueType, ifaceKind):
|
def __init__(self, location, identifier, ifaceType, keyType, valueType, ifaceKind):
|
||||||
IDLInterfaceMember.__init__(self, location, identifier, ifaceKind)
|
IDLInterfaceMember.__init__(self, location, identifier, ifaceKind)
|
||||||
if keyType is not None:
|
if keyType is not None:
|
||||||
|
|
@ -4827,6 +4970,8 @@ class IDLMaplikeOrSetlikeOrIterableBase(IDLInterfaceMember):
|
||||||
# Iterable adds ES6 iterator style functions and traits
|
# Iterable adds ES6 iterator style functions and traits
|
||||||
# (keys/values/entries/@@iterator) to an interface.
|
# (keys/values/entries/@@iterator) to an interface.
|
||||||
class IDLIterable(IDLMaplikeOrSetlikeOrIterableBase):
|
class IDLIterable(IDLMaplikeOrSetlikeOrIterableBase):
|
||||||
|
__slots__ = ("iteratorType",)
|
||||||
|
|
||||||
def __init__(self, location, identifier, keyType, valueType, scope):
|
def __init__(self, location, identifier, keyType, valueType, scope):
|
||||||
IDLMaplikeOrSetlikeOrIterableBase.__init__(
|
IDLMaplikeOrSetlikeOrIterableBase.__init__(
|
||||||
self,
|
self,
|
||||||
|
|
@ -4902,6 +5047,8 @@ class IDLIterable(IDLMaplikeOrSetlikeOrIterableBase):
|
||||||
|
|
||||||
|
|
||||||
class IDLAsyncIterable(IDLMaplikeOrSetlikeOrIterableBase):
|
class IDLAsyncIterable(IDLMaplikeOrSetlikeOrIterableBase):
|
||||||
|
__slots__ = "iteratorType", "argList"
|
||||||
|
|
||||||
def __init__(self, location, identifier, keyType, valueType, argList, scope):
|
def __init__(self, location, identifier, keyType, valueType, argList, scope):
|
||||||
for arg in argList:
|
for arg in argList:
|
||||||
if not arg.optional:
|
if not arg.optional:
|
||||||
|
|
@ -4986,6 +5133,8 @@ class IDLAsyncIterable(IDLMaplikeOrSetlikeOrIterableBase):
|
||||||
|
|
||||||
# MaplikeOrSetlike adds ES6 map-or-set-like traits to an interface.
|
# MaplikeOrSetlike adds ES6 map-or-set-like traits to an interface.
|
||||||
class IDLMaplikeOrSetlike(IDLMaplikeOrSetlikeOrIterableBase):
|
class IDLMaplikeOrSetlike(IDLMaplikeOrSetlikeOrIterableBase):
|
||||||
|
__slots__ = "readonly", "slotIndices", "prefix"
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self, location, identifier, maplikeOrSetlikeType, readonly, keyType, valueType
|
self, location, identifier, maplikeOrSetlikeType, readonly, keyType, valueType
|
||||||
):
|
):
|
||||||
|
|
@ -5153,6 +5302,8 @@ class IDLMaplikeOrSetlike(IDLMaplikeOrSetlikeOrIterableBase):
|
||||||
|
|
||||||
|
|
||||||
class IDLConst(IDLInterfaceMember):
|
class IDLConst(IDLInterfaceMember):
|
||||||
|
__slots__ = "type", "value"
|
||||||
|
|
||||||
def __init__(self, location, identifier, type, value):
|
def __init__(self, location, identifier, type, value):
|
||||||
IDLInterfaceMember.__init__(
|
IDLInterfaceMember.__init__(
|
||||||
self, location, identifier, IDLInterfaceMember.Tags.Const
|
self, location, identifier, IDLInterfaceMember.Tags.Const
|
||||||
|
|
@ -5225,6 +5376,21 @@ class IDLConst(IDLInterfaceMember):
|
||||||
|
|
||||||
|
|
||||||
class IDLAttribute(IDLInterfaceMember):
|
class IDLAttribute(IDLInterfaceMember):
|
||||||
|
__slots__ = (
|
||||||
|
"type",
|
||||||
|
"readonly",
|
||||||
|
"inherit",
|
||||||
|
"_static",
|
||||||
|
"legacyLenientThis",
|
||||||
|
"_legacyUnforgeable",
|
||||||
|
"stringifier",
|
||||||
|
"slotIndices",
|
||||||
|
"maplikeOrSetlike",
|
||||||
|
"dependsOn",
|
||||||
|
"affects",
|
||||||
|
"bindingAliases",
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
location,
|
location,
|
||||||
|
|
@ -5827,6 +5993,18 @@ class IDLAttribute(IDLInterfaceMember):
|
||||||
|
|
||||||
|
|
||||||
class IDLArgument(IDLObjectWithIdentifier):
|
class IDLArgument(IDLObjectWithIdentifier):
|
||||||
|
__slots__ = (
|
||||||
|
"type",
|
||||||
|
"optional",
|
||||||
|
"defaultValue",
|
||||||
|
"variadic",
|
||||||
|
"dictionaryMember",
|
||||||
|
"_isComplete",
|
||||||
|
"_allowTreatNonCallableAsNull",
|
||||||
|
"_extendedAttrDict",
|
||||||
|
"allowTypeAttributes",
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
location,
|
location,
|
||||||
|
|
@ -5970,6 +6148,15 @@ class IDLArgument(IDLObjectWithIdentifier):
|
||||||
|
|
||||||
|
|
||||||
class IDLCallback(IDLObjectWithScope):
|
class IDLCallback(IDLObjectWithScope):
|
||||||
|
__slots__ = (
|
||||||
|
"_returnType",
|
||||||
|
"_arguments",
|
||||||
|
"_treatNonCallableAsNull",
|
||||||
|
"_treatNonObjectAsNull",
|
||||||
|
"_isRunScriptBoundary",
|
||||||
|
"_isConstructor",
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self, location, parentScope, identifier, returnType, arguments, isConstructor
|
self, location, parentScope, identifier, returnType, arguments, isConstructor
|
||||||
):
|
):
|
||||||
|
|
@ -6067,6 +6254,8 @@ class IDLCallback(IDLObjectWithScope):
|
||||||
|
|
||||||
|
|
||||||
class IDLCallbackType(IDLType):
|
class IDLCallbackType(IDLType):
|
||||||
|
__slots__ = ("callback",)
|
||||||
|
|
||||||
def __init__(self, location, callback):
|
def __init__(self, location, callback):
|
||||||
IDLType.__init__(self, location, callback.identifier.name)
|
IDLType.__init__(self, location, callback.identifier.name)
|
||||||
self.callback = callback
|
self.callback = callback
|
||||||
|
|
@ -6109,6 +6298,8 @@ class IDLMethodOverload:
|
||||||
the full set of overloads.
|
the full set of overloads.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
__slots__ = "returnType", "arguments", "location"
|
||||||
|
|
||||||
def __init__(self, returnType, arguments, location):
|
def __init__(self, returnType, arguments, location):
|
||||||
self.returnType = returnType
|
self.returnType = returnType
|
||||||
# Clone the list of arguments, just in case
|
# Clone the list of arguments, just in case
|
||||||
|
|
@ -6131,6 +6322,25 @@ class IDLMethod(IDLInterfaceMember, IDLScope):
|
||||||
|
|
||||||
NamedOrIndexed = enum("Neither", "Named", "Indexed")
|
NamedOrIndexed = enum("Neither", "Named", "Indexed")
|
||||||
|
|
||||||
|
__slots__ = (
|
||||||
|
"_hasOverloads",
|
||||||
|
"_overloads",
|
||||||
|
"_static",
|
||||||
|
"_getter",
|
||||||
|
"_setter",
|
||||||
|
"_deleter",
|
||||||
|
"_legacycaller",
|
||||||
|
"_stringifier",
|
||||||
|
"maplikeOrSetlikeOrIterable",
|
||||||
|
"_htmlConstructor",
|
||||||
|
"underlyingAttr",
|
||||||
|
"_specialType",
|
||||||
|
"_legacyUnforgeable",
|
||||||
|
"dependsOn",
|
||||||
|
"affects",
|
||||||
|
"aliases",
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
location,
|
location,
|
||||||
|
|
@ -6797,6 +7007,14 @@ class IDLMethod(IDLInterfaceMember, IDLScope):
|
||||||
|
|
||||||
|
|
||||||
class IDLConstructor(IDLMethod):
|
class IDLConstructor(IDLMethod):
|
||||||
|
__slots__ = (
|
||||||
|
"_initLocation",
|
||||||
|
"_initArgs",
|
||||||
|
"_initName",
|
||||||
|
"_inited",
|
||||||
|
"_initExtendedAttrs",
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self, location, args, name):
|
def __init__(self, location, args, name):
|
||||||
# We can't actually init our IDLMethod yet, because we do not know the
|
# We can't actually init our IDLMethod yet, because we do not know the
|
||||||
# return type yet. Just save the info we have for now and we will init
|
# return type yet. Just save the info we have for now and we will init
|
||||||
|
|
@ -6866,6 +7084,8 @@ class IDLConstructor(IDLMethod):
|
||||||
|
|
||||||
|
|
||||||
class IDLIncludesStatement(IDLObject):
|
class IDLIncludesStatement(IDLObject):
|
||||||
|
__slots__ = ("interface", "mixin", "_finished")
|
||||||
|
|
||||||
def __init__(self, location, interface, mixin):
|
def __init__(self, location, interface, mixin):
|
||||||
IDLObject.__init__(self, location)
|
IDLObject.__init__(self, location)
|
||||||
self.interface = interface
|
self.interface = interface
|
||||||
|
|
@ -6922,6 +7142,8 @@ class IDLExtendedAttribute(IDLObject):
|
||||||
A class to represent IDL extended attributes so we can give them locations
|
A class to represent IDL extended attributes so we can give them locations
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
__slots__ = ("_tuple",)
|
||||||
|
|
||||||
def __init__(self, location, tuple):
|
def __init__(self, location, tuple):
|
||||||
IDLObject.__init__(self, location)
|
IDLObject.__init__(self, location)
|
||||||
self._tuple = tuple
|
self._tuple = tuple
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue