a380df809c
values to be copied. Rewrite kind computation so that instead of directly computing the kind it computes what kinds of values are present in the type, and then derive kinds based on that. I find this easier to think about. Fixes #4821.
30 lines
935 B
Rust
30 lines
935 B
Rust
// Copyright 2012 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 <LICENSE-APACHE or
|
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
|
// option. This file may not be copied, modified, or distributed
|
|
// except according to those terms.
|
|
|
|
fn copy1<T: Copy>(t: T) -> fn@() -> T {
|
|
fn@() -> T { t } //~ ERROR value may contain borrowed pointers
|
|
}
|
|
|
|
fn copy2<T: Copy &static>(t: T) -> fn@() -> T {
|
|
fn@() -> T { t }
|
|
}
|
|
|
|
fn main() {
|
|
let x = &3;
|
|
copy2(&x); //~ ERROR does not fulfill `&static`
|
|
|
|
copy2(@3);
|
|
copy2(@&x); //~ ERROR does not fulfill `&static`
|
|
|
|
copy2(fn@() {});
|
|
copy2(fn~() {}); //~ ERROR does not fulfill `Copy`
|
|
copy2(fn&() {}); //~ ERROR does not fulfill `&static`
|
|
}
|