From c54e79b2f23bf2ee2f8200e8322e3055307ba612 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Sun, 15 Feb 2015 22:37:59 +0100 Subject: [PATCH 1/2] Fix indentation in InheritTypes. --- components/script/dom/bindings/codegen/CodegenRust.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 46731cf9824..18688bde9d5 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, From 0e11178d663c44baaf5bde9b9470ad6ac142d5a7 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Mon, 16 Feb 2015 00:01:53 +0100 Subject: [PATCH 2/2] Replace the FooCast traits by structs. This should allow us to remove most type annotations in the DOM. --- .../dom/bindings/codegen/CodegenRust.py | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 18688bde9d5..1fdf13f5fe7 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -5254,9 +5254,10 @@ impl ${selfName} for ${baseName} { 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> { + pub fn to_ref<'a, T: ${toBound}+Reflectable>(base: JSRef<'a, T>) -> Option> { 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(base: &LayoutJS) -> Option> { + pub fn to_layout_js(base: &LayoutJS) -> Option> { 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(derived: Temporary) -> Temporary { + pub fn from_temporary(derived: Temporary) -> 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