Commit Graph

108745 Commits

Author SHA1 Message Date
bors
37c945dd61 Auto merge of #70204 - Centril:unshackled-lowering, r=Zoxc
Liberate `rustc_ast_lowering` from `rustc`

The whole point of this PR is the very last commit, in which we remove `rustc` as one of `rustc_ast_lowering`'s dependencies, thereby improving `./x.py` parallelism and working towards https://github.com/rust-lang/rust/issues/65031.

Noteworthy:
- From `rustc::arena` we move logic into `arena`, in particular `declare_arena!`. This is then used in `rustc_ast_lowering` so that lowering has its own separate arena.
- Some linting code is unfortunately moved to `rustc_session::lint` cause its used both in `rustc_lint` and `rustc_ast_lowering`, and this is their common dependency.
- `rustc_session::CrateDisambiguator` is moved into `rustc_ast` so that `rustc::hir::map::definitions` can be moved into `rustc_hir`, so that `rustc_ast_lowering` can stop referring to `rustc::hir`.

r? @Zoxc
2020-03-23 03:10:48 +00:00
bors
e4b01c7791 Auto merge of #69778 - Marwes:dep_graph, r=davidtwco
perf(dep_graph): Avoid allocating a set on when the number reads are …

…small

`reserve_and_rehash` takes up 1.4% of the runtime on the `packed-simd`
benchmark which I believe is due to the number of reads are very low in
many cases (see https://github.com/rust-lang/rust/pull/50565 for
instance).

This avoids allocating the set until we start allocating the `reads`
`SmallVec` but it is possible that a lower limit might be better (not
tested since the improvement will be hard to spot either way).
2020-03-22 22:36:44 +00:00
bors
d1e81ef234 Auto merge of #69079 - CAD97:layout-of-ptr, r=RalfJung
Allow calculating the layout behind a pointer

There was some discussion around allowing this previously.

This does make the requirement for raw pointers to have valid metadata exposed as part of the std API (as a safety invariant, not validity invariant), though I think this is not strictly necessarily required as of current. cc @rust-lang/wg-unsafe-code-guidelines

Naming is hard; I picked the best "obvious" name I could come up with.

If it's agreed that this is actually a desired API surface, I'll file a tracking issue and update the attributes.
2020-03-22 18:37:19 +00:00
bors
1902d1e0de Auto merge of #70275 - Dylan-DPC:rollup-1fbosob, r=Dylan-DPC
Rollup of 10 pull requests

Successful merges:

 - #68099 (Amend Rc/Arc::from_raw() docs regarding unsafety)
 - #70172 (parse/lexer: support `StringReader::retokenize` called on external files.)
 - #70209 (parser: recover on `for<'a> |...| body` closures)
 - #70223 (fix type of const params in associated types.)
 - #70229 (more clippy fixes)
 - #70240 (Return NonZeroU64 from ThreadId::as_u64.)
 - #70250 (Remove wrong entry from RELEASES.md)
 - #70253 (Remove another wrong entry from RELEASES.md)
 - #70254 (couple more clippy fixes (let_and_return, if_same_then_else))
 - #70266 (proc_macro_harness: Use item header spans for errors)

Failed merges:

r? @ghost
2020-03-22 15:04:50 +00:00
Dylan DPC
69c0bcd3d5
Rollup merge of #70266 - petrochenkov:prochead, r=varkor
proc_macro_harness: Use item header spans for errors

Addresses https://github.com/rust-lang/rust/pull/70233#discussion_r396043004.
2020-03-22 15:48:43 +01:00
Dylan DPC
8fe8bad96b
Rollup merge of #70254 - matthiaskrgr:cl4ppy, r=Centril
couple more clippy fixes (let_and_return, if_same_then_else)

* summarize if-else-code with identical blocks (clippy::if_same_then_else)
* don't create variable bindings just to return the bound value immediately (clippy::let_and_return)
2020-03-22 15:48:41 +01:00
Dylan DPC
e5d3476651
Rollup merge of #70253 - jplatte:patch-2, r=Mark-Simulacrum
Remove another wrong entry from RELEASES.md

The entry is under 1.11.0, but the feature is only available since 1.12.0 (for which an identical entry exists).

![Screenshot_2020-03-22 Support `cfg_attr` on `path` attributes by jseyfried · Pull Request #34546 · rust-lang rust](https://user-images.githubusercontent.com/951129/77238862-85c8f580-6bd4-11ea-8d31-77e2994a4b5a.png)
2020-03-22 15:48:40 +01:00
Dylan DPC
bc3dad1221
Rollup merge of #70250 - jplatte:patch-1, r=Centril
Remove wrong entry from RELEASES.md

resolves #70247
2020-03-22 15:48:38 +01:00
Dylan DPC
c882b10a9f
Rollup merge of #70240 - brain0:thread_id, r=Mark-Simulacrum
Return NonZeroU64 from ThreadId::as_u64.

As discussed in #67939, this allows turning Option<ThreadId> into Option<NonZeroU64> which
can then be stored inside an AtomicU64.
2020-03-22 15:48:37 +01:00
Dylan DPC
e58fec0c1c
Rollup merge of #70229 - matthiaskrgr:cl3ppy, r=Mark-Simulacrum
more clippy fixes

* remove unused unit values (clippy::unused_unit)
* make some let-if-bindings more idiomatic (clippy::useless_let_if_seq)
* clarify when we pass () to functions (clippy::unit_arg)
* don't redundantly repeat field names (clippy::redundant_field_names)
* remove redundant returns (clippy::needless_return)
* use let instead of match for matches with single bindings (clippy::match_single_binding)
* don't convert results to options just for matching (clippy::if_let_some_result)
2020-03-22 15:48:35 +01:00
Dylan DPC
3c8f8b6304
Rollup merge of #70223 - lcnr:issue70167, r=eddyb
fix type of const params in associated types.

fixes #66906
fixes #70167

r? @eddyb
2020-03-22 15:48:34 +01:00
Dylan DPC
ea44d71f9b
Rollup merge of #70209 - Centril:recover-quant-closure, r=petrochenkov
parser: recover on `for<'a> |...| body` closures

When encountering `for` and `<` is 1 token ahead, interpret this as an explicitly quantified generic closure and recover, rather than attempting to parse a `for` loop. This provides both improved diagnostics as well as an insurance policy for the ability to use this as the syntax for generic closures in the future.

As requested by r? @eddyb
2020-03-22 15:48:32 +01:00
Dylan DPC
9890d9a9d0
Rollup merge of #70172 - eddyb:retokenize-external-src, r=petrochenkov
parse/lexer: support `StringReader::retokenize` called on external files.

This ~~should theoretically~~ fixes #69933, ~~but I'm not sure what the best way to test it is~~.
**EDIT**: see https://github.com/rust-lang/rust/issues/69933#issuecomment-602019598.

r? @petrochenkov cc @Xanewok @staktrace
2020-03-22 15:48:30 +01:00
Dylan DPC
0bc5fc99d3
Rollup merge of #68099 - lukaslueg:into_raw_unsafe, r=LukasKalbertodt
Amend Rc/Arc::from_raw() docs regarding unsafety

[This](https://stackoverflow.com/questions/59671647/is-it-safe-to-clone-a-type-erased-arc-via-raw-pointer) question on SO boils down to "is it safe to `::from_raw()` a `Rc<T>`/`Arc<T>` using a dummy `T` even if `T` is never dereferenced via the new `Rc`/`Arc`?". It almost never is.

This PR amends the docs of `from_raw()` regarding this point.
2020-03-22 15:48:28 +01:00
bors
5ae85f43f4 Auto merge of #68820 - WaffleLapkin:remove_finished_from_map_while, r=LukasKalbertodt
Remove `finished` flag from `MapWhile`

This PR removes  `finished` flag from `MapWhile` as been proposed in https://github.com/rust-lang/rust/pull/66577#discussion_r370958025.

This also resolves open questions of the tracking issue (#68537):
- `MapWhile` can't implement both
  + `DoubleEndedIterator` (discussed in https://github.com/rust-lang/rust/pull/66577#discussion_r370947990 and following comments)
  + `FusedIterator` (this pr removes `finished` flag, so `MapWhile` isn't fused anymore)
- Debug output (this pr removes `finished` flag, so there is no question in including it in debug output)

r? @Mark-Simulacrum
2020-03-22 11:57:58 +00:00
Vadim Petrochenkov
bdd07f932b proc_macro_harness: Use item header spans for errors 2020-03-22 12:59:32 +03:00
bors
94d43d6566 Auto merge of #68098 - ssomers:btreemap_gdb_pretty_print, r=Mark-Simulacrum
Test gdb pretty printing more and fix overzealous type substitution

Adresses a problem concerning printing BTreeMap / BTreeSet data in gdb: when the key or value type name contains substring "LeafNode", and the map has multiple nodes (e.g. more than 11 elements), printing causes an exception. E.g.

```
rustc -g - <<EOF
    use std::collections::BTreeMap;

    struct MyLeafNode(i8);

    fn main() {
        let m: BTreeMap<i8, MyLeafNode> = (0..12).map(|i| (i, MyLeafNode(i))).collect();
        assert!(!m.is_empty());
    }
EOF
```

```
$ rust-gdb rust_out
(gdb) b 7
(gdb) r
(gdb) p m
$1 = BTreeMap<i8, rust_out::MyLeafNode>(len: 12)Python Exception <class 'gdb.error'> No type named alloc::collections::btree::node::InternalNode<i8, rust_out::MyInternalNode>.:
use std::collections::BTreeMap;
```

The code was written in #56144 by @tromey (and later touched upon by @RalfJung in #57045, but I think that had nothing to do with the issues in this PR).
2020-03-22 08:55:18 +00:00
bors
5574b1df57 Auto merge of #70153 - flip1995:clippyup, r=Dylan-DPC
Update Clippy

Closes #70128

cc rust-lang/rust-clippy#5342

r? @Manishearth
2020-03-22 00:57:57 +00:00
CAD97
dd973d1b12 Allow calculating the layout behind a pointer
Let align/size_of_of_val intrinsics work on ptrs
2020-03-21 19:45:45 -04:00
Matthias Krüger
74d68ea7eb don't create variable bindings just to return the bound value immediately (clippy::let_and_return) 2020-03-22 00:35:25 +01:00
Matthias Krüger
3599fd389d summarize if-else-code with identical blocks (clippy::if_same_then_else) 2020-03-22 00:34:16 +01:00
Jonas Platte
3f42104cef
Remove another wrong entry from RELEASES.md 2020-03-22 00:29:12 +01:00
Jonas Platte
c746d93e14
Remove wrong entry from RELEASES.md 2020-03-21 23:33:33 +01:00
bors
c6b172f788 Auto merge of #70246 - Dylan-DPC:rollup-vt9wex2, r=Dylan-DPC
Rollup of 10 pull requests

Successful merges:

 - #70003 (symbol_names: treat ReifyShim like VtableShim.)
 - #70051 (Allow `hir().find` to return `None`)
 - #70126 (Fix ICE caused by truncating a negative ZST enum discriminant)
 - #70197 (For issue 53957: revise unit test to focus on underlying bug of 23076.)
 - #70215 (ast: Compress `AttrId` from `usize` to `u32`)
 - #70218 (Fix deprecated Error.description() usage in docs)
 - #70228 (Remove CARGO_BUILD_TARGET from bootstrap.py)
 - #70231 (Add explanation message for E0224)
 - #70232 (Tweak wording for std::io::Read::read function)
 - #70238 (Add a test for out-of-line module passed through a proc macro)

Failed merges:

r? @ghost
2020-03-21 21:57:38 +00:00
Dylan DPC
17e6ed1fd9
Rollup merge of #70238 - petrochenkov:procmod, r=Centril
Add a test for out-of-line module passed through a proc macro

Closes https://github.com/rust-lang/rust/issues/58818.
2020-03-21 22:56:31 +01:00
Dylan DPC
39c52225dd
Rollup merge of #70232 - adrian5:patch-1, r=Dylan-DPC
Tweak wording for std::io::Read::read function

I think the sentence as a whole reads smoother that way.
2020-03-21 22:56:30 +01:00
Dylan DPC
4b5ca6e4a7
Rollup merge of #70231 - aDotInTheVoid:E0224, r=Dylan-DPC
Add explanation message for E0224

Addresses some of #61137
2020-03-21 22:56:28 +01:00
Dylan DPC
6e9720d452
Rollup merge of #70228 - lzutao:patch-1, r=Mark-Simulacrum
Remove CARGO_BUILD_TARGET from bootstrap.py

Closes #70208
2020-03-21 22:56:27 +01:00
Dylan DPC
36d6e94831
Rollup merge of #70218 - intgr:fix-deprecated-method-in-docs, r=jonas-schievink
Fix deprecated Error.description() usage in docs
2020-03-21 22:56:25 +01:00
Dylan DPC
8e90533413
Rollup merge of #70215 - petrochenkov:attrid, r=Centril
ast: Compress `AttrId` from `usize` to `u32`

An easy size win for `ast::Attribute` (96 bytes -> 88 bytes).

Also stop encoding/decoding `AttrId` entirely.
2020-03-21 22:56:24 +01:00
Dylan DPC
a3bdfc4035
Rollup merge of #70197 - pnkfelix:issue-53957-revise-test-of-23076, r=LukasKalbertodt
For issue 53957: revise unit test to focus on underlying bug of 23076.

Fix #53957 by revising unit test to focus on underlying bug of #23076.

Namely, this version focuses on the end-to-end behavior that the attempt to create the UDP binding will fail, regardless of the semantics of how particular DNS servers handle junk inputs.

(I spent some time trying to create a second more-focused test that would sidestep the DNS resolution, but this is not possible without more invasive changes to the internal infrastructure of `ToSocketAddrs` and what not. It is not worth it.)
2020-03-21 22:56:22 +01:00
Dylan DPC
ecf3ef52a6
Rollup merge of #70126 - wesleywiser:fix_miri_ice_neg_zst_enum_discr, r=RalfJung,eddyb
Fix ICE caused by truncating a negative ZST enum discriminant

Fixes #70114

r? @oli-obk or @RalfJung
2020-03-21 22:56:20 +01:00
Dylan DPC
ce0af8a5bd
Rollup merge of #70051 - Zoxc:opt-find, r=eddyb
Allow `hir().find` to return `None`

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

r? @eddyb
2020-03-21 22:56:19 +01:00
Dylan DPC
834ed36a53
Rollup merge of #70003 - eddyb:symbol-mangling-reify-shims, r=nikomatsakis
symbol_names: treat ReifyShim like VtableShim.

Without this, the `#[track_caller]` tests don't pass with `-Zsymbol-mangling-version=v0`, because there is a symbol name collision between the `ReifyShim` and the original definition.

cc @anp
2020-03-21 22:56:18 +01:00
Mazdak Farrokhzad
40cec7854b lowering: remove librustc dependency 2020-03-21 22:20:24 +01:00
Mazdak Farrokhzad
14f89ded2c {rustc::hir::map -> rustc_hir}::definitions 2020-03-21 22:20:24 +01:00
Mazdak Farrokhzad
bb8785ea00 move CrateDisambiguator -> rustc_ast 2020-03-21 22:18:57 +01:00
Mazdak Farrokhzad
fdf2d2d9dc dep_graph.assert_ignored() -> rustc_interface 2020-03-21 22:18:57 +01:00
Mazdak Farrokhzad
2c55902e3c add_elided_lifetime_in_path_suggestion -> rustc_session 2020-03-21 22:18:57 +01:00
Mazdak Farrokhzad
e0403bcde3 lowering: bug! -> panic! 2020-03-21 22:18:57 +01:00
Mazdak Farrokhzad
0f68ab03c3 separate out an arena for HIR 2020-03-21 22:18:57 +01:00
Mazdak Farrokhzad
4c28d68bc3 move move stuff into declare_arena! 2020-03-21 22:18:57 +01:00
Mazdak Farrokhzad
e60205fe52 move more logic into declare_arena! 2020-03-21 22:18:57 +01:00
Mazdak Farrokhzad
093bcf2e7a merge impl_arena_allocatable & declare_arena 2020-03-21 22:18:57 +01:00
Mazdak Farrokhzad
6aff92a7d2 move DropArena -> libarena 2020-03-21 22:18:57 +01:00
Matthias Krüger
e45fdcfa9a remove unused unit values (clippy::unused_unit) 2020-03-21 20:45:19 +01:00
Matthias Krüger
47e9775a9a make some let-if-bindings more idiomatic (clippy::useless_let_if_seq) 2020-03-21 20:45:18 +01:00
Matthias Krüger
a6692b7935 clarify when we pass () to functions (clippy::unit_arg) 2020-03-21 20:45:14 +01:00
John Kåre Alsaker
0aa15d0485 Allow hir().find to return None 2020-03-21 20:12:55 +01:00
Thomas Bächler
c8140a88f6 Return NonZeroU64 from ThreadId::as_u64.
As discussed in #67939, this allows turning Option<ThreadId> into Option<NonZeroU64> which
can then be stored inside an AtomicU64.
2020-03-21 19:48:23 +01:00