Auto merge of #54389 - kennytm:rollup, r=kennytm

Rollup of 15 pull requests

Successful merges:

 - #52813 (Duration div mul extras)
 - #53470 (Warn about metadata loader errors)
 - #54233 (Remove LLVM 3.9 workaround.)
 - #54257 (Switch wasm math symbols to their original names)
 - #54258 (Enable fatal warnings for the wasm32 linker)
 - #54266 (Update LLVM to fix "bool" arguments on PPC32)
 - #54290 (Switch linker for aarch64-pc-windows-msvc from LLD to MSVC)
 - #54292 (Suggest array indexing when tuple indexing on an array)
 - #54295 (A few cleanups and minor improvements to rustc/traits)
 - #54298 (miri: correctly compute expected alignment for field)
 - #54333 (Update The Book to latest)
 - #54337 (Remove unneeded clone() from tests in librustdoc)
 - #54346 (rustc: future-proof error reporting for polymorphic constants in types.)
 - #54362 (Pass --batch to gdb)
 - #54367 (Add regression test for thread local static mut borrows)
This commit is contained in:
bors 2018-09-20 22:47:34 +00:00
commit 2fa1390f6c
35 changed files with 632 additions and 521 deletions

View file

@ -0,0 +1,9 @@
// issue #53712: make the error generated by using tuple indexing on an array more specific
fn main() {
let arr = [10, 20, 30, 40, 50];
arr.0;
//~^ ERROR no field `0` on type `[{integer}; 5]` [E0609]
//~| HELP instead of using tuple indexing, use array indexing
//~| SUGGESTION arr[0]
}

View file

@ -0,0 +1,11 @@
error[E0609]: no field `0` on type `[{integer}; 5]`
--> $DIR/issue-53712.rs:5:9
|
LL | arr.0;
| ----^
| |
| help: instead of using tuple indexing, use array indexing: `arr[0]`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0609`.

View file

@ -0,0 +1,35 @@
// Copyright 2016 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.
//
// run-pass
//
// FIXME(#54366) - We probably shouldn't allow #[thread_local] static mut to get a 'static lifetime.
#![feature(nll)]
#![feature(thread_local)]
#[thread_local]
static mut X1: u64 = 0;
struct S1 {
a: &'static mut u64,
}
impl S1 {
fn new(_x: u64) -> S1 {
S1 {
a: unsafe { &mut X1 },
}
}
}
fn main() {
S1::new(0).a;
}