Commit Graph

98817 Commits

Author SHA1 Message Date
Mazdak Farrokhzad
8bbd71b99a
Rollup merge of #64166 - infinity0:master, r=alexcrichton
Better way of conditioning the sanitizer builds

Previously the build would take the presence of the LLVM_CONFIG envvar to
mean that the sanitizers should be built, but this is a common envvar that
could be set for reasons unrelated to the rustc sanitizers.

This commit adds a new envvar RUSTC_BUILD_SANITIZERS and uses it instead.

This PR or similar will be necessary in order to work correctly with https://github.com/rust-lang-nursery/compiler-builtins/pull/296
2019-09-06 19:00:46 +02:00
Mazdak Farrokhzad
e61813548a
Rollup merge of #64067 - Mark-Simulacrum:valgrind-dyn, r=alexcrichton
Remove no-prefer-dynamic from valgrind tests

This seems to be working locally.

Resolves #31968
2019-09-06 19:00:44 +02:00
Mazdak Farrokhzad
b0dfc8a6f1
Rollup merge of #63969 - GuillaumeGomez:option-docs-example, r=sfackler
Add missing examples for Option type

cc @rust-lang/docs
2019-09-06 19:00:43 +02:00
Mazdak Farrokhzad
4f61eac630
Rollup merge of #63565 - Centril:deny-nll-migrate-mode, r=matthewjasper
Rust 2018: NLL migrate mode => hard error

As per decision on a language team meeting as described in https://github.com/rust-lang/rust/pull/63565#issuecomment-528563744, we refuse to downgrade NLL errors, that AST borrowck accepts, into warnings and keep them as hard errors.

cc @rust-lang/lang
cc @rust-lang/wg-compiler-nll
2019-09-06 19:00:41 +02:00
Shiqing
e1d27eb73c Reduce span to function name in unreachable calls 2019-09-07 00:16:11 +08:00
Eduard-Mihai Burtescu
eedf555d0c rustc_codegen_llvm: give names to non-alloca variable values. 2019-09-06 16:57:20 +03:00
Tim Vermeulen
58ba1f51ef Add Iterator comparison methods that take a comparison function 2019-09-06 15:30:17 +02:00
Mateusz Mikuła
32101ad3b3 Upgrade rand to 0.7 2019-09-06 14:45:28 +02:00
bors
4894123d21 Auto merge of #64211 - oli-obk:miri, r=eddyb
Fix miri

fixes  #64109

cc @HeroicKatora
cc @RalfJung
2019-09-06 11:36:50 +00:00
Oliver Scherer
39bfb3626c Fix miri 2019-09-06 11:10:53 +02:00
Mazdak Farrokhzad
055409538d Refuse to downgrade NLL errors on Rust >= 2018. 2019-09-06 11:06:18 +02:00
Mazdak Farrokhzad
2d168fa741 mir borrowck: drive-by cleanup. 2019-09-06 10:40:06 +02:00
bors
1fb3c4ec7c Auto merge of #64209 - Centril:rollup-x9kvjb7, r=Centril
Rollup of 10 pull requests

Successful merges:

 - #63676 (Use wasi crate for Core API)
 - #64094 (Improve searching in rustdoc and add tests)
 - #64111 (or-patterns: Uniformly use `PatKind::Or` in AST & Fix/Cleanup resolve)
 - #64156 (Assume non-git LLVM is fresh if the stamp file exists)
 - #64161 (Point at variant on pattern field count mismatch)
 - #64174 (Add missing code examples on Iterator trait)
 - #64175 (Fix invalid span generation when it should be div)
 - #64186 (std: Improve downstream codegen in `Command::env`)
 - #64190 (fill metadata in rustc_lexer's Cargo.toml)
 - #64198 (Add Fuchsia to actually_monotonic)

Failed merges:

r? @ghost
2019-09-06 07:37:41 +00:00
Mazdak Farrokhzad
61fcd057d2
Rollup merge of #64198 - cramertj:fuchsia-monotonic, r=alexcrichton
Add Fuchsia to actually_monotonic

Fuchsia provides a fully monotonic clock.

Fix https://github.com/rust-lang/rust/issues/64196

cc @joshlf @tmandry

r? @alexcrichton
2019-09-06 09:36:49 +02:00
Mazdak Farrokhzad
9d859b3bca
Rollup merge of #64190 - matklad:meta, r=cramertj
fill metadata in rustc_lexer's Cargo.toml

We publish this to crates.io, so having non-empty meta is useful
2019-09-06 09:36:48 +02:00
Mazdak Farrokhzad
77e736ac27
Rollup merge of #64186 - alexcrichton:improve-env-codegen, r=sfackler
std: Improve downstream codegen in `Command::env`

This commit rejiggers the generics used in the implementation of
`Command::env` with the purpose of reducing the amount of codegen that
needs to happen in consumer crates, instead preferring to generate code
into libstd.

This was found when profiling the compile times of the `cc` crate where
the binary rlib produced had a lot of `BTreeMap` code compiled into it
but the crate doesn't actually use `BTreeMap`. It turns out that
`Command::env` is generic enough to codegen the entire implementation in
calling crates, but in this case there's no performance concern so it's
fine to compile the code into the standard library.

This change is done by removing the generic on the `CommandEnv` map
which is intended to handle case-insensitive variables on Windows.
Instead now a generic isn't used but rather a `use` statement defined
per-platform is used.

With this commit a debug build of `Command::new("foo").env("a", "b")`
drops from 21k lines of LLVM IR to 10k.
2019-09-06 09:36:46 +02:00
Mazdak Farrokhzad
2cb02adbf9
Rollup merge of #64175 - GuillaumeGomez:replace-span-when-it-should-be-div, r=Mark-Simulacrum
Fix invalid span generation when it should be div

Fixes #64146.

It changes basically nothing in the display... Can be checked with:

```rust
pub enum X {
    /// Some doc?
    ///
    /// with lines!
    Foo {
        /// a
        ///
        /// b
        x: u32,
        /// Doc!
        ///
        /// ```
        /// yolo
        /// ```
        y: String,
    },
    /// Doc!
    ///
    /// ```
    /// yolo
    /// ```
    Bar(String),
}
```

r? @Mark-Simulacrum
2019-09-06 09:36:45 +02:00
Mazdak Farrokhzad
a852ebb084
Rollup merge of #64174 - GuillaumeGomez:missing-iterator-examples, r=sfackler
Add missing code examples on Iterator trait

Fixes #63865

cc @rust-lang/docs
2019-09-06 09:36:44 +02:00
Mazdak Farrokhzad
6968e53a5c
Rollup merge of #64161 - estebank:point-variant, r=Centril
Point at variant on pattern field count mismatch
2019-09-06 09:36:42 +02:00
Mazdak Farrokhzad
37a022ee43
Rollup merge of #64156 - cuviper:gitless-llvm, r=alexcrichton
Assume non-git LLVM is fresh if the stamp file exists

Rustbuild usually writes the LLVM submodule commit in a stamp file, so
we can avoid rebuilding it unnecessarily. However, for builds from a
source tarball (non-git), we were assuming a rebuild is always needed.
This can cause a lot of extra work if any environment like `CFLAGS`
changed between steps like build and install, which are often separate
in distro builds.

Now we also write an empty stamp file if the git commit is unknown, and
its presence is trusted to indicate that no rebuild is needed. An info
message reports that this is happening, along with the stamp file path
that can be deleted to force a rebuild anyway.

Fixes #61206.
2019-09-06 09:36:40 +02:00
Mazdak Farrokhzad
3c1630aa38
Rollup merge of #64111 - Centril:ast-only-patkind-or, r=petrochenkov
or-patterns: Uniformly use `PatKind::Or` in AST & Fix/Cleanup resolve

Following up on work in https://github.com/rust-lang/rust/pull/63693 and https://github.com/rust-lang/rust/pull/61708, in this PR we:

- Uniformly use `PatKind::Or(...)` in AST:

   - Change `ast::Arm.pats: Vec<P<Pat>>` => `ast::Arm.pat: P<Pat>`

   - Change `ast::ExprKind::Let.0: Vec<P<Pat>>` => `ast::ExprKind::Let.0: P<Pat>`

- Adjust `librustc_resolve/late.rs` to correctly handle or-patterns at any level of nesting as a result.

  In particular, the already-bound check which rejects e.g. `let (a, a);` now accounts for or-patterns. The consistency checking (ensures no missing bindings and binding mode consistency) also now accounts for or-patterns. In the process, a bug was found in the current compiler which allowed:

   ```rust
   enum E<T> { A(T, T), B(T) }
   use E::*;
   fn foo() {
       match A(0, 1) {
           B(mut a) | A(mut a, mut a) => {}
       }
   }
   ```

   The new algorithms took a few iterations to get right. I tried several clever schemes but ultimately a version based on a stack of hashsets and recording product/sum contexts was chosen since it is more clearly correct.

- Clean up `librustc_resolve/late.rs` by, among other things, using a new `with_rib` function to better ensure stack dicipline.

- Do not push the change in AST to HIR for now to avoid doing too much in this PR. To cope with  this, we introduce a temporary hack in `rustc::hir::lowering` (clearly marked in the diff).

cc https://github.com/rust-lang/rust/issues/54883
cc @dlrobertson @matthewjasper
r? @petrochenkov
2019-09-06 09:36:39 +02:00
Mazdak Farrokhzad
ab75a1713a
Rollup merge of #64094 - kawa-yoiko:rustdoc-search, r=GuillaumeGomez
Improve searching in rustdoc and add tests

👋 I have made searching in rustdoc more intuitive, added a couple more tests and made a little shell script to aid testing. Closes #63005.

It took me quite a while to figure out how to run the tests for rustdoc (instead of running tests for other crates with rustdoc); the only pointer I found was [hidden in the rustc book](https://rust-lang.github.io/rustc-guide/rustdoc.html#cheat-sheet). Maybe this could be better documented? I shall be delighted to help if it is desirable.
2019-09-06 09:36:38 +02:00
Mazdak Farrokhzad
5b995397db
Rollup merge of #63676 - newpavlov:wasi, r=alexcrichton
Use wasi crate for Core API

Blocked by: CraneStation/rust-wasi#5

Blocks: rust-lang/libc#1461

cc @sunfishcode @alexcrichton
2019-09-06 09:36:36 +02:00
Guanqun Lu
ba7d1b80d0 it's more pythonic to use 'is not None' in python files 2019-09-06 15:14:25 +08:00
Baoshan
414d104729
Merge pull request #17 from rust-lang/master
sync with rust-lang/rust master branch
2019-09-05 22:42:04 -07:00
Philipp Hansch
0ca645ac5f
annotate-snippet emitter: Update issue number
The tracking issue has been replaced by one with mentoring instructions.
2019-09-06 07:34:55 +02:00
bors
6b5f9b2e97 Auto merge of #64171 - lzutao:clippy-fix, r=oli-obk
Update Clippy

Closes #64163
r? @oli-obk @Manishearth
2019-09-06 03:07:06 +00:00
Alexander Regueiro
022d9c8eb5 Fixed grammar/style in error messages and reblessed tests. 2019-09-06 03:46:08 +01:00
Taylor Cramer
bb1e42599d Add Fuchsia to actually_monotonic
Fuchsia provides a fully monotonic clock.
2019-09-05 16:44:22 -07:00
Mark Rousskov
5153db136e Explicitly create test tempdir 2019-09-05 18:40:54 -04:00
Esteban Küber
dc613c6d05 Fix test 2019-09-05 15:29:31 -07:00
Mark Mansi
bad8147d01 fix reviewer comments 2019-09-05 16:52:49 -05:00
Matthew Jasper
3f3fc52bfa Simplify std lib injection 2019-09-05 22:48:03 +01:00
Baoshan
109e16e857
Merge pull request #18 from Wind-River/bpang-runtest-2
simplify is_vxworks_pure_dynamic()
2019-09-05 14:35:43 -07:00
Baoshan Pang
bdc6cfc96a simplify is_vxworks_pure_dynamic 2019-09-05 14:00:26 -07:00
Esteban Küber
afcf9b262d Bail out when encountering likely missing turbofish in parser
When encountering a likely intended turbofish without `::`, bubble
up the diagnostic instead of emitting it to allow the parser to recover
more gracefully and avoid uneccessary type errors that are likely to be
wrong.
2019-09-05 13:18:05 -07:00
Aleksey Kladov
060fe88610 fill metadata in rustc_lexer's Cargo.toml
We publish this to crates.io, so having non-empty meta is useful
2019-09-05 23:03:50 +03:00
Philipp Hansch
159d249705
annotate-snippet emitter: Deal with multispans from macros, too
This moves the two methods from the `EmitterWriter` impl to trait
default methods in the `Emitter` trait so that they can be re-used by
the `AnnotateSnippetEmitterWriter`.

Closes #61810
2019-09-05 21:31:12 +02:00
Alex Crichton
0b7ba6ec54 std: Improve downstream codegen in Command::env
This commit rejiggers the generics used in the implementation of
`Command::env` with the purpose of reducing the amount of codegen that
needs to happen in consumer crates, instead preferring to generate code
into libstd.

This was found when profiling the compile times of the `cc` crate where
the binary rlib produced had a lot of `BTreeMap` code compiled into it
but the crate doesn't actually use `BTreeMap`. It turns out that
`Command::env` is generic enough to codegen the entire implementation in
calling crates, but in this case there's no performance concern so it's
fine to compile the code into the standard library.

This change is done by removing the generic on the `CommandEnv` map
which is intended to handle case-insensitive variables on Windows.
Instead now a generic isn't used but rather a `use` statement defined
per-platform is used.

With this commit a debug build of `Command::new("foo").env("a", "b")`
drops from 21k lines of LLVM IR to 10k.
2019-09-05 11:43:35 -07:00
Mark Rousskov
41b39fce98 Remove rustc_diagnostic_macros feature 2019-09-05 12:35:18 -04:00
Mark Rousskov
4de4f303e5 Fix error index generator for new register_diagnostics API 2019-09-05 12:35:18 -04:00
Mark Rousskov
3f1dc326ed Remove codegen dependencies
Not doing this leads to building two copies of e.g. num_cpus in the
sysroot and _llvm deps, leading to conflicts between the two when
compiling librustc_codegen_llvm. It's not entirely clear why this is the
case after the changes in this PR but likely has something to do with a
subtle difference in ordering or similar.
2019-09-05 12:35:18 -04:00
Mark Rousskov
b437240cee Replace diagnostic plugins with macro_rules 2019-09-05 12:35:15 -04:00
Mark Rousskov
74563b4166 Restrict error code length to 80 columns
The global restriction is 100, but since error codes are printed out via
--explain we want to restrict them to just 80 columns.
2019-09-05 12:34:44 -04:00
Matthew Jasper
e552840e79 Document test harness generation
Also ensure that we're consistently using the def-site span when
appropriate.
2019-09-05 15:07:17 +01:00
Vadim Petrochenkov
c8cf9f5a02 Add with_{def_site,call_site,legacy}_ctxt, methods to Span
Use these to create call-site spans for AST passes when needed.
2019-09-05 15:07:17 +01:00
Matthew Jasper
0b86782058 Don't call diag_span_note_once for suppressed lints 2019-09-05 15:07:16 +01:00
Matthew Jasper
846df20578 Fix 2018 edition expanded pretty printing 2019-09-05 15:07:16 +01:00
Matthew Jasper
beb2f5b8ff Remove Ident::{gensym, is_gensymed}
`gensym_if_underscore` still exists. The symbol interner can still
create arbitray gensyms, this is just not exposed publicly.
2019-09-05 15:07:16 +01:00
Matthew Jasper
2a82aec36a Move tests for unit tests to their own directory 2019-09-05 15:07:16 +01:00