1. 29 3月, 2021 7 次提交
  2. 28 3月, 2021 33 次提交
    • B
      Auto merge of #83582 - jyn514:might-not, r=joshtriplett · 02398760
      bors 提交于
      may not -> might not
      
      may not -> might not
      
      "may not" has two possible meanings:
      1. A command: "You may not stay up past your bedtime."
      2. A fact that's only sometimes true: "Some cities may not have bike lanes."
      
      In some cases, the meaning is ambiguous: "Some cars may not have snow
      tires." (do the cars *happen* to not have snow tires, or is it
      physically impossible for them to have snow tires?)
      
      This changes places where the standard library uses the "description of
      fact" meaning to say "might not" instead.
      
      This is just `std::vec` for now - if you think this is a good idea I can
      convert the rest of the standard library.
      02398760
    • R
      adjust old test · 1ab05c13
      Ralf Jung 提交于
      1ab05c13
    • B
      Auto merge of #83577 - geeklint:slice_to_ascii_case_doc_links, r=m-ou-se · d4c96de6
      bors 提交于
      Adjust documentation links for slice::make_ascii_*case
      
      The documentation for the functions `slice::to_ascii_lowercase` and `slice::to_ascii_uppercase` contain the suggestion
      
      > To lowercase the value in-place, use `make_ascii_lowercase`
      
      however the link to the suggested method takes you to the page for `u8`, rather than the method of that name on the same page.
      d4c96de6
    • R
      ee1caae3
    • R
      update Miri · a515cfd9
      Ralf Jung 提交于
      a515cfd9
    • B
      Auto merge of #83593 - petrochenkov:nounwrap, r=nagisa · 505ed7fb
      bors 提交于
      rustc_target: Avoid unwraps when adding linker flags
      
      These `unwrap`s assume that some linker flags were already added by `*_base::opts()` methods, but that's doesn't necessarily remain the case when we are reducing the number of flags hardcoded in targets, as https://github.com/rust-lang/rust/pull/83587 shows.
      
      r? `@nagisa`
      505ed7fb
    • J
      Remove unnecessary `ignore-cloudabi` flag · 4a314b99
      JohnTitor 提交于
      4a314b99
    • B
      Auto merge of #81728 - Qwaz:fix-80335, r=joshtriplett · 5208f63b
      bors 提交于
      Fixes API soundness issue in join()
      
      Fixes #80335
      5208f63b
    • B
      Auto merge of #81354 - SkiFire13:binary-search-assume, r=nagisa · 1df20569
      bors 提交于
      Instruct LLVM that binary_search returns a valid index
      
      This allows removing bound checks when the return value of `binary_search` is used to index into the slice it was call on. I also added a codegen test for this, not sure if it's the right thing to do (I didn't find anything on the dev guide), but it felt so.
      1df20569
    • B
      Auto merge of #83587 - petrochenkov:asneeded, r=nagisa · 3bfc8514
      bors 提交于
      linker: Use `--as-needed` by default when linker supports it
      
      Do it in a centralized way in `link.rs` instead of individual target specs.
      Majority of relevant target specs were already passing it.
      3bfc8514
    • V
      049a49b9
    • V
      6615ee89
    • B
      Auto merge of #83103 - petrochenkov:unilex, r=Aaron1011 · 8cd7d86c
      bors 提交于
      resolve: Partially unify early and late scope-relative identifier resolution
      
      Reuse `early_resolve_ident_in_lexical_scope` instead of a chunk of code in `resolve_ident_in_lexical_scope` doing the same job.
      
      `early_resolve_ident_in_lexical_scope`/`visit_scopes` had to be slightly extended to be able to 1) start from a specific module instead of the current parent scope and 2) report one deprecation lint.
      `early_resolve_ident_in_lexical_scope` still doesn't support walking through "ribs", that part is left in `resolve_ident_in_lexical_scope` (moreover, I'm pretty sure it's buggy, but that's a separate issue, cc https://github.com/rust-lang/rust/issues/52389 at least).
      8cd7d86c
    • V
    • J
      may not -> might not · e051db68
      Joshua Nelson 提交于
      "may not" has two possible meanings:
      1. A command: "You may not stay up past your bedtime."
      2. A fact that's only sometimes true: "Some cities may not have bike lanes."
      
      In some cases, the meaning is ambiguous: "Some cars may not have snow
      tires." (do the cars *happen* to not have snow tires, or is it
      physically impossible for them to have snow tires?)
      
      This changes places where the standard library uses the "description of
      fact" meaning to say "might not" instead.
      
      This is just `std::vec` for now - if you think this is a good idea I can
      convert the rest of the standard library.
      e051db68
    • B
      Auto merge of #83580 - Dylan-DPC:rollup-1zod4p7, r=Dylan-DPC · 9b0edb7f
      bors 提交于
      Rollup of 8 pull requests
      
      Successful merges:
      
       - #81351 (combine: stop eagerly evaluating consts)
       - #82525 (make unaligned_references future-incompat lint warn-by-default)
       - #82626 (update array missing `IntoIterator` msg)
       - #82917 (Add function core::iter::zip)
       - #82993 (rustdoc: Use diagnostics for error when including sources)
       - #83522 (Improve fs error open_from unix)
       - #83548 (Always preserve `None`-delimited groups in a captured `TokenStream`)
       - #83555 (Add #[inline] to io::Error methods)
      
      Failed merges:
      
       - #83130 (escape_ascii take 2)
      
      r? `@ghost`
      `@rustbot` modify labels: rollup
      9b0edb7f
    • D
      Rollup merge of #83555 - m-ou-se:inline-io-error-new-const, r=jackh726 · 7d6af675
      Dylan DPC 提交于
      Add #[inline] to io::Error methods
      
      Fixes #82812
      7d6af675
    • D
      Rollup merge of #83548 - Aaron1011:capture-none-delims, r=petrochenkov · 1115accc
      Dylan DPC 提交于
      Always preserve `None`-delimited groups in a captured `TokenStream`
      
      Previously, we would silently remove any `None`-delimiters when
      capturing a `TokenStream`, 'flattenting' them to their inner tokens.
      This was not normally visible, since we usually have
      `TokenKind::Interpolated` (which gets converted to a `None`-delimited
      group during macro invocation) instead of an actual `None`-delimited
      group.
      
      However, there are a couple of cases where this becomes visible to
      proc-macros:
      1. A cross-crate `macro_rules!` macro has a `None`-delimited group
         stored in its body (as a result of being produced by another
         `macro_rules!` macro). The cross-crate `macro_rules!` invocation
         can then expand to an attribute macro invocation, which needs
         to be able to see the `None`-delimited group.
      2. A proc-macro can invoke an attribute proc-macro with its re-collected
         input. If there are any nonterminals present in the input, they will
         get re-collected to `None`-delimited groups, which will then get
         captured as part of the attribute macro invocation.
      
      Both of these cases are incredibly obscure, so there hopefully won't be
      any breakage. This change will allow more agressive 'flattenting' of
      nonterminals in #82608 without losing `None`-delimited groups.
      1115accc
    • D
      Rollup merge of #83522 - pickfire:patch-6, r=JohnTitor · aee7b9e7
      Dylan DPC 提交于
      Improve fs error open_from unix
      
      Consistency for #79399
      Suggested by JohnTitor
      
      r? `@JohnTitor`
      
      Not user if the error is too long now, do we handle long errors well?
      aee7b9e7
    • D
      Rollup merge of #82993 - camelid:source-use-diag, r=jyn514 · f665e5a4
      Dylan DPC 提交于
      rustdoc: Use diagnostics for error when including sources
      
      This error probably almost never happens, but we should still use the
      diagnostic infrastructure. My guess is that the error was added back
      before rustdoc used the rustc diagnostic infrastructure (it was all
      `println!` and `eprintln!` back then!) and since it likely rarely occurs
      and this code doesn't change that much, no one thought to transition it
      to using diagnostics.
      
      Note that the old error was actually a warning (it didn't stop the rest
      of doc building). It seems very unlikely that this would fail without
      the rest of the doc build failing, so it makes more sense for it to be a
      hard error.
      
      The error looks like this:
      
          error: failed to render source code for `src/test/rustdoc/smart-punct.rs`: "bar": foo
            --> src/test/rustdoc/smart-punct.rs:3:1
             |
          3  | / #![crate_name = "foo"]
          4  | |
          5  | | //! This is the "start" of the 'document'! How'd you know that "it's" ...
          6  | | //!
          ...  |
          22 | | //! I say "don't smart-punct me -- please!"
          23 | | //! ```
             | |_______^
      
      I wasn't sure how to trigger the error, so to create that message I
      temporarily made rustdoc always emit it. That's also why it says "bar"
      and "foo" instead of a real error message.
      
      Note that the span of the diagnostic starts at line 3 because line 1 of
      that file is a (non-doc) comment and line 2 is a blank line.
      f665e5a4
    • D
      Rollup merge of #82917 - cuviper:iter-zip, r=m-ou-se · b2e25431
      Dylan DPC 提交于
      Add function core::iter::zip
      
      This makes it a little easier to `zip` iterators:
      
      ```rust
      for (x, y) in zip(xs, ys) {}
      // vs.
      for (x, y) in xs.into_iter().zip(ys) {}
      ```
      
      You can `zip(&mut xs, &ys)` for the conventional `iter_mut()` and
      `iter()`, respectively. This can also support arbitrary nesting, where
      it's easier to see the item layout than with arbitrary `zip` chains:
      
      ```rust
      for ((x, y), z) in zip(zip(xs, ys), zs) {}
      for (x, (y, z)) in zip(xs, zip(ys, zs)) {}
      // vs.
      for ((x, y), z) in xs.into_iter().zip(ys).zip(xz) {}
      for (x, (y, z)) in xs.into_iter().zip((ys.into_iter().zip(xz)) {}
      ```
      
      It may also format more nicely, especially when the first iterator is a
      longer chain of methods -- for example:
      
      ```rust
          iter::zip(
              trait_ref.substs.types().skip(1),
              impl_trait_ref.substs.types().skip(1),
          )
          // vs.
          trait_ref
              .substs
              .types()
              .skip(1)
              .zip(impl_trait_ref.substs.types().skip(1))
      ```
      
      This replaces the tuple-pair `IntoIterator` in #78204.
      There is prior art for the utility of this in [`itertools::zip`].
      
      [`itertools::zip`]: https://docs.rs/itertools/0.10.0/itertools/fn.zip.html
      b2e25431
    • D
      Rollup merge of #82626 - lcnr:encode_with_shorthandb, r=estebank · ebea9d94
      Dylan DPC 提交于
      update array missing `IntoIterator` msg
      
      fixes #82602
      
      r? ```@estebank``` do you know whether we can use the expr span in `rustc_on_unimplemented`? The label isn't too great rn
      ebea9d94
    • D
      Rollup merge of #82525 - RalfJung:unaligned-ref-warn, r=petrochenkov · a900677e
      Dylan DPC 提交于
      make unaligned_references future-incompat lint warn-by-default
      
      and also remove the safe_packed_borrows lint that it replaces.
      
      `std::ptr::addr_of!` has hit beta now and will hit stable in a month, so I propose we start fixing https://github.com/rust-lang/rust/issues/27060 for real: creating a reference to a field of a packed struct needs to eventually become a hard error; this PR makes it a warn-by-default future-incompat lint. (The lint already existed, this just raises its default level.) At the same time I removed the corresponding code from unsafety checking; really there's no reason an `unsafe` block should make any difference here.
      
      For references to packed fields outside `unsafe` blocks, this means `unaligned_refereces` replaces the previous `safe_packed_borrows` warning with a link to https://github.com/rust-lang/rust/issues/82523 (and no more talk about unsafe blocks making any difference). So behavior barely changes, the warning is just worded differently. For references to packed fields inside `unsafe` blocks, this PR shows a new future-incompat warning.
      
      Closes https://github.com/rust-lang/rust/issues/46043 because that lint no longer exists.
      a900677e
    • D
      Rollup merge of #81351 - lcnr:big-money-big-prices, r=oli-obk · 520c9a25
      Dylan DPC 提交于
      combine: stop eagerly evaluating consts
      
      `super_relate_consts` eagerly evaluates constants which doesn't seem too great.
      
      I now also finally understand why all of the unused substs test passed. The reason being
      that we just evaluated the constants in `super_relate_consts` 😆
      
      While this change isn't strictly necessary as evaluating consts here doesn't hurt, it still feels a lot cleaner to do it this way
      
      r? `@oli-obk` `@nikomatsakis`
      520c9a25
    • V
    • V
    • V
      update links to make_ascii_lowercase for slice to point to methods on the same... · d29d87f0
      Violet 提交于
      update links to make_ascii_lowercase for slice to point to methods on the same type, rather than on u8
      d29d87f0
    • J
      Add the tracking issue for `#![feature(iter_zip)]` · f0a6052d
      Josh Stone 提交于
      f0a6052d
    • B
      Auto merge of #83573 - JohnTitor:rollup-28jnzsr, r=JohnTitor · afaf33dc
      bors 提交于
      Rollup of 10 pull requests
      
      Successful merges:
      
       - #79399 (Use detailed and shorter fs error explaination)
       - #83348 (format macro argument parsing fix)
       - #83462 (ExitStatus: print "exit status: {}" rather than "exit code: {}" on unix)
       - #83526 (lazily calls some fns)
       - #83558 (Use DebugStruct::finish_non_exhaustive() in std.)
       - #83559 (Fix Debug implementation for RwLock{Read,Write}Guard.)
       - #83560 (Derive Debug for io::Chain instead of manually implementing it.)
       - #83561 (Improve Debug implementations of Mutex and RwLock.)
       - #83567 (Update rustup cross-compilation docs link)
       - #83569 (Add regression tests for #56445)
      
      Failed merges:
      
      r? `@ghost`
      `@rustbot` modify labels: rollup
      afaf33dc
    • Y
      Rollup merge of #83569 - sjakobi:issue56445-regression-test, r=jackh726 · 1ad7c528
      Yuki Okushi 提交于
      Add regression tests for #56445
      
      Closes #56445.
      1ad7c528
    • Y
      Rollup merge of #83567 - jonjensen:patch-1, r=GuillaumeGomez · 69acaf33
      Yuki Okushi 提交于
      Update rustup cross-compilation docs link
      69acaf33
    • Y
      Rollup merge of #83561 - m-ou-se:lock-debug, r=jackh726 · a800d7f6
      Yuki Okushi 提交于
      Improve Debug implementations of Mutex and RwLock.
      
      This improves the Debug implementations of Mutex and RwLock.
      
      They now show the poison flag and use debug_non_exhaustive. (See #67364.)
      a800d7f6
    • Y
      Rollup merge of #83560 - m-ou-se:io-chain-debug, r=sfackler · 8ad5f214
      Yuki Okushi 提交于
      Derive Debug for io::Chain instead of manually implementing it.
      
      This derives Debug for io::Chain instead of manually implementing it.
      
      The manual implementation has the same bounds, so I don't think there's any reason for a manual implementation. The names used in the derive implementation are even nicer (`first`/`second`) than the manual implementation (`t`/`u`), and include the `done_first` field too.
      8ad5f214