This requires introducing `tidy_error_ext!` as an alternative to
`tidy_error!`. It is passed a closure that is called for an error. This
lets tests capture tidy error messages in a buffer instead of printing
them to stderr.
It also requires pulling part of `check` out into a new function
`check_lines`, so that tests can pass in an iterator over some strings
instead of a file.
- Tweak some comments.
- No need to do the `concat!` trick on `START_MARKER` because it's
immediately followed by `END_MARKER`.
- Fix an off-by-one error in the line number for an error message.
- When a second start marker is found without an intervening end marker,
after giving an error, treat it as though it ends the section. It's
hard to know exactly what to do in this case, but it makes unit
testing this case a little simpler (in the next commit).
- If an end marker occurs without a preceding start marker, issue an
error.
We are not planning to support user generated constant in the
foreseeable future, so we are removing the Fold logic for now in
favor of the Instance::resolve logic.
The Instance::resolve was however incomplete, since we weren't handling
internalizing constants yet. Thus, I added that.
I decided to keep the Const fields private in case we decide to
translate them lazily.
These are comment lines in `Cargo.toml` files.
But exclude lines starting with `#!` from the skipping, because we want
to check them. (Rust `#![feature(...)]` lines.)
Also allow empty lines, which are occasionally useful.
Currently, if a `tidy-alphabetical-end` marker appears on the last line
of a file, tidy will erroneously issue a "reach end of file expecting
`tidy-alphabetical-end`" error. This is because it uses `take_while`
within `check_section`, which consumes the line with the end marker, and
then after `check_section` returns `check` peeks for at least one more
line, which won't be there is the marker was on the last line.
This commit fixes the problem, by removing the use of `take_while`, and
doing the "reached end of file" test within `check_section` without
using `peek`.
It also renames `{START,END}_COMMENT` as `{START,END}_MARKER`, which is
a more appropriate name.
In general it is not correct to inline a callee with a target features
that are subset of the callee. Require target features to match exactly
during inlining.
The exact match could be potentially relaxed, but this would require
identifying specific feature that are allowed to differ, those that need
to match, and those that can be present in caller but not in callee.
This resolves MIR part of #116573. For other concerns with respect to
the previous implementation also see areInlineCompatible in LLVM.
Chrome links .rlibs with /WHOLEARCHIVE or -Wl,--whole-archive to prevent
the linker from discarding static initializers. This works well, except
on Windows x86, where lld complains:
error: /safeseh: lib.rmeta is not compatible with SEH
The fix is simply to mark the .rmeta as SAFESEH aware. This is trivially
true, since the metadata file does not contain any executable code.
Add method to convert internal to stable constructs
This is an alternative implementation to https://github.com/rust-lang/rust/pull/116999. I believe we can still improve the logic a bit here, but I wanted to see which direction we should go first.
In this implementation, the API is simpler and we keep Tables somewhat private. The definition is still public though, since we have to expose the Stable trait. However, there's a cost of keeping another thread-local and using `Rc`, but I'm hoping it will be a small cost.
r? ``@oli-obk``
r? ``@spastorino``
Suggest unwrap/expect for let binding type mismatch
Found it when investigating https://github.com/rust-lang/rust/issues/116738
I'm not sure whether it's a good style to suggest `unwrap`, seems it's may helpful for newcomers.
#116738 needs another fix to improve it.
Avoid unnecessary renumbering during borrowck
Currently, after renumbering there are always unused `RegionVid`s if the return type contains any regions, this is due to `visit_ty` being called twice on the same `Ty`: once with `TyContext::ReturnTy` and once with `TyContext::LocalDecl { local: _0 }`. This PR skips renumbering the first time around.
Derive `Ord`, `PartialOrd` and `Hash` for `SocketAddr*`
Fixes#116711
The main pain of this PR is to fix the buggy impl of `Ord` for `SocketAddrV6`, which ignored half of the fields (while `PartialEq` is derived):
4603f0b8af/library/core/src/net/socket_addr.rs (L99-L106)4603f0b8af/library/core/src/net/socket_addr.rs (L676)
For me it looks like a simple copy-paste error made in https://github.com/rust-lang/rust/pull/72239 (copy from v4 impl) (cc `@hch12907),` as I don't see this behavior being mentioned anywhere on the PR and it also does not respect `cmp` trait "rules". I also do not see any reasons for those impls to _not_ be derived.
It's a shame we did not notice this for 28 versions/3 years. I guess this is a bug fix, but I'm not sure what the process here should be.
r? libs
Introduce `-C instrument-coverage=branch` to gate branch coverage
This was extracted from https://github.com/rust-lang/rust/pull/115061 and can land independently from other coverage related work.
The flag is unused for now, but is added in advance of adding branch coverage support.
It is an unstable, nightly only flag that needs to be used in combination with `-Zunstable-options`, like so: `-Zunstable-options -C instrument-coverage=branch`.
The goal is to develop branch coverage as an unstable opt-in feature first, before it matures and can be turned on by default.
remove change-id assertion in bootstrap test
In the bootstrap test, the assertion of the change-id fails whenever we update the change-id next to a breaking change in build configurations. This commit removes the assertion, as it's not critical or useful to have.
ref https://github.com/rust-lang/rust/pull/115898#issuecomment-1775909050
Update books
## rust-lang/book
1 commits in 72187f5cd0beaaa9c6f584156bcd88f921871e83..3dca2fc50b922a8efb94903b9fee8bb42ab48f38
2023-10-19 18:01:47 UTC to 2023-10-19 18:01:47 UTC
- Fix cargo doc links (rust-lang/book#3751)
## rust-embedded/book
1 commits in eac173690b8cc99094e1d88bd49dd61127fbd285..22bca3d0f6e9b9b556689b54ce96f25b46ecd1b3
2023-10-16 22:47:38 UTC to 2023-10-16 22:47:38 UTC
- Improved hardware.md chapter. (rust-embedded/book#361)
## rust-lang/nomicon
1 commits in ddfa4214487686e91b21aa29afb972c08a8f0d5b..1842257814919fa62e81bdecd5e8f95be2839dbb
2023-10-17 15:11:58 UTC to 2023-10-17 15:11:58 UTC
- Fixed `Hole::get` marked as unsafe in `exception-safety.md` (rust-lang/nomicon#427)
## rust-lang/reference
2 commits in 142b2ed77d33f37a9973772bd95e6144ed9dce43..16fd3c06d9e558dae2d52000818274ae70c9e90a
2023-10-14 22:31:04 UTC to 2023-10-11 15:35:55 UTC
- Adjust reference for return-position `impl Trait` in trait and `async fn` in trait (rust-lang/reference#1409)
- Fix temporary drop scope for last expression. (rust-lang/reference#1416)
## rust-lang/rust-by-example
1 commits in 8eb3a01ab74c567b7174784892fb807f2c632d6b..6709beeb7d0fbc5ffc91ac4893a24434123b9bfa
2023-10-20 19:11:21 UTC to 2023-10-20 19:11:21 UTC
- docs: fix a typo (rust-lang/rust-by-example#1752)
## rust-lang/rustc-dev-guide
5 commits in b98af7d661e4744baab81fb8dc7a049e44a4a998..b0ee9ec8fa59a6c7620165e061f4747202377a62
2023-10-22 03:18:44 UTC to 2023-10-11 06:30:26 UTC
- Add WF to glossary (rust-lang/rustc-dev-guide#1810)
- recommend `unpretty=hir` alongside `unpretty=hir-tree` (rust-lang/rustc-dev-guide#1804)
- Start a chapter about the evolving const effect system (rust-lang/rustc-dev-guide#1808)
- Document subtle implied bounds issue in RPITIT inference (rust-lang/rustc-dev-guide#1807)
- [suggested.md] `changelog-seen` -> `change-id` in `shell.nix` (rust-lang/rustc-dev-guide#1806)