Commit Graph

98729 Commits

Author SHA1 Message Date
varkor
b73e32c795 Add bool::then and bool::then_with 2019-09-07 15:49:27 +01:00
Vadim Petrochenkov
56f635304b resolve: Adjust hygienic_lexical_parent to account for enum and trait modules 2019-09-07 17:42:24 +03:00
Vadim Petrochenkov
0d084670d7 resolve: Do not afraid to set current module to enums and traits 2019-09-07 17:19:39 +03:00
varkor
f0386a10e0 Add "bool" lang item 2019-09-07 13:16:18 +01:00
bors
ef54f57c5b Auto merge of #64246 - Centril:rollup-zey4o09, r=Centril
Rollup of 10 pull requests

Successful merges:

 - #63919 (Use hygiene for AST passes)
 - #63927 (Filter linkcheck spurious failure)
 - #64149 (rustc_codegen_llvm: give names to non-alloca variable values.)
 - #64192 (Bail out when encountering likely missing turbofish in parser)
 - #64231 (Move the HIR CFG to `rustc_ast_borrowck`)
 - #64233 (Correct pluralisation of various diagnostic messages)
 - #64236 (reduce visibility)
 - #64240 (Include compiler-rt in the source tarball)
 - #64241 ([doc] Added more prereqs and note about default directory)
 - #64243 (Move injection of attributes from command line to `libsyntax_ext`)

Failed merges:

r? @ghost
2019-09-07 10:22:58 +00:00
Mazdak Farrokhzad
3d4cb50312
Rollup merge of #64243 - petrochenkov:cmdattr, r=alexcrichton
Move injection of attributes from command line to `libsyntax_ext`

Just a tiny bit of code generation that wasn't moved into `libsyntax_ext` in https://github.com/rust-lang/rust/pull/62771.
2019-09-07 08:06:17 +02:00
Mazdak Farrokhzad
69121f5bad
Rollup merge of #64241 - adityaatluri:install-doc, r=Mark-Simulacrum
[doc] Added more prereqs and note about default directory
2019-09-07 08:06:15 +02:00
Mazdak Farrokhzad
e77ba6f9c4
Rollup merge of #64240 - maurer:include-compiler-rt, r=alexcrichton
Include compiler-rt in the source tarball

In #60981 we switched to using src/llvm-project/compiler-rt inside
compiler-builtins rather than a separate copy of it.
In order to have the "c" feature turn on in builds from the source
tarball, we need to include that path in its creation.

fixes #64239
2019-09-07 08:06:14 +02:00
Mazdak Farrokhzad
e6a76891ef
Rollup merge of #64236 - matklad:reduce-visibility, r=Centril
reduce visibility
2019-09-07 08:06:13 +02:00
Mazdak Farrokhzad
d5caeac096
Rollup merge of #64233 - varkor:correct-pluralisation, r=estebank
Correct pluralisation of various diagnostic messages
2019-09-07 08:06:11 +02:00
Mazdak Farrokhzad
84cb3529b6
Rollup merge of #64231 - matthewjasper:move-ast-cfg, r=Centril
Move the HIR CFG to `rustc_ast_borrowck`

No new code should be using it.
2019-09-07 08:06:10 +02:00
Mazdak Farrokhzad
fae7bc756e
Rollup merge of #64192 - estebank:turbofish-madness, r=petrochenkov
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.

Fix #61329.
2019-09-07 08:06:09 +02:00
Mazdak Farrokhzad
da61325bfa
Rollup merge of #64149 - eddyb:llvm-var-names, r=rkruppe
rustc_codegen_llvm: give names to non-alloca variable values.

These names only matter when looking at LLVM IR, but they can help.

When one value is used for multiple variables, I decided to combine the names.
I chose `,` as a separator but maybe `=` or ` ` (space) are more appropriate.
(LLVM names can contain any characters - if necessary they end up having quotes)

As an example, this function:
```rust
#[no_mangle]
pub fn test(a: u32, b: u32) -> u32 {
    let c = a + b;
    let d = c;
    let e = d * a;
    e
}
```
Used to produce this LLVM IR:
```llvm
define i32 @test(i32 %a, i32 %b) unnamed_addr #0 {
start:
  %0 = add i32 %a, %b
  %1 = mul i32 %0, %a
  ret i32 %1
}
```
But after this PR you get this:
```llvm
define i32 @test(i32 %a, i32 %b) unnamed_addr #0 {
start:
  %"c,d" = add i32 %a, %b
  %e = mul i32 %"c,d", %a
  ret i32 %e
}
```

cc @nagisa @rkruppe
2019-09-07 08:06:07 +02:00
Mazdak Farrokhzad
7dcac19446
Rollup merge of #63927 - mark-i-m:filter-spurious, r=ehuss
Filter linkcheck spurious failure

r? @ehuss

cc @spastorino

Basically, we filter errors with messages containing "timed out"... a bit of a hack, but hopefully this will be functionality built into linkcheck soon.
2019-09-07 08:06:05 +02:00
Mazdak Farrokhzad
db493ef613
Rollup merge of #63919 - matthewjasper:remove-gensymmed, r=petrochenkov
Use hygiene for AST passes

AST passes are now able to have resolve consider their expansions as if they were opaque macros defined either in some module in the current crate, or a fake empty module with `#[no_implicit_prelude]`.

* Add an ExpnKind for AST passes.
* Remove gensyms in AST passes.
* Remove gensyms in`#[test]`, `#[bench]` and `#[test_case]`.
* Allow opaque macros to define tests.
* Move tests for unit tests to their own directory.
* Remove `Ident::{gensym, is_gensymed}` - `Ident::gensym_if_underscore` still exists.

cc #60869, #61019

r? @petrochenkov
2019-09-07 08:06:04 +02:00
bors
da13f06ea0 Auto merge of #63789 - Wind-River:master, r=alexcrichton
Support both static and dynamic linking mode in testing for vxWorks

1. Support both static and dynamic linking mode in testing for vxWorks
2. Ignore unsupported test cases: net:tcp:tests:timeouts and net:ucp:tests:timeouts

r? @alexcrichton
2019-09-06 20:49:20 +00:00
Vadim Petrochenkov
3dde650efa Move injection of attributes from command line to libsyntax_ext 2019-09-06 23:46:16 +03:00
Aditya Atluri
7dd5c66108
Added more prereqs and note about default directory 2019-09-06 12:54:42 -07:00
Matthew Maurer
a26ee8586c Include compiler-rt in the source tarball
In #60981 we switched to using src/llvm-project/compiler-rt inside
compiler-builtins rather than a separate copy of it.
In order to have the "c" feature turn on in builds from the source
tarball, we need to include that path in its creation.

fixes #64239
2019-09-06 12:41:54 -07:00
Aleksey Kladov
055d3798d4 reduce visibility 2019-09-06 22:04:36 +03:00
varkor
0b97726e6c Update ui tests 2019-09-06 19:21:26 +01:00
varkor
f6481ed1c3 Correct pluralisation of various diagnostic messages 2019-09-06 19:21:20 +01:00
Mateusz Mikuła
8ddbe7660f Upgrade env_logger to 0.6 2019-09-06 20:04:12 +02:00
bors
6e19f3f383 Auto merge of #64230 - Centril:rollup-vxyczjq, r=Centril
Rollup of 8 pull requests

Successful merges:

 - #63565 (Rust 2018: NLL migrate mode => hard error)
 - #63969 (Add missing examples for Option type)
 - #64067 (Remove no-prefer-dynamic from valgrind tests)
 - #64166 (Better way of conditioning the sanitizer builds)
 - #64189 (annotate-snippet emitter: Deal with multispans from macros, too)
 - #64202 (Fixed grammar/style in some error messages)
 - #64206 (annotate-snippet emitter: Update an issue number)
 - #64208 (it's more pythonic to use 'is not None' in python files)

Failed merges:

r? @ghost
2019-09-06 17:03:11 +00:00
Matthew Jasper
10f46b69bc Move the HIR cfg to rustc_ast_borrowck
No new code should be using it.
2019-09-06 18:02:12 +01:00
Mazdak Farrokhzad
ee54499be4
Rollup merge of #64208 - guanqun:py-is-not-none, r=matklad
it's more pythonic to use 'is not None' in python files
2019-09-06 19:00:52 +02:00
Mazdak Farrokhzad
8111cca73e
Rollup merge of #64206 - phansch:update_issue_number, r=varkor
annotate-snippet emitter: Update an issue number

The tracking issue has been replaced by one with mentoring instructions (#64205).
2019-09-06 19:00:50 +02:00
Mazdak Farrokhzad
afb6a7002d
Rollup merge of #64202 - alexreg:rush-pr-1, r=Centril
Fixed grammar/style in some error messages

Factored out from hacking on rustc for work on the REPL.

r? @Centril
2019-09-06 19:00:49 +02:00
Mazdak Farrokhzad
57e900e453
Rollup merge of #64189 - phansch:add_macros_support, r=estebank
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`.

r? @estebank

Closes #61810
2019-09-06 19:00:47 +02:00
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
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