mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Remove support for non-castable arguments.
This commit is contained in:
parent
7bfb15ec62
commit
a4fc6961a8
3 changed files with 16 additions and 46 deletions
|
@ -93,7 +93,6 @@ class CastableObjectUnwrapper():
|
||||||
codeOnFailure is the code to run if unwrapping fails.
|
codeOnFailure is the code to run if unwrapping fails.
|
||||||
"""
|
"""
|
||||||
def __init__(self, descriptor, source, target, codeOnFailure, isOptional=False):
|
def __init__(self, descriptor, source, target, codeOnFailure, isOptional=False):
|
||||||
assert descriptor.castable
|
|
||||||
self.substitution = { "type" : descriptor.nativeType,
|
self.substitution = { "type" : descriptor.nativeType,
|
||||||
"depth": descriptor.interface.inheritanceDepth(),
|
"depth": descriptor.interface.inheritanceDepth(),
|
||||||
"prototype": "PrototypeList::id::" + descriptor.name,
|
"prototype": "PrototypeList::id::" + descriptor.name,
|
||||||
|
@ -383,7 +382,6 @@ class CGMethodCall(CGThing):
|
||||||
|
|
||||||
class FakeCastableDescriptor():
|
class FakeCastableDescriptor():
|
||||||
def __init__(self, descriptor):
|
def __init__(self, descriptor):
|
||||||
self.castable = True
|
|
||||||
self.nativeType = "*%s" % descriptor.concreteType
|
self.nativeType = "*%s" % descriptor.concreteType
|
||||||
self.name = descriptor.name
|
self.name = descriptor.name
|
||||||
class FakeInterface:
|
class FakeInterface:
|
||||||
|
@ -630,11 +628,10 @@ def getJSToNativeConversionTemplate(type, descriptorProvider, failureCode=None,
|
||||||
typePtr = descriptor.nativeType
|
typePtr = descriptor.nativeType
|
||||||
|
|
||||||
templateBody = ""
|
templateBody = ""
|
||||||
if descriptor.castable:
|
|
||||||
if descriptor.interface.isConsequential():
|
if descriptor.interface.isConsequential():
|
||||||
raise TypeError("Consequential interface %s being used as an "
|
raise TypeError("Consequential interface %s being used as an "
|
||||||
"argument but flagged as castable" %
|
"argument" % descriptor.interface.identifier.name)
|
||||||
descriptor.interface.identifier.name)
|
|
||||||
if failureCode is not None:
|
if failureCode is not None:
|
||||||
templateBody += str(CastableObjectUnwrapper(
|
templateBody += str(CastableObjectUnwrapper(
|
||||||
descriptor,
|
descriptor,
|
||||||
|
@ -648,17 +645,6 @@ def getJSToNativeConversionTemplate(type, descriptorProvider, failureCode=None,
|
||||||
"(${val}).to_object()",
|
"(${val}).to_object()",
|
||||||
"${declName}",
|
"${declName}",
|
||||||
isOptional or type.nullable()))
|
isOptional or type.nullable()))
|
||||||
else:
|
|
||||||
templateBody += (
|
|
||||||
"match unwrap_value::<" + typePtr + ">(&${val} as *JSVal, "
|
|
||||||
"PrototypeList::id::%s, %d) {\n" % (descriptor.name, descriptor.interface.inheritanceDepth() if descriptor.concrete else 0) +
|
|
||||||
" Err(()) => {")
|
|
||||||
templateBody += CGIndenter(onFailureBadType(failureCode,
|
|
||||||
descriptor.interface.identifier.name)).define()
|
|
||||||
templateBody += (
|
|
||||||
" }\n"
|
|
||||||
" Ok(unwrapped) => ${declName} = Some(unwrapped)\n"
|
|
||||||
"}\n")
|
|
||||||
|
|
||||||
templateBody = wrapObjectTemplate(templateBody, isDefinitelyObject,
|
templateBody = wrapObjectTemplate(templateBody, isDefinitelyObject,
|
||||||
type, failureCode)
|
type, failureCode)
|
||||||
|
|
|
@ -137,15 +137,6 @@ class Descriptor(DescriptorProvider):
|
||||||
self.concreteType = desc.get('concreteType', ifaceName)
|
self.concreteType = desc.get('concreteType', ifaceName)
|
||||||
self.needsAbstract = desc.get('needsAbstract', [])
|
self.needsAbstract = desc.get('needsAbstract', [])
|
||||||
self.createGlobal = desc.get('createGlobal', False)
|
self.createGlobal = desc.get('createGlobal', False)
|
||||||
|
|
||||||
if self.interface.isCallback():
|
|
||||||
if 'castable' in desc:
|
|
||||||
raise TypeError("%s is callback but has a castable "
|
|
||||||
"setting" % self.interface.identifier.name)
|
|
||||||
self.castable = False
|
|
||||||
else:
|
|
||||||
self.castable = desc.get('castable', True)
|
|
||||||
|
|
||||||
self.register = desc.get('register', True)
|
self.register = desc.get('register', True)
|
||||||
|
|
||||||
# If we're concrete, we need to crawl our ancestor interfaces and mark
|
# If we're concrete, we need to crawl our ancestor interfaces and mark
|
||||||
|
|
|
@ -128,13 +128,6 @@ pub fn unwrap_jsmanaged<T: Reflectable>(obj: *JSObject,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn unwrap_value<T>(val: *JSVal, proto_id: PrototypeList::id::ID, proto_depth: uint) -> Result<T, ()> {
|
|
||||||
unsafe {
|
|
||||||
let obj = (*val).to_object();
|
|
||||||
unwrap_object(obj, proto_id, proto_depth)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub unsafe fn squirrel_away_unique<T>(x: ~T) -> *T {
|
pub unsafe fn squirrel_away_unique<T>(x: ~T) -> *T {
|
||||||
cast::transmute(x)
|
cast::transmute(x)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue