-
Notifications
You must be signed in to change notification settings - Fork 12.4k
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 6 pull requests #115960
Rollup of 6 pull requests #115960
Commits on Sep 3, 2023
-
rustdoc-search:
null
, not-1
, for missing idThis allows us to use negative numbers for others purposes.
Configuration menu - View commit details
-
Copy full SHA for 217fe24 - Browse repository at this point
Copy the full SHA 217fe24View commit details -
rustdoc-search: add support for type parameters
When writing a type-driven search query in rustdoc, specifically one with more than one query element, non-existent types become generic parameters instead of auto-correcting (which is currently only done for single-element queries) or giving no result. You can also force a generic type parameter by writing `generic:T` (and can force it to not use a generic type parameter with something like `struct:T` or whatever, though if this happens it means the thing you're looking for doesn't exist and will give you no results). There is no syntax provided for specifying type constraints for generic type parameters. When you have a generic type parameter in a search query, it will only match up with generic type parameters in the actual function, not concrete types that match, not concrete types that implement a trait. It also strictly matches based on when they're the same or different, so `option<T>, option<U> -> option<U>` matches `Option::and`, but not `Option::or`. Similarly, `option<T>, option<T> -> option<T>`` matches `Option::or`, but not `Option::and`.
Configuration menu - View commit details
-
Copy full SHA for 0b3c617 - Browse repository at this point
Copy the full SHA 0b3c617View commit details -
Configuration menu - View commit details
-
Copy full SHA for b6bb06c - Browse repository at this point
Copy the full SHA b6bb06cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 89a4c7f - Browse repository at this point
Copy the full SHA 89a4c7fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 6068850 - Browse repository at this point
Copy the full SHA 6068850View commit details -
Configuration menu - View commit details
-
Copy full SHA for f42f357 - Browse repository at this point
Copy the full SHA f42f357View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9ccb217 - Browse repository at this point
Copy the full SHA 9ccb217View commit details
Commits on Sep 9, 2023
-
Configuration menu - View commit details
-
Copy full SHA for 269cb57 - Browse repository at this point
Copy the full SHA 269cb57View commit details
Commits on Sep 10, 2023
-
rustdoc-doc: add
next_chunk
to list ofvec::intoiter<T> -> [T]
This didn't show up before, because of some unification bugs that were fixed in 269cb57
Configuration menu - View commit details
-
Copy full SHA for 4cf06e8 - Browse repository at this point
Copy the full SHA 4cf06e8View commit details
Commits on Sep 14, 2023
-
Configuration menu - View commit details
-
Copy full SHA for b804477 - Browse repository at this point
Copy the full SHA b804477View commit details
Commits on Sep 18, 2023
-
Configuration menu - View commit details
-
Copy full SHA for a6d8724 - Browse repository at this point
Copy the full SHA a6d8724View commit details
Commits on Sep 19, 2023
-
Configuration menu - View commit details
-
Copy full SHA for 55ce976 - Browse repository at this point
Copy the full SHA 55ce976View commit details -
Configuration menu - View commit details
-
Copy full SHA for 976d377 - Browse repository at this point
Copy the full SHA 976d377View commit details -
Configuration menu - View commit details
-
Copy full SHA for a30ad3a - Browse repository at this point
Copy the full SHA a30ad3aView commit details -
Configuration menu - View commit details
-
Copy full SHA for fd36553 - Browse repository at this point
Copy the full SHA fd36553View commit details -
Rollup merge of rust-lang#112725 - notriddle:notriddle/advanced-searc…
…h, r=GuillaumeGomez rustdoc-search: add support for type parameters r? `@GuillaumeGomez` ## Preview * https://notriddle.com/rustdoc-html-demo-4/advanced-search/rustdoc/read-documentation/search.html * https://notriddle.com/rustdoc-html-demo-4/advanced-search/std/index.html?search=option%3Coption%3CT%3E%3E%20-%3E%20option%3CT%3E * https://notriddle.com/rustdoc-html-demo-4/advanced-search/std/index.html?search=option%3CT%3E,%20E%20-%3E%20result%3CT,%20E%3E * https://notriddle.com/rustdoc-html-demo-4/advanced-search/std/index.html?search=-%3E%20option%3CT%3E ## Description When writing a type-driven search query in rustdoc, specifically one with more than one query element, non-existent types become generic parameters instead of auto-correcting (which is currently only done for single-element queries) or giving no result. You can also force a generic type parameter by writing `generic:T` (and can force it to not use a generic type parameter with something like `struct:T` or whatever, though if this happens it means the thing you're looking for doesn't exist and will give you no results). There is no syntax provided for specifying type constraints for generic type parameters. When you have a generic type parameter in a search query, it will only match up with generic type parameters in the actual function, not concrete types that match, not concrete types that implement a trait. It also strictly matches based on when they're the same or different, so `option<T>, option<U> -> option<U>` matches `Option::and`, but not `Option::or`. Similarly, `option<T>, option<T> -> option<T>` matches `Option::or`, but not `Option::and`. ## Motivation This feature is motivated by the many "combinitor"-type functions found in generic libraries, such as Option, Future, Iterator, and Entry. These highly-generic functions have names that are almost completely arbitrary, and a type signature that tells you what it actually does. This PR is a major step towards[^closure] being able to easily search for generic functions by their type signature instead of by name. Some examples of combinators that can be found using this PR (try them out in the preview): * `option<option<T>> -> option<T>` returns Option::flatten * `option<T> -> result<T>` returns Option::ok_or * `option<result<T>> -> result<option<T>>` returns Option::transpose * `entry<K, V>, FnOnce -> V` returns `Entry::or_insert_with` (and `or_insert_with_key`, since there's no way to specify the generics on FnOnce) [^closure]: For this feature to be as useful as it ought to be, you should be able to search for *trait-associated types* and *closures*. This PR does not implement either of these: they are **Future possibilities**. Trait-associated types would allow queries like `option<T> -> iterator<item=T>` to return `Option::iter`. We should also allow `option<T> -> iterator<T>` to match the associated type version. Closures would make a good way to query for things like `Option::map`. Closure support needs associated types to be represented in the search index, since `FnOnce() -> i32` desugars to `FnOnce<Output=i32, ()>`, so associated trait types should be implemented first. Also, we'd want to expose an easy way to query closures without specifying which of the three traits you want.
Configuration menu - View commit details
-
Copy full SHA for 3f68468 - Browse repository at this point
Copy the full SHA 3f68468View commit details -
Rollup merge of rust-lang#114941 - compiler-errors:inline-shadowed-by…
…-dyn, r=lcnr Don't resolve generic impls that may be shadowed by dyn built-in impls **NOTE:** This is a hack. This is not trying to be a general fix for the issue that we've allowed overlapping built-in trait object impls and user-written impls for quite a long time, and traits like `Any` rely on this (rust-lang#57893) -- this PR specifically aims to mitigate a new unsoundness that is uncovered by the MIR inliner (rust-lang#114928) that interacts with this pre-existing issue. Builtin `dyn Trait` impls may overlap with user-provided blanket impls (`impl<T: ?Sized> Trait for T`) in generic contexts. This leads to bugs when instances are resolved in polymorphic contexts, since we typically prefer object candidates over impl candidates. This PR implements a (hacky) heuristic to `resolve_associated_item` to account for that unfortunate hole in the type system -- we now bail with ambiguity if we try to resolve a non-rigid instance whose self type is not known to be sized. This makes sure we can still inline instances like `impl<T: Sized> Trait for T`, which can never overlap with `dyn Trait`'s built-in impl, but we avoid inlining an impl that may be shadowed by a `dyn Trait`. Fixes rust-lang#114928
Configuration menu - View commit details
-
Copy full SHA for 66b7bdf - Browse repository at this point
Copy the full SHA 66b7bdfView commit details -
Rollup merge of rust-lang#115625 - compiler-errors:hrtb-infer-err, r=…
…b-naber Explain HRTB + infer limitations of old solver Add a helpful message when we hit the limitation of the old trait solver where we don't properly normalize GATs with infer vars + bound vars, leading to too-eagerly reporting trait errors that would be later satisfied due to inference.
Configuration menu - View commit details
-
Copy full SHA for c452090 - Browse repository at this point
Copy the full SHA c452090View commit details -
Rollup merge of rust-lang#115839 - Dirreke:bump-libc, r=dtolnay
Bump libc to 0.2.148
Configuration menu - View commit details
-
Copy full SHA for 6cfc6a8 - Browse repository at this point
Copy the full SHA 6cfc6a8View commit details -
Rollup merge of rust-lang#115924 - compiler-errors:non-exhaustive-1-z…
…st, r=RalfJung Don't complain on a single non-exhaustive 1-ZST r? RalfJung, though you mentioned being busy, so feel free to reassign. This doesn't actually attempt to make the diagnostic better, so when we have two non-exhaustive 1-ZSTs in a struct, we still just point to one. 🤷 Fixes rust-lang#115922
Configuration menu - View commit details
-
Copy full SHA for f1edecf - Browse repository at this point
Copy the full SHA f1edecfView commit details -
Rollup merge of rust-lang#115946 - the8472:panic-on-sched_getaffinity…
…-bug, r=Mark-Simulacrum panic when encountering an illegal cpumask in thread::available_parallelism Fixes rust-lang#115868 by panicking instead of returning an invalid `NonZeroUsize`
Configuration menu - View commit details
-
Copy full SHA for 57f1f91 - Browse repository at this point
Copy the full SHA 57f1f91View commit details