Commit Graph

110046 Commits

Author SHA1 Message Date
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
Mateusz Mikuła
7e68cf8927 [windows] Add testcase to make sure executables are self-contained 2020-04-11 21:16:27 +02: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
bors
1f3b65921e Auto merge of #69573 - pnkfelix:issue-53114-add-tests, r=Centril
tests encoding current behavior for various cases of "binding" to _.

The `_` binding form is special, in that it encodes a "no-op": nothing is actually bound, and thus nothing is moved or borrowed in this scenario. Usually we do the "right" thing in all such cases. The exceptions are explicitly pointed out in this test case, so that we keep track of whether they are eventually fixed.

Cc #53114.

(This does not close the aforementioned issue; it just adds the tests encoding the current behavior, which we hope to eventually fix.)
2020-04-11 06:44:47 +00:00
Mazdak Farrokhzad
0a6d1778ff
Rollup merge of #70982 - ldm0:fncoerce, r=eddyb
Normalize function signature in function casting check procedure

Fixes #54094
```rust
trait Zoo {
    type X;
}

impl Zoo for u16 {
    type X = usize;
}

fn foo(abc: <u16 as Zoo>::X) {}

fn main() {
    let x: *const u8 = foo as _;
}
```

Currently a `FnDef` need to be checked if it's able to cast to `FnPtr` before it is actually casted. But the signature of `FnPtr` target's associated types are not normalized:

96d77f0e5f/src/librustc_typeck/check/cast.rs (L536-L553)
However, during the coercion check, the signature of `FnPtr` target's associated types are normalized (The `<u16 as Zoo>::X` turns into `usize`).

96d77f0e5f/src/librustc_typeck/check/coercion.rs (L687-L729)

This inconsistency leads to the error:`Err(Sorts(ExpectedFound { expected: <u16 as Zoo>::X, found: usize }))`.
2020-04-11 01:52:29 +02:00
Mazdak Farrokhzad
8c097d5c38
Rollup merge of #70962 - KrishnaSannasi:track-dealloc, r=RalfJung
added machine hooks to track deallocations

This is part of rust-lang/miri#1314 in order to allow miri to show stack traces for on deallocation in order to debug use-after-free bugs
2020-04-11 01:52:27 +02:00
Mazdak Farrokhzad
eec86ba3bd
Rollup merge of #70957 - oli-obk:lazy_repeat_length_eval_ice, r=matthewjasper
Normalize MIR locals' types for generator layout computation.

fixes #70905
2020-04-11 01:52:26 +02:00
Mazdak Farrokhzad
4dfa73a0d8
Rollup merge of #70881 - eddyb:stage0-hide-incremental-unused-attrs, r=Mark-Simulacrum
bootstrap: work around "unused attribute" errors in incremental stdlib rebuilds.

This should alleviate #58633 separately from a proper fix.

r? @Mark-Simulacrum
2020-04-11 01:52:24 +02:00
Mazdak Farrokhzad
426fb276ad
Rollup merge of #69573 - pnkfelix:issue-53114-add-tests, r=Centril
tests encoding current behavior for various cases of "binding" to _.

The `_` binding form is special, in that it encodes a "no-op": nothing is actually bound, and thus nothing is moved or borrowed in this scenario. Usually we do the "right" thing in all such cases. The exceptions are explicitly pointed out in this test case, so that we keep track of whether they are eventually fixed.

Cc #53114.

(This does not close the aforementioned issue; it just adds the tests encoding the current behavior, which we hope to eventually fix.)
2020-04-11 01:52:23 +02:00
Jonas Schievink
72ae73ae61 Pass the PlaceElem::Index local to visit_local 2020-04-11 01:39:50 +02:00
bors
f363450358 Auto merge of #70986 - marmeladema:issue70853/librustc_middle-local-def-id, r=eddyb
rustc_middle: return `LocalDefId` where possible in hir::map module

This changes the return type of the following functions to return a `LocalDefId` instead of a `DefId`:
* opt_local_def_id_from_node_id
* opt_local_def_id
* body_owner_def_id
* local_def_id_from_node_id
* get_parent_id

This is another step in the right direction for #70853

This pull request will be followed by another (substantial one) which changes the return type of `local_def_id` function but this change being more invasive, we might want to wait for #70956 or #70961 (or some other form it) to land first.
2020-04-10 23:13:13 +00:00
bors
14061868b3 Auto merge of #70994 - Centril:rollup-lftv0a3, r=Centril
Rollup of 9 pull requests

Successful merges:

 - #69745 (Use `PredicateObligation`s instead of `Predicate`s)
 - #70938 (Add ThreadSanitizer test case)
 - #70973 (Use forward traversal for unconditional recursion lint)
 - #70978 (compiletest: let config flags overwrite -A unused)
 - #70979 (Follow up on BTreeMap comments)
 - #70981 (Rearrange BTreeMap::into_iter to match range_mut.)
 - #70985 (Clean up E0512 explanation)
 - #70988 (Setup the `@rustbot prioritize` command)
 - #70991 (fix rustc-dev-guide's url in src/librustc_codegen_ssa)

Failed merges:

r? @ghost
2020-04-10 19:28:38 +00:00
Chai T. Rex
78102377d0 Fixed doc tests for added methods 2020-04-10 13:45:34 -04:00
Ozaren
7de9511d25
added machine hooks to track deallocations 2020-04-10 13:17:55 -04:00
Chai T. Rex
921579cc3c 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.
2020-04-10 12:54:09 -04:00
Mazdak Farrokhzad
22ea3a4476 --bless you 2020-04-10 18:22:24 +02:00
Mazdak Farrokhzad
178aa6ae9e
Rollup merge of #70991 - longfangsong:master, r=jonas-schievink
fix rustc-dev-guide's url in src/librustc_codegen_ssa

Change the backend-agnostic chapter's url in rustc-dev-guide from [url](https://rustc-dev-guide.rust-lang.org/codegen/backend-agnostic.html), which is 404 now, to [the right one](https://rustc-dev-guide.rust-lang.org/backend/backend-agnostic.html).

Sorry for disturbing.
2020-04-10 18:15:29 +02:00
Mazdak Farrokhzad
6dc77f546d
Rollup merge of #70988 - LeSeulArtichaut:triagebot-prioritize, r=Mark-Simulacrum
Setup the `@rustbot prioritize` command

See rust-lang/triagebot#453

r? @Mark-Simulacrum can you confirm that the `t-compiler/wg-prioritization` stream ID is `227806`?
cc @spastorino
2020-04-10 18:15:27 +02:00
Mazdak Farrokhzad
d36991a400
Rollup merge of #70985 - GuillaumeGomez:cleanup-e0512, r=Dylan-DPC
Clean up E0512 explanation

r? @Dylan-DPC
2020-04-10 18:15:26 +02:00
Mazdak Farrokhzad
f699a55e4b
Rollup merge of #70981 - ssomers:btreemap_into_into_iter, r=Mark-Simulacrum
Rearrange BTreeMap::into_iter to match range_mut.

r? @Mark-Simulacrum
I wondered why you catered for the optional root differently in `into_iter` than in `range_mut`.
2020-04-10 18:15:24 +02:00
Mazdak Farrokhzad
277ce9e249
Rollup merge of #70979 - ssomers:btreemap_the_alice_merton_variations, r=Amanieu
Follow up on BTreeMap comments

r? @Amanieu (for the first commit)
2020-04-10 18:15:22 +02:00
Mazdak Farrokhzad
a5e06f28c7
Rollup merge of #70978 - RalfJung:compiletest-flags, r=Mark-Simulacrum
compiletest: let config flags overwrite -A unused

Cc https://github.com/laumann/compiletest-rs/issues/216
2020-04-10 18:15:21 +02:00
Mazdak Farrokhzad
0d892873d8
Rollup merge of #70973 - ecstatic-morse:recursion-lint, r=jonas-schievink
Use forward traversal for unconditional recursion lint

While reviewing #70822, I noted that #54444 could be solved without requiring the predecessor graph and without allocating a `Vec<Span>` for every basic block. The unconditional recursion lint is not a performance bottleneck however, so I approved #70822 as it was.

Nevertheless, I wanted to try implementing my idea using `TriColorDepthFirstSearch`, which is a DFS that can differentiate between [forward/tree edges and backward ones](https://en.wikipedia.org/wiki/Depth-first_search#Output_of_a_depth-first_search). I found this approach more straightforward than the existing one, so I'm opening this PR to see if it is desirable.

The pass is now just a DFS across the control-flow graph. We ignore false edges and false unwinds, as well as the successors of recursive calls, just like existing pass does. If we see a back-edge (loop) or a terminator that would cause us to yield control-flow back to the caller (`Return`, `Resume`, etc.), we know that the function does not unconditionally recurse.

r? @jonas-schievink
2020-04-10 18:15:19 +02:00
Mazdak Farrokhzad
6b2df46b2e
Rollup merge of #70938 - tmiasko:thread-test-case, r=hanna-kruppe
Add ThreadSanitizer test case
2020-04-10 18:15:18 +02:00
Mazdak Farrokhzad
1fe86f47d8
Rollup merge of #69745 - estebank:predicate-obligations-3, r=nikomatsakis,eddyb
Use `PredicateObligation`s instead of `Predicate`s

Keep more information about trait binding failures. Use more specific spans by pointing at bindings that introduce obligations.

Subset of #69709.

r? @eddyb
2020-04-10 18:15:16 +02:00
bors
9682f0e14d Auto merge of #66605 - GuillaumeGomez:drop-python2, r=Mark-Simulacrum
Stop explicitly depending on python 2

This PR revises our previous policy of officially only supporting and testing with python 2 in the CI environment to instead test with python 3. It also changes the defaults to python 3 in our various scripts (usually, by way of `python` rather than `python3` to preserve compatibility with systems that do not have a python 3 available).

The effect of this is that we expect all new patches to support python 3 (and will test as such). We explicitly also expect that patches support python 2.7 as well -- and test as such, though only on one builder. This is intended as a temporary, though likely long-lived, measure to preserve compatibility while looking towards the future which is likely to be a python 3 only world. We do not at this point set a timeline for when we'll drop support for python 2.7; it's plausible that this is months or years into the future, depending on how quickly the ecosystem drops support and how painful it is for us to maintain that support over time.

Closes #65063 (as far as I can tell; please file explicit and separate issues or PRs if not).
2020-04-10 16:13:20 +00:00
Felix S. Klock II
1ff99b724c copy test cases to if let as well. 2020-04-10 18:07:56 +02:00
Felix S Klock II
192d5330c4 Update src/test/ui/binding/issue-53114-safety-checks.rs
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2020-04-10 18:07:56 +02:00
Felix S Klock II
ee7a035d8c Update src/test/ui/binding/issue-53114-borrow-checks.rs
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2020-04-10 18:07:56 +02:00
Felix S. Klock II
6e70849304 tests encoding current behavior for various cases of "binding" to _.
The `_` binding form is special, in that it encodes a "no-op": nothing is
actually bound, and thus nothing is moved or borrowed in this scenario. Usually
we do the "right" thing in all such cases. The exceptions are explicitly pointed
out in this test case, so that we keep track of whether they are eventually
fixed.
2020-04-10 18:07:56 +02:00
longfangsong
c728c75de7 fix rustc-dev-guide url in src/librustc_codegen_ssa 2020-04-10 22:48:34 +08:00