]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agotest/c-variadic: Fix patterns on powerpc64
Samuel Holland [Tue, 3 Sep 2019 03:09:15 +0000 (22:09 -0500)]
test/c-variadic: Fix patterns on powerpc64

On architectures such as powerpc64 that use extend_integer_width_to in
their C ABI processing, integer parameters shorter than the native
register width will be annotated with the ArgAttribute::SExt or
ArgAttribute::ZExt attribute, and that attribute will be included in the
generated LLVM IR.

In this test, all relevant parameters are `i32`, which will get the
`signext` annotation on the relevant 64-bit architectures. Match both
the annotated and non-annotated case, but enforce that the annotation is
applied consistently.

4 years agoAuto merge of #64246 - Centril:rollup-zey4o09, r=Centril
bors [Sat, 7 Sep 2019 10:22:58 +0000 (10:22 +0000)]
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

4 years agoRollup merge of #64243 - petrochenkov:cmdattr, r=alexcrichton
Mazdak Farrokhzad [Sat, 7 Sep 2019 06:06:17 +0000 (08:06 +0200)]
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.

4 years agoRollup merge of #64241 - adityaatluri:install-doc, r=Mark-Simulacrum
Mazdak Farrokhzad [Sat, 7 Sep 2019 06:06:15 +0000 (08:06 +0200)]
Rollup merge of #64241 - adityaatluri:install-doc, r=Mark-Simulacrum

[doc] Added more prereqs and note about default directory

4 years agoRollup merge of #64240 - maurer:include-compiler-rt, r=alexcrichton
Mazdak Farrokhzad [Sat, 7 Sep 2019 06:06:14 +0000 (08:06 +0200)]
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

4 years agoRollup merge of #64236 - matklad:reduce-visibility, r=Centril
Mazdak Farrokhzad [Sat, 7 Sep 2019 06:06:13 +0000 (08:06 +0200)]
Rollup merge of #64236 - matklad:reduce-visibility, r=Centril

reduce visibility

4 years agoRollup merge of #64233 - varkor:correct-pluralisation, r=estebank
Mazdak Farrokhzad [Sat, 7 Sep 2019 06:06:11 +0000 (08:06 +0200)]
Rollup merge of #64233 - varkor:correct-pluralisation, r=estebank

Correct pluralisation of various diagnostic messages

4 years agoRollup merge of #64231 - matthewjasper:move-ast-cfg, r=Centril
Mazdak Farrokhzad [Sat, 7 Sep 2019 06:06:10 +0000 (08:06 +0200)]
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.

4 years agoRollup merge of #64192 - estebank:turbofish-madness, r=petrochenkov
Mazdak Farrokhzad [Sat, 7 Sep 2019 06:06:09 +0000 (08:06 +0200)]
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.

4 years agoRollup merge of #64149 - eddyb:llvm-var-names, r=rkruppe
Mazdak Farrokhzad [Sat, 7 Sep 2019 06:06:07 +0000 (08:06 +0200)]
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

4 years agoRollup merge of #63927 - mark-i-m:filter-spurious, r=ehuss
Mazdak Farrokhzad [Sat, 7 Sep 2019 06:06:05 +0000 (08:06 +0200)]
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.

4 years agoRollup merge of #63919 - matthewjasper:remove-gensymmed, r=petrochenkov
Mazdak Farrokhzad [Sat, 7 Sep 2019 06:06:04 +0000 (08:06 +0200)]
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

4 years agoAuto merge of #63789 - Wind-River:master, r=alexcrichton
bors [Fri, 6 Sep 2019 20:49:20 +0000 (20:49 +0000)]
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

4 years agoMove injection of attributes from command line to `libsyntax_ext`
Vadim Petrochenkov [Fri, 6 Sep 2019 20:41:54 +0000 (23:41 +0300)]
Move injection of attributes from command line to `libsyntax_ext`

4 years agoAdded more prereqs and note about default directory
Aditya Atluri [Fri, 6 Sep 2019 19:54:42 +0000 (12:54 -0700)]
Added more prereqs and note about default directory

4 years agoInclude compiler-rt in the source tarball
Matthew Maurer [Fri, 6 Sep 2019 19:41:54 +0000 (12:41 -0700)]
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

4 years agoreduce visibility
Aleksey Kladov [Sat, 31 Aug 2019 13:03:54 +0000 (16:03 +0300)]
reduce visibility

4 years agoUpdate ui tests
varkor [Fri, 6 Sep 2019 18:21:26 +0000 (19:21 +0100)]
Update ui tests

4 years agoCorrect pluralisation of various diagnostic messages
varkor [Fri, 6 Sep 2019 18:21:20 +0000 (19:21 +0100)]
Correct pluralisation of various diagnostic messages

4 years agoAuto merge of #64230 - Centril:rollup-vxyczjq, r=Centril
bors [Fri, 6 Sep 2019 17:03:11 +0000 (17:03 +0000)]
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

4 years agoMove the HIR cfg to `rustc_ast_borrowck`
Matthew Jasper [Fri, 6 Sep 2019 17:02:12 +0000 (18:02 +0100)]
Move the HIR cfg to `rustc_ast_borrowck`

No new code should be using it.

4 years agoRollup merge of #64208 - guanqun:py-is-not-none, r=matklad
Mazdak Farrokhzad [Fri, 6 Sep 2019 17:00:52 +0000 (19:00 +0200)]
Rollup merge of #64208 - guanqun:py-is-not-none, r=matklad

it's more pythonic to use 'is not None' in python files

4 years agoRollup merge of #64206 - phansch:update_issue_number, r=varkor
Mazdak Farrokhzad [Fri, 6 Sep 2019 17:00:50 +0000 (19:00 +0200)]
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).

4 years agoRollup merge of #64202 - alexreg:rush-pr-1, r=Centril
Mazdak Farrokhzad [Fri, 6 Sep 2019 17:00:49 +0000 (19:00 +0200)]
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

4 years agoRollup merge of #64189 - phansch:add_macros_support, r=estebank
Mazdak Farrokhzad [Fri, 6 Sep 2019 17:00:47 +0000 (19:00 +0200)]
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

4 years agoRollup merge of #64166 - infinity0:master, r=alexcrichton
Mazdak Farrokhzad [Fri, 6 Sep 2019 17:00:46 +0000 (19:00 +0200)]
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

4 years agoRollup merge of #64067 - Mark-Simulacrum:valgrind-dyn, r=alexcrichton
Mazdak Farrokhzad [Fri, 6 Sep 2019 17:00:44 +0000 (19:00 +0200)]
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

4 years agoRollup merge of #63969 - GuillaumeGomez:option-docs-example, r=sfackler
Mazdak Farrokhzad [Fri, 6 Sep 2019 17:00:43 +0000 (19:00 +0200)]
Rollup merge of #63969 - GuillaumeGomez:option-docs-example, r=sfackler

Add missing examples for Option type

cc @rust-lang/docs

4 years agoRollup merge of #63565 - Centril:deny-nll-migrate-mode, r=matthewjasper
Mazdak Farrokhzad [Fri, 6 Sep 2019 17:00:41 +0000 (19:00 +0200)]
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

4 years agorustc_codegen_llvm: give names to non-alloca variable values.
Eduard-Mihai Burtescu [Wed, 4 Sep 2019 12:21:46 +0000 (15:21 +0300)]
rustc_codegen_llvm: give names to non-alloca variable values.

4 years agoAuto merge of #64211 - oli-obk:miri, r=eddyb
bors [Fri, 6 Sep 2019 11:36:50 +0000 (11:36 +0000)]
Auto merge of #64211 - oli-obk:miri, r=eddyb

Fix miri

fixes  #64109

cc @HeroicKatora
cc @RalfJung

4 years agoFix miri
Oliver Scherer [Fri, 6 Sep 2019 09:10:53 +0000 (11:10 +0200)]
Fix miri

4 years agoRefuse to downgrade NLL errors on Rust >= 2018.
Mazdak Farrokhzad [Fri, 6 Sep 2019 08:39:38 +0000 (10:39 +0200)]
Refuse to downgrade NLL errors on Rust >= 2018.

4 years agomir borrowck: drive-by cleanup.
Mazdak Farrokhzad [Fri, 6 Sep 2019 08:35:14 +0000 (10:35 +0200)]
mir borrowck: drive-by cleanup.

4 years agoAuto merge of #64209 - Centril:rollup-x9kvjb7, r=Centril
bors [Fri, 6 Sep 2019 07:37:41 +0000 (07:37 +0000)]
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

4 years agoRollup merge of #64198 - cramertj:fuchsia-monotonic, r=alexcrichton
Mazdak Farrokhzad [Fri, 6 Sep 2019 07:36:49 +0000 (09:36 +0200)]
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

4 years agoRollup merge of #64190 - matklad:meta, r=cramertj
Mazdak Farrokhzad [Fri, 6 Sep 2019 07:36:48 +0000 (09:36 +0200)]
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

4 years agoRollup merge of #64186 - alexcrichton:improve-env-codegen, r=sfackler
Mazdak Farrokhzad [Fri, 6 Sep 2019 07:36:46 +0000 (09:36 +0200)]
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.

4 years agoRollup merge of #64175 - GuillaumeGomez:replace-span-when-it-should-be-div, r=Mark...
Mazdak Farrokhzad [Fri, 6 Sep 2019 07:36:45 +0000 (09:36 +0200)]
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

4 years agoRollup merge of #64174 - GuillaumeGomez:missing-iterator-examples, r=sfackler
Mazdak Farrokhzad [Fri, 6 Sep 2019 07:36:44 +0000 (09:36 +0200)]
Rollup merge of #64174 - GuillaumeGomez:missing-iterator-examples, r=sfackler

Add missing code examples on Iterator trait

Fixes #63865

cc @rust-lang/docs

4 years agoRollup merge of #64161 - estebank:point-variant, r=Centril
Mazdak Farrokhzad [Fri, 6 Sep 2019 07:36:42 +0000 (09:36 +0200)]
Rollup merge of #64161 - estebank:point-variant, r=Centril

Point at variant on pattern field count mismatch

4 years agoRollup merge of #64156 - cuviper:gitless-llvm, r=alexcrichton
Mazdak Farrokhzad [Fri, 6 Sep 2019 07:36:40 +0000 (09:36 +0200)]
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.

4 years agoRollup merge of #64111 - Centril:ast-only-patkind-or, r=petrochenkov
Mazdak Farrokhzad [Fri, 6 Sep 2019 07:36:39 +0000 (09:36 +0200)]
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

4 years agoRollup merge of #64094 - kawa-yoiko:rustdoc-search, r=GuillaumeGomez
Mazdak Farrokhzad [Fri, 6 Sep 2019 07:36:38 +0000 (09:36 +0200)]
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.

4 years agoRollup merge of #63676 - newpavlov:wasi, r=alexcrichton
Mazdak Farrokhzad [Fri, 6 Sep 2019 07:36:36 +0000 (09:36 +0200)]
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

4 years agoit's more pythonic to use 'is not None' in python files
Guanqun Lu [Fri, 6 Sep 2019 07:14:25 +0000 (15:14 +0800)]
it's more pythonic to use 'is not None' in python files

4 years agoMerge pull request #17 from rust-lang/master
Baoshan [Fri, 6 Sep 2019 05:42:04 +0000 (22:42 -0700)]
Merge pull request #17 from rust-lang/master

sync with rust-lang/rust master branch

4 years agoannotate-snippet emitter: Update issue number
Philipp Hansch [Fri, 6 Sep 2019 05:34:55 +0000 (07:34 +0200)]
annotate-snippet emitter: Update issue number

The tracking issue has been replaced by one with mentoring instructions.

4 years agoAuto merge of #64171 - lzutao:clippy-fix, r=oli-obk
bors [Fri, 6 Sep 2019 03:07:06 +0000 (03:07 +0000)]
Auto merge of #64171 - lzutao:clippy-fix, r=oli-obk

Update Clippy

Closes #64163
r? @oli-obk @Manishearth

4 years agoFixed grammar/style in error messages and reblessed tests.
Alexander Regueiro [Sun, 1 Sep 2019 17:09:59 +0000 (18:09 +0100)]
Fixed grammar/style in error messages and reblessed tests.

4 years agoAdd Fuchsia to actually_monotonic
Taylor Cramer [Thu, 5 Sep 2019 23:44:22 +0000 (16:44 -0700)]
Add Fuchsia to actually_monotonic

Fuchsia provides a fully monotonic clock.

4 years agoFix test
Esteban Küber [Thu, 5 Sep 2019 22:29:31 +0000 (15:29 -0700)]
Fix test

4 years agofix reviewer comments
Mark Mansi [Thu, 5 Sep 2019 21:52:44 +0000 (16:52 -0500)]
fix reviewer comments

4 years agoSimplify std lib injection
Matthew Jasper [Thu, 5 Sep 2019 14:05:58 +0000 (15:05 +0100)]
Simplify std lib injection

4 years agoMerge pull request #18 from Wind-River/bpang-runtest-2
Baoshan [Thu, 5 Sep 2019 21:35:43 +0000 (14:35 -0700)]
Merge pull request #18 from Wind-River/bpang-runtest-2

simplify is_vxworks_pure_dynamic()

4 years agosimplify is_vxworks_pure_dynamic
Baoshan Pang [Thu, 5 Sep 2019 18:26:29 +0000 (11:26 -0700)]
simplify is_vxworks_pure_dynamic

4 years agoBail out when encountering likely missing turbofish in parser
Esteban Küber [Thu, 5 Sep 2019 20:15:42 +0000 (13:15 -0700)]
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.

4 years agofill metadata in rustc_lexer's Cargo.toml
Aleksey Kladov [Thu, 5 Sep 2019 20:03:50 +0000 (23:03 +0300)]
fill metadata in rustc_lexer's Cargo.toml

We publish this to crates.io, so having non-empty meta is useful

4 years agoannotate-snippet emitter: Deal with multispans from macros, too
Philipp Hansch [Thu, 5 Sep 2019 19:31:12 +0000 (21:31 +0200)]
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

4 years agostd: Improve downstream codegen in `Command::env`
Alex Crichton [Wed, 4 Sep 2019 02:32:44 +0000 (19:32 -0700)]
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.

4 years agoDocument test harness generation
Matthew Jasper [Wed, 28 Aug 2019 21:47:52 +0000 (22:47 +0100)]
Document test harness generation

Also ensure that we're consistently using the def-site span when
appropriate.

4 years agoAdd `with_{def_site,call_site,legacy}_ctxt,` methods to `Span`
Vadim Petrochenkov [Wed, 28 Aug 2019 09:41:29 +0000 (12:41 +0300)]
Add `with_{def_site,call_site,legacy}_ctxt,` methods to `Span`

Use these to create call-site spans for AST passes when needed.

4 years agoDon't call `diag_span_note_once` for suppressed lints
Matthew Jasper [Tue, 27 Aug 2019 20:13:20 +0000 (21:13 +0100)]
Don't call `diag_span_note_once` for suppressed lints

4 years agoFix 2018 edition expanded pretty printing
Matthew Jasper [Sun, 25 Aug 2019 21:36:13 +0000 (22:36 +0100)]
Fix 2018 edition expanded pretty printing

4 years agoRemove `Ident::{gensym, is_gensymed}`
Matthew Jasper [Sun, 25 Aug 2019 20:31:42 +0000 (21:31 +0100)]
Remove `Ident::{gensym, is_gensymed}`

`gensym_if_underscore` still exists. The symbol interner can still
create arbitray gensyms, this is just not exposed publicly.

4 years agoMove tests for unit tests to their own directory
Matthew Jasper [Sun, 25 Aug 2019 20:21:07 +0000 (21:21 +0100)]
Move tests for unit tests to their own directory

4 years agoMake use of hygiene in AST passes
Matthew Jasper [Sun, 25 Aug 2019 20:03:24 +0000 (21:03 +0100)]
Make use of hygiene in AST passes

4 years agoAllow ast passes to create hygienic spans
Matthew Jasper [Sun, 25 Aug 2019 19:58:03 +0000 (20:58 +0100)]
Allow ast passes to create hygienic spans

4 years agoAdd an ExpnKind for AST passes
Matthew Jasper [Sun, 25 Aug 2019 18:59:51 +0000 (19:59 +0100)]
Add an ExpnKind for AST passes

4 years agoAuto merge of #64172 - Centril:rollup-8i8oh54, r=Centril
bors [Thu, 5 Sep 2019 12:41:41 +0000 (12:41 +0000)]
Auto merge of #64172 - Centril:rollup-8i8oh54, r=Centril

Rollup of 11 pull requests

Successful merges:

 - #62848 (Use unicode-xid crate instead of libcore)
 - #63774 (Fix `window.hashchange is not a function`)
 - #63930 (Account for doc comments coming from proc macros without spans)
 - #64003 (place: Passing `align` = `layout.align.abi`, when also passing `layout`)
 - #64030 (Fix unlock ordering in SGX synchronization primitives)
 - #64041 (use TokenStream rather than &[TokenTree] for built-in macros)
 - #64051 (Add x86_64-linux-kernel target)
 - #64063 (Fix const_err with `-(-0.0)`)
 - #64083 (Point at appropriate arm on type error on if/else/match with one non-! arm)
 - #64100 (Fix const eval bug breaking run-pass tests in Miri)
 - #64157 (Opaque type locations in error message for clarity.)

Failed merges:

r? @ghost

4 years agoFix invalid span generation when it should be div
Guillaume Gomez [Thu, 5 Sep 2019 12:15:58 +0000 (14:15 +0200)]
Fix invalid span generation when it should be div

4 years agoAdd missing code examples on Iterator trait
Guillaume Gomez [Thu, 5 Sep 2019 11:38:11 +0000 (13:38 +0200)]
Add missing code examples on Iterator trait

4 years agoRollup merge of #64157 - gilescope:opaque-type-location, r=cramertj,Centril
Mazdak Farrokhzad [Thu, 5 Sep 2019 10:11:19 +0000 (12:11 +0200)]
Rollup merge of #64157 - gilescope:opaque-type-location, r=cramertj,Centril

Opaque type locations in error message for clarity.

Attempts to fix #63167

4 years agoRollup merge of #64100 - wesleywiser:fix_miri_const_eval, r=oli-obk
Mazdak Farrokhzad [Thu, 5 Sep 2019 10:11:17 +0000 (12:11 +0200)]
Rollup merge of #64100 - wesleywiser:fix_miri_const_eval, r=oli-obk

Fix const eval bug breaking run-pass tests in Miri

PR #63580 broke miri's ability to run the run-pass test suite with MIR
optimizations enabled. The issue was that we weren't properly handling
the substs and DefId associated with a Promoted value. This didn't break
anything in rustc because in rustc this code runs before the Inliner
pass which is where the DefId and substs can diverge from their initial
values. It broke Miri though because it ran this code again after
running the optimization pass.

r? @oli-obk
cc @RalfJung

4 years agoRollup merge of #64083 - estebank:tweak-e0308, r=oli-obk
Mazdak Farrokhzad [Thu, 5 Sep 2019 10:11:16 +0000 (12:11 +0200)]
Rollup merge of #64083 - estebank:tweak-e0308, r=oli-obk

Point at appropriate arm on type error on if/else/match with one non-! arm

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

4 years agoRollup merge of #64063 - JohnTitor:fix-const-err, r=oli-obk
Mazdak Farrokhzad [Thu, 5 Sep 2019 10:11:14 +0000 (12:11 +0200)]
Rollup merge of #64063 - JohnTitor:fix-const-err, r=oli-obk

Fix const_err with `-(-0.0)`

Fixes #64059

r? @oli-obk

4 years agoRollup merge of #64051 - alex:linux-kernel-module-target, r=joshtriplett
Mazdak Farrokhzad [Thu, 5 Sep 2019 10:11:13 +0000 (12:11 +0200)]
Rollup merge of #64051 - alex:linux-kernel-module-target, r=joshtriplett

Add x86_64-linux-kernel target

This adds a target specification for Linux kernel modules on x86_64, as well as base code that can be shared with other architectures.

I wasn't totally sure about what the best name for this was.

There's one open question on whether we should use the LLVM generic x86_64-elf target, or the same one used for the Linux userspace.

r? @joshtriplett

4 years agoRollup merge of #64041 - matklad:token-stream-tt, r=petrochenkov
Mazdak Farrokhzad [Thu, 5 Sep 2019 10:11:11 +0000 (12:11 +0200)]
Rollup merge of #64041 - matklad:token-stream-tt, r=petrochenkov

use TokenStream rather than &[TokenTree] for built-in macros

That way, we don't loose the jointness info

4 years agoRollup merge of #64030 - jethrogb:jb/sgx-sync-issues, r=alexcrichton
Mazdak Farrokhzad [Thu, 5 Sep 2019 10:11:10 +0000 (12:11 +0200)]
Rollup merge of #64030 - jethrogb:jb/sgx-sync-issues, r=alexcrichton

Fix unlock ordering in SGX synchronization primitives

Avoid holding spinlocks during usercalls. This should avoid deadlocks in certain pathological scheduling cases.

cc @mzohreva @parthsane

r? @alexcrichton

4 years agoRollup merge of #64003 - Dante-Broggi:place-align-in-layout, r=matthewjasper
Mazdak Farrokhzad [Thu, 5 Sep 2019 10:11:08 +0000 (12:11 +0200)]
Rollup merge of #64003 - Dante-Broggi:place-align-in-layout, r=matthewjasper

place: Passing `align` = `layout.align.abi`, when also passing `layout`

Of the calls changed:
7/12 use `align` = `layout.align.abi`.
`from_const_alloc` uses `alloc.align`, but that is `assert_eq!` to `layout.align.abi`.
only 4/11 use something interesting for `align`.

4 years agoRollup merge of #63930 - estebank:rustdoc-ice, r=GuillaumeGomez
Mazdak Farrokhzad [Thu, 5 Sep 2019 10:11:07 +0000 (12:11 +0200)]
Rollup merge of #63930 - estebank:rustdoc-ice, r=GuillaumeGomez

Account for doc comments coming from proc macros without spans

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

4 years agoRollup merge of #63774 - chocol4te:fix_63707, r=GuillaumeGomez
Mazdak Farrokhzad [Thu, 5 Sep 2019 10:11:05 +0000 (12:11 +0200)]
Rollup merge of #63774 - chocol4te:fix_63707, r=GuillaumeGomez

Fix `window.hashchange is not a function`

Closes #63707.

4 years agoRollup merge of #62848 - matklad:xid-unicode, r=petrochenkov
Mazdak Farrokhzad [Thu, 5 Sep 2019 10:11:04 +0000 (12:11 +0200)]
Rollup merge of #62848 - matklad:xid-unicode, r=petrochenkov

Use unicode-xid crate instead of libcore

This PR proposes to remove `char::is_xid_start` and `char::is_xid_continue` functions from `libcore` and use `unicode_xid` crate from crates.io (note that this crate is already present in rust-lang/rust's Cargo.lock).

Reasons to do this:

* removing rustc-binary-specific stuff from libcore
* making sure that, across the ecosystem, there's a single definition of what rust identifier is (`unicode-xid` has almost 10 million downs, as a `proc_macro2` dependency)
* making it easier to share `rustc_lexer` crate with rust-analyzer: no need to `#[cfg]` if we are building as a part of the compiler

Reasons not to do this:

* increased maintenance burden: we'll need to upgrade unicode version both in libcore and in unicode-xid. However, this shouldn't be a too heavy burden: just running `./unicode.py` after new unicode version. I (@matklad) am ready to be a t-compiler side maintainer of unicode-xid. Moreover, given that xid-unicode is an important dependency of syn, *someone* needs to maintain it anyway.
* xid-unicode implementation is significantly slower. It uses a more compact table with binary search, instead of a trie. However, this shouldn't matter in practice, because we have fast-path for ascii anyway, and code size savings is a plus. Moreover, in #59706 not using libcore turned out to be *faster*, presumably beacause checking for whitespace with match is even faster.

<details>

<summary>old description</summary>

Followup to #59706

r? @eddyb

Note that this doesn't actually remove tables from libcore, to avoid conflict with https://github.com/rust-lang/rust/pull/62641.

cc https://github.com/unicode-rs/unicode-xid/pull/11

</details>

4 years agoUpdate Clippy
Lzu Tao [Thu, 5 Sep 2019 09:36:49 +0000 (09:36 +0000)]
Update Clippy

4 years agoAuto merge of #62800 - albins:polonius-initialization-1, r=nikomatsakis
bors [Thu, 5 Sep 2019 08:51:38 +0000 (08:51 +0000)]
Auto merge of #62800 - albins:polonius-initialization-1, r=nikomatsakis

Extend Polonius fact generation for (some) move tracking

This PR will extend rustc to emit facts used for tracking moves and initialization in Polonius. It is most likely the final part of my master's thesis work.

4 years agoor-patterns: fix fallout from #664128.
Mazdak Farrokhzad [Thu, 5 Sep 2019 07:17:19 +0000 (09:17 +0200)]
or-patterns: fix fallout from #664128.

4 years agoBetter way of conditioning the sanitizer builds
Ximin Luo [Thu, 5 Sep 2019 07:14:09 +0000 (00:14 -0700)]
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.

4 years agoreview comment
Esteban Küber [Thu, 5 Sep 2019 06:59:04 +0000 (23:59 -0700)]
review comment

4 years agoresolve: bool -> enum PatBoundCtx
Mazdak Farrokhzad [Wed, 4 Sep 2019 23:43:53 +0000 (01:43 +0200)]
resolve: bool -> enum PatBoundCtx

4 years agoor-patterns: address review comments.
Mazdak Farrokhzad [Wed, 4 Sep 2019 00:43:49 +0000 (02:43 +0200)]
or-patterns: address review comments.

4 years agoor-patterns: fix pprust-expr-roundtrip due to AST change.
Mazdak Farrokhzad [Tue, 3 Sep 2019 04:58:09 +0000 (06:58 +0200)]
or-patterns: fix pprust-expr-roundtrip due to AST change.

4 years agoor-patterns: adjust save_analysis wrt. `process_var_decl{_multi}`.
Mazdak Farrokhzad [Mon, 2 Sep 2019 00:00:44 +0000 (02:00 +0200)]
or-patterns: adjust save_analysis wrt. `process_var_decl{_multi}`.

4 years agoresolve: merge `resolve_pats` and `resolve_pattern_top`.
Mazdak Farrokhzad [Sun, 1 Sep 2019 21:52:32 +0000 (23:52 +0200)]
resolve: merge `resolve_pats` and `resolve_pattern_top`.

4 years agoor-patterns: adjust lowering of `ast::Arm` & `ast::ExprKind::Let`.
Mazdak Farrokhzad [Wed, 28 Aug 2019 04:45:54 +0000 (06:45 +0200)]
or-patterns: adjust lowering of `ast::Arm` & `ast::ExprKind::Let`.

Introduces a temporary hack to keep `Vec<P<Pat>>` in
`hir::Arm.pats` so that we keep the changes more incremental.

4 years agoor-patterns: adjust librustc_lint.
Mazdak Farrokhzad [Tue, 27 Aug 2019 23:57:58 +0000 (01:57 +0200)]
or-patterns: adjust librustc_lint.

4 years agoor-patterns: syntax: adjust derive, format, and building.
Mazdak Farrokhzad [Tue, 27 Aug 2019 23:16:35 +0000 (01:16 +0200)]
or-patterns: syntax: adjust derive, format, and building.

4 years agoor-patterns: syntax: adjust pretty printing.
Mazdak Farrokhzad [Tue, 27 Aug 2019 23:15:33 +0000 (01:15 +0200)]
or-patterns: syntax: adjust pretty printing.

4 years agoor-patterns: syntax: adjust parser removing a hack.
Mazdak Farrokhzad [Tue, 27 Aug 2019 23:06:33 +0000 (01:06 +0200)]
or-patterns: syntax: adjust parser removing a hack.

Fuse `parse_top_pat` and `parse_top_pat_unpack` into just `parse_top_pat`.

4 years agoor-patterns: syntax: adjust `visit` and `mut_visit`.
Mazdak Farrokhzad [Tue, 27 Aug 2019 22:57:50 +0000 (00:57 +0200)]
or-patterns: syntax: adjust `visit` and `mut_visit`.

4 years agoor-patterns: syntax: simplify `Arm.pats` and `ExprKind::Let.0`.
Mazdak Farrokhzad [Tue, 27 Aug 2019 22:57:15 +0000 (00:57 +0200)]
or-patterns: syntax: simplify `Arm.pats` and `ExprKind::Let.0`.