File tree 1 file changed +40
-0
lines changed
1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments