-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rollup of 15 pull requests #73913
Rollup of 15 pull requests #73913
Commits on Jun 18, 2020
-
This allows us to write fn char_to_string() -> String { 'a'.into() } which was not possible before.
Configuration menu - View commit details
-
Copy full SHA for 1d0378c - Browse repository at this point
Copy the full SHA 1d0378cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 2cde493 - Browse repository at this point
Copy the full SHA 2cde493View commit details
Commits on Jun 23, 2020
-
Fixed grammar and sentence structure on appropriate instances.
Configuration menu - View commit details
-
Copy full SHA for 886f81e - Browse repository at this point
Copy the full SHA 886f81eView commit details
Commits on Jun 24, 2020
-
Update Box::from_raw example to generalize better
I know very little about rust, so I saw this example and tried to generalize it by writing, ``` let layout = Layout::new::<T>(); let new_obj = unsafe { let ptr = alloc(layout) as *mut T; *ptr = obj; Box::from_raw(ptr) }; ``` for some more complicated `T`, which ended up crashing with SIGSEGV, because it tried to `drop_in_place` the previous object in `ptr` which is of course garbage. I also added a comment that explains why `.write` is used, but I think adding that comment is optional and may be too verbose here. I do however think that changing this example is a good idea to suggest the correct generalization. `.write` is also used in most of the rest of the documentation here, even if the example is `i32`, so it would additionally be more consistent.
Configuration menu - View commit details
-
Copy full SHA for 0c88dd6 - Browse repository at this point
Copy the full SHA 0c88dd6View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3b5d7f8 - Browse repository at this point
Copy the full SHA 3b5d7f8View commit details -
Configuration menu - View commit details
-
Copy full SHA for d6cf8fc - Browse repository at this point
Copy the full SHA d6cf8fcView commit details
Commits on Jun 25, 2020
-
Configuration menu - View commit details
-
Copy full SHA for 2bbc2b3 - Browse repository at this point
Copy the full SHA 2bbc2b3View commit details -
Co-authored-by: Niko Matsakis <niko@alum.mit.edu>
Configuration menu - View commit details
-
Copy full SHA for 22fc18f - Browse repository at this point
Copy the full SHA 22fc18fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 8edcc6d - Browse repository at this point
Copy the full SHA 8edcc6dView commit details -
Linked the logo/svg to https://www.rust-lang.org/ (change if required)
Configuration menu - View commit details
-
Copy full SHA for 3a1ac28 - Browse repository at this point
Copy the full SHA 3a1ac28View commit details -
Added responsiveness to image logo based on device width (set at 90% of device width, which can be changed as per requirement)
Configuration menu - View commit details
-
Copy full SHA for 4c33b7c - Browse repository at this point
Copy the full SHA 4c33b7cView commit details
Commits on Jun 26, 2020
-
Configuration menu - View commit details
-
Copy full SHA for 00ef461 - Browse repository at this point
Copy the full SHA 00ef461View commit details -
Configuration menu - View commit details
-
Copy full SHA for b71a3e1 - Browse repository at this point
Copy the full SHA b71a3e1View commit details -
Configuration menu - View commit details
-
Copy full SHA for 15e81be - Browse repository at this point
Copy the full SHA 15e81beView commit details -
Configuration menu - View commit details
-
Copy full SHA for cf398a3 - Browse repository at this point
Copy the full SHA cf398a3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 224bc05 - Browse repository at this point
Copy the full SHA 224bc05View commit details -
Make
likely
andunlikely
constThey are gated by internal feature gate const_likely
Configuration menu - View commit details
-
Copy full SHA for fc239e8 - Browse repository at this point
Copy the full SHA fc239e8View commit details -
Configuration menu - View commit details
-
Copy full SHA for 779b05d - Browse repository at this point
Copy the full SHA 779b05dView commit details
Commits on Jun 27, 2020
-
Configuration menu - View commit details
-
Copy full SHA for 0d0865f - Browse repository at this point
Copy the full SHA 0d0865fView commit details -
Recover extra trailing angle brackets in struct definition
This commit applies the existing 'extra angle bracket recovery' logic when parsing fields in struct definitions. This allows us to continue parsing the struct's fields, avoiding spurious 'missing field' errors in code that tries to use the struct.
Configuration menu - View commit details
-
Copy full SHA for 765bd47 - Browse repository at this point
Copy the full SHA 765bd47View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3fc5593 - Browse repository at this point
Copy the full SHA 3fc5593View commit details -
Update src/librustc_mir/interpret/intrinsics.rs
Co-authored-by: Oliver Scherer <github35764891676564198441@oli-obk.de>
Configuration menu - View commit details
-
Copy full SHA for 8b43012 - Browse repository at this point
Copy the full SHA 8b43012View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7055c23 - Browse repository at this point
Copy the full SHA 7055c23View commit details
Commits on Jun 28, 2020
-
Configuration menu - View commit details
-
Copy full SHA for 7231e57 - Browse repository at this point
Copy the full SHA 7231e57View commit details -
Configuration menu - View commit details
-
Copy full SHA for e611a3f - Browse repository at this point
Copy the full SHA e611a3fView commit details -
Configuration menu - View commit details
-
Copy full SHA for dfd454b - Browse repository at this point
Copy the full SHA dfd454bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 824b2bb - Browse repository at this point
Copy the full SHA 824b2bbView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4224313 - Browse repository at this point
Copy the full SHA 4224313View commit details
Commits on Jun 30, 2020
-
Configuration menu - View commit details
-
Copy full SHA for 1d7ba5f - Browse repository at this point
Copy the full SHA 1d7ba5fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 71b45b9 - Browse repository at this point
Copy the full SHA 71b45b9View commit details -
Configuration menu - View commit details
-
Copy full SHA for f632bd1 - Browse repository at this point
Copy the full SHA f632bd1View commit details -
Configuration menu - View commit details
-
Copy full SHA for 69e4990 - Browse repository at this point
Copy the full SHA 69e4990View commit details -
Configuration menu - View commit details
-
Copy full SHA for f3645ca - Browse repository at this point
Copy the full SHA f3645caView commit details
Commits on Jul 1, 2020
-
Does not yet make its constness stable, though. Use of `Location::caller` in const contexts is still gated by `#![feature(const_caller_location)]`.
Configuration menu - View commit details
-
Copy full SHA for f07d10d - Browse repository at this point
Copy the full SHA f07d10dView commit details -
Rollup merge of rust-lang#72445 - anp:stabilize-track-caller, r=oli-obk
Stabilize `#[track_caller]`. # Stabilization Report RFC: [2091] Tracking issue: rust-lang#47809 ## Summary From the [rustc-dev-guide chapter][dev-guide]: > Take this example program: ```rust fn main() { let foo: Option<()> = None; foo.unwrap(); // this should produce a useful panic message! } ``` > Prior to Rust 1.42, panics like this `unwrap()` printed a location in libcore: ``` $ rustc +1.41.0 example.rs; example.exe thread 'main' panicked at 'called `Option::unwrap()` on a `None` value',...core\macros\mod.rs:15:40 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace. ``` > As of 1.42, we get a much more helpful message: ``` $ rustc +1.42.0 example.rs; example.exe thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', example.rs:3:5 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace ``` > These error messages are achieved through a combination of changes to `panic!` internals to make use of `core::panic::Location::caller` and a number of `#[track_caller]` annotations in the standard library which propagate caller information. The attribute adds an implicit caller location argument to the ABI of annotated functions, but does not affect the type or MIR of the function. We implement the feature entirely in codegen and in the const evaluator. ## Bottom Line This PR stabilizes the use of `#[track_caller]` everywhere, including traits and extern blocks. It also stabilizes `core::panic::Location::caller`, although the use of that function in a const context remains gated by `#![feature(const_caller_location)]`. The implementation for the feature already changed the output of panic messages for a number of std functions, as described in the [1.42 release announcement]. The attribute's use in `Index` and `IndexMut` traits is visible to users since 1.44. ## Tests All of the tests for this feature live under [src/test/ui/rfc-2091-track-caller][tests] in the repo. Noteworthy cases: * [use of attr in std] * validates user-facing benefit of the feature * [trait attribute inheritance] * covers subtle behavior designed during implementation and not RFC'd * [const/codegen equivalence] * this was the result of a suspected edge case and investigation * [diverging function support] * covers an unresolved question from the RFC * [fn pointers and shims] * covers important potential sources of unsoundness ## Documentation The rustc-dev-guide now has a chapter on [Implicit Caller Location][dev-guide]. I have an [open PR to the reference][attr-reference-pr] documenting the attribute. The intrinsic's [wrapper] includes some examples as well. ## Implementation History * 2019-10-02: [`#[track_caller]` feature gate (RFC 2091 1/N) rust-lang#65037](rust-lang#65037) * Picked up the patch that @ayosec had started on the feature gate. * 2019-10-13: [Add `Instance::resolve_for_fn_ptr` (RFC 2091 rust-lang#2/N) rust-lang#65182](rust-lang#65182) * 2019-10-20: ~~[WIP Add MIR argument for #[track_caller] (RFC 2091 3/N) rust-lang#65258](rust-lang#65258 * Abandoned approach to send location as a MIR argument. * 2019-10-28: [`std::panic::Location` is a lang_item, add `core::intrinsics::caller_location` (RFC 2091 3/N) rust-lang#65664](rust-lang#65664) * 2019-12-07: [Implement #[track_caller] attribute. (RFC 2091 4/N) rust-lang#65881](rust-lang#65881) * 2020-01-04: [libstd uses `core::panic::Location` where possible. rust-lang#67137](rust-lang#67137) * 2020-01-08: [`Option::{expect,unwrap}` and `Result::{expect, expect_err, unwrap, unwrap_err}` have `#[track_caller]` rust-lang#67887](rust-lang#67887) * 2020-01-20: [Fix #[track_caller] and function pointers rust-lang#68302](rust-lang#68302) (fixed rust-lang#68178) * 2020-03-23: [#[track_caller] in traits rust-lang#69251](rust-lang#69251) * 2020-03-24: [#[track_caller] on core::ops::{Index, IndexMut}. rust-lang#70234](rust-lang#70234) * 2020-04-08 [Support `#[track_caller]` on functions in `extern "Rust" { ... }` rust-lang#70916](rust-lang#70916) ## Unresolveds ### From the RFC > Currently the RFC simply prohibit applying #[track_caller] to trait methods as a future-proofing > measure. **Resolved.** See the dev-guide documentation and the tests section above. > Diverging functions should be supported. **Resolved.** See the tests section above. > The closure foo::{{closure}} should inherit most attributes applied to the function foo, ... **Resolved.** This unknown was related to specifics of the implementation which were made irrelevant by the final implementation. ### Binary Size I [instrumented track_caller to use custom sections][measure-size] in a local build and discovered relatively minor binary size usage for the feature overall. I'm leaving the issue open to discuss whether we want to upstream custom section support. There's an [open issue to discuss mitigation strategies][mitigate-size]. Some decisions remain about the "right" strategies to reduce size without overly constraining the compiler implementation. I'd be excited to see someone carry that work forward but my opinion is that we shouldn't block stabilization on implementing compiler flags for redaction. ### Specialization There's an [open issue][specialization] on the semantics of the attribute in specialization chains. I'm inclined to move forward with stabilization without an exact resolution here given that specialization is itself unstable, but I also think it should be an easy question to resolve. ### Location only points to the start of a call span rust-lang#69977 was resolved by rust-lang#73182, and the next step should probably be to [extend `Location` with a notion of the end of a call](rust-lang#73554). ### Regression of std's panic messages rust-lang#70963 should be resolved by serializing span hygeine to crate metadata: rust-lang#68686. [2091]: https://github.com/rust-lang/rfcs/blob/master/text/2091-inline-semantic.md [dev-guide]: https://rustc-dev-guide.rust-lang.org/codegen/implicit-caller-location.html [specialization]: rust-lang#70293 [measure-size]: rust-lang#70579 [mitigate-size]: rust-lang#70580 [attr-reference-pr]: rust-lang/reference#742 [wrapper]: https://doc.rust-lang.org/nightly/core/panic/struct.Location.html#method.caller [tests]: https://github.com/rust-lang/rust/tree/master/src/test/ui/rfc-2091-track-caller [const/codegen equivalence]: https://github.com/rust-lang/rust/blob/master/src/test/ui/rfc-2091-track-caller/caller-location-fnptr-rt-ctfe-equiv.rs [diverging function support]: https://github.com/rust-lang/rust/blob/master/src/test/ui/rfc-2091-track-caller/diverging-caller-location.rs [use of attr in std]: https://github.com/rust-lang/rust/blob/master/src/test/ui/rfc-2091-track-caller/std-panic-locations.rs [fn pointers and shims]: https://github.com/rust-lang/rust/blob/master/src/test/ui/rfc-2091-track-caller/tracked-fn-ptr-with-arg.rs [trait attribute inheritance]: https://github.com/rust-lang/rust/blob/master/src/test/ui/rfc-2091-track-caller/tracked-trait-impls.rs [1.42 release announcement]: https://blog.rust-lang.org/2020/03/12/Rust-1.42.html#useful-line-numbers-in-option-and-result-panic-messages
Configuration menu - View commit details
-
Copy full SHA for b8eabed - Browse repository at this point
Copy the full SHA b8eabedView commit details -
Rollup merge of rust-lang#73466 - matthiaskrgr:char_into_string, r=dt…
…olnay impl From<char> for String This allows us to write ````rust fn char_to_string() -> String { 'a'.into() } ```` which was not possible before.
Configuration menu - View commit details
-
Copy full SHA for 6ef6fa6 - Browse repository at this point
Copy the full SHA 6ef6fa6View commit details -
Rollup merge of rust-lang#73548 - tshepang:fix-rustdoc-warnings, r=ec…
…static-morse remove rustdoc warnings
Configuration menu - View commit details
-
Copy full SHA for 86cc964 - Browse repository at this point
Copy the full SHA 86cc964View commit details -
Rollup merge of rust-lang#73649 - Anirban166:patch-1, r=steveklabnik
Fix sentence structure Fixed grammar and sentence structure on appropriate instances.
Configuration menu - View commit details
-
Copy full SHA for 9b61081 - Browse repository at this point
Copy the full SHA 9b61081View commit details -
Rollup merge of rust-lang#73678 - Keno:patch-1, r=LukasKalbertodt
Update Box::from_raw example to generalize better I know very little about rust, so I saw the example here ``` use std::alloc::{alloc, Layout}; unsafe { let ptr = alloc(Layout::new::<i32>()) as *mut i32; *ptr = 5; let x = Box::from_raw(ptr); } ``` and tried to generalize it by writing, ``` let layout = Layout::new::<T>(); let new_obj = unsafe { let ptr = alloc(layout) as *mut T; *ptr = obj; Box::from_raw(ptr) }; ``` for some more complicated `T`, which ended up crashing with SIGSEGV, because it tried to `drop_in_place` the previous object in `ptr` which is of course garbage. I think that changing this example to use `.write` instead would be a good idea to suggest the correct generalization. It is also more consistent with other documentation items in this file, which use `.write`. I also added a comment to explain it, but I'm not too attached to that, and can see it being too verbose in this place.
Configuration menu - View commit details
-
Copy full SHA for 4be8326 - Browse repository at this point
Copy the full SHA 4be8326View commit details -
Rollup merge of rust-lang#73705 - lcnr:skip_binder, r=nikomatsakis
stop taking references in Relate Adds a `Copy` bound to `Relate` and changes the type signatures to `T` from `&T`. While the `Copy` bound is not strictly necessary (i.e. the `Clone` bound of `TypeRelation` would be good enough), we don't need non `Copy` types and it simplifies the implementation. Removes the afaict unused impls for `Vec<ty::PolyExistentialProjection<'tcx>>`, `Rc<T>` and `Box<T>`. If they end up being relevant again the bound of `Relate` can be reduced to `T: Clone`. This also changes signature of `Binder::skip_binder` to `fn skip_binder(self) -> T`. `TypeError::ProjectionBoundsLength` was never used and is also removed in this PR. r? @nikomatsakis maybe 🤔 feel free to reassign
Configuration menu - View commit details
-
Copy full SHA for 05d9a21 - Browse repository at this point
Copy the full SHA 05d9a21View commit details -
Rollup merge of rust-lang#73716 - poliorcetics:static-keyword, r=Luka…
…sKalbertodt Document the static keyword Partial fix of rust-lang#34601. This documents the `static` keyword. It's basically a simplified version of the reference with more examples. @rustbot modify labels: T-doc,C-enhancement
Configuration menu - View commit details
-
Copy full SHA for ac96594 - Browse repository at this point
Copy the full SHA ac96594View commit details -
Rollup merge of rust-lang#73752 - TyPR124:invalid-parameter-error, r=…
…LukasKalbertodt Remap Windows ERROR_INVALID_PARAMETER to ErrorKind::InvalidInput from Other I don't know if this is acceptable or how likely it is to break existing code, but it seem to me ERROR_INVALID_PARAMETER "The parameter is incorrect" should map to ErrorKind::InvalidInput "A parameter was incorrect". Previously this value fell through to ErrorKind::Other. I can't speak for anyone but myself, but I instinctively thought it would be InvalidInput.
Configuration menu - View commit details
-
Copy full SHA for 2ef0272 - Browse repository at this point
Copy the full SHA 2ef0272View commit details -
Rollup merge of rust-lang#73776 - aszenz:refactor_mir_module, r=wesle…
…ywiser Move terminator to new module Moves terminator types from `librustc_middle/mir/mod.rs` into submodule Fixes rust-lang#73723
Configuration menu - View commit details
-
Copy full SHA for 978953e - Browse repository at this point
Copy the full SHA 978953eView commit details -
Rollup merge of rust-lang#73778 - nbdd0121:const_likely, r=oli-obk
Configuration menu - View commit details
-
Copy full SHA for da5f510 - Browse repository at this point
Copy the full SHA da5f510View commit details -
Rollup merge of rust-lang#73803 - Aaron1011:feature/angle-field-recov…
…ery, r=matthewjasper Recover extra trailing angle brackets in struct definition This commit applies the existing 'extra angle bracket recovery' logic when parsing fields in struct definitions. This allows us to continue parsing the struct's fields, avoiding spurious 'missing field' errors in code that tries to use the struct.
Configuration menu - View commit details
-
Copy full SHA for e242dc4 - Browse repository at this point
Copy the full SHA e242dc4View commit details -
Rollup merge of rust-lang#73805 - poliorcetics:type-keyword, r=kennytm
Document the type keyword Partial fix of rust-lang#34601. Two small examples, one clarifying that `type` only defines an alias, not a completely new type, the other explaining the use in traits. @rustbot modify labels: T-doc,C-enhancement
Configuration menu - View commit details
-
Copy full SHA for 1e63e1f - Browse repository at this point
Copy the full SHA 1e63e1fView commit details -
Rollup merge of rust-lang#73812 - petrochenkov:prettyref, r=varkor
ast_pretty: Pass some token streams and trees by reference Salvaged from an intermediate version of rust-lang#73345.
Configuration menu - View commit details
-
Copy full SHA for 82bddc6 - Browse repository at this point
Copy the full SHA 82bddc6View commit details -
Rollup merge of rust-lang#73828 - nop:fix/parameter-name-help, r=este…
…bank Fix wording for anonymous parameter name help ``` --> exercises/functions/functions2.rs:8:15 | 8 | fn call_me(num) { | ^ expected one of `:`, `@`, or `|` | = note: anonymous parameters are removed in the 2018 edition (see RFC 1685) help: if this is a `self` type, give it a parameter name | 8 | fn call_me(self: num) { | ^^^^^^^^^ help: if this was a parameter name, give it a type | 8 | fn call_me(num: TypeName) { | ^^^^^^^^^^^^^ help: if this is a type, explicitly ignore the parameter name | 8 | fn call_me(_: num) { | ``` This commit changes "if this was a parameter name" to "if this is a parameter name" to match the wording of similar errors.
Configuration menu - View commit details
-
Copy full SHA for 4abd5fc - Browse repository at this point
Copy the full SHA 4abd5fcView commit details -
Rollup merge of rust-lang#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.
Configuration menu - View commit details
-
Copy full SHA for 9645ed6 - Browse repository at this point
Copy the full SHA 9645ed6View commit details