diff --git a/src/test/compile-fail/issue-18566.rs b/src/test/compile-fail/issue-18566.rs new file mode 100644 index 00000000000..89b1d8540d8 --- /dev/null +++ b/src/test/compile-fail/issue-18566.rs @@ -0,0 +1,33 @@ +// 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(tuple_indexing)] + +struct MyPtr<'a>(&'a mut uint); +impl<'a> Deref for MyPtr<'a> { + fn deref<'b>(&'b self) -> &'b uint { self.0 } +} + +trait Tr { + fn poke(&self, s: &mut uint); +} + +impl Tr for uint { + fn poke(&self, s: &mut uint) { + *s = 2; + } +} + +fn main() { + let s = &mut 1u; + + MyPtr(s).poke(s); + //~^ ERROR cannot borrow `*s` as mutable more than once at a time +}