-
Couldn't load subscription status.
- Fork 13.9k
Rollup of 10 pull requests #96785
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 10 pull requests #96785
Conversation
The constants used in SymFn operands have FnDef type, so the type of the constant identifies the function.
The generic arg is for type inference only and shouldn't be exposed to users.
Co-Authored-By: Guillaume Gomez <[email protected]>
* If it's just `-> a`, use "In Function Return Types" * If it's just `a b`, use "In Function Parameters" * Otherwise, still use "In Function Signatures"
Looks like they were in FxHash order before, so it might just be luck that this used to be consistent across different word lengths.
Allow inline consts to reference generic params Tracking issue: rust-lang#76001 The RFC says that inline consts cannot reference to generic parameters (for now), same as array length expressions. And expresses that it's desirable for it to reference in-scope generics, when array length expressions gain that feature as well. However it is possible to implement this for inline consts before doing this for all anon consts, because inline consts are only used as values and they won't be used in the type system. So we can have: ```rust fn foo<T>() { let x = [4i32; std::mem::size_of::<T>()]; // NOT ALLOWED (for now) let x = const { std::mem::size_of::<T>() }; // ALLOWED with this PR! let x = [4i32; const { std::mem::size_of::<T>() }]; // NOT ALLOWED (for now) } ``` This would make inline consts super useful for compile-time checks and assertions: ```rust fn assert_zst<T>() { const { assert!(std::mem::size_of::<T>() == 0) }; } ``` This would create an error during monomorphization when `assert_zst` is instantiated with non-ZST `T`s. A error during mono might sound scary, but this is exactly what a "desugared" inline const would do: ```rust fn assert_zst<T>() { struct F<T>(T); impl<T> F<T> { const V: () = assert!(std::mem::size_of::<T>() == 0); } let _ = F::<T>::V; } ``` It should also be noted that the current inline const implementation can already reference the type params via type inference, so this resolver-level restriction is not any useful either: ```rust fn foo<T>() -> usize { let (_, size): (PhantomData<T>, usize) = const { const fn my_size_of<T>() -> (PhantomData<T>, usize) { (PhantomData, std::mem::size_of::<T>()) } my_size_of() }; size } ``` ```@rustbot``` label: F-inline_const
…ch, r=GuillaumeGomez,jsha rustdoc: when running a function-signature search, tweak the tab bar # Before  # After 
Collect function instance used in `global_asm!` sym operand The constants used in SymFn operands have FnDef type, so the type of the constant identifies the function. Fixes rust-lang#96623.
…twco turn `append_place_to_string` from recursion into iteration This PR fixes the FIXME in the impl of `append_place_to_string` which turns `append_place_to_string` from recursion into iteration, meanwhile simplifying the code relatively.
… r=notriddle Fixes reexports in search Fixes rust-lang#96681. At some point we stopped reexporting items in search so this PR fixes it. It also adds a regression test. r? ```@notriddle```
…errors Put the incompatible_closure_captures lint messages in alphabetical order Looks like they were in hash order before, which was causing me trouble in rust-lang#94598, so this PR sorts the errors by trait name.
…illaumeGomez rustdoc: ensure HTML/JS side implementors don't have dups Fixes rust-lang#94641 Rendered: - https://notriddle.com/notriddle-rustdoc-test/impl-dups/std/iter/trait.Iterator.html - https://notriddle.com/notriddle-rustdoc-test/impl-dups/core/iter/trait.Iterator.html
…h-with-appropriate-params, r=compiler-errors Suggest fully qualified path with appropriate params closes rust-lang#96291
Fix two minor issues in hir.rs I found these two places in hir.rs which could use a bit of improvements while going through the code. No functional change.
a small `mirror_expr` cleanup
|
@bors r+ p=10 rollup=never |
|
📌 Commit a0e2c7e has been approved by |
|
☀️ Test successful - checks-actions |
|
Finished benchmarking commit (77652b9): comparison url. Summary:
If you disagree with this performance assessment, please file an issue in rust-lang/rustc-perf. @rustbot label: -perf-regression Footnotes |
Successful merges:
global_asm!sym operand #96650 (Collect function instance used inglobal_asm!sym operand)append_place_to_stringfrom recursion into iteration #96733 (turnappend_place_to_stringfrom recursion into iteration)mirror_exprcleanup #96782 (a smallmirror_exprcleanup)Failed merges:
r? @ghost
@rustbot modify labels: rollup
Create a similar rollup