diff options
author | Sebastian Imlay <sebastian.imlay@gmail.com> | 2020-08-29 16:57:13 -0700 |
---|---|---|
committer | Emilio Cobos Álvarez <emilio@crisal.io> | 2020-09-16 12:26:24 +0200 |
commit | c24626993d42c737631d702043b53da0faeb1fd5 (patch) | |
tree | 73ba6cffbaadd1a0ed36cfe51dec9e38205c48bc | |
parent | 969aa7a5ee6c766f2eb870d233179b5b75676fb1 (diff) |
First attempt to fix CI
3 files changed, 197 insertions, 11 deletions
diff --git a/tests/expectations/tests/libclang-3.9/objc_inheritance.rs b/tests/expectations/tests/libclang-3.9/objc_inheritance.rs index cd2b085d..982fc14c 100644 --- a/tests/expectations/tests/libclang-3.9/objc_inheritance.rs +++ b/tests/expectations/tests/libclang-3.9/objc_inheritance.rs @@ -11,7 +11,7 @@ extern crate objc; #[allow(non_camel_case_types)] pub type id = *mut objc::runtime::Object; #[repr(transparent)] -#[derive(Clone, Copy)] +#[derive(Clone)] pub struct Foo(pub id); impl std::ops::Deref for Foo { type Target = objc::runtime::Object; @@ -28,7 +28,7 @@ impl Foo { impl IFoo for Foo {} pub trait IFoo: Sized + std::ops::Deref {} #[repr(transparent)] -#[derive(Clone, Copy)] +#[derive(Clone)] pub struct Bar(pub id); impl std::ops::Deref for Bar { type Target = objc::runtime::Object; @@ -43,10 +43,78 @@ impl Bar { } } impl IFoo for Bar {} + +mpl From<Bar> for Foo { + ++ fn from(child: Bar) -> Foo { + ++ Foo(child.0) + ++ } + ++} + +impl std::convert::TryFrom<Foo> for Bar { + type Error = String; + fn try_from(parent: Foo) -> Result<Bar, Self::Error> { + let is_kind_of: bool = + unsafe { msg_send!(parent, isKindOfClass: class!(Bar)) }; + if is_kind_of { + Ok(Bar(parent.0)) + } else { + Err(format!( + "This {} is not an cannot be downcasted to {}", + "Foo", "Bar" + )) + } + } +} impl IBar for Bar {} +impl From<Baz> for Bar { + fn from(child: Baz) -> Bar { + Bar(child.0) + } +} + +impl std::convert::TryFrom<Bar> for Baz { + type Error = String; + fn try_from(parent: Bar) -> Result<Baz, Self::Error> { + let is_kind_of: bool = + unsafe { msg_send!(parent, isKindOfClass: class!(Baz)) }; + if is_kind_of { + Ok(Baz(parent.0)) + } else { + Err(format!( + "This {} is not an cannot be downcasted to {}", + "Bar", "Baz" + )) + } + } +} +impl IFoo for Baz {} +impl From<Baz> for Foo { + fn from(child: Baz) -> Foo { + Foo(child.0) + } +} +impl std::convert::TryFrom<Foo> for Baz { + type Error = String; + fn try_from(parent: Foo) -> Result<Baz, Self::Error> { + let is_kind_of: bool = + unsafe { msg_send!(parent, isKindOfClass: class!(Baz)) }; + if is_kind_of { + Ok(Baz(parent.0)) + } else { + Err(format!( + "This {} is not an cannot be downcasted to {}", + "Foo", "Baz" + )) + } + } +} pub trait IBar: Sized + std::ops::Deref {} #[repr(transparent)] -#[derive(Clone, Copy)] +#[derive(Clone)] pub struct Baz(pub id); impl std::ops::Deref for Baz { type Target = objc::runtime::Object; @@ -60,7 +128,5 @@ impl Baz { Self(unsafe { msg_send!(objc::class!(Baz), alloc) }) } } -impl IBar for Baz {} -impl IFoo for Baz {} impl IBaz for Baz {} pub trait IBaz: Sized + std::ops::Deref {} diff --git a/tests/expectations/tests/libclang-4/objc_inheritance.rs b/tests/expectations/tests/libclang-4/objc_inheritance.rs index cd2b085d..a84f6f37 100644 --- a/tests/expectations/tests/libclang-4/objc_inheritance.rs +++ b/tests/expectations/tests/libclang-4/objc_inheritance.rs @@ -11,7 +11,7 @@ extern crate objc; #[allow(non_camel_case_types)] pub type id = *mut objc::runtime::Object; #[repr(transparent)] -#[derive(Clone, Copy)] +#[derive(Clone)] pub struct Foo(pub id); impl std::ops::Deref for Foo { type Target = objc::runtime::Object; @@ -28,7 +28,7 @@ impl Foo { impl IFoo for Foo {} pub trait IFoo: Sized + std::ops::Deref {} #[repr(transparent)] -#[derive(Clone, Copy)] +#[derive(Clone)] pub struct Bar(pub id); impl std::ops::Deref for Bar { type Target = objc::runtime::Object; @@ -43,10 +43,30 @@ impl Bar { } } impl IFoo for Bar {} +impl From<Bar> for Foo { + fn from(child: Bar) -> Foo { + Foo(child.0) + } +} +impl std::convert::TryFrom<Foo> for Bar { + type Error = String; + fn try_from(parent: Foo) -> Result<Bar, Self::Error> { + let is_kind_of: bool = + unsafe { msg_send!(parent, isKindOfClass: class!(Bar)) }; + if is_kind_of { + Ok(Bar(parent.0)) + } else { + Err(format!( + "This {} is not an cannot be downcasted to {}", + "Foo", "Bar" + )) + } + } +} impl IBar for Bar {} pub trait IBar: Sized + std::ops::Deref {} #[repr(transparent)] -#[derive(Clone, Copy)] +#[derive(Clone)] pub struct Baz(pub id); impl std::ops::Deref for Baz { type Target = objc::runtime::Object; @@ -61,6 +81,46 @@ impl Baz { } } impl IBar for Baz {} +impl From<Baz> for Bar { + fn from(child: Baz) -> Bar { + Bar(child.0) + } +} +impl std::convert::TryFrom<Bar> for Baz { + type Error = String; + fn try_from(parent: Bar) -> Result<Baz, Self::Error> { + let is_kind_of: bool = + unsafe { msg_send!(parent, isKindOfClass: class!(Baz)) }; + if is_kind_of { + Ok(Baz(parent.0)) + } else { + Err(format!( + "This {} is not an cannot be downcasted to {}", + "Bar", "Baz" + )) + } + } +} impl IFoo for Baz {} +impl From<Baz> for Foo { + fn from(child: Baz) -> Foo { + Foo(child.0) + } +} +impl std::convert::TryFrom<Foo> for Baz { + type Error = String; + fn try_from(parent: Foo) -> Result<Baz, Self::Error> { + let is_kind_of: bool = + unsafe { msg_send!(parent, isKindOfClass: class!(Baz)) }; + if is_kind_of { + Ok(Baz(parent.0)) + } else { + Err(format!( + "This {} is not an cannot be downcasted to {}", + "Foo", "Baz" + )) + } + } +} impl IBaz for Baz {} pub trait IBaz: Sized + std::ops::Deref {} diff --git a/tests/expectations/tests/libclang-5/objc_inheritance.rs b/tests/expectations/tests/libclang-5/objc_inheritance.rs index cd2b085d..a84f6f37 100644 --- a/tests/expectations/tests/libclang-5/objc_inheritance.rs +++ b/tests/expectations/tests/libclang-5/objc_inheritance.rs @@ -11,7 +11,7 @@ extern crate objc; #[allow(non_camel_case_types)] pub type id = *mut objc::runtime::Object; #[repr(transparent)] -#[derive(Clone, Copy)] +#[derive(Clone)] pub struct Foo(pub id); impl std::ops::Deref for Foo { type Target = objc::runtime::Object; @@ -28,7 +28,7 @@ impl Foo { impl IFoo for Foo {} pub trait IFoo: Sized + std::ops::Deref {} #[repr(transparent)] -#[derive(Clone, Copy)] +#[derive(Clone)] pub struct Bar(pub id); impl std::ops::Deref for Bar { type Target = objc::runtime::Object; @@ -43,10 +43,30 @@ impl Bar { } } impl IFoo for Bar {} +impl From<Bar> for Foo { + fn from(child: Bar) -> Foo { + Foo(child.0) + } +} +impl std::convert::TryFrom<Foo> for Bar { + type Error = String; + fn try_from(parent: Foo) -> Result<Bar, Self::Error> { + let is_kind_of: bool = + unsafe { msg_send!(parent, isKindOfClass: class!(Bar)) }; + if is_kind_of { + Ok(Bar(parent.0)) + } else { + Err(format!( + "This {} is not an cannot be downcasted to {}", + "Foo", "Bar" + )) + } + } +} impl IBar for Bar {} pub trait IBar: Sized + std::ops::Deref {} #[repr(transparent)] -#[derive(Clone, Copy)] +#[derive(Clone)] pub struct Baz(pub id); impl std::ops::Deref for Baz { type Target = objc::runtime::Object; @@ -61,6 +81,46 @@ impl Baz { } } impl IBar for Baz {} +impl From<Baz> for Bar { + fn from(child: Baz) -> Bar { + Bar(child.0) + } +} +impl std::convert::TryFrom<Bar> for Baz { + type Error = String; + fn try_from(parent: Bar) -> Result<Baz, Self::Error> { + let is_kind_of: bool = + unsafe { msg_send!(parent, isKindOfClass: class!(Baz)) }; + if is_kind_of { + Ok(Baz(parent.0)) + } else { + Err(format!( + "This {} is not an cannot be downcasted to {}", + "Bar", "Baz" + )) + } + } +} impl IFoo for Baz {} +impl From<Baz> for Foo { + fn from(child: Baz) -> Foo { + Foo(child.0) + } +} +impl std::convert::TryFrom<Foo> for Baz { + type Error = String; + fn try_from(parent: Foo) -> Result<Baz, Self::Error> { + let is_kind_of: bool = + unsafe { msg_send!(parent, isKindOfClass: class!(Baz)) }; + if is_kind_of { + Ok(Baz(parent.0)) + } else { + Err(format!( + "This {} is not an cannot be downcasted to {}", + "Foo", "Baz" + )) + } + } +} impl IBaz for Baz {} pub trait IBaz: Sized + std::ops::Deref {} |