Commit Graph

110020 Commits

Author SHA1 Message Date
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
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
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
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
Esteban Küber
794b644f0b review comments 2020-04-11 14:34:01 -07:00
Esteban Küber
2c998aa8bb review comments 2020-04-11 14:34:01 -07:00
Esteban Küber
9d83cc8331 Handle impl Trait where Trait has an assoc type with missing bounds
Fix #69638.
2020-04-11 14:34:01 -07:00
bors
378901d988 Auto merge of #71031 - Dylan-DPC:rollup-zr8hh86, r=Dylan-DPC
Rollup of 5 pull requests

Successful merges:

 - #70644 (Clean up `ModuleConfig` initialization)
 - #70937 (Fix staticlib name for *-pc-windows-gnu targets)
 - #70996 (Add or_insert_with_key to Entry of HashMap/BTreeMap)
 - #71020 (Store UNICODE_VERSION as a tuple)
 - #71021 (Use write!-style syntax for MIR assert terminator)

Failed merges:

r? @ghost
2020-04-11 21:19:28 +00:00
Yuki Okushi
6b2830427b
Update links of rustc guide 2020-04-12 05:02:35 +09:00
Guillaume Gomez
e2e41c9527 Clean up E0515 explanation 2020-04-11 18:58:03 +02:00
Dylan DPC
d8dcdec2b8
Rollup merge of #71021 - robojumper:71000-mir-assert-syntax, r=jonas-schievink
Use write!-style syntax for MIR assert terminator

Fixes #71000.

r? @jonas-schievink
2020-04-11 17:52:14 +02:00
Dylan DPC
b794cb262f
Rollup merge of #71020 - pyfisch:unicode-version, r=sfackler
Store UNICODE_VERSION as a tuple

Remove the UnicodeVersion struct containing
major, minor and update fields and replace it with
a 3-tuple containing the version number.
As the value of each field is limited to 255
use u8 to store them.
2020-04-11 17:52:13 +02:00
Dylan DPC
03a724bd48
Rollup merge of #70996 - ChaiTRex:master, r=Amanieu
Add or_insert_with_key to Entry of HashMap/BTreeMap

Going along with `or_insert_with`, `or_insert_with_key` provides the `Entry`'s key to the lambda, avoiding the need to either clone the key or the need to reimplement this body of this method from scratch each time.

This is useful when the initial value for a map entry is derived from the key. For example, the introductory Rust book has an example Cacher struct that takes an expensive-to-compute lambda and then can, given an argument to the lambda, produce either the cached result or execute the lambda.

---

I'm fairly new to Rust, so any optimizations, corrections to types, better names, better documentation, or whatever else would be appreciated. I'd like to thank Arnavion on freenode for helping me to implement a very similar method when I found that `or_insert_with_key` was unavailable.

As a somewhat-related note, this implements https://github.com/rust-lang/rfcs/issues/1202 from 2015, so if this pull request is accepted, that should be closed.
2020-04-11 17:52:11 +02:00
Dylan DPC
5ecc18f3ec
Rollup merge of #70937 - mati865:mingw-staticlib-suffix, r=petrochenkov
Fix staticlib name for *-pc-windows-gnu targets

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

Guess this will need FCP but opened PR anyway to bring the attention.

In short Rust has been using wrong `foo.lib` format for static libraries when building for `*-pc-windows-gnu` since version [1.8.0](34b4e66736).
[LD](f4a220077b/ld/emultempl/pe.em (L2224-L2227)) and [LLD](0605f5fbe7/lld/MinGW/Driver.cpp (L140-L141)) agree in that regard and only accept static libraries with `libfoo.a` format. So the only thing to break here is when somebody added a hack to rename created library to proper format (like [here](ad86ab8580 (d5b4de16d947214ec306bd57bed1bd23a939b5f9_197_194))).
2020-04-11 17:52:10 +02:00
Dylan DPC
f9c0ea2862
Rollup merge of #70644 - nnethercote:clean-up-ModuleConfig-init, r=Mark-Simulacrum
Clean up `ModuleConfig` initialization

Because it's currently a mess.

r? @Mark-Simulacrum
2020-04-11 17:52:08 +02:00
bors
e82734e56b Auto merge of #70161 - cjgillot:query-arena, r=nikomatsakis
Allocate some query results on an arena

This avoids a cloning few `Lrc` and `Vec`s in the queries.
2020-04-11 15:31:54 +00:00
Luca Barbieri
45ede927fb Depend on libc from crates.io 2020-04-11 11:07:04 -04:00
RoccoDev
b85c64c3ea
rustc: Add a warning count upon completion 2020-04-11 16:15:24 +02:00
Chai T. Rex
db0c39fba5 Change issue number to point to tracking issue 2020-04-11 08:46:12 -04:00
bors
76882666eb Auto merge of #71014 - Centril:rollup-3lc8cnt, r=Centril
Rollup of 5 pull requests

Successful merges:

 - #69573 (tests encoding current behavior for various cases of "binding" to _.)
 - #70881 (bootstrap: work around "unused attribute" errors in incremental stdlib rebuilds.)
 - #70957 (Normalize MIR locals' types for generator layout computation.)
 - #70962 (added machine hooks to track deallocations)
 - #70982 (Normalize function signature in function casting check procedure)

Failed merges:

r? @ghost
2020-04-11 12:22:00 +00:00
robojumper
b78ff993fd Use write!-style syntax for MIR assert terminator 2020-04-11 13:27:51 +02:00
Pyfisch
7f4048c710 Store UNICODE_VERSION as a tuple
Remove the UnicodeVersion struct containing
major, minor and update fields and replace it with
a 3-tuple containing the version number.
As the value of each field is limited to 255
use u8 to store them.
2020-04-11 12:56:25 +02:00