Commit Graph

110045 Commits

Author SHA1 Message Date
Bastian Kauschke
4714e202ae bless mir opt tests 2020-04-13 22:39:10 +02:00
Bastian Kauschke
db83fdc46c unit rvalue: use constant () instead of tuple 2020-04-13 22:39:10 +02:00
bors
c58c532744 Auto merge of #70989 - eddyb:mir-opt-32-pr-ci, r=Mark-Simulacrum
ci: run mir-opt tests on PR CI also as 32-bit (for `EMIT_MIR_FOR_EACH_BIT_WIDTH`).

Background: #69916 and [`src/test/mir-opt/README.md`](https://github.com/rust-lang/rust/blob/master/src/test/mir-opt/README.md):
> By default 32 bit and 64 bit targets use the same dump files, which can be problematic in the
presence of pointers in constants or other bit width dependent things. In that case you can add
>
> ```
> // EMIT_MIR_FOR_EACH_BIT_WIDTH
> ```
>
> to your test, causing separate files to be generated for 32bit and 64bit systems.

However, if you change the output of such a test (intentionally or not), or if you add a test and it varies between 32-bit and 64-bit platforms, you have to run this command (for a x64 linux host):
`./x.py test --stage 1 --target x86_64-unknown-linux-gnu --target i686-unknown-linux-gnu --bless  src/test/mir-opt`

Otherwise, bors trying to merge the PR will fail, since we test 32-bit targets there.
But we don't on PR CI, which means there's no way the PR author would know (unless they were burnt by this already and know what to look for).

This PR resolves that by running `mir-opt` tests for ~~`i686-unknown-linux-gnu`~~, on PR CI.
**EDIT**: switched to `armv5te-unknown-linux-gnueabi` to work around LLVM 7 crashes (see https://github.com/rust-lang/compiler-builtins/pull/311#issuecomment-612270089), found during testing.

cc @rust-lang/wg-mir-opt @rust-lang/infra
2020-04-13 16:28:57 +00:00
bors
5179ebe206 Auto merge of #70961 - ecstatic-morse:into-def-id, r=eddyb
Take `impl Into<DefId>` for query methods on `TyCtxt`

Alternative implementation of #70956. cc #70853.
2020-04-13 12:50:43 +00:00
bors
d28a46444e Auto merge of #70882 - tmiasko:llvm-version-suffix, r=Mark-Simulacrum
Make LLVM version suffix independent of rustc version on dev channel

Remove rustc version from LLVM version suffix on dev channel,
avoiding the need for full rebuilds when switching between
branches with different LLVM submodule & rustc version.

Note: To avoid full rebuild, on subsequent LLVM submodule update, copy the
current value of `LLVM_VERSION_SUFFIX` from `build/*/llvm/build/CMakeCache.txt`,
to `version-suffix` in `config.toml`.
2020-04-13 07:34:11 +00:00
bors
a00bd29e01 Auto merge of #71056 - matthiaskrgr:submodule_upd, r=Dylan-DPC
submodules: update clippy from d342cee7 to af5940b7

Changes:
````
Allow UUID style formatting for `inconsistent_digit_grouping` lint
rustup https://github.com/rust-lang/rust/pull/70986
rustup https://github.com/rust-lang/rust/pull/69745
Rustup to https://github.com/rust-lang/rust/pull/70913
compare with the second largest instead of the smallest variant
Revert "Downgrade new_ret_no_self to pedantic"
Check for clone-on-copy in argument positions
Check fn header along with decl when suggesting to implement trait
Downgrade implicit_hasher to pedantic
Move cognitive_complexity to nursery
Run fmt and update test
Use int assoc consts in MANUAL_SATURATING_ARITHMETIC
Use int assoc consts in checked_conversions lint
Use primitive type assoc consts in more tests
Use integer assoc consts in more lint example code
Don't import primitive type modules
Use assoc const NAN for zero_div_zero lint
Fix float cmp to use assoc fxx::EPSILON
Fix NAN comparison lint to use assoc NAN
Refine lint message.
Lint on opt.as_ref().map(|x| &**x).
Include OpAssign in suspicious_op_assign_impl
result_map_or_into_option: fix syntax error in example
result_map_or_into: fix dogfood_clippy error => {h,l}int
CONTRIBUTING.md: fix broken triage link
result_map_or_into_option: fix `cargo dev fmt --check` errors
result_map_or_into_option: move arg checks into tuple assignment
result_map_or_into_option: add `opt.map_or(None, |_| Some(y))` test
result_map_or_into_option: destructure lint tuple or return early
result_map_or_into_option: add good and bad examples
result_map_or_into_option: explicitly note absence of known problems
Downgrade new_ret_no_self to pedantic
Downgrade unreadable_literal to pedantic
Update CONTRIBUTING.md
Rename rustc -> rustc_middle in doc links
result_map_or_into_option: add lint to catch manually adpating Result -> Option
Move matches test in matches module
Run update_lints
Make lint modules private
Don't filter lints in code generation functions
Build lint lists once and the reuse them to update files
Get rid of Lint::is_internal method
Clean up update_lints
Downgrade inefficient_to_string to pedantic
Downgrade trivially_copy_pass_by_ref to pedantic
Downgrade let_unit_value to pedantic
````
Fixes #70993

r? @Dylan-DPC
2020-04-13 04:16:08 +00:00
bors
cc072281f9 Auto merge of #71023 - mati865:mingw-unwind-linking-cleanup, r=Amanieu
[windows] Add testscase for self-contained executables and fix pthread linking

Fixes https://github.com/rust-lang/rust/issues/71061
2020-04-13 00:59:36 +00:00
bors
9fed360550 Auto merge of #71079 - Dylan-DPC:rollup-g7yh3sn, r=Dylan-DPC
Rollup of 4 pull requests

Successful merges:

 - #67766 (Fix warning for unused variables in or pattern (issue #67691))
 - #71013 (Pass the `PlaceElem::Index` local to `visit_local`)
 - #71064 (fix issue 69130)
 - #71069 (Remove some usage of `DUMMY_HIR_ID`)

Failed merges:

r? @ghost
2020-04-12 21:48:24 +00:00
Dylan DPC
69862b74fa
Rollup merge of #71069 - marmeladema:dummy-hir-id-obligation-clause, r=eddyb
Remove some usage of `DUMMY_HIR_ID`

Use `ObligationClause::dummy()` when appropriate or replace `hir::DUMMY_HIR_ID`by `hir::CRATE_HIR_ID`, as used in `ObligationClause::dummy()`.
2020-04-12 23:47:41 +02:00
Dylan DPC
ebb1a8b6ff
Rollup merge of #71064 - dwrensha:issue-69130, r=eddyb
fix issue 69130

Closes #69130.
2020-04-12 23:47:39 +02:00
Dylan DPC
c076da080c
Rollup merge of #71013 - jonas-schievink:visit-projection, r=eddyb
Pass the `PlaceElem::Index` local to `visit_local`

Fixes https://github.com/rust-lang/rust/issues/71008

cc @rust-lang/wg-mir-opt

r? @spastorino
2020-04-12 23:47:38 +02:00
Dylan DPC
6947dec3a6
Rollup merge of #67766 - sapir:fix-unused-in-or-pattern-warning, r=matthewjasper
Fix warning for unused variables in or pattern (issue #67691)

Is this a good way to fix it?

Also, the tests fail, the "fixed" code output says `{ i, j }` instead of `{ i, j: _ }`, how can I fix that?
2020-04-12 23:47:36 +02:00
marmeladema
0634789dee Remove usage of DUMMY_HIR_ID in Scope::hir_id 2020-04-12 21:01:55 +01:00
marmeladema
502ae0e898 Remove usage of DUMMY_HIR_ID in CheckAttrVisitor::check_inline 2020-04-12 21:01:55 +01:00
marmeladema
b4edda9849 Remove usage of DUMMY_HIR_ID in CheckLoopVisitor 2020-04-12 21:01:55 +01:00
marmeladema
812854cdd3 Remove usage of DUMMY_HIR_ID in calls to ObligationClause::misc
Use `ObligationClause::dummy()` when appropriate or replace
`hir::DUMMY_HIR_ID` by `hir::CRATE_HIR_ID`, as used in
`ObligationClause::dummy()`.
2020-04-12 21:01:55 +01:00
Mateusz Mikuła
a32e3408bf [windows-gnu] Link pthread statically 2020-04-12 21:59:40 +02:00
bors
3712e11a82 Auto merge of #71059 - Dylan-DPC:rollup-zgu6jmx, r=Dylan-DPC
Rollup of 6 pull requests

Successful merges:

 - #71029 (Partial work on building with Cargo)
 - #71034 (Clean up E0515 explanation)
 - #71041 (Update links of `rustc guide`)
 - #71048 (Normalize source when loading external foreign source into SourceMap)
 - #71053 (Add some basic docs to `sym` and `kw` modules)
 - #71057 (Clean up E0516 explanation)

Failed merges:

r? @ghost
2020-04-12 18:09:46 +00:00
David Renshaw
57ed3d378d fix issue 69130 2020-04-12 11:36:37 -04:00
Dylan DPC
e684630666
Rollup merge of #71057 - GuillaumeGomez:cleanup-e0516, r=Dylan-DPC
Clean up E0516 explanation

r? @Dylan-DPC
2020-04-12 14:49:10 +02:00
Dylan DPC
0e47d69496
Rollup merge of #71053 - phansch:update_kw_sym_docs, r=Dylan-DPC
Add some basic docs to `sym` and `kw` modules

I was looking into improving some Clippy documentation but was missing a
place that explains the `kw` and `sym` modules from rustc.

This adds some very basic usage documentation to these modules.
2020-04-12 14:49:08 +02:00
Dylan DPC
9c34740e92
Rollup merge of #71048 - arlosi:normalize_ext_src, r=eddyb
Normalize source when loading external foreign source into SourceMap

The compiler normalizes source when reading files initially (removes BOMs, etc), but not when loading external sources.

This leads to the external source matching according to the `src_hash`, but differing internally because it was not normalized.

Fixes #70874.
2020-04-12 14:49:06 +02:00
Dylan DPC
d608dfc4f5
Rollup merge of #71041 - JohnTitor:rustc-dev-guide, r=jonas-schievink
Update links of `rustc guide`

Picks up the things we left behind in the transition, hopefully they're last ones.

r? @spastorino
2020-04-12 14:49:05 +02:00
Dylan DPC
b3372ba1d0
Rollup merge of #71034 - GuillaumeGomez:cleanup-e0515, r=Dylan-DPC
Clean up E0515 explanation

r? @Dylan-DPC
2020-04-12 14:49:03 +02:00
Dylan DPC
b83c2e952c
Rollup merge of #71029 - Mark-Simulacrum:cargo-build, r=Mark-Simulacrum
Partial work on building with Cargo

This cherry picks the commits I'm directly approving from #70999, I want to land them so that that PR is smaller.
2020-04-12 14:49:01 +02:00
bors
4d1fbaccb8 Auto merge of #70873 - mark-i-m:update-rdg, r=JohnTitor
Update rustc-dev-guide

This should finally fix toolstate

r? @JohnTitor
2020-04-12 12:46:47 +00:00
Guillaume Gomez
d0b23d5b83 Clean up E0516 explanation 2020-04-12 13:58:05 +02:00
Matthias Krüger
6de0dd1d6b submodules: update clippy from d342cee7 to af5940b7
Changes:
````
Allow UUID style formatting for `inconsistent_digit_grouping` lint
rustup https://github.com/rust-lang/rust/pull/70986
rustup https://github.com/rust-lang/rust/pull/69745
Rustup to https://github.com/rust-lang/rust/pull/70913
compare with the second largest instead of the smallest variant
Revert "Downgrade new_ret_no_self to pedantic"
Check for clone-on-copy in argument positions
Check fn header along with decl when suggesting to implement trait
Downgrade implicit_hasher to pedantic
Move cognitive_complexity to nursery
Run fmt and update test
Use int assoc consts in MANUAL_SATURATING_ARITHMETIC
Use int assoc consts in checked_conversions lint
Use primitive type assoc consts in more tests
Use integer assoc consts in more lint example code
Don't import primitive type modules
Use assoc const NAN for zero_div_zero lint
Fix float cmp to use assoc fxx::EPSILON
Fix NAN comparison lint to use assoc NAN
Refine lint message.
Lint on opt.as_ref().map(|x| &**x).
Include OpAssign in suspicious_op_assign_impl
result_map_or_into_option: fix syntax error in example
result_map_or_into: fix dogfood_clippy error => {h,l}int
CONTRIBUTING.md: fix broken triage link
result_map_or_into_option: fix `cargo dev fmt --check` errors
result_map_or_into_option: move arg checks into tuple assignment
result_map_or_into_option: add `opt.map_or(None, |_| Some(y))` test
result_map_or_into_option: destructure lint tuple or return early
result_map_or_into_option: add good and bad examples
result_map_or_into_option: explicitly note absence of known problems
Downgrade new_ret_no_self to pedantic
Downgrade unreadable_literal to pedantic
Update CONTRIBUTING.md
Rename rustc -> rustc_middle in doc links
result_map_or_into_option: add lint to catch manually adpating Result -> Option
Move matches test in matches module
Run update_lints
Make lint modules private
Don't filter lints in code generation functions
Build lint lists once and the reuse them to update files
Get rid of Lint::is_internal method
Clean up update_lints
Downgrade inefficient_to_string to pedantic
Downgrade trivially_copy_pass_by_ref to pedantic
Downgrade let_unit_value to pedantic
````
Fixes #70993
2020-04-12 13:21:17 +02:00
Philipp Hansch
ec4f7e2edf
Add some basic docs to sym and kw modules
I was looking into improving some Clippy documentation but was missing a
place that explains the `kw` and `sym` modules from rustc.
2020-04-12 11:24:58 +02:00
bors
32fb4dcdd7 Auto merge of #69707 - estebank:impl-trait-missing-bounds, r=Centril
Handle `impl Trait` where `Trait` has an assoc type with missing bounds

When encountering a type parameter that needs more bounds the trivial case is `T` `where T: Bound`, but it can also be an `impl Trait` param that needs to be decomposed to a type param for cleaner code. For example, given

```rust
fn foo(constraints: impl Iterator) {
    for constraint in constraints {
        println!("{:?}", constraint);
    }
}
```

the previous output was

```
error[E0277]: `<impl Iterator as std::iter::Iterator>::Item` doesn't implement `std::fmt::Debug`
 --> src/main.rs:3:26
  |
1 | fn foo(constraints: impl Iterator) {
  |                                    - help: consider further restricting the associated type: `where <impl Iterator as std::iter::Iterator>::Item: std::fmt::Debug`
2 |     for constraint in constraints {
3 |         println!("{:?}", constraint);
  |                          ^^^^^^^^^^ `<impl Iterator as std::iter::Iterator>::Item` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug`
  |
  = help: the trait `std::fmt::Debug` is not implemented for `<impl Iterator as std::iter::Iterator>::Item`
  = note: required by `std::fmt::Debug::fmt`
```

which is incorrect as `where <impl Iterator as std::iter::Iterator>::Item: std::fmt::Debug` is not valid syntax nor would it restrict the positional `impl Iterator` parameter if it were.

The output being introduced is

```
error[E0277]: `<impl Iterator as std::iter::Iterator>::Item` doesn't implement `std::fmt::Debug`
 --> src/main.rs:3:26
  |
3 |         println!("{:?}", constraint);
  |                          ^^^^^^^^^^ `<impl Iterator as std::iter::Iterator>::Item` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug`
  |
  = help: the trait `std::fmt::Debug` is not implemented for `<impl Iterator as std::iter::Iterator>::Item`
  = note: required by `std::fmt::Debug::fmt`
help: introduce a type parameter with a trait bound instead of using `impl Trait`
   |
LL | fn foo<T: Iterator>(constraints: T) where <T as std::iter::Iterator>::Item: std::fmt::Debug  {
   |       ^^^^^^^^^^^^^              ^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
```

This suggestion is correct and lead the user in the right direction: because you have an associated type restriction you can no longer use `impl Trait`, the only reasonable alternative is to introduce a named type parameter, bound by `Trait` and with a `where` binding on the associated type for the new type parameter `as Trait` for the missing bound.

*Ideally*, we would want to suggest something like the following, but that is not valid syntax today

```
error[E0277]: `<impl Iterator as std::iter::Iterator>::Item` doesn't implement `std::fmt::Debug`
 --> src/main.rs:3:26
  |
3 |         println!("{:?}", constraint);
  |                          ^^^^^^^^^^ `<impl Iterator as std::iter::Iterator>::Item` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug`
  |
  = help: the trait `std::fmt::Debug` is not implemented for `<impl Iterator as std::iter::Iterator>::Item`
  = note: required by `std::fmt::Debug::fmt`
help: introduce a type parameter with a trait bound instead of using `impl Trait`
   |
LL | fn foo(constraints: impl Iterator<Item: std::fmt::Debug>) {
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
```

Fix #69638.
2020-04-12 06:32:45 +00:00
Arlo Siemsen
f41aa161c2 Normalize source when loading external foreign source into SourceMap
The compiler normalizes source when reading files initially (removes BOMs, etc), but not when loading external sources.

Fixes #70874 by normalizing when loading external sources too. Adds a test to verify normalization.
2020-04-11 23:26:46 -07:00
bors
941d4352d7 Auto merge of #69926 - RoccoDev:master, r=estebank,varkor
rustc: Add a warning count upon completion

This adds a `build completed with one warning/x warnings` message, similar to the already present `aborted due to previous error` message.
2020-04-12 00:31:11 +00:00
Dylan MacKenzie
04c91a0bba Add #[inline(always)] to into_query_param 2020-04-11 16:29:50 -07:00
Dylan MacKenzie
f0c77337e1 Apply suggestions from review 2020-04-11 15:18:51 -07:00
Dylan MacKenzie
beeacdb2a7 Use custom trait instead of Into 2020-04-11 15:18:51 -07:00
Dylan MacKenzie
fd8cf3c5e3 Simplify macro 2020-04-11 15:18:51 -07:00
Dylan MacKenzie
6e5a21069d Remove call to to_def_id before calling query helper 2020-04-11 15:18:51 -07:00
Dylan MacKenzie
0d4639d77c Fix inference fallout 2020-04-11 15:18:51 -07:00
Dylan MacKenzie
10ed501254 Impl From<LocalDefId> for DefId 2020-04-11 15:18:51 -07:00
Dylan MacKenzie
62b5aff1ae Make query helpers on TyCtxt take impl Into<DefId> 2020-04-11 15:18:51 -07:00
Esteban Küber
984aac6eed fix rebase 2020-04-11 14:59:15 -07:00
Luca Barbieri
1864caaaa4 Make panic-unwind a default feature for libstd
x.py sets it unconditionally, so want it for plain "cargo build".

We need to load one of the panic runtimes that is in src (vs. pre-built in the
compiler's sysroot) to ensure that we don't load libpanic_unwind from the
sysroot. That would lead to a load of libcore, also from the sysroot, and create
lots of errors about duplicate lang items.
2020-04-11 17:49:16 -04:00
Luca Barbieri
3dd500de37 Don't emit rerun-if-changed on llvm-config if using system LLVM
The code was broken because it printed "llvm-config" instead of the
absolute path to the llvm-config executable, causing Cargo to always
rebuild librustc_llvm if using system LLVM.

Also, it's not the build system's job to rebuild when a system library
changes, so we simply don't emit "rerun-if-changed" if a path to LLVM
was not explicitly provided.
2020-04-11 17:49:16 -04:00
Luca Barbieri
53d58dbf5f Require compiler-rt root at ../src/llvm-project/compiler-rt 2020-04-11 17:49:16 -04:00
Luca Barbieri
ac2b84f962 Depend on getopts from crates.io
rustc_session exports it for other crates to avoid mismatching
crate versions.
2020-04-11 17:49:16 -04:00
Esteban Küber
ca25e2868d review comments 2020-04-11 14:34:01 -07:00
Esteban Küber
44394707e5 review comments 2020-04-11 14:34:01 -07:00
Esteban Küber
1e3bdc08c9 Try to use the first char in the trait name as type param 2020-04-11 14:34:01 -07:00
Esteban Küber
01169572a2 Account for existing names when suggesting adding a type param 2020-04-11 14:34:01 -07:00
Esteban Küber
c85fde126e Account for type params with bounds 2020-04-11 14:34:01 -07:00