From 2578de9d6090210d9e94fd013190f387c8a88048 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Thu, 20 Nov 2014 19:32:04 -0500 Subject: [PATCH] Test PartialEq multidispatch --- src/test/run-pass/eq-multidispatch.rs | 37 +++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/test/run-pass/eq-multidispatch.rs diff --git a/src/test/run-pass/eq-multidispatch.rs b/src/test/run-pass/eq-multidispatch.rs new file mode 100644 index 000000000000..018e8cddc71c --- /dev/null +++ b/src/test/run-pass/eq-multidispatch.rs @@ -0,0 +1,37 @@ +// Copyright 2014 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![feature(default_type_params)] + +#[deriving(PartialEq)] +struct Bar; +struct Baz; +struct Foo; +struct Fu; + +impl PartialEq for Baz { fn eq(&self, _: &Baz) -> bool { true } } + +impl PartialEq for Foo { fn eq(&self, _: &Fu) -> bool { true } } +impl PartialEq for Fu { fn eq(&self, _: &Foo) -> bool { true } } + +impl PartialEq for Foo { fn eq(&self, _: &Bar) -> bool { false } } +impl PartialEq for Bar { fn eq(&self, _: &Foo) -> bool { false } } + +fn main() { + assert!(Bar != Foo); + assert!(Foo != Bar); + + assert!(Bar == Bar); + + assert!(Baz == Baz); + + assert!(Foo == Fu); + assert!(Fu == Foo); +}