Skip to content
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 9 pull requests #119662

Merged
merged 23 commits into from
Jan 6, 2024
Merged

Rollup of 9 pull requests #119662

merged 23 commits into from
Jan 6, 2024

Commits on Dec 9, 2023

  1. Configuration menu
    Copy the full SHA
    af4913f View commit details
    Browse the repository at this point in the history

Commits on Dec 26, 2023

  1. Configuration menu
    Copy the full SHA
    f6a045c View commit details
    Browse the repository at this point in the history
  2. Add a few more docs

    notriddle committed Dec 26, 2023
    Configuration menu
    Copy the full SHA
    e74339b View commit details
    Browse the repository at this point in the history

Commits on Jan 1, 2024

  1. pass allow-{dirty,staged} to clippy

    Signed-off-by: onur-ozkan <work@onurozkan.dev>
    onur-ozkan committed Jan 1, 2024
    Configuration menu
    Copy the full SHA
    96bd9cd View commit details
    Browse the repository at this point in the history

Commits on Jan 4, 2024

  1. Fixed ambiguity in hint.rs

    Needle and haystack are actually not the same, they remain constant.
    mbbill authored Jan 4, 2024
    Configuration menu
    Copy the full SHA
    fdf9383 View commit details
    Browse the repository at this point in the history

Commits on Jan 5, 2024

  1. library: Add allow(unused_assignments) to custom MIR doctest

    The lint is not yet reported due to span issues, but will be reported later.
    petrochenkov committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    deecbd8 View commit details
    Browse the repository at this point in the history
  2. rustc_span: Remove fn fresh_expansion

    In the past it did create a fresh expansion, but now, after surviving a number of refactorings, it does not.
    Now it's just a thin wrapper around `apply_mark`.
    petrochenkov committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    205fb75 View commit details
    Browse the repository at this point in the history
  3. macro_rules: Add more tests for using tt in addition to ident

    Generally, `tt` and `ident` should behave identically, modulo the latter accepting only a subset of token trees.
    petrochenkov committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    c586fe4 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    fb1cca2 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    508d1ff View commit details
    Browse the repository at this point in the history
  6. rustc_mir_transform: Make DestinationPropagation stable for queries

    By using FxIndexMap instead of FxHashMap, so that the order of visiting
    of locals is deterministic.
    
    We also need to bless
    copy_propagation_arg.foo.DestinationPropagation.panic*.diff. Do not
    review the diff of the diff. Instead look at the diff file before and
    after this commit. Both before and after this commit, 3 statements are
    replaced with nop. It's just that due to change in ordering, different
    statements are replaced. But the net result is the same.
    Enselic committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    95eb5bc View commit details
    Browse the repository at this point in the history

Commits on Jan 6, 2024

  1. Configuration menu
    Copy the full SHA
    d70f0e3 View commit details
    Browse the repository at this point in the history
  2. Remove ignore-stage1 that was added when changing error count msg

    The bootstrap bump has happened, so the bootstrap compiler now contains
    the new diagnotic.
    Noratrieb committed Jan 6, 2024
    Configuration menu
    Copy the full SHA
    5c74329 View commit details
    Browse the repository at this point in the history
  3. Strip lld-wrapper binaries

    This cuts down on the amount of data we need to ship and users need to
    keep on disk for each Rust toolchain. As noted in the added comment,
    there's not much going on in these executables, so the added benefit of
    symbols and debuginfo isn't large, while the cost is not insignificant.
    
    This takes each of the binaries (we store 4 identical copies under
    different names) from 3.7MB to 384KB.
    Mark-Simulacrum committed Jan 6, 2024
    Configuration menu
    Copy the full SHA
    94a59d6 View commit details
    Browse the repository at this point in the history
  4. Rollup merge of rust-lang#118194 - notriddle:notriddle/tuple-unit, r=…

    …GuillaumeGomez
    
    rustdoc: search for tuples and unit by type with `()`
    
    This feature extends rustdoc to support the syntax that most users will naturally attempt to use to search for tuples. Part of rust-lang#60485
    
    Function signature searches already support tuples and unit. The explicit name `primitive:tuple` and `primitive:unit` can be used to match a tuple or unit, while `()` will match either one. It also follows the direction set by the actual language for parens as a group, so `(u8,)` will only match a tuple, while `(u8)` will match a plain, unwrapped byte—thanks to loose search semantics, it will also match the tuple.
    
    ## Preview
    
    * [`option<t>, option<u> -> (t, u)`](<https://notriddle.com/rustdoc-html-demo-5/tuple-unit/std/index.html?search=option%3Ct%3E%2C option%3Cu%3E -%3E (t%2C u)>)
    * [`[t] -> (t,)`](<https://notriddle.com/rustdoc-html-demo-5/tuple-unit/std/index.html?search=[t] -%3E (t%2C)>)
    * [`(ipaddr,) -> socketaddr`](<https://notriddle.com/rustdoc-html-demo-5/tuple-unit/std/index.html?search=(ipaddr%2C) -%3E socketaddr>)
    
    ## Motivation
    
    When type-based search was first landed, it was directly [described as incomplete][a comment].
    
    [a comment]: rust-lang#23289 (comment)
    
    Filling out the missing functionality is going to mean adding support for more of Rust's [type expression] syntax, such as tuples (in this PR), references, raw pointers, function pointers, and closures.
    
    [type expression]: https://doc.rust-lang.org/reference/types.html#type-expressions
    
    There does seem to be demand for this sort of thing, such as [this Discord message](https://discord.com/channels/442252698964721669/443150878111694848/1042145740065099796) expressing regret at rustdoc not supporting tuples in search queries.
    
    ## Reference description (from the Rustdoc book)
    
    <table>
    <thead>
      <tr>
        <th>Shorthand</th>
        <th>Explicit names</th>
      </tr>
    </thead>
    <tbody>
      <tr><td colspan="2">Before this PR</td></tr>
      <tr>
        <td><code>[]</code></td>
        <td><code>primitive:slice</code> and/or <code>primitive:array</code></td>
      </tr>
      <tr>
        <td><code>[T]</code></td>
        <td><code>primitive:slice&lt;T&gt;</code> and/or <code>primitive:array&lt;T&gt;</code></td>
      </tr>
      <tr>
        <td><code>!</code></td>
        <td><code>primitive:never</code></td>
      </tr>
      <tr><td colspan="2">After this PR</td></tr>
      <tr>
        <td><code>()</code></td>
        <td><code>primitive:unit</code> and/or <code>primitive:tuple</code></td>
      </tr>
      <tr>
        <td><code>(T)</code></td>
        <td><code>T</code></td>
      </tr>
      <tr>
        <td><code>(T,)</code></td>
        <td><code>primitive:tuple&lt;T&gt;</code></td>
      </tr>
    </tbody>
    </table>
    
    A single type expression wrapped in parens is the same as that type expression, since parens act as the grouping operator. If they're empty, though, they will match both `unit` and `tuple`, and if there's more than one type (or a trailing or leading comma) it is the same as `primitive:tuple<...>`.
    
    However, since items can be left out of the query, `(T)` will still return results for types that match tuples, even though it also matches the type on its own. That is, `(u32)` matches `(u32,)` for the exact same reason that it also matches `Result<u32, Error>`.
    
    ## Future direction
    
    The [type expression grammar](https://doc.rust-lang.org/reference/types.html#type-expressions) from the Reference is given below:
    
    <pre><code>Syntax
        Type :
            TypeNoBounds
            | <a href="https://doc.rust-lang.org/reference/types/impl-trait.html">ImplTraitType</a>
            | <a href="https://doc.rust-lang.org/reference/types/trait-object.html">TraitObjectType</a>
    <br>
        TypeNoBounds :
            <a href="https://doc.rust-lang.org/reference/types.html#parenthesized-types">ParenthesizedType</a>
            | <a href="https://doc.rust-lang.org/reference/types/impl-trait.html">ImplTraitTypeOneBound</a>
            | <a href="https://doc.rust-lang.org/reference/types/trait-object.html">TraitObjectTypeOneBound</a>
            | <a href="https://doc.rust-lang.org/reference/paths.html#paths-in-types">TypePath</a>
            | <a href="https://doc.rust-lang.org/reference/types/tuple.html#tuple-types">TupleType</a>
            | <a href="https://doc.rust-lang.org/reference/types/never.html">NeverType</a>
            | <a href="https://doc.rust-lang.org/reference/types/pointer.html#raw-pointers-const-and-mut">RawPointerType</a>
            | <a href="https://doc.rust-lang.org/reference/types/pointer.html#shared-references-">ReferenceType</a>
            | <a href="https://doc.rust-lang.org/reference/types/array.html">ArrayType</a>
            | <a href="https://doc.rust-lang.org/reference/types/slice.html">SliceType</a>
            | <a href="https://doc.rust-lang.org/reference/types/inferred.html">InferredType</a>
            | <a href="https://doc.rust-lang.org/reference/paths.html#qualified-paths">QualifiedPathInType</a>
            | <a href="https://doc.rust-lang.org/reference/types/function-pointer.html">BareFunctionType</a>
            | <a href="https://doc.rust-lang.org/reference/macros.html#macro-invocation">MacroInvocation</a>
    </code></pre>
    
    ImplTraitType and TraitObjectType (and ImplTraitTypeOneBound and TraitObjectTypeOneBound) are not yet implemented. They would mostly desugar to `trait:`, similarly to how `!` desugars to `primitive:never`.
    
    ParenthesizedType and TuplePath are added in this PR.
    
    TypePath is already implemented (except const generics, which is not planned, and function-like trait syntax, which is planned as part of closure support).
    
    NeverType is already implemented.
    
    RawPointerType and ReferenceType require parsing and fixes to the search index to store this information, but otherwise their behavior seems simple enough. Just like tuples and slices, `&T` would be equivalent to `primitive:reference<T>`, `&mut T` would be equivalent to `primitive:reference<keyword:mut, T>`, `*T` would be equivalent to `primitive:pointer<T>`, `*mut T` would be equivalent to `primitive:pointer<keyword:mut, T>`, and `*const T` would be equivalent to `primitive:pointer<keyword:const, T>`. Lifetime generics support is not planned, because lifetime subtyping seems too complicated.
    
    ArrayType is subsumed by SliceType right now. Implementing const generics is not planned, because it seems like it would require a lot of implementation complexity for not much gain.
    
    InferredType isn't really covered right now. Its semantics in a search context are not obvious.
    
    QualifiedPathInType is not implemented, and it is not planned. I would need a use case to justify it, and act as a guide for what the exact semantics should be.
    
    BareFunctionType is not implemented. Along with function-like trait syntax, which is formally considered a TypePath, it's the biggest missing feature to be able to do structured searches over generic APIs like `Option`.
    
    MacroInvocation is not parsed (macro names are, but they don't mean the same thing here at all). Those are gone by the time Rustdoc sees the source code.
    matthiaskrgr authored Jan 6, 2024
    Configuration menu
    Copy the full SHA
    d5fd88c View commit details
    Browse the repository at this point in the history
  5. Rollup merge of rust-lang#118781 - RalfJung:core-panic-feature, r=the…

    …8472
    
    merge core_panic feature into panic_internals
    
    I don't know why those are two separate features, but it does not seem intentional. This merge is useful because with rust-lang#118123, panic_internals is recognized as an internal feature, but core_panic is not -- but core_panic definitely should be internal.
    matthiaskrgr authored Jan 6, 2024
    Configuration menu
    Copy the full SHA
    923578e View commit details
    Browse the repository at this point in the history
  6. Rollup merge of rust-lang#119486 - onur-ozkan:clippy-allow-dirty-and-…

    …staged, r=Mark-Simulacrum
    
    pass allow-{dirty,staged} to clippy
    
    Support of Clippy's `--allow-dirty` and `--allow-staged` flags on bootstrap.
    
    Resolves rust-lang#119483
    matthiaskrgr authored Jan 6, 2024
    Configuration menu
    Copy the full SHA
    94bfc28 View commit details
    Browse the repository at this point in the history
  7. Rollup merge of rust-lang#119591 - Enselic:DestinationPropagation-sta…

    …ble, r=cjgillot
    
    rustc_mir_transform: Make DestinationPropagation stable for queries
    
    By using `FxIndexMap` instead of `FxHashMap`, so that the order of visiting of locals is deterministic.
    
    We also need to bless
    `copy_propagation_arg.foo.DestinationPropagation.panic*.diff`. Do not review the diff of the diff. Instead look at the diff files before and after this commit. Both before and after this commit, 3 statements are replaced with nop. It's just that due to change in ordering, different statements are replaced. But the net result is the same. In other words, compare this diff (before fix):
    * https://github.com/rust-lang/rust/blob/090d5eac722000906cc00d991f2bf052b0e388c3/tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.panic-unwind.diff
    
    With this diff (after fix):
    * https://github.com/rust-lang/rust/blob/f603babd63a607e155609dc0277806e559626ea0/tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.panic-unwind.diff
    
    and you can see that both before and after the fix, we replace 3 statements with `nop`s.
    
    I find it _slightly_ surprising that the test this PR affects did not previously fail spuriously due to the indeterminism of `FxHashMap`, but I guess in can be explained with the predictability of small `FxHashMap`s with `usize` (`Local`) keys, or something along those lines.
    
    This should fix [this](rust-lang#119252 (comment)) comment, but I wanted to make a separate PR for this fix for a simpler development and review process.
    
    Part of rust-lang#84447 which is E-help-wanted.
    
    r? `@cjgillot` who is reviewer for the highly related PR rust-lang#119252.
    matthiaskrgr authored Jan 6, 2024
    Configuration menu
    Copy the full SHA
    909f2b6 View commit details
    Browse the repository at this point in the history
  8. Rollup merge of rust-lang#119595 - mbbill:patch-1, r=Mark-Simulacrum

    Fixed ambiguity in hint.rs
    
    Needle and haystack are actually not the same, they remain constant.
    matthiaskrgr authored Jan 6, 2024
    Configuration menu
    Copy the full SHA
    cda0d08 View commit details
    Browse the repository at this point in the history
  9. Rollup merge of rust-lang#119624 - petrochenkov:dialoc4, r=compiler-e…

    …rrors
    
    rustc_span: More consistent span combination operations
    
    Also add more tests for using `tt` in addition to `ident`, and some other minor tweaks, see individual commits.
    
    This is a part of rust-lang#119412 that doesn't yet add side tables for metavariable spans.
    matthiaskrgr authored Jan 6, 2024
    Configuration menu
    Copy the full SHA
    1d6ab69 View commit details
    Browse the repository at this point in the history
  10. Rollup merge of rust-lang#119653 - devnexen:update_fuchsia_compiler_r…

    …t_support, r=petrochenkov
    
    compiler: update Fuchsia sanitizer support.
    matthiaskrgr authored Jan 6, 2024
    Configuration menu
    Copy the full SHA
    54df1b3 View commit details
    Browse the repository at this point in the history
  11. Rollup merge of rust-lang#119655 - Nilstrieb:cleanup-the-error-count-…

    …monster-mess, r=WaffleLapkin
    
    Remove ignore-stage1 that was added when changing error count msg
    
    The bootstrap bump has happened, so the bootstrap compiler now contains the new diagnostic.
    
    this was added in rust-lang#118138
    matthiaskrgr authored Jan 6, 2024
    Configuration menu
    Copy the full SHA
    6ab546e View commit details
    Browse the repository at this point in the history
  12. Rollup merge of rust-lang#119661 - Mark-Simulacrum:shrink-lld-wrapper…

    …, r=Kobzol
    
    Strip lld-wrapper binaries
    
    This cuts down on the amount of data we need to ship and users need to keep on disk for each Rust toolchain. As noted in the added comment, there's not much going on in these executables, so the added benefit of symbols and debuginfo isn't large, while the cost is not insignificant.
    
    This takes each of the binaries (we store 4 identical copies under different names) from 3.7MB to 384KB.
    matthiaskrgr authored Jan 6, 2024
    Configuration menu
    Copy the full SHA
    5f0f028 View commit details
    Browse the repository at this point in the history