about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorLines
2020-07-22sess: disable polymorphisationDavid Wood-35/+46
This commit disables polymorphisation to resolve regressions related to closures which inherit unused generic parameters and are then used in casts or reflection. Signed-off-by: David Wood <david@davidtw.co>
2020-07-22mir: improve polymorphic constant bugDavid Wood-2/+3
This commit changes the span and content of the "collection encountered polymorphic constant" bug in monomorphization collection to point to the use of the constant rather than the definition. Signed-off-by: David Wood <david@davidtw.co>
2020-07-22Auto merge of #74578 - ehuss:fix-rust-src, r=Mark-Simulacrumbors-1/+1
Fix rust-src component. The rust-src component could not be installed by rustup because it included some symbolic links. #74520 added the backtrace directory which included some symlinks. Since the rust-src component doesn't need most of the files in the `backtrace` submodule, this changes it to only include the minimum necessary. Tested with cargo's build-std that it can build from the resulting tarball. Fixes #74577
2020-07-21Auto merge of #74565 - pietroalbini:build-on-gha, r=Mark-Simulacrumbors-31/+78
Upload builds from GHA instead of Azure Pipelines This PR does two things: * Enables RLA comments on PRs (needed after the switch to GHA in RLA). * Switches GitHub Actions as the CI authorized to upload non-macOS builds. Note that Docker/LLVM caches will likely be busted. r? @Mark-Simulacrum
2020-07-21Auto merge of #74075 - sunfishcode:wasi-prelude-rawfd, r=alexcrichtonbors-1/+1
Add `RawFd` to WASI's `std::os::wasi::prelude`. Add `RawFd` to WASI's `std::os::wasi::prelude`, making it consistent with all other platforms which also have `AsRawFd`, `FromRawFd`, and `IntoRawFd` in their respective preludes.
2020-07-21Auto merge of #69749 - davidtwco:issue-46477-polymorphization, r=eddybbors-191/+2034
Polymorphization This PR implements an analysis to detect when functions could remain polymorphic during code generation. Fixes #46477 r? @eddyb cc @rust-lang/wg-mir-opt @nikomatsakis @pnkfelix
2020-07-20Fix rust-src component.Eric Huss-1/+1
2020-07-20Auto merge of #74569 - Manishearth:rollup-hkn5ex9, r=Manishearthbors-80/+304
Rollup of 13 pull requests Successful merges: - #72714 (Fix debug assertion in typeck) - #73197 (Impl Default for ranges) - #73323 (wf: check foreign fn decls for well-formedness) - #74051 (disallow non-static lifetimes in const generics) - #74376 (test caching opt_const_param_of on disc) - #74501 (Ayu theme: Use different background color for Run button) - #74505 (Fix search input focus in ayu theme) - #74522 (Update sanitizer docs) - #74546 (Fix duplicate maybe_uninit_extra attribute) - #74552 (Stabilize TAU constant.) - #74555 (Improve "important traits" popup display on mobile) - #74557 (Fix an ICE on an invalid `binding @ ...` in a tuple struct pattern) - #74561 (update backtrace-rs) Failed merges: r? @ghost
2020-07-20Rollup merge of #74561 - RalfJung:backtrace, r=alexcrichtonManish Goregaokar-0/+0
update backtrace-rs Hopefully fixes https://github.com/rust-lang/rust/issues/74484 r? @alexcrichton
2020-07-20Rollup merge of #74557 - jakubadamw:issue-74539, r=nagisaManish Goregaokar-1/+40
Fix an ICE on an invalid `binding @ ...` in a tuple struct pattern Fixes #74539.
2020-07-20Rollup merge of #74555 - GuillaumeGomez:important-traits-popup, r=ManishearthManish Goregaokar-0/+5
Improve "important traits" popup display on mobile I implemented what @XAMPPRocky suggested in the [internals thread topic](https://internals.rust-lang.org/t/feedback-on-important-traits-rustdoc-feature/12752/18). I can confirm it works nicely. r? @Manishearth @Manishearth: By the way: I realized that when you click on the "i", you have to click again to make the popup disappear. Do you want me to extend the popup removal to any click outside the popup?
2020-07-20Rollup merge of #74552 - fusion-engineering-forks:stabilize-tau, r=dtolnayManish Goregaokar-2/+2
Stabilize TAU constant. Closes #66770.
2020-07-20Rollup merge of #74546 - jethrogb:jb/duplicate-attribute-maybe_uninit_extra, ↵Manish Goregaokar-4/+1
r=kennytm Fix duplicate maybe_uninit_extra attribute Introduced in #72414
2020-07-20Rollup merge of #74522 - tmiasko:sanitizer-docs, r=nikomatsakisManish Goregaokar-4/+3
Update sanitizer docs * Document AddressSanitizer memory leak detection defaults. * Remove CC & CFLAGS from MemorySanitizer example - they are now unnecessary for pure Rust projects (backtrace-rs moved away from libbacktrace).
2020-07-20Rollup merge of #74505 - Cldfire:fix-search-focus, r=GuillaumeGomezManish Goregaokar-10/+0
Fix search input focus in ayu theme Closes #74496. Before: ![image](https://user-images.githubusercontent.com/13814214/87868463-d0c8fe80-c963-11ea-9003-aa578d869e98.png) After: ![image](https://user-images.githubusercontent.com/13814214/87868467-dc1c2a00-c963-11ea-89a8-1280f68ff9df.png)
2020-07-20Rollup merge of #74501 - lzutao:css_run_border, r=GuillaumeGomezManish Goregaokar-3/+3
Ayu theme: Use different background color for Run button Make it clearer that there is a button Run there. Demo in https://github.com/rust-lang/rust/pull/74501#issuecomment-660597377 .
2020-07-20Rollup merge of #74376 - lcnr:type-dependent-path-cleanup, r=eddybManish Goregaokar-1/+5
test caching opt_const_param_of on disc Followup to #74113, implements parts of #74360 Tried caching `opt_const_param_of` on disk and adding an early exit if `tcx.dep_kind(def_id) != DefKind::AnonConst`. Ended up causing a perf regression instead, so we just remove the FIXME and a short note to `opt_const_param_of`. r? @eddyb
2020-07-20Rollup merge of #74051 - yodaldevoid:issue_60814, r=nikomatsakisManish Goregaokar-0/+109
disallow non-static lifetimes in const generics Disallow non-static lifetimes in const generics in order to to patch over an ICE caused when we encounter a non-static lifetime in a const generic during borrow checking. This restriction may be relaxed in the future, but we need more discussion before then, and in the meantime we should still deal with this ICE. Fixes issue #60814
2020-07-20Rollup merge of #73323 - davidtwco:issue-73252-wfcheck-foreign-fn-decl, ↵Manish Goregaokar-52/+97
r=ecstatic-morse wf: check foreign fn decls for well-formedness Fixes #73252 and fixes #73253. This PR extends current well-formedness checking to apply to foreign function declarations, re-using the existing machinery for regular functions. In doing this, later parts of the compiler (such as the `improper_ctypes` lint) can rely on being operations not failing as a result of invalid code which would normally be caught earlier.
2020-07-20Rollup merge of #73197 - c410-f3r:ranges, r=dtolnayManish Goregaokar-2/+2
Impl Default for ranges Couldn't find an issue about it. `Range` and friends probably can implement `Default` if `Idx: Default`. For example, the following would be possible: ```rust #[derive(Default)] struct Foo(core::ops::RangeToInclusive<u64>); let _ = [1, 2, 3].get(core::ops::Range::default()); core::ops::RangeFrom::<u8>::default().take(20).for_each(|x| { dbg!(x); }); fn stuff<T: Default>() { let instance = T::default(); ... more stuff } stuff::<core::ops::RangeTo<f32>>(); ``` Maybe there are some concerns about safety or misunderstandings?
2020-07-20Rollup merge of #72714 - JohnTitor:debug-assert, r=nikomatsakisManish Goregaokar-1/+37
Fix debug assertion in typeck Fixes #72410
2020-07-20index: introduce and use `FiniteBitSet`David Wood-73/+211
This commit introduces a `FiniteBitSet` type which replaces the manual bit manipulation which was being performed in polymorphization. Signed-off-by: David Wood <david@davidtw.co>
2020-07-20mir: use attribute over `-Z polymorphize-errors`David Wood-76/+125
This commit replaces the `-Z polymorphize-errors` debugging flag with a `#[rustc_polymorphize_error]` attribute for use on functions. Signed-off-by: David Wood <david@davidtw.co>
2020-07-20metadata: record `unused_generic_params`David Wood-0/+14
This commit records the results of `unused_generic_params` in crate metadata, hopefully improving performance. Signed-off-by: David Wood <david@davidtw.co>
2020-07-20ty: normalize fn sigs before substDavid Wood-17/+51
This commit normalizes function signatures for instances before substituting, a workaround for polymorphization considering parameters unused when they show up in the signature, but not the body (due to being normalized). Unfortunately, this causes test output to change with the parallel compiler only. Signed-off-by: David Wood <david@davidtw.co>
2020-07-20mir: `unused_generic_params` queryDavid Wood-84/+1627
This commit implements the `unused_generic_params` query, an initial version of polymorphization which detects when an item does not use generic parameters and is being needlessly monomorphized as a result. Signed-off-by: David Wood <david@davidtw.co>
2020-07-20Fix an ICE on an invalid `binding @ ...` in a tuple struct patternJakub Adam Wieczorek-1/+40
2020-07-20ci: upload non-macOS from GHA instead of Azure PipelinesPietro Albini-31/+49
2020-07-20ci: allow RLA to pick the right PR numberPietro Albini-0/+29
2020-07-20update backtrace-rsRalf Jung-0/+0
2020-07-20Auto merge of #74550 - matklad:rust-analyzer-2020-07-20, r=matkladbors-18/+15
:arrow_up: rust-analyzer r? @ghost
2020-07-20Improve "important traits" popup display on mobileGuillaume Gomez-0/+5
2020-07-20Stabilize TAU constant.Mara Bos-2/+2
Closes #66770.
2020-07-20:arrow_up: rust-analyzerAleksey Kladov-18/+15
2020-07-20Fix duplicate maybe_uninit_extra attributeJethro Beekman-4/+1
2020-07-20shim: adjust valid shim assertsDavid Wood-40/+26
This commit makes valid shim asserts more specific - checking for the specific types that are valid for a given type of shim - and removes asserts for types which require substitutions. Signed-off-by: David Wood <david@davidtw.co>
2020-07-20debuginfo: add type metadata for paramsDavid Wood-2/+21
This commit adds type metadata for generic parameters (that arise from polymorphization). Generic parameter metadata is considered zero-sized and named after the generic parameter. Signed-off-by: David Wood <david@davidtw.co>
2020-07-20debuginfo: no type metadata if substs reqdDavid Wood-2/+4
This commit skips generating debuginfo type metadata if substitutions are required by the type. This avoids ICEs that result from layouts of types with substitutions being computed. Signed-off-by: David Wood <david@davidtw.co>
2020-07-20ty: add doc comments to `Generics` methodsDavid Wood-1/+3
This commit adds doc comments to the `param_at`, `region_param` and `const_param` methods on the `Generics` struct. Signed-off-by: David Wood <david@davidtw.co>
2020-07-20trait_sel: only test predicates w/ no substsDavid Wood-20/+20
This commit modifies the `substitute_normalize_and_test_predicates` query, renaming it to `impossible_predicates` and only checking predicates which do not require substs. By making this change, polymorphization doesn't have to explicitly support vtables. Signed-off-by: David Wood <david@davidtw.co>
2020-07-20ty: `STILL_FURTHER_SPECIALIZABLE` w/out prnt substDavid Wood-8/+66
This commit modifies the `STILL_FURTHER_SPECIALIZABLE` flag so that the flag isn't set by the parent substs of closures or generators. Signed-off-by: David Wood <david@davidtw.co>
2020-07-20mir: rename `should_monomorphize_locally`David Wood-13/+12
This commit renames `should_monomorphize_locally` to `should_codegen_locally` which better describes what the function determines once polymorphization is added. Signed-off-by: David Wood <david@davidtw.co>
2020-07-20mir: avoid double substitutionDavid Wood-2/+1
This commit avoids a natural, free-range double substitution error by monomorphizing the projection element before getting the type. Signed-off-by: David Wood <david@davidtw.co>
2020-07-20Auto merge of #74010 - pierwill:pierwill-o-notation, r=GuillaumeGomezbors-51/+51
Use italics for O notation In documentation, I think it makes sense to italicize O notation (*O(n)*) as opposed to using back-ticks (`O(n)`). Visually, back-ticks focus the reader on the literal characters being used, making them ideal for representing code. Using italics, as far I can tell, more closely follows typographic conventions in mathematics and computer science. Just a suggestion, of course! 😇
2020-07-20wf: check foreign fn decls for well-formednessDavid Wood-52/+97
This commit extends current well-formedness checking to apply to foreign function declarations, re-using the existing machinery for regular functions. In doing this, later parts of the compiler (such as the `improper_ctypes` lint) can rely on being operations not failing as a result of invalid code which would normally be caught earlier. Signed-off-by: David Wood <david@davidtw.co>
2020-07-20Auto merge of #74540 - alexcrichton:std-no-backtrace, r=Mark-Simulacrumbors-2/+1
std: Fix compilation without backtrace feature This should hopefully handle #74484 but in any case fixes compilation of the standard library without the `backtrace` feature. The need for this feature is somewhat unclear now because the `backtrace` crate should always compile (no more C code!) but we can handle that later if necessary.
2020-07-19Use italics for O notationpierwill-51/+51
Co-authored-by: Guillaume Gomez <guillaume1.gomez@gmail.com>
2020-07-20Auto merge of #74543 - Manishearth:rollup-m5w6hyg, r=Manishearthbors-19/+90
Rollup of 9 pull requests Successful merges: - #73618 (Documentation for the false keyword) - #74486 (Improve Read::read_exact documentation) - #74514 (Do not clobber RUSTDOCFLAGS) - #74516 (do not try fetching the ancestors of errored trait impls) - #74520 (include backtrace folder in rust-src component) - #74523 (Improve documentation for `core::fmt` internals) - #74527 (Add myself to toolstate change notifications for rustfmt) - #74534 (Only skip impls of foreign unstable traits) - #74536 (fix documentation surrounding the `in` and `for` keywords) Failed merges: r? @ghost
2020-07-19Rollup merge of #74536 - Nicholas-Baron:master, r=joshtriplettManish Goregaokar-4/+4
fix documentation surrounding the `in` and `for` keywords Addresses #74529 The `in` keyword incorrectly referenced the `Iterator` trait. This reference was changed to `IntoIterator` without changing the underlying link. Additionally, the `IntoIterator` trait was referenced towards the end of the documentation for `for`. An additional reference was added earlier and broadened the existing documentation from any iterator to anything that can be turned into an iterator.
2020-07-19Rollup merge of #74534 - Mark-Simulacrum:rustdoc-stability, r=ManishearthManish Goregaokar-3/+42
Only skip impls of foreign unstable traits Previously unstable impls were skipped, which meant that any impl with an unstable method would get skipped. Fixes #74531.