mirror of
https://github.com/servo/servo.git
synced 2025-07-23 15:23:42 +01:00
Remove all our local patches to the WebIDL parser
All the tweaks we need can just be made through Configuration.py, and [Abstract] is being submitted upstream by Ms2ger.
This commit is contained in:
parent
432087c0ea
commit
06947965b1
6 changed files with 56 additions and 89 deletions
|
@ -23,6 +23,7 @@ from WebIDL import (
|
||||||
|
|
||||||
from Configuration import (
|
from Configuration import (
|
||||||
MemberIsUnforgeable,
|
MemberIsUnforgeable,
|
||||||
|
getModuleFromObject,
|
||||||
getTypesFromCallback,
|
getTypesFromCallback,
|
||||||
getTypesFromDescriptor,
|
getTypesFromDescriptor,
|
||||||
getTypesFromDictionary,
|
getTypesFromDictionary,
|
||||||
|
@ -920,7 +921,7 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None,
|
||||||
assert not type.treatNonObjectAsNull() or not type.treatNonCallableAsNull()
|
assert not type.treatNonObjectAsNull() or not type.treatNonCallableAsNull()
|
||||||
|
|
||||||
callback = type.unroll().callback
|
callback = type.unroll().callback
|
||||||
declType = CGGeneric('%s::%s' % (callback.module(), callback.identifier.name))
|
declType = CGGeneric('%s::%s' % (getModuleFromObject(callback), callback.identifier.name))
|
||||||
finalDeclType = CGTemplatedType("Rc", declType)
|
finalDeclType = CGTemplatedType("Rc", declType)
|
||||||
|
|
||||||
conversion = CGCallbackTempRoot(declType.define())
|
conversion = CGCallbackTempRoot(declType.define())
|
||||||
|
@ -1281,7 +1282,7 @@ def getRetvalDeclarationForType(returnType, descriptorProvider):
|
||||||
return result
|
return result
|
||||||
if returnType.isCallback():
|
if returnType.isCallback():
|
||||||
callback = returnType.unroll().callback
|
callback = returnType.unroll().callback
|
||||||
result = CGGeneric('Rc<%s::%s>' % (callback.module(), callback.identifier.name))
|
result = CGGeneric('Rc<%s::%s>' % (getModuleFromObject(callback), callback.identifier.name))
|
||||||
if returnType.nullable():
|
if returnType.nullable():
|
||||||
result = CGWrapper(result, pre="Option<", post=">")
|
result = CGWrapper(result, pre="Option<", post=">")
|
||||||
return result
|
return result
|
||||||
|
@ -5157,7 +5158,7 @@ class CGDictionary(CGThing):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def makeModuleName(dictionary):
|
def makeModuleName(dictionary):
|
||||||
return dictionary.module()
|
return getModuleFromObject(dictionary)
|
||||||
|
|
||||||
def getMemberType(self, memberInfo):
|
def getMemberType(self, memberInfo):
|
||||||
member, info = memberInfo
|
member, info = memberInfo
|
||||||
|
@ -6056,8 +6057,8 @@ class GlobalGenRoots():
|
||||||
def Bindings(config):
|
def Bindings(config):
|
||||||
|
|
||||||
descriptors = (set(d.name + "Binding" for d in config.getDescriptors(register=True)) |
|
descriptors = (set(d.name + "Binding" for d in config.getDescriptors(register=True)) |
|
||||||
set(d.module() for d in config.callbacks) |
|
set(getModuleFromObject(d) for d in config.callbacks) |
|
||||||
set(d.module() for d in config.getDictionaries()))
|
set(getModuleFromObject(d) for d in config.getDictionaries()))
|
||||||
curr = CGList([CGGeneric("pub mod %s;\n" % name) for name in sorted(descriptors)])
|
curr = CGList([CGGeneric("pub mod %s;\n" % name) for name in sorted(descriptors)])
|
||||||
curr = CGWrapper(curr, pre=AUTOGENERATED_WARNING_COMMENT)
|
curr = CGWrapper(curr, pre=AUTOGENERATED_WARNING_COMMENT)
|
||||||
return curr
|
return curr
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
from WebIDL import IDLInterface
|
from WebIDL import IDLExternalInterface, IDLInterface, WebIDLError
|
||||||
|
|
||||||
|
|
||||||
class Configuration:
|
class Configuration:
|
||||||
|
@ -23,6 +23,11 @@ class Configuration:
|
||||||
self.interfaces = {}
|
self.interfaces = {}
|
||||||
self.maxProtoChainLength = 0
|
self.maxProtoChainLength = 0
|
||||||
for thing in parseData:
|
for thing in parseData:
|
||||||
|
# Servo does not support external interfaces.
|
||||||
|
if isinstance(thing, IDLExternalInterface):
|
||||||
|
raise WebIDLError("Servo does not support external interfaces.",
|
||||||
|
[thing.location])
|
||||||
|
|
||||||
# Some toplevel things are sadly types, and those have an
|
# Some toplevel things are sadly types, and those have an
|
||||||
# isInterface that doesn't mean the same thing as IDLObject's
|
# isInterface that doesn't mean the same thing as IDLObject's
|
||||||
# isInterface()...
|
# isInterface()...
|
||||||
|
@ -345,6 +350,10 @@ class Descriptor(DescriptorProvider):
|
||||||
|
|
||||||
|
|
||||||
# Some utility methods
|
# Some utility methods
|
||||||
|
def getModuleFromObject(object):
|
||||||
|
return object.location.filename().split('/')[-1].split('.webidl')[0] + 'Binding'
|
||||||
|
|
||||||
|
|
||||||
def getTypesFromDescriptor(descriptor):
|
def getTypesFromDescriptor(descriptor):
|
||||||
"""
|
"""
|
||||||
Get all argument and return types for all members of the descriptor
|
Get all argument and return types for all members of the descriptor
|
||||||
|
|
|
@ -526,8 +526,46 @@ class IDLExposureMixins():
|
||||||
|
|
||||||
class IDLExternalInterface(IDLObjectWithIdentifier, IDLExposureMixins):
|
class IDLExternalInterface(IDLObjectWithIdentifier, IDLExposureMixins):
|
||||||
def __init__(self, location, parentScope, identifier):
|
def __init__(self, location, parentScope, identifier):
|
||||||
raise WebIDLError("Servo does not support external interfaces.",
|
assert isinstance(identifier, IDLUnresolvedIdentifier)
|
||||||
[self.location])
|
assert isinstance(parentScope, IDLScope)
|
||||||
|
self.parent = None
|
||||||
|
IDLObjectWithIdentifier.__init__(self, location, parentScope, identifier)
|
||||||
|
IDLExposureMixins.__init__(self, location)
|
||||||
|
IDLObjectWithIdentifier.resolve(self, parentScope)
|
||||||
|
|
||||||
|
def finish(self, scope):
|
||||||
|
IDLExposureMixins.finish(self, scope)
|
||||||
|
pass
|
||||||
|
|
||||||
|
def validate(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def isExternal(self):
|
||||||
|
return True
|
||||||
|
|
||||||
|
def isInterface(self):
|
||||||
|
return True
|
||||||
|
|
||||||
|
def isConsequential(self):
|
||||||
|
return False
|
||||||
|
|
||||||
|
def addExtendedAttributes(self, attrs):
|
||||||
|
assert len(attrs) == 0
|
||||||
|
|
||||||
|
def resolve(self, parentScope):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def getJSImplementation(self):
|
||||||
|
return None
|
||||||
|
|
||||||
|
def isJSImplemented(self):
|
||||||
|
return False
|
||||||
|
|
||||||
|
def getNavigatorProperty(self):
|
||||||
|
return None
|
||||||
|
|
||||||
|
def _getDependentObjects(self):
|
||||||
|
return set()
|
||||||
|
|
||||||
|
|
||||||
class IDLPartialInterface(IDLObject):
|
class IDLPartialInterface(IDLObject):
|
||||||
|
@ -1643,9 +1681,6 @@ class IDLDictionary(IDLObjectWithScope):
|
||||||
self.identifier.name,
|
self.identifier.name,
|
||||||
[member.location] + locations)
|
[member.location] + locations)
|
||||||
|
|
||||||
def module(self):
|
|
||||||
return self.location.filename().split('/')[-1].split('.webidl')[0] + 'Binding'
|
|
||||||
|
|
||||||
def addExtendedAttributes(self, attrs):
|
def addExtendedAttributes(self, attrs):
|
||||||
assert len(attrs) == 0
|
assert len(attrs) == 0
|
||||||
|
|
||||||
|
@ -4157,9 +4192,6 @@ class IDLCallback(IDLObjectWithScope):
|
||||||
self._treatNonCallableAsNull = False
|
self._treatNonCallableAsNull = False
|
||||||
self._treatNonObjectAsNull = False
|
self._treatNonObjectAsNull = False
|
||||||
|
|
||||||
def module(self):
|
|
||||||
return self.location.filename().split('/')[-1].split('.webidl')[0] + 'Binding'
|
|
||||||
|
|
||||||
def isCallback(self):
|
def isCallback(self):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
|
@ -1,51 +0,0 @@
|
||||||
--- WebIDL.py
|
|
||||||
+++ WebIDL.py
|
|
||||||
@@ -505,46 +505,8 @@ class IDLExposureMixins():
|
|
||||||
|
|
||||||
class IDLExternalInterface(IDLObjectWithIdentifier, IDLExposureMixins):
|
|
||||||
def __init__(self, location, parentScope, identifier):
|
|
||||||
- assert isinstance(identifier, IDLUnresolvedIdentifier)
|
|
||||||
- assert isinstance(parentScope, IDLScope)
|
|
||||||
- self.parent = None
|
|
||||||
- IDLObjectWithIdentifier.__init__(self, location, parentScope, identifier)
|
|
||||||
- IDLExposureMixins.__init__(self, location)
|
|
||||||
- IDLObjectWithIdentifier.resolve(self, parentScope)
|
|
||||||
-
|
|
||||||
- def finish(self, scope):
|
|
||||||
- IDLExposureMixins.finish(self, scope)
|
|
||||||
- pass
|
|
||||||
-
|
|
||||||
- def validate(self):
|
|
||||||
- pass
|
|
||||||
-
|
|
||||||
- def isExternal(self):
|
|
||||||
- return True
|
|
||||||
-
|
|
||||||
- def isInterface(self):
|
|
||||||
- return True
|
|
||||||
-
|
|
||||||
- def isConsequential(self):
|
|
||||||
- return False
|
|
||||||
-
|
|
||||||
- def addExtendedAttributes(self, attrs):
|
|
||||||
- assert len(attrs) == 0
|
|
||||||
-
|
|
||||||
- def resolve(self, parentScope):
|
|
||||||
- pass
|
|
||||||
-
|
|
||||||
- def getJSImplementation(self):
|
|
||||||
- return None
|
|
||||||
-
|
|
||||||
- def isJSImplemented(self):
|
|
||||||
- return False
|
|
||||||
-
|
|
||||||
- def getNavigatorProperty(self):
|
|
||||||
- return None
|
|
||||||
-
|
|
||||||
- def _getDependentObjects(self):
|
|
||||||
- return set()
|
|
||||||
+ raise WebIDLError("Servo does not support external interfaces.",
|
|
||||||
+ [self.location])
|
|
||||||
|
|
||||||
class IDLPartialInterface(IDLObject):
|
|
||||||
def __init__(self, location, name, members, nonPartialInterface):
|
|
|
@ -1,22 +0,0 @@
|
||||||
--- WebIDL.py
|
|
||||||
+++ WebIDL.py
|
|
||||||
@@ -1506,6 +1506,9 @@ class IDLDictionary(IDLObjectWithScope):
|
|
||||||
self.identifier.name,
|
|
||||||
[member.location] + locations)
|
|
||||||
|
|
||||||
+ def module(self):
|
|
||||||
+ return self.location.filename().split('/')[-1].split('.webidl')[0] + 'Binding'
|
|
||||||
+
|
|
||||||
def addExtendedAttributes(self, attrs):
|
|
||||||
assert len(attrs) == 0
|
|
||||||
|
|
||||||
@@ -3574,6 +3577,9 @@ class IDLCallbackType(IDLType, IDLObjectWithScope):
|
|
||||||
self._treatNonCallableAsNull = False
|
|
||||||
self._treatNonObjectAsNull = False
|
|
||||||
|
|
||||||
+ def module(self):
|
|
||||||
+ return self.location.filename().split('/')[-1].split('.webidl')[0] + 'Binding'
|
|
||||||
+
|
|
||||||
def isCallback(self):
|
|
||||||
return True
|
|
||||||
|
|
|
@ -1,4 +1,2 @@
|
||||||
wget https://mxr.mozilla.org/mozilla-central/source/dom/bindings/parser/WebIDL.py?raw=1 -O WebIDL.py
|
wget https://mxr.mozilla.org/mozilla-central/source/dom/bindings/parser/WebIDL.py?raw=1 -O WebIDL.py
|
||||||
patch < external.patch
|
|
||||||
patch < module.patch
|
|
||||||
patch < abstract.patch
|
patch < abstract.patch
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue