Rollup merge of #64221 - Centril:nll-no-migrate-2015, r=matthewjasper
Rust 2015: No longer downgrade NLL errors As per decision on a language team meeting as described in https://github.com/rust-lang/rust/pull/63565#issuecomment-528563744, in Rust 2015, we refuse to downgrade NLL errors, that AST borrowck accepts, into warnings and keep them as hard errors. The remaining work to throw out AST borrowck and adjust some tests still remains after this PR. Fixes https://github.com/rust-lang/rust/issues/38899 Fixes https://github.com/rust-lang/rust/issues/53432 Fixes https://github.com/rust-lang/rust/issues/45157 Fixes https://github.com/rust-lang/rust/issues/31567 Fixes https://github.com/rust-lang/rust/issues/27868 Fixes https://github.com/rust-lang/rust/issues/47366 r? @matthewjasper
This commit is contained in:
commit
3b5fbb6a36
85 changed files with 176 additions and 1849 deletions
|
|
@ -105,9 +105,6 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
|
|||
format!("{} occurs due to use{}", desired_action.as_noun(), use_spans.describe()),
|
||||
);
|
||||
|
||||
// This error should not be downgraded to a warning,
|
||||
// even in migrate mode.
|
||||
self.disable_error_downgrading();
|
||||
err.buffer(&mut self.errors_buffer);
|
||||
} else {
|
||||
if let Some((reported_place, _)) = self.move_error_reported.get(&move_out_indices) {
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ use rustc::hir::def_id::DefId;
|
|||
use rustc::infer::InferCtxt;
|
||||
use rustc::lint::builtin::UNUSED_MUT;
|
||||
use rustc::lint::builtin::{MUTABLE_BORROW_RESERVATION_CONFLICT};
|
||||
use rustc::middle::borrowck::SignalledError;
|
||||
use rustc::mir::{AggregateKind, BasicBlock, BorrowCheckResult, BorrowKind};
|
||||
use rustc::mir::{
|
||||
ClearCrossCrate, Local, Location, Body, Mutability, Operand, Place, PlaceBase, PlaceElem,
|
||||
|
|
@ -18,7 +17,7 @@ use rustc::mir::{Terminator, TerminatorKind};
|
|||
use rustc::ty::query::Providers;
|
||||
use rustc::ty::{self, TyCtxt};
|
||||
|
||||
use rustc_errors::{Applicability, Diagnostic, DiagnosticBuilder, Level};
|
||||
use rustc_errors::{Applicability, Diagnostic, DiagnosticBuilder};
|
||||
use rustc_data_structures::bit_set::BitSet;
|
||||
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
||||
use rustc_data_structures::graph::dominators::Dominators;
|
||||
|
|
@ -259,10 +258,6 @@ fn do_mir_borrowck<'a, 'tcx>(
|
|||
move_error_reported: BTreeMap::new(),
|
||||
uninitialized_error_reported: Default::default(),
|
||||
errors_buffer,
|
||||
// Only downgrade errors on Rust 2015 and refuse to do so on Rust 2018.
|
||||
// FIXME(Centril): In Rust 1.40.0, refuse doing so on 2015 as well and
|
||||
// proceed to throwing out the migration infrastructure.
|
||||
disable_error_downgrading: body.span.rust_2018(),
|
||||
nonlexical_regioncx: regioncx,
|
||||
used_mut: Default::default(),
|
||||
used_mut_upvars: SmallVec::new(),
|
||||
|
|
@ -374,33 +369,6 @@ fn do_mir_borrowck<'a, 'tcx>(
|
|||
if !mbcx.errors_buffer.is_empty() {
|
||||
mbcx.errors_buffer.sort_by_key(|diag| diag.span.primary_span());
|
||||
|
||||
if !mbcx.disable_error_downgrading && tcx.migrate_borrowck() {
|
||||
// When borrowck=migrate, check if AST-borrowck would
|
||||
// error on the given code.
|
||||
|
||||
// rust-lang/rust#55492, rust-lang/rust#58776 check the base def id
|
||||
// for errors. AST borrowck is responsible for aggregating
|
||||
// `signalled_any_error` from all of the nested closures here.
|
||||
let base_def_id = tcx.closure_base_def_id(def_id);
|
||||
|
||||
match tcx.borrowck(base_def_id).signalled_any_error {
|
||||
SignalledError::NoErrorsSeen => {
|
||||
// if AST-borrowck signalled no errors, then
|
||||
// downgrade all the buffered MIR-borrowck errors
|
||||
// to warnings.
|
||||
|
||||
for err in mbcx.errors_buffer.iter_mut() {
|
||||
downgrade_if_error(err);
|
||||
}
|
||||
}
|
||||
SignalledError::SawSomeError => {
|
||||
// if AST-borrowck signalled a (cancelled) error,
|
||||
// then we will just emit the buffered
|
||||
// MIR-borrowck errors as normal.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for diag in mbcx.errors_buffer.drain(..) {
|
||||
mbcx.infcx.tcx.sess.diagnostic().emit_diagnostic(&diag);
|
||||
}
|
||||
|
|
@ -416,21 +384,6 @@ fn do_mir_borrowck<'a, 'tcx>(
|
|||
result
|
||||
}
|
||||
|
||||
fn downgrade_if_error(diag: &mut Diagnostic) {
|
||||
if diag.is_error() {
|
||||
diag.level = Level::Warning;
|
||||
diag.warn(
|
||||
"this error has been downgraded to a warning for backwards \
|
||||
compatibility with previous releases",
|
||||
).warn(
|
||||
"this represents potential undefined behavior in your code and \
|
||||
this warning will become a hard error in the future",
|
||||
).note(
|
||||
"for more information, try `rustc --explain E0729`"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
crate struct MirBorrowckCtxt<'cx, 'tcx> {
|
||||
crate infcx: &'cx InferCtxt<'cx, 'tcx>,
|
||||
body: &'cx Body<'tcx>,
|
||||
|
|
@ -491,9 +444,6 @@ crate struct MirBorrowckCtxt<'cx, 'tcx> {
|
|||
uninitialized_error_reported: FxHashSet<PlaceRef<'cx, 'tcx>>,
|
||||
/// Errors to be reported buffer
|
||||
errors_buffer: Vec<Diagnostic>,
|
||||
/// If there are no errors reported by the HIR borrow checker, we downgrade
|
||||
/// all NLL errors to warnings. Setting this flag disables downgrading.
|
||||
disable_error_downgrading: bool,
|
||||
/// This field keeps track of all the local variables that are declared mut and are mutated.
|
||||
/// Used for the warning issued by an unused mutable local variable.
|
||||
used_mut: FxHashSet<Local>,
|
||||
|
|
@ -934,12 +884,6 @@ impl InitializationRequiringAction {
|
|||
}
|
||||
|
||||
impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
|
||||
/// If there are no errors reported by the HIR borrow checker, we downgrade
|
||||
/// all NLL errors to warnings. Calling this disables downgrading.
|
||||
crate fn disable_error_downgrading(&mut self) {
|
||||
self.disable_error_downgrading = true;
|
||||
}
|
||||
|
||||
/// Checks an access to the given place to see if it is allowed. Examines the set of borrows
|
||||
/// that are in scope, as well as which paths have been initialized, to ensure that (a) the
|
||||
/// place is initialized and (b) it is not borrowed in some way that would prevent this
|
||||
|
|
|
|||
|
|
@ -1,40 +0,0 @@
|
|||
error[E0503]: cannot use `y` because it was mutably borrowed
|
||||
--> $DIR/borrowck-anon-fields-variant.rs:17:7
|
||||
|
|
||||
LL | Foo::Y(ref mut a, _) => a,
|
||||
| --------- borrow of `y.0` occurs here
|
||||
...
|
||||
LL | Foo::Y(_, ref mut b) => b,
|
||||
| ^^^^^^^^^^^^^^^^^^^^ use of borrowed `y.0`
|
||||
...
|
||||
LL | *a += 1;
|
||||
| ------- borrow later used here
|
||||
|
||||
error[E0503]: cannot use `y` because it was mutably borrowed
|
||||
--> $DIR/borrowck-anon-fields-variant.rs:37:7
|
||||
|
|
||||
LL | Foo::Y(ref mut a, _) => a,
|
||||
| --------- borrow of `y.0` occurs here
|
||||
...
|
||||
LL | Foo::Y(ref mut b, _) => b,
|
||||
| ^^^^^^^^^^^^^^^^^^^^ use of borrowed `y.0`
|
||||
...
|
||||
LL | *a += 1;
|
||||
| ------- borrow later used here
|
||||
|
||||
error[E0499]: cannot borrow `y.0` as mutable more than once at a time
|
||||
--> $DIR/borrowck-anon-fields-variant.rs:37:14
|
||||
|
|
||||
LL | Foo::Y(ref mut a, _) => a,
|
||||
| --------- first mutable borrow occurs here
|
||||
...
|
||||
LL | Foo::Y(ref mut b, _) => b,
|
||||
| ^^^^^^^^^ second mutable borrow occurs here
|
||||
...
|
||||
LL | *a += 1;
|
||||
| ------- first borrow later used here
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0499, E0503.
|
||||
For more information about an error, try `rustc --explain E0499`.
|
||||
|
|
@ -15,9 +15,7 @@ fn distinct_variant() {
|
|||
// reference.
|
||||
let b = match y {
|
||||
Foo::Y(_, ref mut b) => b,
|
||||
//~^ WARNING cannot use `y`
|
||||
//~| WARNING this error has been downgraded to a warning
|
||||
//~| WARNING this warning will become a hard error in the future
|
||||
//~^ ERROR cannot use `y`
|
||||
Foo::X => panic!()
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
warning[E0503]: cannot use `y` because it was mutably borrowed
|
||||
error[E0503]: cannot use `y` because it was mutably borrowed
|
||||
--> $DIR/borrowck-anon-fields-variant.rs:17:7
|
||||
|
|
||||
LL | Foo::Y(ref mut a, _) => a,
|
||||
|
|
@ -9,13 +9,9 @@ LL | Foo::Y(_, ref mut b) => b,
|
|||
...
|
||||
LL | *a += 1;
|
||||
| ------- borrow later used here
|
||||
|
|
||||
= warning: this error has been downgraded to a warning for backwards compatibility with previous releases
|
||||
= warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future
|
||||
= note: for more information, try `rustc --explain E0729`
|
||||
|
||||
error[E0503]: cannot use `y` because it was mutably borrowed
|
||||
--> $DIR/borrowck-anon-fields-variant.rs:37:7
|
||||
--> $DIR/borrowck-anon-fields-variant.rs:35:7
|
||||
|
|
||||
LL | Foo::Y(ref mut a, _) => a,
|
||||
| --------- borrow of `y.0` occurs here
|
||||
|
|
@ -27,7 +23,7 @@ LL | *a += 1;
|
|||
| ------- borrow later used here
|
||||
|
||||
error[E0499]: cannot borrow `y.0` as mutable more than once at a time
|
||||
--> $DIR/borrowck-anon-fields-variant.rs:37:14
|
||||
--> $DIR/borrowck-anon-fields-variant.rs:35:14
|
||||
|
|
||||
LL | Foo::Y(ref mut a, _) => a,
|
||||
| --------- first mutable borrow occurs here
|
||||
|
|
@ -38,7 +34,7 @@ LL | Foo::Y(ref mut b, _) => b,
|
|||
LL | *a += 1;
|
||||
| ------- first borrow later used here
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0499, E0503.
|
||||
For more information about an error, try `rustc --explain E0499`.
|
||||
|
|
|
|||
|
|
@ -1,366 +0,0 @@
|
|||
error[E0499]: cannot borrow `x` as mutable more than once at a time
|
||||
--> $DIR/borrowck-describe-lvalue.rs:262:13
|
||||
|
|
||||
LL | let y = &mut x;
|
||||
| ------ first mutable borrow occurs here
|
||||
LL | &mut x;
|
||||
| ^^^^^^ second mutable borrow occurs here
|
||||
LL | *y = 1;
|
||||
| ------ first borrow later used here
|
||||
|
||||
error[E0499]: cannot borrow `x` as mutable more than once at a time
|
||||
--> $DIR/borrowck-describe-lvalue.rs:272:20
|
||||
|
|
||||
LL | let y = &mut x;
|
||||
| ------ first mutable borrow occurs here
|
||||
LL | &mut x;
|
||||
| ^^^^^^ second mutable borrow occurs here
|
||||
LL | *y = 1;
|
||||
| ------ first borrow later used here
|
||||
|
||||
error: captured variable cannot escape `FnMut` closure body
|
||||
--> $DIR/borrowck-describe-lvalue.rs:270:16
|
||||
|
|
||||
LL | || {
|
||||
| - inferred to be a `FnMut` closure
|
||||
LL | / || {
|
||||
LL | | let y = &mut x;
|
||||
LL | | &mut x;
|
||||
LL | | *y = 1;
|
||||
LL | | drop(y);
|
||||
LL | | }
|
||||
| |_________________^ returns a closure that contains a reference to a captured variable, which then escapes the closure body
|
||||
|
|
||||
= note: `FnMut` closures only have access to their captured variables while they are executing...
|
||||
= note: ...therefore, they cannot allow references to captured variables to escape
|
||||
|
||||
error[E0503]: cannot use `f.x` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:41:9
|
||||
|
|
||||
LL | let x = f.x();
|
||||
| - borrow of `f` occurs here
|
||||
LL | f.x;
|
||||
| ^^^ use of borrowed `f`
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `g.0` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:48:9
|
||||
|
|
||||
LL | let x = g.x();
|
||||
| - borrow of `g` occurs here
|
||||
LL | g.0;
|
||||
| ^^^ use of borrowed `g`
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `h.0` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:55:9
|
||||
|
|
||||
LL | let x = &mut h.0;
|
||||
| -------- borrow of `h.0` occurs here
|
||||
LL | h.0;
|
||||
| ^^^ use of borrowed `h.0`
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `e.0` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:63:20
|
||||
|
|
||||
LL | let x = e.x();
|
||||
| - borrow of `e` occurs here
|
||||
LL | match e {
|
||||
LL | Baz::X(value) => value
|
||||
| ^^^^^ use of borrowed `e`
|
||||
LL | };
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `u.a` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:71:9
|
||||
|
|
||||
LL | let x = &mut u.a;
|
||||
| -------- borrow of `u.a` occurs here
|
||||
LL | u.a;
|
||||
| ^^^ use of borrowed `u.a`
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `f.x` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:78:9
|
||||
|
|
||||
LL | let x = f.x();
|
||||
| - borrow of `*f` occurs here
|
||||
LL | f.x;
|
||||
| ^^^ use of borrowed `*f`
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `g.0` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:85:9
|
||||
|
|
||||
LL | let x = g.x();
|
||||
| - borrow of `*g` occurs here
|
||||
LL | g.0;
|
||||
| ^^^ use of borrowed `*g`
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `h.0` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:92:9
|
||||
|
|
||||
LL | let x = &mut h.0;
|
||||
| -------- borrow of `h.0` occurs here
|
||||
LL | h.0;
|
||||
| ^^^ use of borrowed `h.0`
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `e.0` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:100:20
|
||||
|
|
||||
LL | let x = e.x();
|
||||
| - borrow of `*e` occurs here
|
||||
LL | match *e {
|
||||
LL | Baz::X(value) => value
|
||||
| ^^^^^ use of borrowed `*e`
|
||||
...
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `u.a` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:109:9
|
||||
|
|
||||
LL | let x = &mut u.a;
|
||||
| -------- borrow of `u.a` occurs here
|
||||
LL | u.a;
|
||||
| ^^^ use of borrowed `u.a`
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `v[..]` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:117:15
|
||||
|
|
||||
LL | let x = &mut v;
|
||||
| ------ borrow of `v` occurs here
|
||||
LL | match v {
|
||||
LL | &[x, _, .., _, _] => println!("{}", x),
|
||||
| ^ use of borrowed `v`
|
||||
...
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `v[..]` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:122:18
|
||||
|
|
||||
LL | let x = &mut v;
|
||||
| ------ borrow of `v` occurs here
|
||||
...
|
||||
LL | &[_, x, .., _, _] => println!("{}", x),
|
||||
| ^ use of borrowed `v`
|
||||
...
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `v[..]` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:127:25
|
||||
|
|
||||
LL | let x = &mut v;
|
||||
| ------ borrow of `v` occurs here
|
||||
...
|
||||
LL | &[_, _, .., x, _] => println!("{}", x),
|
||||
| ^ use of borrowed `v`
|
||||
...
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `v[..]` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:132:28
|
||||
|
|
||||
LL | let x = &mut v;
|
||||
| ------ borrow of `v` occurs here
|
||||
...
|
||||
LL | &[_, _, .., _, x] => println!("{}", x),
|
||||
| ^ use of borrowed `v`
|
||||
...
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `v[..]` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:143:15
|
||||
|
|
||||
LL | let x = &mut v;
|
||||
| ------ borrow of `v` occurs here
|
||||
LL | match v {
|
||||
LL | &[x @ ..] => println!("{:?}", x),
|
||||
| ^^^^^^ use of borrowed `v`
|
||||
...
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `v[..]` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:148:18
|
||||
|
|
||||
LL | let x = &mut v;
|
||||
| ------ borrow of `v` occurs here
|
||||
...
|
||||
LL | &[_, x @ ..] => println!("{:?}", x),
|
||||
| ^^^^^^ use of borrowed `v`
|
||||
...
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `v[..]` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:153:15
|
||||
|
|
||||
LL | let x = &mut v;
|
||||
| ------ borrow of `v` occurs here
|
||||
...
|
||||
LL | &[x @ .., _] => println!("{:?}", x),
|
||||
| ^^^^^^ use of borrowed `v`
|
||||
...
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `v[..]` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:158:18
|
||||
|
|
||||
LL | let x = &mut v;
|
||||
| ------ borrow of `v` occurs here
|
||||
...
|
||||
LL | &[_, x @ .., _] => println!("{:?}", x),
|
||||
| ^^^^^^ use of borrowed `v`
|
||||
...
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `e` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:171:13
|
||||
|
|
||||
LL | let x = &mut e;
|
||||
| ------ borrow of `e` occurs here
|
||||
LL | match e {
|
||||
LL | E::A(ref ax) =>
|
||||
| ^^^^^^^^^^^^ use of borrowed `e`
|
||||
...
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0502]: cannot borrow `e.0` as immutable because it is also borrowed as mutable
|
||||
--> $DIR/borrowck-describe-lvalue.rs:171:18
|
||||
|
|
||||
LL | let x = &mut e;
|
||||
| ------ mutable borrow occurs here
|
||||
LL | match e {
|
||||
LL | E::A(ref ax) =>
|
||||
| ^^^^^^ immutable borrow occurs here
|
||||
...
|
||||
LL | drop(x);
|
||||
| - mutable borrow later used here
|
||||
|
||||
error[E0502]: cannot borrow `e.x` as immutable because it is also borrowed as mutable
|
||||
--> $DIR/borrowck-describe-lvalue.rs:175:23
|
||||
|
|
||||
LL | let x = &mut e;
|
||||
| ------ mutable borrow occurs here
|
||||
...
|
||||
LL | E::B { x: ref bx } =>
|
||||
| ^^^^^^ immutable borrow occurs here
|
||||
...
|
||||
LL | drop(x);
|
||||
| - mutable borrow later used here
|
||||
|
||||
error[E0502]: cannot borrow `s.y.0` as immutable because it is also borrowed as mutable
|
||||
--> $DIR/borrowck-describe-lvalue.rs:188:22
|
||||
|
|
||||
LL | let x = &mut s;
|
||||
| ------ mutable borrow occurs here
|
||||
LL | match s {
|
||||
LL | S { y: (ref y0, _), .. } =>
|
||||
| ^^^^^^ immutable borrow occurs here
|
||||
...
|
||||
LL | drop(x);
|
||||
| - mutable borrow later used here
|
||||
|
||||
error[E0502]: cannot borrow `s.x.y` as immutable because it is also borrowed as mutable
|
||||
--> $DIR/borrowck-describe-lvalue.rs:194:28
|
||||
|
|
||||
LL | let x = &mut s;
|
||||
| ------ mutable borrow occurs here
|
||||
...
|
||||
LL | S { x: F { y: ref x0, .. }, .. } =>
|
||||
| ^^^^^^ immutable borrow occurs here
|
||||
...
|
||||
LL | drop(x);
|
||||
| - mutable borrow later used here
|
||||
|
||||
error[E0503]: cannot use `*v` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:240:9
|
||||
|
|
||||
LL | let x = &mut v;
|
||||
| ------ borrow of `v` occurs here
|
||||
LL | v[0].y;
|
||||
| ^^^^ use of borrowed `v`
|
||||
...
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `v[_].y` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:240:9
|
||||
|
|
||||
LL | let x = &mut v;
|
||||
| ------ borrow of `v` occurs here
|
||||
LL | v[0].y;
|
||||
| ^^^^^^ use of borrowed `v`
|
||||
...
|
||||
LL | drop(x);
|
||||
| - borrow later used here
|
||||
|
||||
error[E0502]: cannot borrow `v[..].x` as immutable because it is also borrowed as mutable
|
||||
--> $DIR/borrowck-describe-lvalue.rs:251:24
|
||||
|
|
||||
LL | let x = &mut v;
|
||||
| ------ mutable borrow occurs here
|
||||
LL | match v {
|
||||
LL | &[_, F {x: ref xf, ..}] => println!("{}", xf),
|
||||
| ^^^^^^ immutable borrow occurs here
|
||||
...
|
||||
LL | drop(x);
|
||||
| - mutable borrow later used here
|
||||
|
||||
error[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
|
||||
--> $DIR/borrowck-describe-lvalue.rs:210:29
|
||||
|
|
||||
LL | let x = &mut block;
|
||||
| ---------- mutable borrow occurs here
|
||||
LL | let p: &'a u8 = &*block.current;
|
||||
| ^^^^^^^^^^^^^^^ immutable borrow occurs here
|
||||
...
|
||||
LL | drop(x);
|
||||
| - mutable borrow later used here
|
||||
|
||||
error[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
|
||||
--> $DIR/borrowck-describe-lvalue.rs:227:33
|
||||
|
|
||||
LL | let x = &mut block;
|
||||
| ---------- mutable borrow occurs here
|
||||
LL | let p : *const u8 = &*(*block).current;
|
||||
| ^^^^^^^^^^^^^^^^^^ immutable borrow occurs here
|
||||
...
|
||||
LL | drop(x);
|
||||
| - mutable borrow later used here
|
||||
|
||||
error[E0382]: use of moved value: `x`
|
||||
--> $DIR/borrowck-describe-lvalue.rs:282:22
|
||||
|
|
||||
LL | drop(x);
|
||||
| - value moved here
|
||||
LL | drop(x);
|
||||
| ^ value used here after move
|
||||
|
|
||||
= note: move occurs because `x` has type `std::vec::Vec<i32>`, which does not implement the `Copy` trait
|
||||
|
||||
error: aborting due to 32 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0382, E0499, E0502, E0503.
|
||||
For more information about an error, try `rustc --explain E0382`.
|
||||
|
|
@ -208,10 +208,8 @@ fn main() {
|
|||
fn bump<'a>(mut block: &mut Block<'a>) {
|
||||
let x = &mut block;
|
||||
let p: &'a u8 = &*block.current;
|
||||
//~^ WARNING cannot borrow `*block.current` as immutable because it is also borrowed as mutable
|
||||
//~| this error has been downgraded
|
||||
//~| this warning will become a hard error in the future
|
||||
// Warning because of issue rust#38899
|
||||
//~^ ERROR cannot borrow `*block.current` as immutable because it is also borrowed as mutable
|
||||
// See issue rust#38899
|
||||
drop(x);
|
||||
}
|
||||
}
|
||||
|
|
@ -225,10 +223,8 @@ fn main() {
|
|||
unsafe fn bump2(mut block: *mut Block2) {
|
||||
let x = &mut block;
|
||||
let p : *const u8 = &*(*block).current;
|
||||
//~^ WARNING cannot borrow `*block.current` as immutable because it is also borrowed as mutable
|
||||
//~| this error has been downgraded
|
||||
//~| this warning will become a hard error in the future
|
||||
// Warning because of issue rust#38899
|
||||
//~^ ERROR cannot borrow `*block.current` as immutable because it is also borrowed as mutable
|
||||
// See issue rust#38899
|
||||
drop(x);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error[E0499]: cannot borrow `x` as mutable more than once at a time
|
||||
--> $DIR/borrowck-describe-lvalue.rs:262:13
|
||||
--> $DIR/borrowck-describe-lvalue.rs:258:13
|
||||
|
|
||||
LL | let y = &mut x;
|
||||
| ------ first mutable borrow occurs here
|
||||
|
|
@ -9,7 +9,7 @@ LL | *y = 1;
|
|||
| ------ first borrow later used here
|
||||
|
||||
error[E0499]: cannot borrow `x` as mutable more than once at a time
|
||||
--> $DIR/borrowck-describe-lvalue.rs:272:20
|
||||
--> $DIR/borrowck-describe-lvalue.rs:268:20
|
||||
|
|
||||
LL | let y = &mut x;
|
||||
| ------ first mutable borrow occurs here
|
||||
|
|
@ -19,7 +19,7 @@ LL | *y = 1;
|
|||
| ------ first borrow later used here
|
||||
|
||||
error: captured variable cannot escape `FnMut` closure body
|
||||
--> $DIR/borrowck-describe-lvalue.rs:270:16
|
||||
--> $DIR/borrowck-describe-lvalue.rs:266:16
|
||||
|
|
||||
LL | || {
|
||||
| - inferred to be a `FnMut` closure
|
||||
|
|
@ -295,7 +295,7 @@ LL | drop(x);
|
|||
| - mutable borrow later used here
|
||||
|
||||
error[E0503]: cannot use `*v` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:240:9
|
||||
--> $DIR/borrowck-describe-lvalue.rs:236:9
|
||||
|
|
||||
LL | let x = &mut v;
|
||||
| ------ borrow of `v` occurs here
|
||||
|
|
@ -306,7 +306,7 @@ LL | drop(x);
|
|||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `v[_].y` because it was mutably borrowed
|
||||
--> $DIR/borrowck-describe-lvalue.rs:240:9
|
||||
--> $DIR/borrowck-describe-lvalue.rs:236:9
|
||||
|
|
||||
LL | let x = &mut v;
|
||||
| ------ borrow of `v` occurs here
|
||||
|
|
@ -317,7 +317,7 @@ LL | drop(x);
|
|||
| - borrow later used here
|
||||
|
||||
error[E0502]: cannot borrow `v[..].x` as immutable because it is also borrowed as mutable
|
||||
--> $DIR/borrowck-describe-lvalue.rs:251:24
|
||||
--> $DIR/borrowck-describe-lvalue.rs:247:24
|
||||
|
|
||||
LL | let x = &mut v;
|
||||
| ------ mutable borrow occurs here
|
||||
|
|
@ -328,7 +328,7 @@ LL | &[_, F {x: ref xf, ..}] => println!("{}", xf),
|
|||
LL | drop(x);
|
||||
| - mutable borrow later used here
|
||||
|
||||
warning[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
|
||||
error[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
|
||||
--> $DIR/borrowck-describe-lvalue.rs:210:29
|
||||
|
|
||||
LL | let x = &mut block;
|
||||
|
|
@ -338,13 +338,9 @@ LL | let p: &'a u8 = &*block.current;
|
|||
...
|
||||
LL | drop(x);
|
||||
| - mutable borrow later used here
|
||||
|
|
||||
= warning: this error has been downgraded to a warning for backwards compatibility with previous releases
|
||||
= warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future
|
||||
= note: for more information, try `rustc --explain E0729`
|
||||
|
||||
warning[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
|
||||
--> $DIR/borrowck-describe-lvalue.rs:227:33
|
||||
error[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
|
||||
--> $DIR/borrowck-describe-lvalue.rs:225:33
|
||||
|
|
||||
LL | let x = &mut block;
|
||||
| ---------- mutable borrow occurs here
|
||||
|
|
@ -353,13 +349,9 @@ LL | let p : *const u8 = &*(*block).current;
|
|||
...
|
||||
LL | drop(x);
|
||||
| - mutable borrow later used here
|
||||
|
|
||||
= warning: this error has been downgraded to a warning for backwards compatibility with previous releases
|
||||
= warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future
|
||||
= note: for more information, try `rustc --explain E0729`
|
||||
|
||||
error[E0382]: use of moved value: `x`
|
||||
--> $DIR/borrowck-describe-lvalue.rs:282:22
|
||||
--> $DIR/borrowck-describe-lvalue.rs:278:22
|
||||
|
|
||||
LL | drop(x);
|
||||
| - value moved here
|
||||
|
|
@ -368,7 +360,7 @@ LL | drop(x);
|
|||
|
|
||||
= note: move occurs because `x` has type `std::vec::Vec<i32>`, which does not implement the `Copy` trait
|
||||
|
||||
error: aborting due to 30 previous errors
|
||||
error: aborting due to 32 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0382, E0499, E0502, E0503.
|
||||
For more information about an error, try `rustc --explain E0382`.
|
||||
|
|
|
|||
|
|
@ -1,14 +0,0 @@
|
|||
error[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
|
||||
--> $DIR/borrowck-migrate-to-nll.rs:29:21
|
||||
|
|
||||
LL | let x = &mut block;
|
||||
| ---------- mutable borrow occurs here
|
||||
LL | let p: &'a u8 = &*block.current;
|
||||
| ^^^^^^^^^^^^^^^ immutable borrow occurs here
|
||||
...
|
||||
LL | drop(x);
|
||||
| - mutable borrow later used here
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0502`.
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
// This is a test of the borrowck migrate mode. It leverages #38899, a
|
||||
// bug that is fixed by NLL: this code is (unsoundly) accepted by
|
||||
// AST-borrowck, but is correctly rejected by the NLL borrowck.
|
||||
//
|
||||
// Therefore, for backwards-compatiblity, under borrowck=migrate the
|
||||
// NLL checks will be emitted as *warnings*.
|
||||
//
|
||||
// In Rust 2018, no errors will be downgraded to warnings.
|
||||
|
||||
// NLL mode makes this compile-fail; we cannot currently encode a
|
||||
// test that is run-pass or compile-fail based on compare-mode. So
|
||||
// just ignore it instead:
|
||||
|
||||
// ignore-compare-mode-nll
|
||||
// ignore-compare-mode-polonius
|
||||
|
||||
// revisions: zflag edition
|
||||
//[zflag]compile-flags: -Z borrowck=migrate
|
||||
//[edition]edition:2018
|
||||
//[zflag] check-pass
|
||||
|
||||
pub struct Block<'a> {
|
||||
current: &'a u8,
|
||||
unrelated: &'a u8,
|
||||
}
|
||||
|
||||
fn bump<'a>(mut block: &mut Block<'a>) {
|
||||
let x = &mut block;
|
||||
let p: &'a u8 = &*block.current;
|
||||
//[edition]~^ ERROR cannot borrow `*block.current` as immutable
|
||||
// (use `x` and `p` so enabling NLL doesn't assign overly short lifetimes)
|
||||
drop(x);
|
||||
drop(p);
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
warning[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
|
||||
--> $DIR/borrowck-migrate-to-nll.rs:29:21
|
||||
|
|
||||
LL | let x = &mut block;
|
||||
| ---------- mutable borrow occurs here
|
||||
LL | let p: &'a u8 = &*block.current;
|
||||
| ^^^^^^^^^^^^^^^ immutable borrow occurs here
|
||||
...
|
||||
LL | drop(x);
|
||||
| - mutable borrow later used here
|
||||
|
|
||||
= warning: this error has been downgraded to a warning for backwards compatibility with previous releases
|
||||
= warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future
|
||||
= note: for more information, try `rustc --explain E0729`
|
||||
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
fn main() {
|
||||
let f = move || {};
|
||||
let _action = move || {
|
||||
|| f() // The `nested` closure
|
||||
//~^ ERROR lifetime may not live long enough
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
error: lifetime may not live long enough
|
||||
--> $DIR/issue-53432-nested-closure-outlives-borrowed-value.rs:4:9
|
||||
|
|
||||
LL | let _action = move || {
|
||||
| -------
|
||||
| | |
|
||||
| | return type of closure is [closure@$DIR/issue-53432-nested-closure-outlives-borrowed-value.rs:4:9: 4:15 f:&'2 [closure@$DIR/issue-53432-nested-closure-outlives-borrowed-value.rs:2:13: 2:23]]
|
||||
| lifetime `'1` represents this closure's body
|
||||
LL | || f() // The `nested` closure
|
||||
| ^^^^^^ returning this value requires that `'1` must outlive `'2`
|
||||
|
|
||||
= note: closure implements `Fn`, so references to captured variables can't escape the closure
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
@ -1,328 +0,0 @@
|
|||
error[E0493]: destructors cannot be evaluated at compile-time
|
||||
--> $DIR/min_const_fn.rs:37:25
|
||||
|
|
||||
LL | const fn into_inner(self) -> T { self.0 }
|
||||
| ^^^^ constant functions cannot evaluate destructors
|
||||
|
||||
error[E0723]: mutable references in const fn are unstable
|
||||
--> $DIR/min_const_fn.rs:39:36
|
||||
|
|
||||
LL | const fn get_mut(&mut self) -> &mut T { &mut self.0 }
|
||||
| ^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0493]: destructors cannot be evaluated at compile-time
|
||||
--> $DIR/min_const_fn.rs:44:28
|
||||
|
|
||||
LL | const fn into_inner_lt(self) -> T { self.0 }
|
||||
| ^^^^ constant functions cannot evaluate destructors
|
||||
|
||||
error[E0723]: mutable references in const fn are unstable
|
||||
--> $DIR/min_const_fn.rs:46:42
|
||||
|
|
||||
LL | const fn get_mut_lt(&'a mut self) -> &mut T { &mut self.0 }
|
||||
| ^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0493]: destructors cannot be evaluated at compile-time
|
||||
--> $DIR/min_const_fn.rs:51:27
|
||||
|
|
||||
LL | const fn into_inner_s(self) -> T { self.0 }
|
||||
| ^^^^ constant functions cannot evaluate destructors
|
||||
|
||||
error[E0723]: mutable references in const fn are unstable
|
||||
--> $DIR/min_const_fn.rs:53:38
|
||||
|
|
||||
LL | const fn get_mut_s(&mut self) -> &mut T { &mut self.0 }
|
||||
| ^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: mutable references in const fn are unstable
|
||||
--> $DIR/min_const_fn.rs:58:39
|
||||
|
|
||||
LL | const fn get_mut_sq(&mut self) -> &mut T { &mut self.0 }
|
||||
| ^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: trait bounds other than `Sized` on const fn parameters are unstable
|
||||
--> $DIR/min_const_fn.rs:76:16
|
||||
|
|
||||
LL | const fn foo11<T: std::fmt::Display>(t: T) -> T { t }
|
||||
| ^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: trait bounds other than `Sized` on const fn parameters are unstable
|
||||
--> $DIR/min_const_fn.rs:78:18
|
||||
|
|
||||
LL | const fn foo11_2<T: Send>(t: T) -> T { t }
|
||||
| ^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: only int, `bool` and `char` operations are stable in const fn
|
||||
--> $DIR/min_const_fn.rs:80:33
|
||||
|
|
||||
LL | const fn foo19(f: f32) -> f32 { f * 2.0 }
|
||||
| ^^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: only int, `bool` and `char` operations are stable in const fn
|
||||
--> $DIR/min_const_fn.rs:82:35
|
||||
|
|
||||
LL | const fn foo19_2(f: f32) -> f32 { 2.0 - f }
|
||||
| ^^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: only int and `bool` operations are stable in const fn
|
||||
--> $DIR/min_const_fn.rs:84:35
|
||||
|
|
||||
LL | const fn foo19_3(f: f32) -> f32 { -f }
|
||||
| ^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: only int, `bool` and `char` operations are stable in const fn
|
||||
--> $DIR/min_const_fn.rs:86:43
|
||||
|
|
||||
LL | const fn foo19_4(f: f32, g: f32) -> f32 { f / g }
|
||||
| ^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: cannot access `static` items in const fn
|
||||
--> $DIR/min_const_fn.rs:90:27
|
||||
|
|
||||
LL | const fn foo25() -> u32 { BAR }
|
||||
| ^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: cannot access `static` items in const fn
|
||||
--> $DIR/min_const_fn.rs:91:36
|
||||
|
|
||||
LL | const fn foo26() -> &'static u32 { &BAR }
|
||||
| ^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: casting pointers to ints is unstable in const fn
|
||||
--> $DIR/min_const_fn.rs:92:42
|
||||
|
|
||||
LL | const fn foo30(x: *const u32) -> usize { x as usize }
|
||||
| ^^^^^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: casting pointers to ints is unstable in const fn
|
||||
--> $DIR/min_const_fn.rs:94:63
|
||||
|
|
||||
LL | const fn foo30_with_unsafe(x: *const u32) -> usize { unsafe { x as usize } }
|
||||
| ^^^^^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: casting pointers to ints is unstable in const fn
|
||||
--> $DIR/min_const_fn.rs:96:42
|
||||
|
|
||||
LL | const fn foo30_2(x: *mut u32) -> usize { x as usize }
|
||||
| ^^^^^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: casting pointers to ints is unstable in const fn
|
||||
--> $DIR/min_const_fn.rs:98:63
|
||||
|
|
||||
LL | const fn foo30_2_with_unsafe(x: *mut u32) -> usize { unsafe { x as usize } }
|
||||
| ^^^^^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: loops and conditional expressions are not stable in const fn
|
||||
--> $DIR/min_const_fn.rs:100:38
|
||||
|
|
||||
LL | const fn foo30_4(b: bool) -> usize { if b { 1 } else { 42 } }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: loops are not allowed in const fn
|
||||
--> $DIR/min_const_fn.rs:102:29
|
||||
|
|
||||
LL | const fn foo30_5(b: bool) { while b { } }
|
||||
| ^^^^^^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: loops and conditional expressions are not stable in const fn
|
||||
--> $DIR/min_const_fn.rs:105:44
|
||||
|
|
||||
LL | const fn foo36(a: bool, b: bool) -> bool { a && b }
|
||||
| ^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: loops and conditional expressions are not stable in const fn
|
||||
--> $DIR/min_const_fn.rs:107:44
|
||||
|
|
||||
LL | const fn foo37(a: bool, b: bool) -> bool { a || b }
|
||||
| ^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: mutable references in const fn are unstable
|
||||
--> $DIR/min_const_fn.rs:109:14
|
||||
|
|
||||
LL | const fn inc(x: &mut i32) { *x += 1 }
|
||||
| ^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: trait bounds other than `Sized` on const fn parameters are unstable
|
||||
--> $DIR/min_const_fn.rs:114:6
|
||||
|
|
||||
LL | impl<T: std::fmt::Debug> Foo<T> {
|
||||
| ^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: trait bounds other than `Sized` on const fn parameters are unstable
|
||||
--> $DIR/min_const_fn.rs:119:6
|
||||
|
|
||||
LL | impl<T: std::fmt::Debug + Sized> Foo<T> {
|
||||
| ^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: trait bounds other than `Sized` on const fn parameters are unstable
|
||||
--> $DIR/min_const_fn.rs:124:6
|
||||
|
|
||||
LL | impl<T: Sync + Sized> Foo<T> {
|
||||
| ^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: `impl Trait` in const fn is unstable
|
||||
--> $DIR/min_const_fn.rs:130:24
|
||||
|
|
||||
LL | const fn no_rpit2() -> AlanTuring<impl std::fmt::Debug> { AlanTuring(0) }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: trait bounds other than `Sized` on const fn parameters are unstable
|
||||
--> $DIR/min_const_fn.rs:132:34
|
||||
|
|
||||
LL | const fn no_apit2(_x: AlanTuring<impl std::fmt::Debug>) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: trait bounds other than `Sized` on const fn parameters are unstable
|
||||
--> $DIR/min_const_fn.rs:134:22
|
||||
|
|
||||
LL | const fn no_apit(_x: impl std::fmt::Debug) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: `impl Trait` in const fn is unstable
|
||||
--> $DIR/min_const_fn.rs:135:23
|
||||
|
|
||||
LL | const fn no_rpit() -> impl std::fmt::Debug {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: trait bounds other than `Sized` on const fn parameters are unstable
|
||||
--> $DIR/min_const_fn.rs:136:23
|
||||
|
|
||||
LL | const fn no_dyn_trait(_x: &dyn std::fmt::Debug) {}
|
||||
| ^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: trait bounds other than `Sized` on const fn parameters are unstable
|
||||
--> $DIR/min_const_fn.rs:137:32
|
||||
|
|
||||
LL | const fn no_dyn_trait_ret() -> &'static dyn std::fmt::Debug { &() }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0515]: cannot return reference to temporary value
|
||||
--> $DIR/min_const_fn.rs:137:63
|
||||
|
|
||||
LL | const fn no_dyn_trait_ret() -> &'static dyn std::fmt::Debug { &() }
|
||||
| ^--
|
||||
| ||
|
||||
| |temporary value created here
|
||||
| returns a reference to data owned by the current function
|
||||
|
||||
error[E0723]: trait bounds other than `Sized` on const fn parameters are unstable
|
||||
--> $DIR/min_const_fn.rs:145:41
|
||||
|
|
||||
LL | const fn really_no_traits_i_mean_it() { (&() as &dyn std::fmt::Debug, ()).1 }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: function pointers in const fn are unstable
|
||||
--> $DIR/min_const_fn.rs:148:21
|
||||
|
|
||||
LL | const fn no_fn_ptrs(_x: fn()) {}
|
||||
| ^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: function pointers in const fn are unstable
|
||||
--> $DIR/min_const_fn.rs:150:27
|
||||
|
|
||||
LL | const fn no_fn_ptrs2() -> fn() { fn foo() {} foo }
|
||||
| ^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error: aborting due to 37 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0515, E0723.
|
||||
For more information about an error, try `rustc --explain E0515`.
|
||||
|
|
@ -136,9 +136,7 @@ const fn no_rpit() -> impl std::fmt::Debug {} //~ ERROR `impl Trait` in const fn
|
|||
const fn no_dyn_trait(_x: &dyn std::fmt::Debug) {} //~ ERROR trait bounds other than `Sized`
|
||||
const fn no_dyn_trait_ret() -> &'static dyn std::fmt::Debug { &() }
|
||||
//~^ ERROR trait bounds other than `Sized`
|
||||
//~| WARNING cannot return reference to temporary value
|
||||
//~| WARNING this error has been downgraded to a warning
|
||||
//~| WARNING this warning will become a hard error in the future
|
||||
//~| ERROR cannot return reference to temporary value
|
||||
|
||||
const fn no_unsafe() { unsafe {} }
|
||||
|
||||
|
|
|
|||
|
|
@ -286,7 +286,7 @@ LL | const fn no_dyn_trait_ret() -> &'static dyn std::fmt::Debug { &() }
|
|||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
warning[E0515]: cannot return reference to temporary value
|
||||
error[E0515]: cannot return reference to temporary value
|
||||
--> $DIR/min_const_fn.rs:137:63
|
||||
|
|
||||
LL | const fn no_dyn_trait_ret() -> &'static dyn std::fmt::Debug { &() }
|
||||
|
|
@ -294,13 +294,9 @@ LL | const fn no_dyn_trait_ret() -> &'static dyn std::fmt::Debug { &() }
|
|||
| ||
|
||||
| |temporary value created here
|
||||
| returns a reference to data owned by the current function
|
||||
|
|
||||
= warning: this error has been downgraded to a warning for backwards compatibility with previous releases
|
||||
= warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future
|
||||
= note: for more information, try `rustc --explain E0729`
|
||||
|
||||
error[E0723]: trait bounds other than `Sized` on const fn parameters are unstable
|
||||
--> $DIR/min_const_fn.rs:145:41
|
||||
--> $DIR/min_const_fn.rs:143:41
|
||||
|
|
||||
LL | const fn really_no_traits_i_mean_it() { (&() as &dyn std::fmt::Debug, ()).1 }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
@ -309,7 +305,7 @@ LL | const fn really_no_traits_i_mean_it() { (&() as &dyn std::fmt::Debug, ()).1
|
|||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: function pointers in const fn are unstable
|
||||
--> $DIR/min_const_fn.rs:148:21
|
||||
--> $DIR/min_const_fn.rs:146:21
|
||||
|
|
||||
LL | const fn no_fn_ptrs(_x: fn()) {}
|
||||
| ^^
|
||||
|
|
@ -318,7 +314,7 @@ LL | const fn no_fn_ptrs(_x: fn()) {}
|
|||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: function pointers in const fn are unstable
|
||||
--> $DIR/min_const_fn.rs:150:27
|
||||
--> $DIR/min_const_fn.rs:148:27
|
||||
|
|
||||
LL | const fn no_fn_ptrs2() -> fn() { fn foo() {} foo }
|
||||
| ^^^^
|
||||
|
|
@ -326,7 +322,7 @@ LL | const fn no_fn_ptrs2() -> fn() { fn foo() {} foo }
|
|||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error: aborting due to 36 previous errors
|
||||
error: aborting due to 37 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0515, E0723.
|
||||
For more information about an error, try `rustc --explain E0515`.
|
||||
|
|
|
|||
|
|
@ -1,31 +0,0 @@
|
|||
error[E0723]: trait bounds other than `Sized` on const fn parameters are unstable
|
||||
--> $DIR/min_const_fn_dyn.rs:9:5
|
||||
|
|
||||
LL | x.0.field;
|
||||
| ^^^^^^^^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0723]: trait bounds other than `Sized` on const fn parameters are unstable
|
||||
--> $DIR/min_const_fn_dyn.rs:12:66
|
||||
|
|
||||
LL | const fn no_inner_dyn_trait_ret() -> Hide { Hide(HasDyn { field: &0 }) }
|
||||
| ^^
|
||||
|
|
||||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
error[E0716]: temporary value dropped while borrowed
|
||||
--> $DIR/min_const_fn_dyn.rs:12:67
|
||||
|
|
||||
LL | const fn no_inner_dyn_trait_ret() -> Hide { Hide(HasDyn { field: &0 }) }
|
||||
| -^ - temporary value is freed at the end of this statement
|
||||
| ||
|
||||
| |creates a temporary which is freed while still in use
|
||||
| cast requires that borrow lasts for `'static`
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0716, E0723.
|
||||
For more information about an error, try `rustc --explain E0716`.
|
||||
|
|
@ -11,8 +11,6 @@ const fn no_inner_dyn_trait2(x: Hide) {
|
|||
}
|
||||
const fn no_inner_dyn_trait_ret() -> Hide { Hide(HasDyn { field: &0 }) }
|
||||
//~^ ERROR trait bounds other than `Sized`
|
||||
//~| WARNING temporary value dropped while borrowed
|
||||
//~| WARNING this error has been downgraded to a warning
|
||||
//~| WARNING this warning will become a hard error in the future
|
||||
//~| ERROR temporary value dropped while borrowed
|
||||
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ LL | const fn no_inner_dyn_trait_ret() -> Hide { Hide(HasDyn { field: &0 }) }
|
|||
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
|
||||
= help: add `#![feature(const_fn)]` to the crate attributes to enable
|
||||
|
||||
warning[E0716]: temporary value dropped while borrowed
|
||||
error[E0716]: temporary value dropped while borrowed
|
||||
--> $DIR/min_const_fn_dyn.rs:12:67
|
||||
|
|
||||
LL | const fn no_inner_dyn_trait_ret() -> Hide { Hide(HasDyn { field: &0 }) }
|
||||
|
|
@ -24,12 +24,8 @@ LL | const fn no_inner_dyn_trait_ret() -> Hide { Hide(HasDyn { field: &0 }) }
|
|||
| ||
|
||||
| |creates a temporary which is freed while still in use
|
||||
| cast requires that borrow lasts for `'static`
|
||||
|
|
||||
= warning: this error has been downgraded to a warning for backwards compatibility with previous releases
|
||||
= warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future
|
||||
= note: for more information, try `rustc --explain E0729`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0716, E0723.
|
||||
For more information about an error, try `rustc --explain E0716`.
|
||||
|
|
|
|||
|
|
@ -1,20 +1,18 @@
|
|||
// There isn't a great way to test feature(nll), since it just disables migrate
|
||||
// mode and changes some error messages. We just test for migrate mode.
|
||||
// mode and changes some error messages.
|
||||
|
||||
// FIXME(Centril): This test is probably obsolete now and `nll` should become
|
||||
// `accepted`.
|
||||
|
||||
// Don't use compare-mode=nll, since that turns on NLL.
|
||||
// ignore-compare-mode-nll
|
||||
// ignore-compare-mode-polonius
|
||||
|
||||
#![feature(rustc_attrs)]
|
||||
|
||||
#[rustc_error]
|
||||
fn main() { //~ ERROR compilation successful
|
||||
fn main() {
|
||||
let mut x = (33, &0);
|
||||
|
||||
let m = &mut x;
|
||||
let p = &*x.1;
|
||||
//~^ WARNING cannot borrow
|
||||
//~| WARNING this error has been downgraded to a warning
|
||||
//~| WARNING this warning will become a hard error in the future
|
||||
//~^ ERROR cannot borrow
|
||||
m;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,29 +1,13 @@
|
|||
warning[E0502]: cannot borrow `*x.1` as immutable because it is also borrowed as mutable
|
||||
error[E0502]: cannot borrow `*x.1` as immutable because it is also borrowed as mutable
|
||||
--> $DIR/feature-gate-nll.rs:15:13
|
||||
|
|
||||
LL | let m = &mut x;
|
||||
| ------ mutable borrow occurs here
|
||||
LL | let p = &*x.1;
|
||||
| ^^^^^ immutable borrow occurs here
|
||||
...
|
||||
LL |
|
||||
LL | m;
|
||||
| - mutable borrow later used here
|
||||
|
|
||||
= warning: this error has been downgraded to a warning for backwards compatibility with previous releases
|
||||
= warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future
|
||||
= note: for more information, try `rustc --explain E0729`
|
||||
|
||||
error: compilation successful
|
||||
--> $DIR/feature-gate-nll.rs:11:1
|
||||
|
|
||||
LL | / fn main() {
|
||||
LL | | let mut x = (33, &0);
|
||||
LL | |
|
||||
LL | | let m = &mut x;
|
||||
... |
|
||||
LL | | m;
|
||||
LL | | }
|
||||
| |_^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -7,8 +7,6 @@
|
|||
// reaches the panic code when executed, despite the compiler warning
|
||||
// about that match arm being unreachable.
|
||||
|
||||
#![feature(nll)]
|
||||
|
||||
fn main() {
|
||||
let b = &mut true;
|
||||
match b {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error[E0382]: use of moved value: `b`
|
||||
--> $DIR/issue-27282-move-match-input-into-guard.rs:18:14
|
||||
--> $DIR/issue-27282-move-match-input-into-guard.rs:16:14
|
||||
|
|
||||
LL | let b = &mut true;
|
||||
| - move occurs because `b` has type `&mut bool`, which does not implement the `Copy` trait
|
||||
|
|
|
|||
|
|
@ -1,11 +1,6 @@
|
|||
// Issue 27282: Example 1: This sidesteps the AST checks disallowing
|
||||
// mutable borrows in match guards by hiding the mutable borrow in a
|
||||
// guard behind a move (of the ref mut pattern id) within a closure.
|
||||
//
|
||||
// This example is not rejected by AST borrowck (and then reliably
|
||||
// segfaults when executed).
|
||||
|
||||
#![feature(nll)]
|
||||
|
||||
fn main() {
|
||||
match Some(&4) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error[E0507]: cannot move out of `foo` in pattern guard
|
||||
--> $DIR/issue-27282-move-ref-mut-into-guard.rs:14:19
|
||||
--> $DIR/issue-27282-move-ref-mut-into-guard.rs:9:19
|
||||
|
|
||||
LL | if { (|| { let bar = foo; bar.take() })(); false } => {},
|
||||
| ^^ ---
|
||||
|
|
|
|||
|
|
@ -9,8 +9,6 @@
|
|||
// diverges, and therefore a single final fake-read at the very end
|
||||
// after the final match arm would not suffice.
|
||||
|
||||
#![feature(nll)]
|
||||
|
||||
struct ForceFnOnce;
|
||||
|
||||
fn main() {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error[E0510]: cannot mutably borrow `x` in match guard
|
||||
--> $DIR/issue-27282-mutate-before-diverging-arm-1.rs:23:14
|
||||
--> $DIR/issue-27282-mutate-before-diverging-arm-1.rs:21:14
|
||||
|
|
||||
LL | match x {
|
||||
| - value is immutable in match guard
|
||||
|
|
|
|||
|
|
@ -13,8 +13,6 @@
|
|||
// occurs in the pattern-match itself, and not in the guard
|
||||
// expression.
|
||||
|
||||
#![feature(nll)]
|
||||
|
||||
struct ForceFnOnce;
|
||||
|
||||
fn main() {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error[E0510]: cannot mutably borrow `x` in match guard
|
||||
--> $DIR/issue-27282-mutate-before-diverging-arm-2.rs:28:18
|
||||
--> $DIR/issue-27282-mutate-before-diverging-arm-2.rs:26:18
|
||||
|
|
||||
LL | match x {
|
||||
| - value is immutable in match guard
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
// This case is interesting because a borrow of **x is untracked, because **x is
|
||||
// immutable. However, for matches we care that **x refers to the same value
|
||||
// until we have chosen a match arm.
|
||||
#![feature(nll)]
|
||||
|
||||
struct ForceFnOnce;
|
||||
fn main() {
|
||||
let mut x = &mut &Some(&2);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
#![feature(nll)]
|
||||
|
||||
// test for https://github.com/rust-lang/rust/issues/29723
|
||||
|
||||
fn main() {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error[E0382]: use of moved value: `s`
|
||||
--> $DIR/issue-29723.rs:12:13
|
||||
--> $DIR/issue-29723.rs:10:13
|
||||
|
|
||||
LL | let s = String::new();
|
||||
| - move occurs because `s` has type `std::string::String`, which does not implement the `Copy` trait
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
warning: captured variable cannot escape `FnMut` closure body
|
||||
error: captured variable cannot escape `FnMut` closure body
|
||||
--> $DIR/issue-40510-1.rs:11:9
|
||||
|
|
||||
LL | || {
|
||||
|
|
@ -8,15 +8,6 @@ LL | &mut x
|
|||
|
|
||||
= note: `FnMut` closures only have access to their captured variables while they are executing...
|
||||
= note: ...therefore, they cannot allow references to captured variables to escape
|
||||
= warning: this error has been downgraded to a warning for backwards compatibility with previous releases
|
||||
= warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future
|
||||
= note: for more information, try `rustc --explain E0729`
|
||||
|
||||
error: compilation successful
|
||||
--> $DIR/issue-40510-1.rs:20:1
|
||||
|
|
||||
LL | fn main() {}
|
||||
| ^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +0,0 @@
|
|||
error: captured variable cannot escape `FnMut` closure body
|
||||
--> $DIR/issue-40510-1.rs:11:9
|
||||
|
|
||||
LL | || {
|
||||
| - inferred to be a `FnMut` closure
|
||||
LL | &mut x
|
||||
| ^^^^^^ returns a reference to a captured variable which escapes the closure body
|
||||
|
|
||||
= note: `FnMut` closures only have access to their captured variables while they are executing...
|
||||
= note: ...therefore, they cannot allow references to captured variables to escape
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
@ -1,21 +1,12 @@
|
|||
#![feature(rustc_attrs)]
|
||||
#![allow(unused)]
|
||||
|
||||
// revisions: migrate nll
|
||||
#![cfg_attr(nll, feature(nll))]
|
||||
|
||||
fn f() {
|
||||
let mut x: Box<()> = Box::new(());
|
||||
|
||||
|| {
|
||||
&mut x
|
||||
};
|
||||
//[migrate]~^^ WARNING captured variable cannot escape `FnMut` closure body
|
||||
//[migrate]~| WARNING this error has been downgraded to a warning
|
||||
//[migrate]~| WARNING this warning will become a hard error in the future
|
||||
//[nll]~^^^^^ ERROR captured variable cannot escape `FnMut` closure body
|
||||
//~^^ ERROR captured variable cannot escape `FnMut` closure body
|
||||
}
|
||||
|
||||
#[rustc_error]
|
||||
fn main() {}
|
||||
//[migrate]~^ ERROR
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error: captured variable cannot escape `FnMut` closure body
|
||||
--> $DIR/issue-40510-1.rs:11:9
|
||||
--> $DIR/issue-40510-1.rs:7:9
|
||||
|
|
||||
LL | || {
|
||||
| - inferred to be a `FnMut` closure
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
warning: captured variable cannot escape `FnMut` closure body
|
||||
error: captured variable cannot escape `FnMut` closure body
|
||||
--> $DIR/issue-40510-3.rs:11:9
|
||||
|
|
||||
LL | || {
|
||||
|
|
@ -10,15 +10,6 @@ LL | | }
|
|||
|
|
||||
= note: `FnMut` closures only have access to their captured variables while they are executing...
|
||||
= note: ...therefore, they cannot allow references to captured variables to escape
|
||||
= warning: this error has been downgraded to a warning for backwards compatibility with previous releases
|
||||
= warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future
|
||||
= note: for more information, try `rustc --explain E0729`
|
||||
|
||||
error: compilation successful
|
||||
--> $DIR/issue-40510-3.rs:22:1
|
||||
|
|
||||
LL | fn main() {}
|
||||
| ^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
error: captured variable cannot escape `FnMut` closure body
|
||||
--> $DIR/issue-40510-3.rs:11:9
|
||||
|
|
||||
LL | || {
|
||||
| - inferred to be a `FnMut` closure
|
||||
LL | / || {
|
||||
LL | | x.push(())
|
||||
LL | | }
|
||||
| |_________^ returns a closure that contains a reference to a captured variable, which then escapes the closure body
|
||||
|
|
||||
= note: `FnMut` closures only have access to their captured variables while they are executing...
|
||||
= note: ...therefore, they cannot allow references to captured variables to escape
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
@ -1,9 +1,5 @@
|
|||
#![feature(rustc_attrs)]
|
||||
#![allow(unused)]
|
||||
|
||||
// revisions: migrate nll
|
||||
#![cfg_attr(nll, feature(nll))]
|
||||
|
||||
fn f() {
|
||||
let mut x: Vec<()> = Vec::new();
|
||||
|
||||
|
|
@ -11,13 +7,8 @@ fn f() {
|
|||
|| {
|
||||
x.push(())
|
||||
}
|
||||
//[migrate]~^^^ WARNING captured variable cannot escape `FnMut` closure body
|
||||
//[migrate]~| WARNING this error has been downgraded to a warning
|
||||
//[migrate]~| WARNING this warning will become a hard error in the future
|
||||
//[nll]~^^^^^^ ERROR captured variable cannot escape `FnMut` closure body
|
||||
//~^^^ ERROR captured variable cannot escape `FnMut` closure body
|
||||
};
|
||||
}
|
||||
|
||||
#[rustc_error]
|
||||
fn main() {}
|
||||
//[migrate]~^ ERROR
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error: captured variable cannot escape `FnMut` closure body
|
||||
--> $DIR/issue-40510-3.rs:11:9
|
||||
--> $DIR/issue-40510-3.rs:7:9
|
||||
|
|
||||
LL | || {
|
||||
| - inferred to be a `FnMut` closure
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
#![allow(unused)]
|
||||
#![feature(nll)]
|
||||
|
||||
// ignore-tidy-linelength
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error[E0502]: cannot borrow `u` (via `u.z.c`) as immutable because it is also borrowed as mutable (via `u.s.a`)
|
||||
--> $DIR/issue-45157.rs:29:20
|
||||
--> $DIR/issue-45157.rs:28:20
|
||||
|
|
||||
LL | let mref = &mut u.s.a;
|
||||
| ---------- mutable borrow occurs here (via `u.s.a`)
|
||||
|
|
|
|||
|
|
@ -1,60 +0,0 @@
|
|||
warning[E0713]: borrow may still be in use when destructor runs
|
||||
--> $DIR/issue-45696-scribble-on-boxed-borrow.rs:52:5
|
||||
|
|
||||
LL | fn scribbled<'a>(s: Scribble<'a>) -> &'a mut u32 {
|
||||
| -- lifetime `'a` defined here
|
||||
LL | &mut *s.0
|
||||
| ^^^^^^^^^ returning this value requires that `*s.0` is borrowed for `'a`
|
||||
...
|
||||
LL | }
|
||||
| - here, drop of `s` needs exclusive access to `*s.0`, because the type `Scribble<'_>` implements the `Drop` trait
|
||||
|
|
||||
= warning: this error has been downgraded to a warning for backwards compatibility with previous releases
|
||||
= warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future
|
||||
= note: for more information, try `rustc --explain E0729`
|
||||
|
||||
warning[E0713]: borrow may still be in use when destructor runs
|
||||
--> $DIR/issue-45696-scribble-on-boxed-borrow.rs:63:5
|
||||
|
|
||||
LL | fn boxed_scribbled<'a>(s: Box<Scribble<'a>>) -> &'a mut u32 {
|
||||
| -- lifetime `'a` defined here
|
||||
LL | &mut *(*s).0
|
||||
| ^^^^^^^^^^^^ returning this value requires that `*s.0` is borrowed for `'a`
|
||||
...
|
||||
LL | }
|
||||
| - here, drop of `s` needs exclusive access to `*s.0`, because the type `Scribble<'_>` implements the `Drop` trait
|
||||
|
|
||||
= warning: this error has been downgraded to a warning for backwards compatibility with previous releases
|
||||
= warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future
|
||||
= note: for more information, try `rustc --explain E0729`
|
||||
|
||||
warning[E0713]: borrow may still be in use when destructor runs
|
||||
--> $DIR/issue-45696-scribble-on-boxed-borrow.rs:74:5
|
||||
|
|
||||
LL | fn boxed_boxed_scribbled<'a>(s: Box<Box<Scribble<'a>>>) -> &'a mut u32 {
|
||||
| -- lifetime `'a` defined here
|
||||
LL | &mut *(**s).0
|
||||
| ^^^^^^^^^^^^^ returning this value requires that `*s.0` is borrowed for `'a`
|
||||
...
|
||||
LL | }
|
||||
| - here, drop of `s` needs exclusive access to `*s.0`, because the type `Scribble<'_>` implements the `Drop` trait
|
||||
|
|
||||
= warning: this error has been downgraded to a warning for backwards compatibility with previous releases
|
||||
= warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future
|
||||
= note: for more information, try `rustc --explain E0729`
|
||||
|
||||
error: compilation successful
|
||||
--> $DIR/issue-45696-scribble-on-boxed-borrow.rs:81:1
|
||||
|
|
||||
LL | / fn main() {
|
||||
LL | | let mut x = 1;
|
||||
LL | | {
|
||||
LL | | let mut long_lived = Scribble(&mut x);
|
||||
... |
|
||||
LL | | *boxed_boxed_scribbled(Box::new(Box::new(Scribble(&mut x)))) += 10;
|
||||
LL | | }
|
||||
| |_^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0713`.
|
||||
|
|
@ -1,33 +1,30 @@
|
|||
error[E0713]: borrow may still be in use when destructor runs
|
||||
--> $DIR/issue-45696-scribble-on-boxed-borrow.rs:52:5
|
||||
--> $DIR/issue-45696-scribble-on-boxed-borrow.rs:34:5
|
||||
|
|
||||
LL | fn scribbled<'a>(s: Scribble<'a>) -> &'a mut u32 {
|
||||
| -- lifetime `'a` defined here
|
||||
LL | &mut *s.0
|
||||
| ^^^^^^^^^ returning this value requires that `*s.0` is borrowed for `'a`
|
||||
...
|
||||
LL | }
|
||||
| - here, drop of `s` needs exclusive access to `*s.0`, because the type `Scribble<'_>` implements the `Drop` trait
|
||||
|
||||
error[E0713]: borrow may still be in use when destructor runs
|
||||
--> $DIR/issue-45696-scribble-on-boxed-borrow.rs:63:5
|
||||
--> $DIR/issue-45696-scribble-on-boxed-borrow.rs:39:5
|
||||
|
|
||||
LL | fn boxed_scribbled<'a>(s: Box<Scribble<'a>>) -> &'a mut u32 {
|
||||
| -- lifetime `'a` defined here
|
||||
LL | &mut *(*s).0
|
||||
| ^^^^^^^^^^^^ returning this value requires that `*s.0` is borrowed for `'a`
|
||||
...
|
||||
LL | }
|
||||
| - here, drop of `s` needs exclusive access to `*s.0`, because the type `Scribble<'_>` implements the `Drop` trait
|
||||
|
||||
error[E0713]: borrow may still be in use when destructor runs
|
||||
--> $DIR/issue-45696-scribble-on-boxed-borrow.rs:74:5
|
||||
--> $DIR/issue-45696-scribble-on-boxed-borrow.rs:44:5
|
||||
|
|
||||
LL | fn boxed_boxed_scribbled<'a>(s: Box<Box<Scribble<'a>>>) -> &'a mut u32 {
|
||||
| -- lifetime `'a` defined here
|
||||
LL | &mut *(**s).0
|
||||
| ^^^^^^^^^^^^^ returning this value requires that `*s.0` is borrowed for `'a`
|
||||
...
|
||||
LL | }
|
||||
| - here, drop of `s` needs exclusive access to `*s.0`, because the type `Scribble<'_>` implements the `Drop` trait
|
||||
|
||||
|
|
|
|||
|
|
@ -1,28 +1,14 @@
|
|||
// rust-lang/rust#45696: This test is checking that we *cannot* return
|
||||
// mutable borrows that would be scribbled over by destructors before
|
||||
// the return occurs.
|
||||
//
|
||||
// We will explicitly test NLL, and migration modes;
|
||||
// thus we will also skip the automated compare-mode=nll.
|
||||
|
||||
// revisions: nll migrate
|
||||
// ignore-compare-mode-nll
|
||||
// ignore-compare-mode-polonius
|
||||
|
||||
// This test is going to pass in the migrate revision, because the AST-borrowck
|
||||
// accepted this code in the past (see notes below). So we use `#[rustc_error]`
|
||||
// to keep the outcome as an error in all scenarios, and rely on the stderr
|
||||
// files to show what the actual behavior is. (See rust-lang/rust#49855.)
|
||||
#![feature(rustc_attrs)]
|
||||
|
||||
#![cfg_attr(nll, feature(nll))]
|
||||
|
||||
struct Scribble<'a>(&'a mut u32);
|
||||
|
||||
impl<'a> Drop for Scribble<'a> { fn drop(&mut self) { *self.0 = 42; } }
|
||||
|
||||
// this is okay, in both AST-borrowck and NLL: The `Scribble` here *has*
|
||||
// to strictly outlive `'a`
|
||||
// this is okay: The `Scribble` here *has* to strictly outlive `'a`
|
||||
fn borrowed_scribble<'a>(s: &'a mut Scribble) -> &'a mut u32 {
|
||||
&mut *s.0
|
||||
}
|
||||
|
|
@ -44,41 +30,21 @@ fn boxed_boxed_borrowed_scribble<'a>(s: Box<Box<&'a mut Scribble>>) -> &'a mut u
|
|||
// * (Maybe in the future the two-phase borrows system will be
|
||||
// extended to support this case. But for now, it is an error in
|
||||
// NLL, even with two-phase borrows.)
|
||||
//
|
||||
// In any case, the AST-borrowck was not smart enough to know that
|
||||
// this should be an error. (Which is perhaps the essence of why
|
||||
// rust-lang/rust#45696 arose in the first place.)
|
||||
fn scribbled<'a>(s: Scribble<'a>) -> &'a mut u32 {
|
||||
&mut *s.0 //[nll]~ ERROR borrow may still be in use when destructor runs [E0713]
|
||||
//[migrate]~^ WARNING borrow may still be in use when destructor runs [E0713]
|
||||
//[migrate]~| WARNING this error has been downgraded to a warning for backwards compatibility
|
||||
//[migrate]~| WARNING this represents potential undefined behavior in your code
|
||||
&mut *s.0 //~ ERROR borrow may still be in use when destructor runs [E0713]
|
||||
}
|
||||
|
||||
// This, by analogy to previous case, is *also* not okay.
|
||||
//
|
||||
// (But again, AST-borrowck was not smart enogh to know that this
|
||||
// should be an error.)
|
||||
fn boxed_scribbled<'a>(s: Box<Scribble<'a>>) -> &'a mut u32 {
|
||||
&mut *(*s).0 //[nll]~ ERROR borrow may still be in use when destructor runs [E0713]
|
||||
//[migrate]~^ WARNING borrow may still be in use when destructor runs [E0713]
|
||||
//[migrate]~| WARNING this error has been downgraded to a warning for backwards compatibility
|
||||
//[migrate]~| WARNING this represents potential undefined behavior in your code
|
||||
&mut *(*s).0 //~ ERROR borrow may still be in use when destructor runs [E0713]
|
||||
}
|
||||
|
||||
// This, by analogy to previous case, is *also* not okay.
|
||||
//
|
||||
// (But again, AST-borrowck was not smart enogh to know that this
|
||||
// should be an error.)
|
||||
fn boxed_boxed_scribbled<'a>(s: Box<Box<Scribble<'a>>>) -> &'a mut u32 {
|
||||
&mut *(**s).0 //[nll]~ ERROR borrow may still be in use when destructor runs [E0713]
|
||||
//[migrate]~^ WARNING borrow may still be in use when destructor runs [E0713]
|
||||
//[migrate]~| WARNING this error has been downgraded to a warning for backwards compatibility
|
||||
//[migrate]~| WARNING this represents potential undefined behavior in your code
|
||||
&mut *(**s).0 //~ ERROR borrow may still be in use when destructor runs [E0713]
|
||||
}
|
||||
|
||||
#[rustc_error]
|
||||
fn main() { //[migrate]~ ERROR compilation successful
|
||||
fn main() {
|
||||
let mut x = 1;
|
||||
{
|
||||
let mut long_lived = Scribble(&mut x);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
error[E0713]: borrow may still be in use when destructor runs
|
||||
--> $DIR/issue-45696-scribble-on-boxed-borrow.rs:34:5
|
||||
|
|
||||
LL | fn scribbled<'a>(s: Scribble<'a>) -> &'a mut u32 {
|
||||
| -- lifetime `'a` defined here
|
||||
LL | &mut *s.0
|
||||
| ^^^^^^^^^ returning this value requires that `*s.0` is borrowed for `'a`
|
||||
LL | }
|
||||
| - here, drop of `s` needs exclusive access to `*s.0`, because the type `Scribble<'_>` implements the `Drop` trait
|
||||
|
||||
error[E0713]: borrow may still be in use when destructor runs
|
||||
--> $DIR/issue-45696-scribble-on-boxed-borrow.rs:39:5
|
||||
|
|
||||
LL | fn boxed_scribbled<'a>(s: Box<Scribble<'a>>) -> &'a mut u32 {
|
||||
| -- lifetime `'a` defined here
|
||||
LL | &mut *(*s).0
|
||||
| ^^^^^^^^^^^^ returning this value requires that `*s.0` is borrowed for `'a`
|
||||
LL | }
|
||||
| - here, drop of `s` needs exclusive access to `*s.0`, because the type `Scribble<'_>` implements the `Drop` trait
|
||||
|
||||
error[E0713]: borrow may still be in use when destructor runs
|
||||
--> $DIR/issue-45696-scribble-on-boxed-borrow.rs:44:5
|
||||
|
|
||||
LL | fn boxed_boxed_scribbled<'a>(s: Box<Box<Scribble<'a>>>) -> &'a mut u32 {
|
||||
| -- lifetime `'a` defined here
|
||||
LL | &mut *(**s).0
|
||||
| ^^^^^^^^^^^^^ returning this value requires that `*s.0` is borrowed for `'a`
|
||||
LL | }
|
||||
| - here, drop of `s` needs exclusive access to `*s.0`, because the type `Scribble<'_>` implements the `Drop` trait
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0713`.
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
error: captured variable cannot escape `FnMut` closure body
|
||||
--> $DIR/issue-49824.rs:10:9
|
||||
|
|
||||
LL | || {
|
||||
| - inferred to be a `FnMut` closure
|
||||
LL | / || {
|
||||
LL | |
|
||||
LL | |
|
||||
LL | |
|
||||
LL | | let _y = &mut x;
|
||||
LL | | }
|
||||
| |_________^ returns a closure that contains a reference to a captured variable, which then escapes the closure body
|
||||
|
|
||||
= note: `FnMut` closures only have access to their captured variables while they are executing...
|
||||
= note: ...therefore, they cannot allow references to captured variables to escape
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
@ -1,16 +1,8 @@
|
|||
#![feature(rustc_attrs)]
|
||||
|
||||
// This test checks that a warning occurs with migrate mode.
|
||||
|
||||
#[rustc_error]
|
||||
fn main() {
|
||||
//~^ ERROR compilation successful
|
||||
let mut x = 0;
|
||||
|| {
|
||||
|| {
|
||||
//~^ WARNING captured variable cannot escape `FnMut` closure body
|
||||
//~| WARNING this error has been downgraded to a warning
|
||||
//~| WARNING this warning will become a hard error in the future
|
||||
//~^ ERROR captured variable cannot escape `FnMut` closure body
|
||||
let _y = &mut x;
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,33 +1,16 @@
|
|||
warning: captured variable cannot escape `FnMut` closure body
|
||||
--> $DIR/issue-49824.rs:10:9
|
||||
error: captured variable cannot escape `FnMut` closure body
|
||||
--> $DIR/issue-49824.rs:4:9
|
||||
|
|
||||
LL | || {
|
||||
| - inferred to be a `FnMut` closure
|
||||
LL | / || {
|
||||
LL | |
|
||||
LL | |
|
||||
LL | |
|
||||
LL | | let _y = &mut x;
|
||||
LL | | }
|
||||
| |_________^ returns a closure that contains a reference to a captured variable, which then escapes the closure body
|
||||
|
|
||||
= note: `FnMut` closures only have access to their captured variables while they are executing...
|
||||
= note: ...therefore, they cannot allow references to captured variables to escape
|
||||
= warning: this error has been downgraded to a warning for backwards compatibility with previous releases
|
||||
= warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future
|
||||
= note: for more information, try `rustc --explain E0729`
|
||||
|
||||
error: compilation successful
|
||||
--> $DIR/issue-49824.rs:6:1
|
||||
|
|
||||
LL | / fn main() {
|
||||
LL | |
|
||||
LL | | let mut x = 0;
|
||||
LL | | || {
|
||||
... |
|
||||
LL | | };
|
||||
LL | | }
|
||||
| |_^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
// Regression test for issue #45045
|
||||
|
||||
#![feature(nll)]
|
||||
|
||||
enum Xyz {
|
||||
A,
|
||||
B,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error[E0503]: cannot use `e` because it was mutably borrowed
|
||||
--> $DIR/borrowed-match-issue-45045.rs:15:9
|
||||
--> $DIR/borrowed-match-issue-45045.rs:13:9
|
||||
|
|
||||
LL | let f = &mut e;
|
||||
| ------ borrow of `e` occurs here
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
// Regression test for issue #38899
|
||||
|
||||
#![feature(nll)]
|
||||
|
||||
pub struct Block<'a> {
|
||||
current: &'a u8,
|
||||
unrelated: &'a u8,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
|
||||
--> $DIR/borrowed-referent-issue-38899.rs:13:21
|
||||
--> $DIR/borrowed-referent-issue-38899.rs:11:21
|
||||
|
|
||||
LL | let x = &mut block;
|
||||
| ---------- mutable borrow occurs here
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
// Test that the 'static bound from the Copy impl is respected. Regression test for #29149.
|
||||
|
||||
#![feature(nll)]
|
||||
|
||||
#[derive(Clone)] struct Foo<'a>(&'a u32);
|
||||
impl Copy for Foo<'static> {}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error[E0597]: `s` does not live long enough
|
||||
--> $DIR/do-not-ignore-lifetime-bounds-in-copy.rs:10:17
|
||||
--> $DIR/do-not-ignore-lifetime-bounds-in-copy.rs:8:17
|
||||
|
|
||||
LL | let a = Foo(&s);
|
||||
| ^^ borrowed value does not live long enough
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
#![feature(nll)]
|
||||
|
||||
enum DropOption<T> {
|
||||
Some(T),
|
||||
None,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error[E0713]: borrow may still be in use when destructor runs
|
||||
--> $DIR/enum-drop-access.rs:15:31
|
||||
--> $DIR/enum-drop-access.rs:13:31
|
||||
|
|
||||
LL | fn drop_enum(opt: DropOption<&mut i32>) -> Option<&mut i32> {
|
||||
| - let's call the lifetime of this reference `'1`
|
||||
|
|
@ -13,7 +13,7 @@ LL | }
|
|||
| - here, drop of `opt` needs exclusive access to `*opt.0`, because the type `DropOption<&mut i32>` implements the `Drop` trait
|
||||
|
||||
error[E0713]: borrow may still be in use when destructor runs
|
||||
--> $DIR/enum-drop-access.rs:24:36
|
||||
--> $DIR/enum-drop-access.rs:22:36
|
||||
|
|
||||
LL | fn optional_drop_enum(opt: Option<DropOption<&mut i32>>) -> Option<&mut i32> {
|
||||
| - let's call the lifetime of this reference `'1`
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
// tests that are meant to continue failing to compile once
|
||||
// rust-lang/rust#54987 is implemented.
|
||||
|
||||
#![feature(nll)]
|
||||
|
||||
struct S<Y> {
|
||||
x: u32,
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
error[E0381]: assign to part of possibly-uninitialized variable: `s`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:99:5
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:97:5
|
||||
|
|
||||
LL | s.x = 10; s.y = Box::new(20);
|
||||
| ^^^^^^^^ use of possibly-uninitialized `s`
|
||||
|
||||
error[E0381]: assign to part of possibly-uninitialized variable: `t`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:106:5
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:104:5
|
||||
|
|
||||
LL | t.0 = 10; t.1 = Box::new(20);
|
||||
| ^^^^^^^^ use of possibly-uninitialized `t`
|
||||
|
||||
error[E0382]: assign to part of moved value: `s`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:113:5
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:111:5
|
||||
|
|
||||
LL | let mut s: S<B> = S::new(); drop(s);
|
||||
| ----- - value moved here
|
||||
|
|
@ -21,7 +21,7 @@ LL | s.x = 10; s.y = Box::new(20);
|
|||
| ^^^^^^^^ value partially assigned here after move
|
||||
|
||||
error[E0382]: assign to part of moved value: `t`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:120:5
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:118:5
|
||||
|
|
||||
LL | let mut t: T = (0, Box::new(0)); drop(t);
|
||||
| ----- - value moved here
|
||||
|
|
@ -31,19 +31,19 @@ LL | t.0 = 10; t.1 = Box::new(20);
|
|||
| ^^^^^^^^ value partially assigned here after move
|
||||
|
||||
error[E0381]: assign to part of possibly-uninitialized variable: `s`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:127:5
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:125:5
|
||||
|
|
||||
LL | s.x = 10;
|
||||
| ^^^^^^^^ use of possibly-uninitialized `s`
|
||||
|
||||
error[E0381]: assign to part of possibly-uninitialized variable: `t`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:134:5
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:132:5
|
||||
|
|
||||
LL | t.0 = 10;
|
||||
| ^^^^^^^^ use of possibly-uninitialized `t`
|
||||
|
||||
error[E0382]: assign to part of moved value: `s`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:141:5
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:139:5
|
||||
|
|
||||
LL | let mut s: S<B> = S::new(); drop(s);
|
||||
| ----- - value moved here
|
||||
|
|
@ -53,7 +53,7 @@ LL | s.x = 10;
|
|||
| ^^^^^^^^ value partially assigned here after move
|
||||
|
||||
error[E0382]: assign to part of moved value: `t`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:148:5
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:146:5
|
||||
|
|
||||
LL | let mut t: T = (0, Box::new(0)); drop(t);
|
||||
| ----- - value moved here
|
||||
|
|
@ -63,31 +63,31 @@ LL | t.0 = 10;
|
|||
| ^^^^^^^^ value partially assigned here after move
|
||||
|
||||
error[E0381]: assign to part of possibly-uninitialized variable: `s`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:155:5
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:153:5
|
||||
|
|
||||
LL | s.x = 10;
|
||||
| ^^^^^^^^ use of possibly-uninitialized `s`
|
||||
|
||||
error[E0381]: assign to part of possibly-uninitialized variable: `t`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:162:5
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:160:5
|
||||
|
|
||||
LL | t.0 = 10;
|
||||
| ^^^^^^^^ use of possibly-uninitialized `t`
|
||||
|
||||
error[E0381]: assign to part of possibly-uninitialized variable: `q`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:178:5
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:176:5
|
||||
|
|
||||
LL | q.r.f.x = 10; q.r.f.y = Box::new(20);
|
||||
| ^^^^^^^^^^^^ use of possibly-uninitialized `q.r.f`
|
||||
|
||||
error[E0381]: assign to part of possibly-uninitialized variable: `q`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:185:5
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:183:5
|
||||
|
|
||||
LL | q.r.f.0 = 10; q.r.f.1 = Box::new(20);
|
||||
| ^^^^^^^^^^^^ use of possibly-uninitialized `q.r.f`
|
||||
|
||||
error[E0382]: assign to part of moved value: `q.r`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:192:5
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:190:5
|
||||
|
|
||||
LL | let mut q: Q<S<B>> = Q::new(S::new()); drop(q.r);
|
||||
| --- value moved here
|
||||
|
|
@ -97,7 +97,7 @@ LL | q.r.f.x = 10; q.r.f.y = Box::new(20);
|
|||
= note: move occurs because `q.r` has type `R<S<std::boxed::Box<u32>>>`, which does not implement the `Copy` trait
|
||||
|
||||
error[E0382]: assign to part of moved value: `q.r`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:199:5
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:197:5
|
||||
|
|
||||
LL | let mut q: Q<T> = Q::new((0, Box::new(0))); drop(q.r);
|
||||
| --- value moved here
|
||||
|
|
@ -107,19 +107,19 @@ LL | q.r.f.0 = 10; q.r.f.1 = Box::new(20);
|
|||
= note: move occurs because `q.r` has type `R<(u32, std::boxed::Box<u32>)>`, which does not implement the `Copy` trait
|
||||
|
||||
error[E0381]: assign to part of possibly-uninitialized variable: `q`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:206:5
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:204:5
|
||||
|
|
||||
LL | q.r.f.x = 10;
|
||||
| ^^^^^^^^^^^^ use of possibly-uninitialized `q.r.f`
|
||||
|
||||
error[E0381]: assign to part of possibly-uninitialized variable: `q`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:213:5
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:211:5
|
||||
|
|
||||
LL | q.r.f.0 = 10;
|
||||
| ^^^^^^^^^^^^ use of possibly-uninitialized `q.r.f`
|
||||
|
||||
error[E0382]: assign to part of moved value: `q.r`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:220:5
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:218:5
|
||||
|
|
||||
LL | let mut q: Q<S<B>> = Q::new(S::new()); drop(q.r);
|
||||
| --- value moved here
|
||||
|
|
@ -129,7 +129,7 @@ LL | q.r.f.x = 10;
|
|||
= note: move occurs because `q.r` has type `R<S<std::boxed::Box<u32>>>`, which does not implement the `Copy` trait
|
||||
|
||||
error[E0382]: assign to part of moved value: `q.r`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:227:5
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:225:5
|
||||
|
|
||||
LL | let mut q: Q<T> = Q::new((0, Box::new(0))); drop(q.r);
|
||||
| --- value moved here
|
||||
|
|
@ -139,19 +139,19 @@ LL | q.r.f.0 = 10;
|
|||
= note: move occurs because `q.r` has type `R<(u32, std::boxed::Box<u32>)>`, which does not implement the `Copy` trait
|
||||
|
||||
error[E0381]: assign to part of possibly-uninitialized variable: `q`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:234:5
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:232:5
|
||||
|
|
||||
LL | q.r.f.x = 10;
|
||||
| ^^^^^^^^^^^^ use of possibly-uninitialized `q.r.f`
|
||||
|
||||
error[E0381]: assign to part of possibly-uninitialized variable: `q`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:241:5
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:239:5
|
||||
|
|
||||
LL | q.r.f.0 = 10;
|
||||
| ^^^^^^^^^^^^ use of possibly-uninitialized `q.r.f`
|
||||
|
||||
error[E0382]: assign to part of moved value: `c`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:259:13
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:257:13
|
||||
|
|
||||
LL | let mut c = (1, "".to_owned());
|
||||
| ----- move occurs because `c` has type `(i32, std::string::String)`, which does not implement the `Copy` trait
|
||||
|
|
@ -162,7 +162,7 @@ LL | c.0 = 2;
|
|||
| ^^^^^^^ value partially assigned here after move
|
||||
|
||||
error[E0382]: assign to part of moved value: `c`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:269:13
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:267:13
|
||||
|
|
||||
LL | let mut c = (1, (1, "".to_owned()));
|
||||
| ----- move occurs because `c` has type `(i32, (i32, std::string::String))`, which does not implement the `Copy` trait
|
||||
|
|
@ -173,7 +173,7 @@ LL | (c.1).0 = 2;
|
|||
| ^^^^^^^^^^^ value partially assigned here after move
|
||||
|
||||
error[E0382]: assign to part of moved value: `c.1`
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:277:13
|
||||
--> $DIR/issue-21232-partial-init-and-use.rs:275:13
|
||||
|
|
||||
LL | c2 => {
|
||||
| -- value moved here
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
// Regression test for issue #27868
|
||||
|
||||
#![feature(nll)]
|
||||
|
||||
use std::ops::AddAssign;
|
||||
|
||||
struct MyVec<T>(Vec<T>);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error[E0506]: cannot assign to `vecvec` because it is borrowed
|
||||
--> $DIR/issue-27868.rs:26:9
|
||||
--> $DIR/issue-27868.rs:24:9
|
||||
|
|
||||
LL | vecvec[0] += {
|
||||
| ------
|
||||
|
|
|
|||
|
|
@ -2,8 +2,6 @@
|
|||
// causing region relations not to be enforced at all the places where
|
||||
// they have to be enforced.
|
||||
|
||||
#![feature(nll)]
|
||||
|
||||
struct VecWrapper<'a>(&'a mut S);
|
||||
|
||||
struct S(Box<u32>);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error[E0713]: borrow may still be in use when destructor runs
|
||||
--> $DIR/issue-31567.rs:12:26
|
||||
--> $DIR/issue-31567.rs:10:26
|
||||
|
|
||||
LL | fn get_dangling<'a>(v: VecWrapper<'a>) -> &'a u32 {
|
||||
| -- lifetime `'a` defined here
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
// Regression test for issue #48238
|
||||
|
||||
#![feature(nll)]
|
||||
|
||||
fn use_val<'a>(val: &'a u8) -> &'a u8 {
|
||||
val
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error: lifetime may not live long enough
|
||||
--> $DIR/issue-48238.rs:11:13
|
||||
--> $DIR/issue-48238.rs:9:13
|
||||
|
|
||||
LL | move || use_val(&orig);
|
||||
| ------- ^^^^^^^^^^^^^^ returning this value requires that `'1` must outlive `'2`
|
||||
|
|
|
|||
|
|
@ -3,8 +3,6 @@
|
|||
// one of its fields, it is useful to be reminded of the significance
|
||||
// of the fact that the type implements Drop.
|
||||
|
||||
#![feature(nll)]
|
||||
|
||||
pub struct S<'a> { url: &'a mut String }
|
||||
|
||||
impl<'a> Drop for S<'a> { fn drop(&mut self) { } }
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error[E0713]: borrow may still be in use when destructor runs
|
||||
--> $DIR/issue-52059-report-when-borrow-and-drop-conflict.rs:13:5
|
||||
--> $DIR/issue-52059-report-when-borrow-and-drop-conflict.rs:11:5
|
||||
|
|
||||
LL | fn finish_1(s: S) -> &mut String {
|
||||
| - has type `S<'1>`
|
||||
|
|
@ -9,7 +9,7 @@ LL | }
|
|||
| - here, drop of `s` needs exclusive access to `*s.url`, because the type `S<'_>` implements the `Drop` trait
|
||||
|
||||
error[E0713]: borrow may still be in use when destructor runs
|
||||
--> $DIR/issue-52059-report-when-borrow-and-drop-conflict.rs:18:13
|
||||
--> $DIR/issue-52059-report-when-borrow-and-drop-conflict.rs:16:13
|
||||
|
|
||||
LL | fn finish_2(s: S) -> &mut String {
|
||||
| - has type `S<'1>`
|
||||
|
|
@ -19,7 +19,7 @@ LL | }
|
|||
| - here, drop of `s` needs exclusive access to `*s.url`, because the type `S<'_>` implements the `Drop` trait
|
||||
|
||||
error[E0713]: borrow may still be in use when destructor runs
|
||||
--> $DIR/issue-52059-report-when-borrow-and-drop-conflict.rs:23:21
|
||||
--> $DIR/issue-52059-report-when-borrow-and-drop-conflict.rs:21:21
|
||||
|
|
||||
LL | fn finish_3(s: S) -> &mut String {
|
||||
| - has type `S<'1>`
|
||||
|
|
@ -29,7 +29,7 @@ LL | }
|
|||
| - here, drop of `s` needs exclusive access to `*s.url`, because the type `S<'_>` implements the `Drop` trait
|
||||
|
||||
error[E0509]: cannot move out of type `S<'_>`, which implements the `Drop` trait
|
||||
--> $DIR/issue-52059-report-when-borrow-and-drop-conflict.rs:28:13
|
||||
--> $DIR/issue-52059-report-when-borrow-and-drop-conflict.rs:26:13
|
||||
|
|
||||
LL | let p = s.url; p
|
||||
| ^^^^^
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
#![feature(nll)]
|
||||
|
||||
fn main() {
|
||||
let mut v: Vec<()> = Vec::new();
|
||||
|| &mut v;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error: captured variable cannot escape `FnMut` closure body
|
||||
--> $DIR/issue-53040.rs:5:8
|
||||
--> $DIR/issue-53040.rs:3:8
|
||||
|
|
||||
LL | || &mut v;
|
||||
| - ^^^^^^ returns a reference to a captured variable which escapes the closure body
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
#![feature(nll)]
|
||||
|
||||
struct Archive;
|
||||
struct ArchiveIterator<'a> {
|
||||
x: &'a Archive,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error[E0713]: borrow may still be in use when destructor runs
|
||||
--> $DIR/issue-53773.rs:43:22
|
||||
--> $DIR/issue-53773.rs:41:22
|
||||
|
|
||||
LL | members.push(child.raw);
|
||||
| ^^^^^^^^^
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
#![allow(unused)]
|
||||
#![feature(nll)]
|
||||
|
||||
// ignore-tidy-linelength
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error[E0502]: cannot borrow `r.r2_union.f3_union` (via `r.r2_union.f3_union.s2_leaf.l1_u8`) as immutable because it is also borrowed as mutable (via `r.r2_union.f3_union.s1_leaf.l1_u8`)
|
||||
--> $DIR/issue-57100.rs:44:20
|
||||
--> $DIR/issue-57100.rs:43:20
|
||||
|
|
||||
LL | let mref = &mut r.r2_union.f3_union.s1_leaf.l1_u8;
|
||||
| -------------------------------------- mutable borrow occurs here (via `r.r2_union.f3_union.s1_leaf.l1_u8`)
|
||||
|
|
@ -13,7 +13,7 @@ LL | println!("{} {}", mref, nref)
|
|||
= note: `r.r2_union.f3_union.s2_leaf.l1_u8` is a field of the union `Second`, so it overlaps the field `r.r2_union.f3_union.s1_leaf.l1_u8`
|
||||
|
||||
error[E0502]: cannot borrow `r.r2_union` (via `r.r2_union.f1_leaf.l1_u8`) as immutable because it is also borrowed as mutable (via `r.r2_union.f2_leaf.l1_u8`)
|
||||
--> $DIR/issue-57100.rs:62:20
|
||||
--> $DIR/issue-57100.rs:61:20
|
||||
|
|
||||
LL | let mref = &mut r.r2_union.f2_leaf.l1_u8;
|
||||
| ----------------------------- mutable borrow occurs here (via `r.r2_union.f2_leaf.l1_u8`)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
#![feature(nll)]
|
||||
|
||||
// Here is arielb1's basic example from rust-lang/rust#27282
|
||||
// that AST borrowck is flummoxed by:
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error[E0507]: cannot move out of `foo` in pattern guard
|
||||
--> $DIR/match-guards-always-borrow.rs:10:14
|
||||
--> $DIR/match-guards-always-borrow.rs:8:14
|
||||
|
|
||||
LL | (|| { let bar = foo; bar.take() })();
|
||||
| ^^ ---
|
||||
|
|
|
|||
|
|
@ -5,8 +5,6 @@
|
|||
// Test that we don't allow mutating the value being matched on in a way that
|
||||
// changes which patterns it matches, until we have chosen an arm.
|
||||
|
||||
#![feature(nll)]
|
||||
|
||||
struct A(i32, i32);
|
||||
|
||||
fn struct_example(mut a: A) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
error[E0503]: cannot use `e` because it was mutably borrowed
|
||||
--> $DIR/match-on-borrowed.rs:51:9
|
||||
--> $DIR/match-on-borrowed.rs:49:9
|
||||
|
|
||||
LL | E::V(ref mut x, _) => x,
|
||||
| --------- borrow of `e.0` occurs here
|
||||
|
|
@ -11,7 +11,7 @@ LL | x;
|
|||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `*f` because it was mutably borrowed
|
||||
--> $DIR/match-on-borrowed.rs:64:9
|
||||
--> $DIR/match-on-borrowed.rs:62:9
|
||||
|
|
||||
LL | E::V(ref mut x, _) => x,
|
||||
| --------- borrow of `f.0` occurs here
|
||||
|
|
@ -23,7 +23,7 @@ LL | x;
|
|||
| - borrow later used here
|
||||
|
||||
error[E0503]: cannot use `t` because it was mutably borrowed
|
||||
--> $DIR/match-on-borrowed.rs:82:9
|
||||
--> $DIR/match-on-borrowed.rs:80:9
|
||||
|
|
||||
LL | let x = &mut t;
|
||||
| ------ borrow of `t` occurs here
|
||||
|
|
@ -35,7 +35,7 @@ LL | x;
|
|||
| - borrow later used here
|
||||
|
||||
error[E0381]: use of possibly-uninitialized variable: `n`
|
||||
--> $DIR/match-on-borrowed.rs:92:11
|
||||
--> $DIR/match-on-borrowed.rs:90:11
|
||||
|
|
||||
LL | match n {}
|
||||
| ^ use of possibly-uninitialized `n`
|
||||
|
|
|
|||
|
|
@ -1,22 +0,0 @@
|
|||
error[E0303]: pattern bindings are not allowed after an `@`
|
||||
--> $DIR/pattern-bindings-after-at.rs:8:31
|
||||
|
|
||||
LL | ref mut z @ &mut Some(ref a) => {
|
||||
| ^^^^^ not allowed after `@`
|
||||
|
||||
error[E0502]: cannot borrow `_` as immutable because it is also borrowed as mutable
|
||||
--> $DIR/pattern-bindings-after-at.rs:8:31
|
||||
|
|
||||
LL | ref mut z @ &mut Some(ref a) => {
|
||||
| ----------------------^^^^^-
|
||||
| | |
|
||||
| | immutable borrow occurs here
|
||||
| mutable borrow occurs here
|
||||
...
|
||||
LL | **z = None;
|
||||
| ---------- mutable borrow later used here
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0303, E0502.
|
||||
For more information about an error, try `rustc --explain E0303`.
|
||||
|
|
@ -7,9 +7,7 @@ fn main() {
|
|||
match &mut Some(1) {
|
||||
ref mut z @ &mut Some(ref a) => {
|
||||
//~^ ERROR pattern bindings are not allowed after an `@`
|
||||
//~| WARN cannot borrow `_` as immutable because it is also borrowed as mutable
|
||||
//~| WARN this error has been downgraded to a warning for backwards compatibility
|
||||
//~| WARN this represents potential undefined behavior in your code and this warning will
|
||||
//~| ERROR cannot borrow `_` as immutable because it is also borrowed as mutable
|
||||
**z = None;
|
||||
println!("{}", *a);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ error[E0303]: pattern bindings are not allowed after an `@`
|
|||
LL | ref mut z @ &mut Some(ref a) => {
|
||||
| ^^^^^ not allowed after `@`
|
||||
|
||||
warning[E0502]: cannot borrow `_` as immutable because it is also borrowed as mutable
|
||||
error[E0502]: cannot borrow `_` as immutable because it is also borrowed as mutable
|
||||
--> $DIR/pattern-bindings-after-at.rs:8:31
|
||||
|
|
||||
LL | ref mut z @ &mut Some(ref a) => {
|
||||
|
|
@ -15,12 +15,8 @@ LL | ref mut z @ &mut Some(ref a) => {
|
|||
...
|
||||
LL | **z = None;
|
||||
| ---------- mutable borrow later used here
|
||||
|
|
||||
= warning: this error has been downgraded to a warning for backwards compatibility with previous releases
|
||||
= warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future
|
||||
= note: for more information, try `rustc --explain E0729`
|
||||
|
||||
error: aborting due to previous error
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0303, E0502.
|
||||
For more information about an error, try `rustc --explain E0303`.
|
||||
|
|
|
|||
|
|
@ -1,49 +0,0 @@
|
|||
error[E0625]: thread-local statics cannot be accessed at compile-time
|
||||
--> $DIR/thread-local-in-ctfe.rs:6:17
|
||||
|
|
||||
LL | static B: u32 = A;
|
||||
| ^
|
||||
|
||||
error[E0625]: thread-local statics cannot be accessed at compile-time
|
||||
--> $DIR/thread-local-in-ctfe.rs:9:18
|
||||
|
|
||||
LL | static C: &u32 = &A;
|
||||
| ^^
|
||||
|
||||
error[E0712]: thread-local variable borrowed past end of function
|
||||
--> $DIR/thread-local-in-ctfe.rs:9:18
|
||||
|
|
||||
LL | static C: &u32 = &A;
|
||||
| ^^- end of enclosing function is here
|
||||
| |
|
||||
| thread-local variables cannot be borrowed beyond the end of the function
|
||||
|
||||
error[E0625]: thread-local statics cannot be accessed at compile-time
|
||||
--> $DIR/thread-local-in-ctfe.rs:15:16
|
||||
|
|
||||
LL | const D: u32 = A;
|
||||
| ^
|
||||
|
||||
error[E0625]: thread-local statics cannot be accessed at compile-time
|
||||
--> $DIR/thread-local-in-ctfe.rs:18:17
|
||||
|
|
||||
LL | const E: &u32 = &A;
|
||||
| ^^
|
||||
|
||||
error[E0712]: thread-local variable borrowed past end of function
|
||||
--> $DIR/thread-local-in-ctfe.rs:18:17
|
||||
|
|
||||
LL | const E: &u32 = &A;
|
||||
| ^^- end of enclosing function is here
|
||||
| |
|
||||
| thread-local variables cannot be borrowed beyond the end of the function
|
||||
|
||||
error[E0625]: thread-local statics cannot be accessed at compile-time
|
||||
--> $DIR/thread-local-in-ctfe.rs:25:5
|
||||
|
|
||||
LL | A
|
||||
| ^
|
||||
|
||||
error: aborting due to 7 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0712`.
|
||||
|
|
@ -8,18 +8,14 @@ static B: u32 = A;
|
|||
|
||||
static C: &u32 = &A;
|
||||
//~^ ERROR thread-local statics cannot be accessed at compile-time
|
||||
//~| WARNING thread-local variable borrowed past end of function
|
||||
//~| WARNING this error has been downgraded to a warning
|
||||
//~| WARNING this warning will become a hard error in the future
|
||||
//~| ERROR thread-local variable borrowed past end of function
|
||||
|
||||
const D: u32 = A;
|
||||
//~^ ERROR thread-local statics cannot be accessed at compile-time
|
||||
|
||||
const E: &u32 = &A;
|
||||
//~^ ERROR thread-local statics cannot be accessed at compile-time
|
||||
//~| WARNING thread-local variable borrowed past end of function
|
||||
//~| WARNING this error has been downgraded to a warning
|
||||
//~| WARNING this warning will become a hard error in the future
|
||||
//~| ERROR thread-local variable borrowed past end of function
|
||||
|
||||
const fn f() -> u32 {
|
||||
A
|
||||
|
|
|
|||
|
|
@ -10,48 +10,40 @@ error[E0625]: thread-local statics cannot be accessed at compile-time
|
|||
LL | static C: &u32 = &A;
|
||||
| ^^
|
||||
|
||||
warning[E0712]: thread-local variable borrowed past end of function
|
||||
error[E0712]: thread-local variable borrowed past end of function
|
||||
--> $DIR/thread-local-in-ctfe.rs:9:18
|
||||
|
|
||||
LL | static C: &u32 = &A;
|
||||
| ^^- end of enclosing function is here
|
||||
| |
|
||||
| thread-local variables cannot be borrowed beyond the end of the function
|
||||
|
|
||||
= warning: this error has been downgraded to a warning for backwards compatibility with previous releases
|
||||
= warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future
|
||||
= note: for more information, try `rustc --explain E0729`
|
||||
|
||||
error[E0625]: thread-local statics cannot be accessed at compile-time
|
||||
--> $DIR/thread-local-in-ctfe.rs:15:16
|
||||
--> $DIR/thread-local-in-ctfe.rs:13:16
|
||||
|
|
||||
LL | const D: u32 = A;
|
||||
| ^
|
||||
|
||||
error[E0625]: thread-local statics cannot be accessed at compile-time
|
||||
--> $DIR/thread-local-in-ctfe.rs:18:17
|
||||
--> $DIR/thread-local-in-ctfe.rs:16:17
|
||||
|
|
||||
LL | const E: &u32 = &A;
|
||||
| ^^
|
||||
|
||||
warning[E0712]: thread-local variable borrowed past end of function
|
||||
--> $DIR/thread-local-in-ctfe.rs:18:17
|
||||
error[E0712]: thread-local variable borrowed past end of function
|
||||
--> $DIR/thread-local-in-ctfe.rs:16:17
|
||||
|
|
||||
LL | const E: &u32 = &A;
|
||||
| ^^- end of enclosing function is here
|
||||
| |
|
||||
| thread-local variables cannot be borrowed beyond the end of the function
|
||||
|
|
||||
= warning: this error has been downgraded to a warning for backwards compatibility with previous releases
|
||||
= warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future
|
||||
= note: for more information, try `rustc --explain E0729`
|
||||
|
||||
error[E0625]: thread-local statics cannot be accessed at compile-time
|
||||
--> $DIR/thread-local-in-ctfe.rs:25:5
|
||||
--> $DIR/thread-local-in-ctfe.rs:21:5
|
||||
|
|
||||
LL | A
|
||||
| ^
|
||||
|
||||
error: aborting due to 5 previous errors
|
||||
error: aborting due to 7 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0712`.
|
||||
|
|
|
|||
457
src/tools/cargotest/lockfiles/iron-Cargo.lock
generated
457
src/tools/cargotest/lockfiles/iron-Cargo.lock
generated
|
|
@ -1,457 +0,0 @@
|
|||
[root]
|
||||
name = "iron"
|
||||
version = "0.5.1"
|
||||
dependencies = [
|
||||
"conduit-mime-types 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"hyper 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"hyper-native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"lazy_static 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"mime 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"modifier 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num_cpus 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"plugin 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"time 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"typemap 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"url 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "advapi32-sys"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "antidote"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "conduit-mime-types"
|
||||
version = "0.7.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"rustc-serialize 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation-sys"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crypt32-sys"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "foreign-types"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "gcc"
|
||||
version = "0.3.45"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "gdi32-sys"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "httparse"
|
||||
version = "1.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "hyper"
|
||||
version = "0.10.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"httparse 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"mime 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num_cpus 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc-serialize 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"time 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"url 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hyper-native-tls"
|
||||
version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"antidote 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"hyper 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"native-tls 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "idna"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"matches 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"unicode-bidi 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"unicode-normalization 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "kernel32-sys"
|
||||
version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "language-tags"
|
||||
version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "lazy_static"
|
||||
version = "0.2.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.3.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "matches"
|
||||
version = "0.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "mime"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "modifier"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "native-tls"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"openssl 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"schannel 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"security-framework 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"security-framework-sys 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num_cpus"
|
||||
version = "1.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "openssl"
|
||||
version = "0.9.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"foreign-types 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"lazy_static 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"openssl-sys 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "openssl-sys"
|
||||
version = "0.9.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"gcc 0.3.45 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"user32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pkg-config"
|
||||
version = "0.3.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "plugin"
|
||||
version = "0.2.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"typemap 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.3.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "redox_syscall"
|
||||
version = "0.1.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "rustc-serialize"
|
||||
version = "0.3.23"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "rustc_version"
|
||||
version = "0.1.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"semver 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "schannel"
|
||||
version = "0.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"advapi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"crypt32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"lazy_static 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"secur32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "secur32-sys"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "security-framework"
|
||||
version = "0.1.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"security-framework-sys 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "security-framework-sys"
|
||||
version = "0.1.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "semver"
|
||||
version = "0.1.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "tempdir"
|
||||
version = "0.3.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "time"
|
||||
version = "0.1.36"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"redox_syscall 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "traitobject"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "typeable"
|
||||
version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "typemap"
|
||||
version = "0.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"unsafe-any 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicase"
|
||||
version = "1.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-bidi"
|
||||
version = "0.2.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"matches 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-normalization"
|
||||
version = "0.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "unsafe-any"
|
||||
version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "url"
|
||||
version = "1.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"idna 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"matches 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "user32-sys"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winapi"
|
||||
version = "0.2.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "winapi-build"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[metadata]
|
||||
"checksum advapi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e06588080cb19d0acb6739808aafa5f26bfb2ca015b2b6370028b44cf7cb8a9a"
|
||||
"checksum antidote 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34fde25430d87a9388dadbe6e34d7f72a462c8b43ac8d309b42b0a8505d7e2a5"
|
||||
"checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d"
|
||||
"checksum conduit-mime-types 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "95ca30253581af809925ef68c2641cc140d6183f43e12e0af4992d53768bd7b8"
|
||||
"checksum core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "25bfd746d203017f7d5cbd31ee5d8e17f94b6521c7af77ece6c9e4b2d4b16c67"
|
||||
"checksum core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "065a5d7ffdcbc8fa145d6f0746f3555025b9097a9e9cda59f7467abae670c78d"
|
||||
"checksum crypt32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e34988f7e069e0b2f3bfc064295161e489b2d4e04a2e4248fb94360cdf00b4ec"
|
||||
"checksum foreign-types 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3e4056b9bd47f8ac5ba12be771f77a0dae796d1bbaaf5fd0b9c2d38b69b8a29d"
|
||||
"checksum gcc 0.3.45 (registry+https://github.com/rust-lang/crates.io-index)" = "40899336fb50db0c78710f53e87afc54d8c7266fb76262fecc78ca1a7f09deae"
|
||||
"checksum gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0912515a8ff24ba900422ecda800b52f4016a56251922d397c576bf92c690518"
|
||||
"checksum httparse 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a6e7a63e511f9edffbab707141fbb8707d1a3098615fb2adbd5769cdfcc9b17d"
|
||||
"checksum hyper 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)" = "43a15e3273b2133aaac0150478ab443fb89f15c3de41d8d93d8f3bb14bf560f6"
|
||||
"checksum hyper-native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "afe68f772f0497a7205e751626bb8e1718568b58534b6108c73a74ef80483409"
|
||||
"checksum idna 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1053236e00ce4f668aeca4a769a09b3bf5a682d802abd6f3cb39374f6b162c11"
|
||||
"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
|
||||
"checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a"
|
||||
"checksum lazy_static 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "4732c563b9a21a406565c4747daa7b46742f082911ae4753f390dc9ec7ee1a97"
|
||||
"checksum libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)" = "88ee81885f9f04bff991e306fea7c1c60a5f0f9e409e99f6b40e3311a3363135"
|
||||
"checksum log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "5141eca02775a762cc6cd564d8d2c50f67c0ea3a372cbf1c51592b3e029e10ad"
|
||||
"checksum matches 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "efd7622e3022e1a6eaa602c4cea8912254e5582c9c692e9167714182244801b1"
|
||||
"checksum mime 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "5514f038123342d01ee5f95129e4ef1e0470c93bc29edf058a46f9ee3ba6737e"
|
||||
"checksum modifier 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "41f5c9112cb662acd3b204077e0de5bc66305fa8df65c8019d5adb10e9ab6e58"
|
||||
"checksum native-tls 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b805ee0e8fa268f67a4e5c7f4f80adb8af1fc4428ea0ce5b0ecab1430ef17ec0"
|
||||
"checksum num_cpus 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a18c392466409c50b87369414a2680c93e739aedeb498eb2bff7d7eb569744e2"
|
||||
"checksum openssl 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)" = "d8aa0eb7aad44f0da6f7dda13ddb4559d91a0f40cfab150b1f76ad5b39ec523f"
|
||||
"checksum openssl-sys 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)" = "14f5bfd12054d764510b887152d564ba11d99ae24ea7d740781778f646620576"
|
||||
"checksum pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "3a8b4c6b8165cd1a1cd4b9b120978131389f64bdaf456435caa41e630edba903"
|
||||
"checksum plugin 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "1a6a0dc3910bc8db877ffed8e457763b317cf880df4ae19109b9f77d277cf6e0"
|
||||
"checksum rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "022e0636ec2519ddae48154b028864bdce4eaf7d35226ab8e65c611be97b189d"
|
||||
"checksum redox_syscall 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "29dbdfd4b9df8ab31dec47c6087b7b13cbf4a776f335e4de8efba8288dda075b"
|
||||
"checksum rustc-serialize 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "684ce48436d6465300c9ea783b6b14c4361d6b8dcbb1375b486a69cc19e2dfb0"
|
||||
"checksum rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "c5f5376ea5e30ce23c03eb77cbe4962b988deead10910c372b226388b594c084"
|
||||
"checksum schannel 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c8b291854e37196c2b67249e09d6bdeff410b19e1acf05558168e9c4413b4e95"
|
||||
"checksum secur32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3f412dfa83308d893101dd59c10d6fda8283465976c28c287c5c855bf8d216bc"
|
||||
"checksum security-framework 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2a8396fe671bb1f80fa3f4ff2aae0e968de16ef18d37a4e5e514771a1f07726e"
|
||||
"checksum security-framework-sys 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "573b031c5f672b298cca566fac71aceea00e41bc925e75b5ec7b44dc7237180a"
|
||||
"checksum semver 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)" = "d4f410fedcf71af0345d7607d246e7ad15faaadd49d240ee3b24e5dc21a820ac"
|
||||
"checksum tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "87974a6f5c1dfb344d733055601650059a3363de2a6104819293baff662132d6"
|
||||
"checksum time 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)" = "211b63c112206356ef1ff9b19355f43740fc3f85960c598a93d3a3d3ba7beade"
|
||||
"checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079"
|
||||
"checksum typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887"
|
||||
"checksum typemap 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "653be63c80a3296da5551e1bfd2cca35227e13cdd08c6668903ae2f4f77aa1f6"
|
||||
"checksum unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "13a5906ca2b98c799f4b1ab4557b76367ebd6ae5ef14930ec841c74aed5f3764"
|
||||
"checksum unicode-bidi 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d3a078ebdd62c0e71a709c3d53d2af693fe09fe93fbff8344aebe289b78f9032"
|
||||
"checksum unicode-normalization 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e28fa37426fceeb5cf8f41ee273faa7c82c47dc8fba5853402841e665fcd86ff"
|
||||
"checksum unsafe-any 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b351086021ebc264aea3ab4f94d61d889d98e5e9ec2d985d993f50133537fd3a"
|
||||
"checksum url 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f5ba8a749fb4479b043733416c244fa9d1d3af3d7c23804944651c8a448cb87e"
|
||||
"checksum user32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ef4711d107b21b410a3a974b1204d9accc8b10dad75d8324b5d755de1617d47"
|
||||
"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
|
||||
"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
|
||||
|
|
@ -17,8 +17,8 @@ const TEST_REPOS: &'static [Test] = &[
|
|||
Test {
|
||||
name: "iron",
|
||||
repo: "https://github.com/iron/iron",
|
||||
sha: "21c7dae29c3c214c08533c2a55ac649b418f2fe3",
|
||||
lock: Some(include_str!("lockfiles/iron-Cargo.lock")),
|
||||
sha: "cf056ea5e8052c1feea6141e40ab0306715a2c33",
|
||||
lock: None,
|
||||
packages: &[],
|
||||
},
|
||||
Test {
|
||||
|
|
@ -61,7 +61,7 @@ const TEST_REPOS: &'static [Test] = &[
|
|||
Test {
|
||||
name: "webrender",
|
||||
repo: "https://github.com/servo/webrender",
|
||||
sha: "cdadd068f4c7218bd983d856981d561e605270ab",
|
||||
sha: "a3d6e6894c5a601fa547c6273eb963ca1321c2bb",
|
||||
lock: None,
|
||||
packages: &[],
|
||||
},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue