]> git.proxmox.com Git - rustc.git/blame - src/test/run-pass/objects-owned-object-borrowed-method-headerless.rs
New upstream version 1.14.0+dfsg1
[rustc.git] / src / test / run-pass / objects-owned-object-borrowed-method-headerless.rs
CommitLineData
223e47cc
LB
1// Copyright 2013 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
1a4d82fc
JJ
11// Test invoked `&self` methods on owned objects where the values
12// closed over do not contain managed values, and thus the boxes do
13// not have headers.
14
c34b1796 15
1a4d82fc
JJ
16#![allow(unknown_features)]
17#![feature(box_syntax)]
18
970d7e83
LB
19
20trait FooTrait {
c34b1796 21 fn foo(&self) -> usize;
970d7e83
LB
22}
23
24struct BarStruct {
c34b1796 25 x: usize
970d7e83
LB
26}
27
28impl FooTrait for BarStruct {
c34b1796 29 fn foo(&self) -> usize {
970d7e83
LB
30 self.x
31 }
32}
33
223e47cc 34pub fn main() {
c30ab7b3 35 let foos: Vec<Box<FooTrait>> = vec![
1a4d82fc
JJ
36 box BarStruct{ x: 0 } as Box<FooTrait>,
37 box BarStruct{ x: 1 } as Box<FooTrait>,
38 box BarStruct{ x: 2 } as Box<FooTrait>
c30ab7b3 39 ];
970d7e83 40
c34b1796 41 for i in 0..foos.len() {
970d7e83
LB
42 assert_eq!(i, foos[i].foo());
43 }
223e47cc 44}