mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
Make callers of ${Derived}::${base}()
use casts instead.
This commit is contained in:
parent
431644bfc8
commit
3681628936
1 changed files with 9 additions and 3 deletions
|
@ -5185,7 +5185,8 @@ class GlobalGenRoots():
|
||||||
CGGeneric("use dom::bindings::js::{JS, JSRef, Temporary};\n"),
|
CGGeneric("use dom::bindings::js::{JS, JSRef, Temporary};\n"),
|
||||||
CGGeneric("use dom::bindings::trace::JSTraceable;\n"),
|
CGGeneric("use dom::bindings::trace::JSTraceable;\n"),
|
||||||
CGGeneric("use dom::bindings::utils::Reflectable;\n"),
|
CGGeneric("use dom::bindings::utils::Reflectable;\n"),
|
||||||
CGGeneric("use js::jsapi::JSTracer;\n\n")]
|
CGGeneric("use js::jsapi::JSTracer;\n\n"),
|
||||||
|
CGGeneric("use std::mem;\n\n")]
|
||||||
for descriptor in descriptors:
|
for descriptor in descriptors:
|
||||||
name = descriptor.name
|
name = descriptor.name
|
||||||
protos = [CGGeneric('pub trait %s {}\n' % (name + 'Base'))]
|
protos = [CGGeneric('pub trait %s {}\n' % (name + 'Base'))]
|
||||||
|
@ -5199,13 +5200,13 @@ class GlobalGenRoots():
|
||||||
delegate = string.Template('''impl ${selfName} for ${baseName} {
|
delegate = string.Template('''impl ${selfName} for ${baseName} {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn ${fname}(&self) -> bool {
|
fn ${fname}(&self) -> bool {
|
||||||
self.${parentName}().${fname}()
|
${parentName}Cast::from_actual(self).${fname}()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
''').substitute({'fname': 'is_' + name.lower(),
|
''').substitute({'fname': 'is_' + name.lower(),
|
||||||
'selfName': name + 'Derived',
|
'selfName': name + 'Derived',
|
||||||
'baseName': protoDescriptor.concreteType,
|
'baseName': protoDescriptor.concreteType,
|
||||||
'parentName': protoDescriptor.prototypeChain[-2].lower()})
|
'parentName': protoDescriptor.prototypeChain[-2]})
|
||||||
derived += [CGGeneric(delegate)]
|
derived += [CGGeneric(delegate)]
|
||||||
derived += [CGGeneric('\n')]
|
derived += [CGGeneric('\n')]
|
||||||
|
|
||||||
|
@ -5251,6 +5252,11 @@ class GlobalGenRoots():
|
||||||
fn from_temporary<T: ${fromBound}+Reflectable>(derived: Temporary<T>) -> Temporary<Self> {
|
fn from_temporary<T: ${fromBound}+Reflectable>(derived: Temporary<T>) -> Temporary<Self> {
|
||||||
unsafe { derived.transmute() }
|
unsafe { derived.transmute() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline(always)]
|
||||||
|
fn from_actual<'a, T: ${fromBound}+Reflectable>(derived: &T) -> &'a Self {
|
||||||
|
unsafe { mem::transmute(derived) }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
''').substitute({'checkFn': 'is_' + name.lower(),
|
''').substitute({'checkFn': 'is_' + name.lower(),
|
||||||
'castTraitName': name + 'Cast',
|
'castTraitName': name + 'Cast',
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue