diff --git a/src/doc/unstable-book/src/library-features/step-trait.md b/src/doc/unstable-book/src/library-features/step-trait.md index e53ca13f7b6f5..56050c20c6915 100644 --- a/src/doc/unstable-book/src/library-features/step-trait.md +++ b/src/doc/unstable-book/src/library-features/step-trait.md @@ -1,7 +1,7 @@ # `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 ------------------------ diff --git a/src/libcollections/slice.rs b/src/libcollections/slice.rs index 5696f5fe6a7ba..233ff8a51545d 100644 --- a/src/libcollections/slice.rs +++ b/src/libcollections/slice.rs @@ -393,7 +393,12 @@ impl [T] { } /// 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 /// @@ -413,7 +418,12 @@ impl [T] { } /// 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 /// diff --git a/src/libcollections/str.rs b/src/libcollections/str.rs index 7e67befb700db..eb32f4781948d 100644 --- a/src/libcollections/str.rs +++ b/src/libcollections/str.rs @@ -435,6 +435,12 @@ impl str { /// Creates a string slice from another string slice, bypassing safety /// 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 /// excluding `end`. /// @@ -477,6 +483,11 @@ impl str { /// Creates a string slice from another string slice, bypassing safety /// 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 /// excluding `end`. @@ -1018,7 +1029,7 @@ impl str { /// /// ``` /// let x = "(///)".to_string(); - /// let d: Vec<_> = x.split('/').collect();; + /// let d: Vec<_> = x.split('/').collect(); /// /// assert_eq!(d, &["(", "", "", ")"]); /// ``` diff --git a/src/libcore/iter/mod.rs b/src/libcore/iter/mod.rs index f9b818f5bff35..54919a414786d 100644 --- a/src/libcore/iter/mod.rs +++ b/src/libcore/iter/mod.rs @@ -309,7 +309,7 @@ pub use self::iterator::Iterator; #[unstable(feature = "step_trait", reason = "likely to be replaced by finer-grained traits", - issue = "27741")] + issue = "42168")] pub use self::range::Step; #[unstable(feature = "step_by", reason = "recent addition", issue = "27741")] diff --git a/src/libcore/iter/range.rs b/src/libcore/iter/range.rs index 02d38ccea44ea..e02823fd81280 100644 --- a/src/libcore/iter/range.rs +++ b/src/libcore/iter/range.rs @@ -20,7 +20,7 @@ use super::{FusedIterator, TrustedLen}; /// two `Step` objects. #[unstable(feature = "step_trait", reason = "likely to be replaced by finer-grained traits", - issue = "27741")] + issue = "42168")] pub trait Step: PartialOrd + Sized { /// Steps `self` if possible. fn step(&self, by: &Self) -> Option; @@ -55,7 +55,7 @@ macro_rules! step_impl_unsigned { ($($t:ty)*) => ($( #[unstable(feature = "step_trait", reason = "likely to be replaced by finer-grained traits", - issue = "27741")] + issue = "42168")] impl Step for $t { #[inline] fn step(&self, by: &$t) -> Option<$t> { @@ -115,7 +115,7 @@ macro_rules! step_impl_signed { ($($t:ty)*) => ($( #[unstable(feature = "step_trait", reason = "likely to be replaced by finer-grained traits", - issue = "27741")] + issue = "42168")] impl Step for $t { #[inline] fn step(&self, by: &$t) -> Option<$t> { @@ -187,7 +187,7 @@ macro_rules! step_impl_no_between { ($($t:ty)*) => ($( #[unstable(feature = "step_trait", reason = "likely to be replaced by finer-grained traits", - issue = "27741")] + issue = "42168")] impl Step for $t { #[inline] fn step(&self, by: &$t) -> Option<$t> { diff --git a/src/librustc_llvm/Cargo.lock b/src/librustc_llvm/Cargo.lock deleted file mode 100644 index 17678ef2bbd8f..0000000000000 --- a/src/librustc_llvm/Cargo.lock +++ /dev/null @@ -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" - diff --git a/src/librustc_passes/consts.rs b/src/librustc_passes/consts.rs index 25845c5768e8c..698850f0e9e7f 100644 --- a/src/librustc_passes/consts.rs +++ b/src/librustc_passes/consts.rs @@ -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 param_env = infcx.param_env.clone(); 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); outer_penv }); diff --git a/src/librustc_trans/mir/block.rs b/src/librustc_trans/mir/block.rs index d94d7f4430bf0..a3fa1279ffb45 100644 --- a/src/librustc_trans/mir/block.rs +++ b/src/librustc_trans/mir/block.rs @@ -901,7 +901,7 @@ impl<'a, 'tcx> MirContext<'a, 'tcx> { let llty = type_of::type_of(bcx.ccx, val.ty); let cast_ptr = bcx.pointercast(dst.llval, llty.ptr_to()); 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)); self.store_operand(bcx, cast_ptr, Some(llalign), val); } diff --git a/src/librustc_typeck/astconv.rs b/src/librustc_typeck/astconv.rs index d1ff3ed4f490f..0c9d74df2485c 100644 --- a/src/librustc_typeck/astconv.rs +++ b/src/librustc_typeck/astconv.rs @@ -963,7 +963,7 @@ impl<'o, 'gcx: 'tcx, 'tcx> AstConv<'gcx, 'tcx>+'o { pub fn prohibit_projection(&self, span: Span) { let mut err = struct_span_err!(self.tcx().sess, span, E0229, "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. diff --git a/src/libstd/fs.rs b/src/libstd/fs.rs index 528d903b8b018..69843199348b5 100644 --- a/src/libstd/fs.rs +++ b/src/libstd/fs.rs @@ -1545,7 +1545,7 @@ pub fn create_dir>(path: P) -> io::Result<()> { /// determined to not exist) are outlined by `fs::create_dir`. /// /// 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` /// concurrently from multiple threads or processes is guaranteed to not fail /// due to race itself. diff --git a/src/test/compile-fail/E0229.rs b/src/test/compile-fail/E0229.rs index 6ff0baeeb4d4b..d15f9937f1382 100644 --- a/src/test/compile-fail/E0229.rs +++ b/src/test/compile-fail/E0229.rs @@ -22,7 +22,7 @@ impl Foo for isize { fn baz(x: &>::A) {} //~^ ERROR associated type bindings are not allowed here [E0229] -//~| NOTE associate type not allowed here +//~| NOTE associated type not allowed here fn main() { } diff --git a/src/test/compile-fail/issue-23543.rs b/src/test/compile-fail/issue-23543.rs index f1c559b6b889f..e1acc8eb475ac 100644 --- a/src/test/compile-fail/issue-23543.rs +++ b/src/test/compile-fail/issue-23543.rs @@ -16,7 +16,7 @@ pub trait D { fn f(self) where T: A; //~^ ERROR associated type bindings are not allowed here [E0229] - //~| NOTE associate type not allowed here + //~| NOTE associated type not allowed here } fn main() {} diff --git a/src/test/compile-fail/issue-23544.rs b/src/test/compile-fail/issue-23544.rs index 3959c22d1d489..3cd6f9ebc7185 100644 --- a/src/test/compile-fail/issue-23544.rs +++ b/src/test/compile-fail/issue-23544.rs @@ -14,7 +14,7 @@ pub trait D { fn f(self) where T: A; //~^ ERROR associated type bindings are not allowed here [E0229] - //~| NOTE associate type not allowed here + //~| NOTE associated type not allowed here } fn main() {} diff --git a/src/test/compile-fail/issue-36379.rs b/src/test/compile-fail/issue-36379.rs new file mode 100644 index 0000000000000..2f513b034c36d --- /dev/null +++ b/src/test/compile-fail/issue-36379.rs @@ -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 or the MIT license +// , 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 diff --git a/src/test/compile-fail/issue-37550.rs b/src/test/compile-fail/issue-37550.rs new file mode 100644 index 0000000000000..e1f7f64e01a66 --- /dev/null +++ b/src/test/compile-fail/issue-37550.rs @@ -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 or the MIT license +// , 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() {} diff --git a/src/test/compile-fail/issue-37665.rs b/src/test/compile-fail/issue-37665.rs new file mode 100644 index 0000000000000..f86f570d25dc6 --- /dev/null +++ b/src/test/compile-fail/issue-37665.rs @@ -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 or the MIT license +// , 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 +} diff --git a/src/test/compile-fail/issue-38160.rs b/src/test/compile-fail/issue-38160.rs new file mode 100644 index 0000000000000..311d0ceb4d37b --- /dev/null +++ b/src/test/compile-fail/issue-38160.rs @@ -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 or the MIT license +// , 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 diff --git a/src/test/compile-fail/issue-38954.rs b/src/test/compile-fail/issue-38954.rs new file mode 100644 index 0000000000000..65b17a3db0b59 --- /dev/null +++ b/src/test/compile-fail/issue-38954.rs @@ -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 or the MIT license +// , 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 diff --git a/src/test/compile-fail/issue-39362.rs b/src/test/compile-fail/issue-39362.rs new file mode 100644 index 0000000000000..9d8abbfc65d07 --- /dev/null +++ b/src/test/compile-fail/issue-39362.rs @@ -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 or the MIT license +// , 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() {} diff --git a/src/test/run-pass/issue-16671.rs b/src/test/run-pass/issue-16671.rs index 71a19d9819054..49dc970ba3f0d 100644 --- a/src/test/run-pass/issue-16671.rs +++ b/src/test/run-pass/issue-16671.rs @@ -13,7 +13,7 @@ fn foo(_f: F) { } fn main() { - let mut var = Vec::new();; + let mut var = Vec::new(); foo(move|| { var.push(1); });