Commit Graph

108976 Commits

Author SHA1 Message Date
Mazdak Farrokhzad
8dda61792b
Rollup merge of #70248 - Centril:unroot, r=petrochenkov
parser: simplify & remove unused field

r? @petrochenkov
2020-03-23 04:26:12 +01:00
Mazdak Farrokhzad
08dfd1344c
Rollup merge of #70236 - petrochenkov:globimpice, r=ecstatic-morse
resolve: Avoid "self-confirming" import resolutions in one more case

So the idea behind "blacklisted bindings" is that we must ignore some name definitions during resolution because otherwise they cause infinite cycles.
E.g. import
```rust
use my_crate;
```
would refer to itself (on 2018 edition) without this blacklisting, because `use my_crate;` is the first name in scope when we are resolving `my_crate` here.

In this PR we are doing this blacklisting for the case
```rust
use same::same;
```
, namely blacklisting the second `same` when resolving the first `same`.
This was previously forgotten.

Fixes https://github.com/rust-lang/rust/issues/62767
2020-03-23 04:26:10 +01:00
Mazdak Farrokhzad
11f5309858
Rollup merge of #70227 - LeSeulArtichaut:typo-def, r=Centril
Only display definition when suggesting a typo

Closes #70206
r? @Centril
2020-03-23 04:26:08 +01:00
Mazdak Farrokhzad
675bdf6d6d
Rollup merge of #70207 - hatoo:macos-getentropy, r=dtolnay
Use getentropy(2) on macos

resolves #70179
2020-03-23 04:26:07 +01:00
Mazdak Farrokhzad
a2b469c4cc
Rollup merge of #69880 - RalfJung:miri-assert-error-sanity, r=oli-obk
miri engine: turn error sanity checks into assertions

We had these as debug assertions so far to make sure our test suite is clean, but really these are conditions that should never arise and also @eddyb told me to turn non-performance-critical debug assertions into full assertions so here we go. ;)

I propose that we do a check-only crater run to make sure this does not actually happen in practice.

r? @oli-obk
2020-03-23 04:26:05 +01:00
Mazdak Farrokhzad
5ed9d7ebb6
Rollup merge of #69251 - anp:track-caller-in-traits, r=eddyb
#[track_caller] in traits

Per https://github.com/rust-lang/rust/issues/47809#issuecomment-572791760, this allows the `#[track_caller]` attribute on trait methods.

Includes tests for `#[track_caller]` with:

* "regular" trait impls
* default trait impls
* "blanket-tracked" trait impls, where the annotation is in the trait definition and is inherited by "regular" impls of the trait
2020-03-23 04:26:04 +01:00
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
Eduard-Mihai Burtescu
b5e78a2fa7 rustc_llvm: don't use -g when LLVM_NDEBUG is set. 2020-03-23 02:36:36 +02:00
Eduard-Mihai Burtescu
d6f4a2fbf9 rustc_codegen_llvm: don't generate static and vtable debuginfo for -Cdebuginfo=1. 2020-03-23 02:36:36 +02:00
Eduard-Mihai Burtescu
c923f045ce rustc_codegen_llvm: don't generate Self type debuginfo for methods for -Cdebuginfo=1. 2020-03-23 02:36:35 +02:00
Eduard-Mihai Burtescu
7023948400 rustc_codegen_llvm: don't generate "lexical block" scopes for -Cdebuginfo=1. 2020-03-23 02:36:35 +02:00
Adam Perry
69bd46a6a1 Remove special-casing from TyCtxt::impl_of_method.
We can do this now that opt_associated_item doesn't have any panicking paths.
2020-03-22 17:21:18 -07:00
Adam Perry
97da6dae41 Allow #[track_caller] in traits.
The codegen implementation already works for this, so we're:

* propagating track_caller attr from trait def to impl
* relaxing errors
* adding tests

Approved in a recent lang team meeting:
https://github.com/rust-lang/lang-team/blob/master/minutes/2020-01-09.md
2020-03-22 17:21:18 -07:00
Nicholas Nethercote
ca0f997519 Factor out a repeated config.no_integrated_as test. 2020-03-23 10:45:27 +11:00
Nicholas Nethercote
a147cd070e Introduce a local variable config_emit_normal_obj.
This adds a missing `!config.obj_is_bitcode` condition to two places
that should have it.

As a result, when `obj_is_bitcode` and `no_integrated_as` are both true,
the compiler will no longer unnecessarily emit asm, convert it to an
object file, and then overwrite that object file with bitcode.
2020-03-23 10:45:27 +11:00
Nicholas Nethercote
f8261b496d Factor out a repeated config.obj_is_bitcode test. 2020-03-23 10:45:27 +11:00
Nicholas Nethercote
e4b36baf54 Remove an unnecessary block scope. 2020-03-23 10:45:27 +11:00
Nicholas Nethercote
47c8f3f56b Combine ModuleConfig::embed_bitcode{,_marker}.
Because the `(true, true)` combination isn't valid.
2020-03-23 10:45:27 +11:00
Nicholas Nethercote
d156bf658f Remove some local variables.
I find the code easier to read if the values in `config` are all used
directly, rather than a mix of `config` values and local variables. It
will also faciliate some of the following commits.

Also, use `config.bitcode_needed()` in one place.
2020-03-23 10:45:23 +11:00
Esteban Küber
9175940c92 Use more targetted span for error label 2020-03-22 16:09:42 -07:00
Esteban Küber
854b78fe22 Normalize wording of privacy access labels 2020-03-22 15:36:54 -07: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
mark
5e8b795552 fix one more test 2020-03-22 17:18:30 -05:00
Ralf Jung
29df39ba8c remove UbExperimental variant 2020-03-22 22:54:41 +01:00
Ralf Jung
2ee2157e29 miri engine: turn error sanity checks into assertions 2020-03-22 22:47:35 +01:00
Ralf Jung
cda81da6ea avoid unsafe code, use upcasting-trait instead (trick by oli) 2020-03-22 22:43:26 +01:00
Bastian Kauschke
645fedd183 correctly handle const params in type_of 2020-03-22 22:29:54 +01:00
CDirkx
bd1df44057 Add regression test for #70155.
With #70166 merged, `RangeInclusive` now derives `PartialEq` and `Eq`, implementing structural equality and as a side effect the range is now usable with const generics, closing #70155.

A test is added to avoid a change to the private fields or the equality implementation of the range from subtly reverting #70155.
2020-03-22 22:04:05 +01:00
Dylan MacKenzie
b5636b8437 Rename TimeLimitReached -> StepLimitReached 2020-03-22 13:06:33 -07:00
mark
d40dff9cbb the crate and tests 2020-03-22 14:37:51 -05: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
Esteban Küber
94bbd46682 Add span label to primary error span 2020-03-22 11:18:06 -07:00
Esteban Küber
52fbd3e569 Increase verbosity when suggesting subtle code changes 2020-03-22 10:36:45 -07: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
Guillaume Gomez
fa5b727167 Clean up E0449 explanation 2020-03-22 13:33:29 +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
Matthias Krüger
263cbd1bbe remove redundant closures (clippy::redundant_closure) 2020-03-22 12:43:19 +01:00
Ralf Jung
82f4a1a9b9 get rid of ConstPropUnsupported; use ZST marker structs instead 2020-03-22 12:16:24 +01:00
Bastian Kauschke
853377817d rename tests 2020-03-22 11:59:01 +01:00
Bastian Kauschke
ed4885359a simplify eval_mir_constant 2020-03-22 11:53:13 +01:00