#[cfg(feature = "use_core")]
extern crate core;

#[macro_use]
extern crate derivative;

#[derive(Derivative, PartialEq)]
#[derivative(Eq)]
struct Foo {
    foo: u8
}

#[derive(Derivative)]
#[derivative(Eq)]
struct WithPtr<T: ?Sized> {
    #[derivative(Eq(bound=""))]
    foo: *const T
}

impl<T: ?Sized> PartialEq for WithPtr<T> {
    fn eq(&self, other: &Self) -> bool {
        self.foo == other.foo
    }
}

trait SomeTrait {}
struct SomeType {
    #[allow(dead_code)]
    foo: u8
}
impl SomeTrait for SomeType {}

fn assert_eq<T: Eq>(_: T) {}

#[test]
fn main() {
    assert!(Foo { foo: 7 } == Foo { foo: 7 });
    assert!(Foo { foo: 7 } != Foo { foo: 42 });

    assert_eq(Foo { foo: 7 });

    let ptr1: *const SomeTrait = &SomeType { foo: 0 };
    let ptr2: *const SomeTrait = &SomeType { foo: 1 };
    assert!(WithPtr { foo: ptr1 } == WithPtr { foo: ptr1 });
    assert!(WithPtr { foo: ptr1 } != WithPtr { foo: ptr2 });

    assert_eq(WithPtr { foo: ptr1 });
}
