about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorLines
2021-01-24Rollup merge of #81297 - ↵Jonas Schievink-3/+2
bjorn3:no_extern_backend_optimization_level_query_provider, r=cjgillot Don't provide backend_optimization_level query for extern crates Fixes #71291
2021-01-24Rollup merge of #81279 - bugadani:iter, r=davidtwcoJonas Schievink-113/+129
Small refactor in typeck - `check_impl_items_against_trait` only queries and walks through associated items once - extracted function that reports errors - don't check specialization validity when trait item does not match - small additional cleanups
2021-01-24Rollup merge of #81264 - Swatinem:doctest-run-directory, r=jyn514Jonas Schievink-0/+51
Add unstable option to control doctest run directory This option will allow splitting the compile-time from the run-time directory of doctest invocations and is one step to solve https://github.com/rust-lang/cargo/issues/8993#issuecomment-760088944 r? `@jyn514`
2021-01-24Rollup merge of #81259 - est31:cfg_version, r=petrochenkovJonas Schievink-36/+138
Replace version_check dependency with own version parsing code This gives compiler maintainers a better degree of control over how the version gets parsed and is a good way to ensure that there are no changes of behaviour in the future. Also, issue a warning if the version is invalid instead of erroring so that we stay forwards compatible with possible future changes of the versioning scheme. Last, this improves the present test a little. Fixes #79436 r? `@petrochenkov`
2021-01-24Rollup merge of #80933 - rcvalle:fix-sysroot-option, r=nagisaJonas Schievink-7/+21
Fix sysroot option not being honored across rustc Change link_sanitizer_runtime() to check if the sanitizer library exists in the specified/session sysroot, and if it doesn't exist, use the default sysroot. (See #79253.)
2021-01-24Rollup merge of #80855 - m-ou-se:assert-2021, r=petrochenkovJonas Schievink-5/+30
Expand assert!(expr, args..) to include $crate for hygiene on 2021. This makes `assert!(expr, args..)` properly hygienic in Rust 2021. This is part of rust-lang/rfcs#3007, see #80162. Before edition 2021, this was a breaking change, as `std::panic` and `core::panic` are different. In edition 2021 they will be identical, making it possible to apply proper hygiene here.
2021-01-24Rollup merge of #79884 - Digital-Chaos:replace-magic, r=m-ou-seJonas Schievink-5/+15
Replace magic numbers with existing constants Replaced magic numbers in `library/core/src/time.rs` with predefined constants.
2021-01-24Rollup merge of #79174 - taiki-e:std-future, r=Mark-SimulacrumJonas Schievink-20/+2
Make std::future a re-export of core::future After 1a764a7ef59b9cb2eb31658625a6a7dacc3d819b, there are no `std::future`-specific items (except for `cfg(bootstrap)` items removed in 93eed402adbe9e7a532995500d50716d52eefee9). So, instead of defining `std` own module, we can re-export the `core::future` directly.
2021-01-24Rollup merge of #78578 - oli-obk:const_mut_refs, r=RalfJungJonas Schievink-208/+431
Permit mutable references in all const contexts fixes #71212 cc `@rust-lang/wg-const-eval` `@christianpoveda`
2021-01-24Rollup merge of #75180 - KodrAus:feat/error-by-ref, r=m-ou-seJonas Schievink-0/+21
Implement Error for &(impl Error) Opening this up just to see what it breaks. It's unfortunate that `&(impl Error)` doesn't actually implement `Error`. If this direct approach doesn't work out then I'll try something different, like an `Error::by_ref` method. **EDIT:** This is a super low-priority experiment so feel free to cancel it for more important crater runs! 🙂 ----- # Stabilization Report ## Why? We've been working for the last few years to try "fix" the `Error` trait, which is probably one of the most fundamental in the whole standard library. One of its issues is that we commonly expect you to work with abstract errors through `dyn Trait`, but references and smart pointers over `dyn Trait` don't actually implement the `Error` trait. If you have a `&dyn Error` or a `Box<dyn Error>` you simply can't pass it to a method that wants a `impl Error`. ## What does this do? This stabilizes the following trait impl: ```rust impl<'a, T: Error + ?Sized + 'static> Error for &'a T; ``` This means that `&dyn Error` will now satisfy a `impl Error` bound. It doesn't do anything with `Box<dyn Error>` directly. We discussed how we could do `Box<dyn Error>` in the thread here (and elsewhere in the past), but it seems like we need something like lattice-based specialization or a sprinkling of snowflake compiler magic to make that work. Having said that, with this new impl you _can_ now get a `impl Error` from a `Box<dyn Error>` by dereferencing it. ## What breaks? A crater run revealed a few crates broke with something like the following: ```rust // where e: &'short &'long dyn Error err.source() ``` previously we'd auto-deref that `&'short &'long dyn Error` to return a `Option<&'long dyn Error>` from `source`, but now will call directly on `&'short impl Error`, so will return a `Option<&'short dyn Error>`. The fix is to manually deref: ```rust // where e: &'short &'long dyn Error (*err).source() ``` In the recent Libs meeting we considered this acceptable breakage.
2021-01-24Only call span.rust_2021() when necessary.Mara Bos-7/+5
2021-01-24Auto merge of #81250 - sivadeilra:remove_xp_compat, r=joshtriplett,m-ou-sebors-145/+81
Remove delay-binding for Win XP and Vista The minimum supported Windows version is now Windows 7. Windows XP and Windows Vista are no longer supported; both are already broken, and require extra steps to use. This commit removes the delayed-binding support for Windows API functions that are present on all supported Windows targets. This has several benefits: Removes needless complexity. Removes a load and dynamic call on hot paths in mutex acquire / release. This may have performance benefits. * "Drop official support for Windows XP" https://github.com/rust-lang/compiler-team/issues/378 * "Firefox has ended support for Windows XP and Vista" https://support.mozilla.org/en-US/kb/end-support-windows-xp-and-vista
2021-01-24Auto merge of #80838 - nagisa:nagisa/stack-probe-type, r=cuviperbors-87/+205
Target stack-probe support configurable finely This adds capability to configure the target's stack probe support in a more precise manner than just on/off. In particular now we allow choosing between always inline-asm, always call or either one of those depending on the LLVM version. Note that this removes the ability to turn off the generation of the stack-probe attribute. This is valid to replace it with inline-asm for all targets because `probe-stack="inline-asm"` will not generate any machine code on targets that do not currently support stack probes. This makes support for stack probes on targets that don't have any right now automatic with LLVM upgrades in the future. (This is valid to do based on the fact that clang unconditionally sets this attribute when `-fstack-clash-protection` is used, AFAICT) cc #77885 r? `@cuviper`
2021-01-24Auto merge of #80919 - cjgillot:defkey-span, r=oli-obkbors-265/+305
Generate metadata by iterating on DefId instead of traversing the HIR tree 1/N Sample from #80347.
2021-01-24Auto merge of #80594 - bjorn3:abi_refactor3, r=petrochenkovbors-95/+118
Various ABI refactorings This includes changes to the rust abi and various refactorings that will hopefully make it easier to use the abi handling infrastructure of rustc in cg_clif. There are several refactorings that I haven't done. I am opening this draft PR to check that I haven't broken any non x86_64 architectures. r? `@ghost`
2021-01-24Replace version_check dependency with own version parsing codeest31-36/+138
This gives compiler maintainers a better degree of control over how the version gets parsed and is a good way to ensure that there are no changes of behaviour in the future. Also, issue a warning if the version is invalid instead of erroring so that we stay forwards compatible with possible future changes of the versioning scheme. Last, this improves the present test a little.
2021-01-24Auto merge of #79811 - Aaron1011:expn-data-disambig, r=petrochenkovbors-14/+173
Add disambiugator to ExpnData I still need to write a bunch of comments. Opening to see how bad the perf impact is. cc https://github.com/rust-lang/rust/issues/79560
2021-01-23Auto merge of #81304 - jonas-schievink:rollup-d9kuugm, r=jonas-schievinkbors-111/+433
Rollup of 15 pull requests Successful merges: - #79841 (More clear documentation for NonNull<T>) - #81072 (PlaceRef::ty: use method call syntax) - #81130 (Edit rustc_middle::dep_graph module documentation) - #81170 (Avoid hash_slice in VecDeque's Hash implementation) - #81243 (mir: Improve size_of handling when arg is unsized) - #81245 (Update cargo) - #81249 (Lower closure prototype after its body.) - #81252 (Add more self-profile info to rustc_resolve) - #81275 (Fix <unknown> queries and add more timing info to render_html) - #81281 (Inline methods of Path and OsString) - #81283 (Note library tracking issue template in tracking issue template.) - #81285 (Remove special casing of rustdoc in rustc_lint) - #81288 (rustdoc: Fix visibility of trait and impl items) - #81298 (replace RefCell with Cell in FnCtxt) - #81301 (Fix small typo) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2021-01-23Add disambiugator to ExpnDataAaron Hill-14/+173
Due to macro expansion, its possible to end up with two distinct `ExpnId`s that have the same `ExpnData` contents. This violates the contract of `HashStable`, since two unequal `ExpnId`s will end up with equal `Fingerprint`s. This commit adds a `disambiguator` field to `ExpnData`, which is used to force two otherwise-equivalent `ExpnData`s to be distinct.
2021-01-23Rollup merge of #81301 - davidgu:patch-1, r=jonas-schievinkJonas Schievink-1/+1
Fix small typo Fractional part of `12.34e56` seems to be incorrectly stated as '45' and not '34'
2021-01-23Rollup merge of #81298 - lcnr:big-money-big-prices, r=oli-obkJonas Schievink-23/+18
replace RefCell with Cell in FnCtxt small cleanup
2021-01-23Rollup merge of #81288 - camelid:fix-trait-item-vis, r=jyn514Jonas Schievink-2/+51
rustdoc: Fix visibility of trait and impl items Fixes #81274. r? `@jyn514`
2021-01-23Rollup merge of #81283 - m-ou-se:tracking-issue-note, r=Mark-SimulacrumJonas Schievink-0/+2
Note library tracking issue template in tracking issue template.
2021-01-23Rollup merge of #81281 - a1phyr:inline_path, r=dtolnayJonas Schievink-0/+103
Inline methods of Path and OsString These methods are not generic, and therefore aren't candidates for cross-crate inlining without an `#[inline]` attribute.
2021-01-23Rollup merge of #81275 - jyn514:time-render, r=wesleywiserJonas Schievink-35/+48
Fix <unknown> queries and add more timing info to render_html Closes https://github.com/rust-lang/rust/issues/81251. ## Fix `<unknown>` queries This happened because `alloc_query_strings` was never called. ## Add more timing info to render_html This still has some issues I'm not sure how to work out: - `create_renderer` and `renderer_after_krate` aren't shown by default. I want something like `verbose_generic_activity_with_arg`, but it doesn't exist. I'm also not sure how to show activities that aren't on by default - I tried `-Z self-profile -Z self-profile-args=all`, but it didn't show up. r? `@wesleywiser`
2021-01-23Rollup merge of #81252 - jyn514:resolve-timing, r=petrochenkovJonas Schievink-10/+8
Add more self-profile info to rustc_resolve The idea is to help me find out where the time is being spent in compiling the docs for `windows-rs`: https://github.com/microsoft/windows-rs/issues/420#issuecomment-764991646
2021-01-23Rollup merge of #81249 - cjgillot:issue-79537, r=oli-obkJonas Schievink-13/+86
Lower closure prototype after its body. Fixes #79537. r? `@Mark-Simulacrum`
2021-01-23Rollup merge of #81245 - ehuss:update-cargo, r=ehussJonas Schievink-0/+1
Update cargo 5 commits in a73e5b7d567c3036b296fc6b33ed52c5edcd882e..783bc43c660bf39c1e562c8c429b32078ad3099b 2021-01-12 23:45:39 +0000 to 2021-01-20 19:02:26 +0000 - Fix some issues with `cargo doc` and the new feature resolver. (rust-lang/cargo#9077) - Implement support for rust-version field in project metadata (rust-lang/cargo#8037) - Fix a bug in Cargo's cyclic dep graph detection (rust-lang/cargo#9075) - Typo correction: artifcats -&gt; artifacts (rust-lang/cargo#9081) - Remove stray backtick from doc (rust-lang/cargo#9079)
2021-01-23Rollup merge of #81243 - osa1:fix_80742_2, r=RalfJungJonas Schievink-3/+35
mir: Improve size_of handling when arg is unsized As discussed on Zulip with `@RalfJung.`
2021-01-23Rollup merge of #81170 - xfix:vecdeque-bug-fix, r=sfacklerJonas Schievink-3/+47
Avoid hash_slice in VecDeque's Hash implementation Fixes #80303.
2021-01-23Rollup merge of #81130 - pierwill:edit-depnode, r=jyn514Jonas Schievink-7/+10
Edit rustc_middle::dep_graph module documentation This is similar to work approved and then closed in https://github.com/rust-lang/rust/pull/80325 due to a bad rebase.
2021-01-23Rollup merge of #81072 - RalfJung:place-ref-ty, r=oli-obkJonas Schievink-8/+10
PlaceRef::ty: use method call syntax
2021-01-23Rollup merge of #79841 - fintelia:patch-6, r=kennytmJonas Schievink-6/+13
More clear documentation for NonNull<T> Rephrase and hopefully clarify the discussion of covariance in `NonNull<T>` documentation. I'm very much not an expert so someone should definitely double check the correctness of what I'm saying. At the same time, the new language makes more sense to me, so hopefully it also is more logical to others whose knowledge of covariance basically begins and ends with the [Rustonomicon chapter](https://doc.rust-lang.org/nomicon/subtyping.html). Related to #48929.
2021-01-23Add option to control doctest run directoryArpad Borsos-0/+51
This option will allow splitting the compile-time from the run-time directory of doctest invocations and is one step to solve https://github.com/rust-lang/cargo/issues/8993#issuecomment-760088944
2021-01-23Fix small typoDavid-1/+1
2021-01-23Fix review commentsbjorn3-7/+6
2021-01-23Calculate self-profile strings in `Compiler::enter` instead in codegenJoshua Nelson-16/+16
This avoids each tool having to separately find and call `self_profile_alloc_strings`. - Don't compute the global context if it hasn't yet been computed This avoids giving extraneous errors about unresolved names if an error occurs during parsing.
2021-01-23Add more timing info to render_htmlJoshua Nelson-13/+31
- Show `create_renderer` and `renderer_after_crate` by default - Don't rewrite `extra_verbose_generic_activity`
2021-01-23Auto merge of #80579 - RalfJung:no-fallible-promotion, r=oli-obkbors-333/+331
avoid promoting division, modulo and indexing operations that could fail For division, `x / y` will still be promoted if `y` is a non-zero integer literal; however, `1/(1+1)` will not be promoted any more. While at it, also see if we can reject promoting floating-point arithmetic (which are [complicated](https://github.com/rust-lang/unsafe-code-guidelines/issues/237) so maybe we should not promote them). This will need a crater run to see if there's code out there that relies on these things being promoted. If we can land this, promoteds in `fn`/`const fn` cannot fail to evaluate any more, which should let us do some simplifications in codegen/Miri! Cc https://github.com/rust-lang/rfcs/pull/3027 Fixes https://github.com/rust-lang/rust/issues/61821 r? `@oli-obk`
2021-01-23Allow to query the HIR crate node.Camille GILLOT-5/+4
2021-01-23Fix proc macro crate encoding.Camille GILLOT-2/+9
2021-01-23Filter stability.Camille GILLOT-3/+40
2021-01-23Iterate on deprecation.Camille GILLOT-10/+1
2021-01-23Iterate on const_stability.Camille GILLOT-4/+1
2021-01-23Iterate on stability.Camille GILLOT-14/+2
2021-01-23Iterate DefId to encode expn_that_defined.Camille GILLOT-4/+1
2021-01-23Iterate DefId to encode attributes.Camille GILLOT-17/+4
2021-01-23Iterate DefId to encode visibility.Camille GILLOT-10/+38
2021-01-23Iterate to encode def_kind.Camille GILLOT-72/+57
2021-01-23Iterate DefId to encode spans.Camille GILLOT-21/+25