Auto merge of #42245 - frewsxcv:rollup, r=frewsxcv
Rollup of 7 pull requests - Successful merges: #42169, #42215, #42216, #42224, #42230, #42236, #42241 - Failed merges:
This commit is contained in:
commit
256e497fe6
@ -1,7 +1,7 @@
|
|||||||
# `step_trait`
|
# `step_trait`
|
||||||
|
|
||||||
The tracking issue for this feature is: [#27741]
|
The tracking issue for this feature is: [#42168]
|
||||||
|
|
||||||
[#27741]: https://github.com/rust-lang/rust/issues/27741
|
[#42168]: https://github.com/rust-lang/rust/issues/42168
|
||||||
|
|
||||||
------------------------
|
------------------------
|
||||||
|
@ -393,7 +393,12 @@ impl<T> [T] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Returns a reference to an element or subslice, without doing bounds
|
/// Returns a reference to an element or subslice, without doing bounds
|
||||||
/// checking. So use it very carefully!
|
/// checking.
|
||||||
|
///
|
||||||
|
/// This is generally not recommended, use with caution! For a safe
|
||||||
|
/// alternative see [`get`].
|
||||||
|
///
|
||||||
|
/// [`get`]: #method.get
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
@ -413,7 +418,12 @@ impl<T> [T] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Returns a mutable reference to an element or subslice, without doing
|
/// Returns a mutable reference to an element or subslice, without doing
|
||||||
/// bounds checking. So use it very carefully!
|
/// bounds checking.
|
||||||
|
///
|
||||||
|
/// This is generally not recommended, use with caution! For a safe
|
||||||
|
/// alternative see [`get_mut`].
|
||||||
|
///
|
||||||
|
/// [`get_mut`]: #method.get_mut
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
|
@ -435,6 +435,12 @@ impl str {
|
|||||||
/// Creates a string slice from another string slice, bypassing safety
|
/// Creates a string slice from another string slice, bypassing safety
|
||||||
/// checks.
|
/// checks.
|
||||||
///
|
///
|
||||||
|
/// This is generally not recommended, use with caution! For a safe
|
||||||
|
/// alternative see [`str`] and [`Index`].
|
||||||
|
///
|
||||||
|
/// [`str`]: primitive.str.html
|
||||||
|
/// [`Index`]: ops/trait.Index.html
|
||||||
|
///
|
||||||
/// This new slice goes from `begin` to `end`, including `begin` but
|
/// This new slice goes from `begin` to `end`, including `begin` but
|
||||||
/// excluding `end`.
|
/// excluding `end`.
|
||||||
///
|
///
|
||||||
@ -477,6 +483,11 @@ impl str {
|
|||||||
|
|
||||||
/// Creates a string slice from another string slice, bypassing safety
|
/// Creates a string slice from another string slice, bypassing safety
|
||||||
/// checks.
|
/// checks.
|
||||||
|
/// This is generally not recommended, use with caution! For a safe
|
||||||
|
/// alternative see [`str`] and [`IndexMut`].
|
||||||
|
///
|
||||||
|
/// [`str`]: primitive.str.html
|
||||||
|
/// [`IndexMut`]: ops/trait.IndexMut.html
|
||||||
///
|
///
|
||||||
/// This new slice goes from `begin` to `end`, including `begin` but
|
/// This new slice goes from `begin` to `end`, including `begin` but
|
||||||
/// excluding `end`.
|
/// excluding `end`.
|
||||||
@ -1018,7 +1029,7 @@ impl str {
|
|||||||
///
|
///
|
||||||
/// ```
|
/// ```
|
||||||
/// let x = "(///)".to_string();
|
/// let x = "(///)".to_string();
|
||||||
/// let d: Vec<_> = x.split('/').collect();;
|
/// let d: Vec<_> = x.split('/').collect();
|
||||||
///
|
///
|
||||||
/// assert_eq!(d, &["(", "", "", ")"]);
|
/// assert_eq!(d, &["(", "", "", ")"]);
|
||||||
/// ```
|
/// ```
|
||||||
|
@ -309,7 +309,7 @@ pub use self::iterator::Iterator;
|
|||||||
|
|
||||||
#[unstable(feature = "step_trait",
|
#[unstable(feature = "step_trait",
|
||||||
reason = "likely to be replaced by finer-grained traits",
|
reason = "likely to be replaced by finer-grained traits",
|
||||||
issue = "27741")]
|
issue = "42168")]
|
||||||
pub use self::range::Step;
|
pub use self::range::Step;
|
||||||
#[unstable(feature = "step_by", reason = "recent addition",
|
#[unstable(feature = "step_by", reason = "recent addition",
|
||||||
issue = "27741")]
|
issue = "27741")]
|
||||||
|
@ -20,7 +20,7 @@ use super::{FusedIterator, TrustedLen};
|
|||||||
/// two `Step` objects.
|
/// two `Step` objects.
|
||||||
#[unstable(feature = "step_trait",
|
#[unstable(feature = "step_trait",
|
||||||
reason = "likely to be replaced by finer-grained traits",
|
reason = "likely to be replaced by finer-grained traits",
|
||||||
issue = "27741")]
|
issue = "42168")]
|
||||||
pub trait Step: PartialOrd + Sized {
|
pub trait Step: PartialOrd + Sized {
|
||||||
/// Steps `self` if possible.
|
/// Steps `self` if possible.
|
||||||
fn step(&self, by: &Self) -> Option<Self>;
|
fn step(&self, by: &Self) -> Option<Self>;
|
||||||
@ -55,7 +55,7 @@ macro_rules! step_impl_unsigned {
|
|||||||
($($t:ty)*) => ($(
|
($($t:ty)*) => ($(
|
||||||
#[unstable(feature = "step_trait",
|
#[unstable(feature = "step_trait",
|
||||||
reason = "likely to be replaced by finer-grained traits",
|
reason = "likely to be replaced by finer-grained traits",
|
||||||
issue = "27741")]
|
issue = "42168")]
|
||||||
impl Step for $t {
|
impl Step for $t {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn step(&self, by: &$t) -> Option<$t> {
|
fn step(&self, by: &$t) -> Option<$t> {
|
||||||
@ -115,7 +115,7 @@ macro_rules! step_impl_signed {
|
|||||||
($($t:ty)*) => ($(
|
($($t:ty)*) => ($(
|
||||||
#[unstable(feature = "step_trait",
|
#[unstable(feature = "step_trait",
|
||||||
reason = "likely to be replaced by finer-grained traits",
|
reason = "likely to be replaced by finer-grained traits",
|
||||||
issue = "27741")]
|
issue = "42168")]
|
||||||
impl Step for $t {
|
impl Step for $t {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn step(&self, by: &$t) -> Option<$t> {
|
fn step(&self, by: &$t) -> Option<$t> {
|
||||||
@ -187,7 +187,7 @@ macro_rules! step_impl_no_between {
|
|||||||
($($t:ty)*) => ($(
|
($($t:ty)*) => ($(
|
||||||
#[unstable(feature = "step_trait",
|
#[unstable(feature = "step_trait",
|
||||||
reason = "likely to be replaced by finer-grained traits",
|
reason = "likely to be replaced by finer-grained traits",
|
||||||
issue = "27741")]
|
issue = "42168")]
|
||||||
impl Step for $t {
|
impl Step for $t {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn step(&self, by: &$t) -> Option<$t> {
|
fn step(&self, by: &$t) -> Option<$t> {
|
||||||
|
22
src/librustc_llvm/Cargo.lock
generated
22
src/librustc_llvm/Cargo.lock
generated
@ -1,22 +0,0 @@
|
|||||||
[root]
|
|
||||||
name = "rustc_llvm"
|
|
||||||
version = "0.0.0"
|
|
||||||
dependencies = [
|
|
||||||
"build_helper 0.1.0",
|
|
||||||
"gcc 0.3.28 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"rustc_bitflags 0.0.0",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "build_helper"
|
|
||||||
version = "0.1.0"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gcc"
|
|
||||||
version = "0.3.28"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rustc_bitflags"
|
|
||||||
version = "0.0.0"
|
|
||||||
|
|
@ -141,7 +141,7 @@ impl<'a, 'tcx> Visitor<'tcx> for CheckCrateVisitor<'a, 'tcx> {
|
|||||||
let outer_penv = self.tcx.infer_ctxt(body_id, Reveal::UserFacing).enter(|infcx| {
|
let outer_penv = self.tcx.infer_ctxt(body_id, Reveal::UserFacing).enter(|infcx| {
|
||||||
let param_env = infcx.param_env.clone();
|
let param_env = infcx.param_env.clone();
|
||||||
let outer_penv = mem::replace(&mut self.param_env, param_env);
|
let outer_penv = mem::replace(&mut self.param_env, param_env);
|
||||||
let region_maps = &self.tcx.region_maps(item_def_id);;
|
let region_maps = &self.tcx.region_maps(item_def_id);
|
||||||
euv::ExprUseVisitor::new(self, region_maps, &infcx).consume_body(body);
|
euv::ExprUseVisitor::new(self, region_maps, &infcx).consume_body(body);
|
||||||
outer_penv
|
outer_penv
|
||||||
});
|
});
|
||||||
|
@ -901,7 +901,7 @@ impl<'a, 'tcx> MirContext<'a, 'tcx> {
|
|||||||
let llty = type_of::type_of(bcx.ccx, val.ty);
|
let llty = type_of::type_of(bcx.ccx, val.ty);
|
||||||
let cast_ptr = bcx.pointercast(dst.llval, llty.ptr_to());
|
let cast_ptr = bcx.pointercast(dst.llval, llty.ptr_to());
|
||||||
let in_type = val.ty;
|
let in_type = val.ty;
|
||||||
let out_type = dst.ty.to_ty(bcx.tcx());;
|
let out_type = dst.ty.to_ty(bcx.tcx());
|
||||||
let llalign = cmp::min(bcx.ccx.align_of(in_type), bcx.ccx.align_of(out_type));
|
let llalign = cmp::min(bcx.ccx.align_of(in_type), bcx.ccx.align_of(out_type));
|
||||||
self.store_operand(bcx, cast_ptr, Some(llalign), val);
|
self.store_operand(bcx, cast_ptr, Some(llalign), val);
|
||||||
}
|
}
|
||||||
|
@ -963,7 +963,7 @@ impl<'o, 'gcx: 'tcx, 'tcx> AstConv<'gcx, 'tcx>+'o {
|
|||||||
pub fn prohibit_projection(&self, span: Span) {
|
pub fn prohibit_projection(&self, span: Span) {
|
||||||
let mut err = struct_span_err!(self.tcx().sess, span, E0229,
|
let mut err = struct_span_err!(self.tcx().sess, span, E0229,
|
||||||
"associated type bindings are not allowed here");
|
"associated type bindings are not allowed here");
|
||||||
err.span_label(span, "associate type not allowed here").emit();
|
err.span_label(span, "associated type not allowed here").emit();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check a type Path and convert it to a Ty.
|
// Check a type Path and convert it to a Ty.
|
||||||
|
@ -1545,7 +1545,7 @@ pub fn create_dir<P: AsRef<Path>>(path: P) -> io::Result<()> {
|
|||||||
/// determined to not exist) are outlined by `fs::create_dir`.
|
/// determined to not exist) are outlined by `fs::create_dir`.
|
||||||
///
|
///
|
||||||
/// Notable exception is made for situations where any of the directories
|
/// Notable exception is made for situations where any of the directories
|
||||||
/// specified in the `path` could not be created as it was created concurrently.
|
/// specified in the `path` could not be created as it was being created concurrently.
|
||||||
/// Such cases are considered success. In other words: calling `create_dir_all`
|
/// Such cases are considered success. In other words: calling `create_dir_all`
|
||||||
/// concurrently from multiple threads or processes is guaranteed to not fail
|
/// concurrently from multiple threads or processes is guaranteed to not fail
|
||||||
/// due to race itself.
|
/// due to race itself.
|
||||||
|
@ -22,7 +22,7 @@ impl Foo for isize {
|
|||||||
|
|
||||||
fn baz<I>(x: &<I as Foo<A=Bar>>::A) {}
|
fn baz<I>(x: &<I as Foo<A=Bar>>::A) {}
|
||||||
//~^ ERROR associated type bindings are not allowed here [E0229]
|
//~^ ERROR associated type bindings are not allowed here [E0229]
|
||||||
//~| NOTE associate type not allowed here
|
//~| NOTE associated type not allowed here
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ pub trait D {
|
|||||||
fn f<T>(self)
|
fn f<T>(self)
|
||||||
where T<Bogus = Foo>: A;
|
where T<Bogus = Foo>: A;
|
||||||
//~^ ERROR associated type bindings are not allowed here [E0229]
|
//~^ ERROR associated type bindings are not allowed here [E0229]
|
||||||
//~| NOTE associate type not allowed here
|
//~| NOTE associated type not allowed here
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
@ -14,7 +14,7 @@ pub trait D {
|
|||||||
fn f<T>(self)
|
fn f<T>(self)
|
||||||
where T<Bogus = Self::AlsoBogus>: A;
|
where T<Bogus = Self::AlsoBogus>: A;
|
||||||
//~^ ERROR associated type bindings are not allowed here [E0229]
|
//~^ ERROR associated type bindings are not allowed here [E0229]
|
||||||
//~| NOTE associate type not allowed here
|
//~| NOTE associated type not allowed here
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
16
src/test/compile-fail/issue-36379.rs
Normal file
16
src/test/compile-fail/issue-36379.rs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||||
|
// file at the top-level directory of this distribution and at
|
||||||
|
// http://rust-lang.org/COPYRIGHT.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||||
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||||
|
// option. This file may not be copied, modified, or distributed
|
||||||
|
// except according to those terms.
|
||||||
|
|
||||||
|
#![feature(conservative_impl_trait, rustc_attrs)]
|
||||||
|
|
||||||
|
fn _test() -> impl Default { }
|
||||||
|
|
||||||
|
#[rustc_error]
|
||||||
|
fn main() { } //~ ERROR compilation successful
|
18
src/test/compile-fail/issue-37550.rs
Normal file
18
src/test/compile-fail/issue-37550.rs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||||
|
// file at the top-level directory of this distribution and at
|
||||||
|
// http://rust-lang.org/COPYRIGHT.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||||
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||||
|
// option. This file may not be copied, modified, or distributed
|
||||||
|
// except according to those terms.
|
||||||
|
|
||||||
|
#![feature(const_fn)]
|
||||||
|
|
||||||
|
const fn x() {
|
||||||
|
let t = true; //~ ERROR blocks in constant functions are limited to items and tail expressions
|
||||||
|
let x = || t; //~ ERROR blocks in constant functions are limited to items and tail expressions
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
20
src/test/compile-fail/issue-37665.rs
Normal file
20
src/test/compile-fail/issue-37665.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||||
|
// file at the top-level directory of this distribution and at
|
||||||
|
// http://rust-lang.org/COPYRIGHT.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||||
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||||
|
// option. This file may not be copied, modified, or distributed
|
||||||
|
// except according to those terms.
|
||||||
|
|
||||||
|
// compile-flags: -Z unstable-options --unpretty=mir
|
||||||
|
|
||||||
|
use std::path::MAIN_SEPARATOR;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let mut foo : String = "hello".to_string();
|
||||||
|
foo.push(MAIN_SEPARATOR);
|
||||||
|
println!("{}", foo);
|
||||||
|
let x: () = 0; //~ ERROR: mismatched types
|
||||||
|
}
|
31
src/test/compile-fail/issue-38160.rs
Normal file
31
src/test/compile-fail/issue-38160.rs
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||||
|
// file at the top-level directory of this distribution and at
|
||||||
|
// http://rust-lang.org/COPYRIGHT.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||||
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||||
|
// option. This file may not be copied, modified, or distributed
|
||||||
|
// except according to those terms.
|
||||||
|
|
||||||
|
#![feature(associated_consts, rustc_attrs)]
|
||||||
|
#![allow(warnings)]
|
||||||
|
|
||||||
|
trait MyTrait {
|
||||||
|
const MY_CONST: &'static str;
|
||||||
|
}
|
||||||
|
|
||||||
|
macro_rules! my_macro {
|
||||||
|
() => {
|
||||||
|
struct MyStruct;
|
||||||
|
|
||||||
|
impl MyTrait for MyStruct {
|
||||||
|
const MY_CONST: &'static str = stringify!(abc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
my_macro!();
|
||||||
|
|
||||||
|
#[rustc_error]
|
||||||
|
fn main() {} //~ ERROR compilation successful
|
16
src/test/compile-fail/issue-38954.rs
Normal file
16
src/test/compile-fail/issue-38954.rs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||||
|
// file at the top-level directory of this distribution and at
|
||||||
|
// http://rust-lang.org/COPYRIGHT.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||||
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||||
|
// option. This file may not be copied, modified, or distributed
|
||||||
|
// except according to those terms.
|
||||||
|
|
||||||
|
#![feature(rustc_attrs)]
|
||||||
|
|
||||||
|
fn _test(ref _p: str) {}
|
||||||
|
|
||||||
|
#[rustc_error]
|
||||||
|
fn main() { } //~ ERROR compilation successful
|
28
src/test/compile-fail/issue-39362.rs
Normal file
28
src/test/compile-fail/issue-39362.rs
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||||
|
// file at the top-level directory of this distribution and at
|
||||||
|
// http://rust-lang.org/COPYRIGHT.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||||
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||||
|
// option. This file may not be copied, modified, or distributed
|
||||||
|
// except according to those terms.
|
||||||
|
|
||||||
|
enum Foo {
|
||||||
|
Bar { bar: Bar, id: usize }
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Bar {
|
||||||
|
A, B, C, D, E, F
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test(f: Foo) {
|
||||||
|
match f {
|
||||||
|
//~^ ERROR non-exhaustive patterns
|
||||||
|
//~| patterns
|
||||||
|
Foo::Bar { bar: Bar::A, .. } => (),
|
||||||
|
Foo::Bar { bar: Bar::B, .. } => (),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
@ -13,7 +13,7 @@
|
|||||||
fn foo<F: FnOnce()>(_f: F) { }
|
fn foo<F: FnOnce()>(_f: F) { }
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut var = Vec::new();;
|
let mut var = Vec::new();
|
||||||
foo(move|| {
|
foo(move|| {
|
||||||
var.push(1);
|
var.push(1);
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user