aboutsummaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-02-15 17:18:48 -0700
committerbors-servo <metajack+bors@gmail.com>2015-02-15 17:18:48 -0700
commitec42c01fba1188ef965ce9cbce59b22767c3c2fd (patch)
treeb3cfd08c41ccb5d897b853edc562f164dbe28955 /components
parent05db1a449908152495523b11b280acca338bb320 (diff)
parent0e11178d663c44baaf5bde9b9470ad6ac142d5a7 (diff)
downloadservo-ec42c01fba1188ef965ce9cbce59b22767c3c2fd.tar.gz
servo-ec42c01fba1188ef965ce9cbce59b22767c3c2fd.zip
auto merge of #4936 : Ms2ger/servo/InheritTypes, r=Manishearth
Diffstat (limited to 'components')
-rw-r--r--components/script/dom/bindings/codegen/CodegenRust.py26
1 files changed, 13 insertions, 13 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py
index 46731cf9824..1fdf13f5fe7 100644
--- a/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/components/script/dom/bindings/codegen/CodegenRust.py
@@ -5242,10 +5242,10 @@ class GlobalGenRoots():
impl ${selfName} for ${baseName} {
#[inline]
fn ${fname}(&self) -> bool {
-let base: &${parentName} = ${parentName}Cast::from_actual(self);
+ let base: &${parentName} = ${parentName}Cast::from_actual(self);
base.${fname}()
}
-}\
+}
""").substitute({'fname': 'is_' + name.lower(),
'selfName': name + 'Derived',
'baseName': protoDescriptor.concreteType,
@@ -5254,9 +5254,10 @@ let base: &${parentName} = ${parentName}Cast::from_actual(self);
derived += [CGGeneric('\n')]
cast = [CGGeneric(string.Template("""\
-pub trait ${castTraitName} : Sized {
+pub struct ${name}Cast;
+impl ${name}Cast {
#[inline(always)]
- fn to_ref<'a, T: ${toBound}+Reflectable>(base: JSRef<'a, T>) -> Option<JSRef<'a, Self>> {
+ pub fn to_ref<'a, T: ${toBound}+Reflectable>(base: JSRef<'a, T>) -> Option<JSRef<'a, ${name}>> {
match base.${checkFn}() {
true => unsafe { Some(base.transmute()) },
false => None
@@ -5264,7 +5265,7 @@ pub trait ${castTraitName} : Sized {
}
#[inline(always)]
- fn to_borrowed_ref<'a, 'b, T: ${toBound}+Reflectable>(base: &'a JSRef<'b, T>) -> Option<&'a JSRef<'b, Self>> {
+ pub fn to_borrowed_ref<'a, 'b, T: ${toBound}+Reflectable>(base: &'a JSRef<'b, T>) -> Option<&'a JSRef<'b, ${name}>> {
match base.${checkFn}() {
true => unsafe { Some(base.transmute_borrowed()) },
false => None
@@ -5273,7 +5274,7 @@ pub trait ${castTraitName} : Sized {
#[inline(always)]
#[allow(unrooted_must_root)]
- fn to_layout_js<T: ${toBound}+Reflectable>(base: &LayoutJS<T>) -> Option<LayoutJS<Self>> {
+ pub fn to_layout_js<T: ${toBound}+Reflectable>(base: &LayoutJS<T>) -> Option<LayoutJS<${name}>> {
unsafe {
match (*base.unsafe_get()).${checkFn}() {
true => Some(base.transmute_copy()),
@@ -5283,30 +5284,29 @@ pub trait ${castTraitName} : Sized {
}
#[inline(always)]
- fn from_ref<'a, T: ${fromBound}+Reflectable>(derived: JSRef<'a, T>) -> JSRef<'a, Self> {
+ pub fn from_ref<'a, T: ${fromBound}+Reflectable>(derived: JSRef<'a, T>) -> JSRef<'a, ${name}> {
unsafe { derived.transmute() }
}
#[inline(always)]
- fn from_borrowed_ref<'a, 'b, T: ${fromBound}+Reflectable>(derived: &'a JSRef<'b, T>) -> &'a JSRef<'b, Self> {
+ pub fn from_borrowed_ref<'a, 'b, T: ${fromBound}+Reflectable>(derived: &'a JSRef<'b, T>) -> &'a JSRef<'b, ${name}> {
unsafe { derived.transmute_borrowed() }
}
#[inline(always)]
- fn from_temporary<T: ${fromBound}+Reflectable>(derived: Temporary<T>) -> Temporary<Self> {
+ pub fn from_temporary<T: ${fromBound}+Reflectable>(derived: Temporary<T>) -> Temporary<${name}> {
unsafe { derived.transmute() }
}
#[inline(always)]
- fn from_actual<'a, T: ${fromBound}+Reflectable>(derived: &T) -> &'a Self {
+ pub fn from_actual<'a, T: ${fromBound}+Reflectable>(derived: &T) -> &'a ${name} {
unsafe { mem::transmute(derived) }
}
}
""").substitute({'checkFn': 'is_' + name.lower(),
- 'castTraitName': name + 'Cast',
+ 'name': name,
'fromBound': name + 'Base',
- 'toBound': name + 'Derived'})),
- CGGeneric("impl %s for %s {}\n\n" % (name + 'Cast', name))]
+ 'toBound': name + 'Derived'}))]
allprotos += protos + derived + cast