Skip to content

Commit 205f84f

Browse files
committed
Add compile-fail test of DST rvalues resulting from overloaded index
1 parent 6b93b4e commit 205f84f

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

src/test/compile-fail/dst-index.rs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
// Test that overloaded index expressions with DST result types
12+
// can't be used as rvalues
13+
14+
use std::ops::Index;
15+
use std::fmt::Show;
16+
17+
struct S;
18+
19+
impl Index<uint, str> for S {
20+
fn index<'a>(&'a self, _: &uint) -> &'a str {
21+
"hello"
22+
}
23+
}
24+
25+
struct T;
26+
27+
impl Index<uint, Show + 'static> for T {
28+
fn index<'a>(&'a self, idx: &uint) -> &'a Show + 'static {
29+
static x: uint = 42;
30+
&x
31+
}
32+
}
33+
34+
fn main() {
35+
S[0];
36+
//~^ ERROR E0161
37+
T[0];
38+
//~^ ERROR cannot move out of dereference
39+
//~^^ ERROR E0161
40+
}

0 commit comments

Comments
 (0)