123340 Commits

Author SHA1 Message Date
bors
0c03aee8b8 Auto merge of #74073 - Manishearth:rollup-faqo9lx, r=Manishearth
Rollup of 12 pull requests

Successful merges:

 - #72688 (added .collect() into String from Box<str>)
 - #73787 (Add unstable docs for rustc_attrs)
 - #73834 (Some refactoring around intrinsic type checking)
 - #73871 (Fix try_print_visible_def_path for Rust 2018)
 - #73937 (Explain exhaustive matching on {usize,isize} maximum values)
 - #73973 (Use `Span`s to identify unreachable subpatterns in or-patterns)
 - #74000 (add `lazy_normalization_consts` feature gate)
 - #74025 (Remove unnecessary release from Arc::try_unwrap)
 - #74027 (Convert more `DefId`s to `LocalDefId`s)
 - #74055 (Fix spacing in Iterator fold doc)
 - #74057 (expected_found `&T` -> `T`)
 - #74064 (variant_count: avoid incorrect dummy implementation)

Failed merges:

r? @ghost
2020-07-05 23:08:08 +00:00
Manish Goregaokar
e62436333e
Rollup merge of #74064 - RalfJung:variant-count-bootstrap, r=kennytm
variant_count: avoid incorrect dummy implementation

This also avoids a stage 0 doctest failure.
2020-07-05 16:07:39 -07:00
Manish Goregaokar
b4710bde3d
Rollup merge of #74057 - lcnr:expected_found, r=davidtwco
expected_found `&T` -> `T`
2020-07-05 16:07:37 -07:00
Manish Goregaokar
4591b0f40c
Rollup merge of #74055 - pickfire:patch-1, r=jonas-schievink
Fix spacing in Iterator fold doc
2020-07-05 16:07:35 -07:00
Manish Goregaokar
a1c076fa75
Rollup merge of #74027 - lcnr:ConstCx-local-def-id, r=varkor
Convert more `DefId`s to `LocalDefId`s
2020-07-05 16:07:34 -07:00
Manish Goregaokar
aef2ca6681
Rollup merge of #74025 - tmiasko:try-unwrap, r=Amanieu
Remove unnecessary release from Arc::try_unwrap

The thread that recovers the unique access to Arc inner value (e.g., drop
when ref-count strong reaches zero, successful try_unwrap), ensures that
other operations on Arc inner value happened before by synchronizing
with release operations performed when decrementing the reference counter.

When try_unwrap succeeds, the current thread recovers the unique access
to Arc inner value, so release is unnecessary.

r? @Amanieu
2020-07-05 16:07:32 -07:00
Manish Goregaokar
0eadeda945
Rollup merge of #74000 - lcnr:lazy_normalisation_consts, r=varkor
add `lazy_normalization_consts` feature gate

In #71973 I underestimated the amount of code which is influenced by lazy normalization of consts
and decided against having a separate feature flag for this.

Looking a bit more into this, the following issues are already working with lazy norm in its current state #47814 #57739 #73980

I therefore think it is worth it to enable lazy norm separately. Note that `#![feature(const_generics)]` still automatically activates
this feature, so using `#![feature(const_generics, lazy_normalization_consts)]` is redundant.

r? @varkor @nikomatsakis
2020-07-05 16:07:30 -07:00
Manish Goregaokar
e450646e97
Rollup merge of #73973 - Nadrieril:fix-71977, r=matthewjasper
Use `Span`s to identify unreachable subpatterns in or-patterns

Fixes #71977
2020-07-05 16:07:28 -07:00
Manish Goregaokar
a1ac4d66d3
Rollup merge of #73937 - JohnTitor:note-exhaustive-sized-int, r=varkor
Explain exhaustive matching on {usize,isize} maximum values

The wording is taken from https://github.com/rust-lang/rfcs/blob/master/text/2591-exhaustive-integer-pattern-matching.md#reference-level-explanation.
Fixes #73919

r? @varkor
2020-07-05 16:07:27 -07:00
Manish Goregaokar
3e78eac206
Rollup merge of #73871 - da-x:private-types-2018-no-extern, r=petrochenkov
Fix try_print_visible_def_path for Rust 2018

The recursive check of `try_print_visible_def_path` did not properly handle the Rust 2018 case of crate-paths without 'extern crate'. Instead, it returned a "not found" via (false, self).

 This fixes #56175.
2020-07-05 16:07:25 -07:00
Manish Goregaokar
fed20132a6
Rollup merge of #73834 - oli-obk:safe_intrinsics, r=ecstatic-morse
Some refactoring around intrinsic type checking

So... This PR went a bit overboard. I wanted to make the `rustc_peek` intrinsic safe (cc @ecstatic-morse ), and remembered a long-standing itch of mine. So I made that huge `&str` match for the intrinsic name a match on `Symbol`s (so basically `u32`s). This is unlikely to have a positive perf effect, even if it likely has better codegen (intrinsics are used rarely, mostly once in their wrapper), so it's mostly a consistency thing since other places actually match on the symbol name of the intrinsics.
2020-07-05 16:07:23 -07:00
Manish Goregaokar
e2ae88d4a6
Rollup merge of #73787 - pickfire:rustc-attrs, r=RalfJung
Add unstable docs for rustc_attrs

r? @RalfJung
2020-07-05 16:07:21 -07:00
Manish Goregaokar
5311daa136
Rollup merge of #72688 - djugei:master, r=Amanieu
added .collect() into String from Box<str>

I have not created an rfc, because i felt like this is a very minor change.

i have just set a random feature name and rust version as stability attribute, i expect to have to change that, i just don't know what the policy on that is. all guides i could find focused on contributing to the compiler, not contributing to the standard library.

drawbacks: more code in the standard library, could be replaced with specialization: base-implementation for AsRef\<str> and specialization for String and Cow. i can write that code if ppl want it.

advantages: using "real strings" i.e. Box\<str> is as ergonomic as string slices (&str) and string buffers (String) with iterators.
2020-07-05 16:07:19 -07:00
Dan Gohman
6196eaa0b1 Fix the return type of Windows' OpenOptionsExt::security_qos_flags.
This adjusts the return type of Windows' `OpenOptionsExt::security_qos_flags`
to be consistent with the other functions in the trait.
2020-07-05 16:04:27 -07:00
Thom Chiovoloni
dc4a644980 Add 'unrolled' is_ascii_align_to benchmark, and move is_ascii benchmarks into own file 2020-07-05 15:52:13 -07:00
Tomasz Miąsko
5fa19ad2bb Remove unused RUSTC_DEBUG_ASSERTIONS
Since #73374 the rustc wrapper no longer configures debug assertions
based on RUSTC_DEBUG_ASSERTIONS environment variable.
2020-07-06 00:16:12 +02:00
Thom Chiovoloni
13e380d798 Benchmark the unaligned case for is_ascii, and add missing SAFETY 2020-07-05 14:51:05 -07:00
Thom Chiovoloni
e1d4db6055 Add benchmark for slice is_ascii using align_to 2020-07-05 14:33:27 -07:00
Eduard-Mihai Burtescu
f07100afc8 Use for<'tcx> fn pointers in Providers, instead of having Providers<'tcx>. 2020-07-05 23:00:14 +03:00
Eduard-Mihai Burtescu
f25811e34b Replace early-bound normalization hack with per-query key/value type aliases. 2020-07-05 22:58:46 +03:00
bors
2753fab7ce Auto merge of #73879 - ecstatic-morse:discr-switch-uninit, r=oli-obk
Handle inactive enum variants in `MaybeUninitializedPlaces`

Resolves the first part of #69715.

This is the equivalent of #68528 but for `MaybeUninitializedPlaces`. Because we now notify drop elaboration that inactive enum variants might be uninitialized, some drops get marked as ["open" that were previously "static"](e0e5d82e16/src/librustc_mir/transform/elaborate_drops.rs (L191)). Unlike in #69715, this isn't strictly better: An "open" drop expands to more MIR than a simple call to the drop shim. However, because drop elaboration considers each field of an "open" drop separately, it can sometimes eliminate unnecessary drops of moved-from or unit-like enum variants. This is the case for `Option::unwrap`, which is reflected in the `mir-opt` test.

cc @eddyb
r? @oli-obk
2020-07-05 18:01:47 +00:00
Kristofer Rye
2f314268b8
rustdoc: Restore underline text decoration on hover for FQN in header
This causes the components of FQN's to behave similarly to other links
in the contents of rustdoc-styled pages.

I (and I hope others at least in part) have found the prior design to be
somewhat confusing, as it is not clear (upon hovering) that the various
parts of the FQN are actually links that the user can navigate to.

In short, this patch makes links in the FQN have an underline when the
user hovers over them, more clearly indicating that they can be used for
navigation.

Signed-off-by: Kristofer Rye <kristofer.rye@gmail.com>
2020-07-05 12:25:26 -05:00
Thom Chiovoloni
63e2e2e326 Avoid vec! allocation in is_ascii_slice_* benches 2020-07-05 10:23:50 -07:00
Thom Chiovoloni
980d8e1a0b Optimize is_ascii for &str and &[u8] 2020-07-05 10:23:50 -07:00
Ralf Jung
5f5c98bd8a add (unchecked) indexing methods to raw pointers and NonNull 2020-07-05 19:15:30 +02:00
Ralf Jung
90580c7b0e make unchecked slice indexing helper methods use raw pointers 2020-07-05 19:05:55 +02:00
Ralf Jung
3b1d5e6d79 call the mut version as_mut_ptr and also add an as_ptr-like method to NonNull slices 2020-07-05 18:41:29 +02:00
Ralf Jung
c478b5473d add as_ptr method to raw slices 2020-07-05 18:41:29 +02:00
Ralf Jung
9cb1ffdd4f variant_count: avoid incorrect dummy implementation 2020-07-05 18:12:21 +02:00
Ralf Jung
319c7f77de fmt 2020-07-05 16:01:18 +02:00
Mark Rousskov
3503247c11 Shrink ParamEnv to 16 bytes 2020-07-05 09:51:42 -04:00
Mark Rousskov
8512d2efde Avoid deconstructing pointer for hashing 2020-07-05 09:51:42 -04:00
Mark Rousskov
aae1215f7f Shrink ParamEnv to 16 bytes 2020-07-05 09:51:42 -04:00
Ralf Jung
751b594cc8 const validation: add test for uninit bool 2020-07-05 13:48:06 +02:00
Ralf Jung
c3fc4f0420 catch errors more locally around read_discriminant 2020-07-05 13:40:27 +02:00
Ralf Jung
54d95ed25a catch InvalidUninitBytes during validation 2020-07-05 12:52:35 +02:00
Bastian Kauschke
016e9f8157 expected found &T -> T 2020-07-05 11:38:39 +02:00
Tomasz Miąsko
bcef848a69 Explain effects of debugging options from config.toml
Co-authored-by: Teymour Aldridge <42674621+teymour-aldridge@users.noreply.github.com>
2020-07-05 11:37:39 +02:00
Ivan Tham
bc0d619325
Fix spacing in Iterator fold doc 2020-07-05 15:23:42 +08:00
Eric Huss
310c97b6ba Fix caching issue when building tools. 2020-07-04 14:46:04 -07:00
Nadrieril
3cb31b6699 Fix #71977 2020-07-04 21:21:07 +01:00
Yuki Okushi
b93ecc1dac
Address code reviews 2020-07-05 03:43:43 +09:00
Oliver Scherer
ee8dd4e3cc Fix const prop ICE
we used to erase the local just before we tried to read it for diagnostics
2020-07-04 19:30:45 +02:00
Yuki Okushi
dcbe85abad
Explain exhaustive matching on {usize,isize} maximum values 2020-07-05 02:10:57 +09:00
Oliver Scherer
394b8cdfb7 Match on Symbol instead of &str for type-checking intrinsics. 2020-07-04 18:37:52 +02:00
Oliver Scherer
66fb778acc Make rustc_peek a safe intrinsic 2020-07-04 18:30:54 +02:00
Bastian Kauschke
f5305c3d16
nit
Co-authored-by: varkor <github@varkor.com>
2020-07-04 16:20:27 +02:00
Bastian Kauschke
dbcabc248c instantiate_opaque_types LocalDefId 2020-07-04 14:37:03 +02:00
Bastian Kauschke
20d6941be7 ConstCx to LocalDefId 2020-07-04 14:02:41 +02:00
Tomasz Miąsko
8900502a88 Remove unnecessary release from Arc::try_unwrap
The thread that recovers the unique access to Arc inner value (e.g., drop
when ref-count strong reaches zero, successful try_unwrap), ensures that
other operations on Arc inner value happened before by synchronizing
with release operations performed when decrementing the reference counter.

When try_unwrap succeeds, the current thread recovers the unique access
to Arc inner value, so release is unnecessary.
2020-07-04 11:40:27 +02:00