224823 Commits

Author SHA1 Message Date
Michael Howell
5fb752bdd5 std: make fortanix-sgx-abi a public depedenceny
It's exported publicly, so it should not be linted.
2023-05-25 08:15:05 -07:00
Michael Howell
8c21920cc7 std: make internal-only items pub(crate)
This works around a weird problem that looks like a bug in the
`exported_private_dependencies` lint.
2023-05-25 08:15:05 -07:00
Michael Howell
2e52f4deb0 bootstrap: use RUSTC_BOOTSTRAP to vendor sources 2023-05-25 08:15:05 -07:00
Michael Howell
6a358960da rustc_metadata: specialize private_dep flag with fetch_and 2023-05-25 08:15:05 -07:00
Michael Howell
bd90868b3f Use De Morgan's law to simplify logic
Co-authored-by: Camille Gillot <gillot.camille@gmail.com>
2023-05-25 08:15:05 -07:00
Michael Howell
a12f50ddc4 rustc_metadata: use configurable AtomicBool for privateness flag
This switches to using a `Cell` for single-threaded rustc.
2023-05-25 08:15:04 -07:00
Michael Howell
b537c1f175 std: mark common functions in test crate pub(crate)
This is not a library, so there's no reason for them to be `pub`.
Without doing this, compiling the test crates causes private dep
lint errors:

      error: type `PathBuf` from private dependency 'std' in public interface
        --> library/std/tests/common/mod.rs:26:5
         |
      26 |     pub fn join(&self, path: &str) -> PathBuf {
         |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         |
         = note: `-D exported-private-dependencies` implied by `-D warnings`

      error: type `Path` from private dependency 'std' in public interface
        --> library/std/tests/common/mod.rs:31:5
         |
      31 |     pub fn path(&self) -> &Path {
         |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^

      error: could not compile `std` (test "create_dir_all_bare") due to 2 previous errors

This happens because Cargo passes `--extern 'priv:std=...` when
compiling the test crate.

I'm not sure if these warnings are desirable or not. They seem correct
in a very pedantic way (the dependency on `std` is not marked public,
since it's implicit), but also pointless (the test crate is not an API,
so who cares what it does).
2023-05-25 08:15:04 -07:00
Michael Howell
1c14b0ac0a remove outdated comment from is_user_visible_dep docs 2023-05-25 08:15:04 -07:00
Michael Howell
5a7fffee71 rustc_metadata: use AtomicBool for privateness instead of Lock 2023-05-25 08:15:04 -07:00
Michael Howell
d47dc326d6 diagnostics: don't crash if an injected crate shows up in suggestions 2023-05-25 08:15:04 -07:00
Michael Howell
0ca70be11b rustc_metadata: fix private_dep logic in register_crate 2023-05-25 08:15:02 -07:00
Michael Howell
374024336a Improve comments 2023-05-25 08:14:33 -07:00
Michael Howell
8488e8aed9 rust-installer: include RUSTC_BOOTSTRAP when generating installer 2023-05-25 08:14:33 -07:00
Michael Howell
ffef807889 Update compiler/rustc_metadata/src/creader.rs
Co-authored-by: Camille Gillot <gillot.camille@gmail.com>
2023-05-25 08:14:33 -07:00
Michael Howell
674a3d5c1c diagnostics: exclude indirect private deps from trait impl suggest
Fixes #88696
2023-05-25 08:14:33 -07:00
Michael Howell
e36020cdb3 rustc_metadata: inherit dependency privacy flag 2023-05-25 08:14:29 -07:00
Michael Howell
64025bb168 bootstrap: enable Cargo public-dependency feature for libstd 2023-05-25 08:13:23 -07:00
bors
d300bffa4f Auto merge of #110906 - ekusiadadus:ekusiadadus/fix-bash-complete-etc, r=albertlarsan68
fix: 🐛 etc/bash_complettion -> src/etc/... to avoid copy error

## why

I got an error on executing `./x.py build && ./x.py install`.

Found creating some folder in  `/etc/bash_completion.d/`, It appears to be incorrect to attempt to create a folder in `/etc/bash_completion.d/`, as this proccess requires `sudo`.

Fixes #111653

```
Uplifting rustc (stage1 -> stage3)
Building tool cargo (stage2 -> stage3, x86_64-unknown-linux-gnu)
    Finished release [optimized] target(s) in 0.16s
Building tool cargo-credential-1password (stage2 -> stage3, x86_64-unknown-linux-gnu)
    Finished release [optimized] target(s) in 0.06s
Dist cargo-1.71.0-dev-x86_64-unknown-linux-gnu
        finished in 10.700 seconds
Installing stage2 cargo (x86_64-unknown-linux-gnu)
install: uninstalling component 'cargo'
install: creating uninstall script at /home/ekusiadadus/.rustup/toolchains/dev/lib/rustlib/uninstall.sh
install: installing component 'cargo'
/home/ekusiadadus/dev/rust/rust/build/tmp/tarball/cargo/x86_64-unknown-linux-gnu/cargo-1.71.0-dev-x86_64-unknown-linux-gnu/install.sh: 310: cd: can't cd to /etc/bash_completion.d
cp: cannot create regular file '/cargo': Permission denied
chmod: cannot access '/cargo': No such file or directory
install: error: file creation failed. see logs at '/home/ekusiadadus/.rustup/toolchains/dev/lib/rustlib/install.log'
Build completed unsuccessfully in 0:01:11
```

Error Log

```
install: uninstalling component 'cargo'
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/bin/cargo
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/bin/cargo
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/libexec/cargo-credential-1password
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/libexec/cargo-credential-1password
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/doc/rust/LICENSE-APACHE
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/doc/rust/LICENSE-APACHE
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/doc/rust/LICENSE-MIT
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/doc/rust/LICENSE-MIT
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/doc/rust/LICENSE-THIRD-PARTY
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/doc/rust/LICENSE-THIRD-PARTY
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/doc/rust/README.md
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/doc/rust/README.md
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-add.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-add.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-bench.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-bench.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-build.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-build.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-check.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-check.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-clean.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-clean.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-doc.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-doc.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-fetch.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-fetch.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-fix.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-fix.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-generate-lockfile.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-generate-lockfile.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-help.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-help.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-init.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-init.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-install.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-install.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-locate-project.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-locate-project.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-login.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-login.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-logout.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-logout.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-metadata.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-metadata.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-new.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-new.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-owner.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-owner.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-package.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-package.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-pkgid.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-pkgid.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-publish.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-publish.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-remove.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-remove.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-report.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-report.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-run.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-run.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-rustc.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-rustc.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-rustdoc.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-rustdoc.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-search.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-search.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-test.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-test.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-tree.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-tree.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-uninstall.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-uninstall.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-update.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-update.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-vendor.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-vendor.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-verify-project.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-verify-project.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-version.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-version.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-yank.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo-yank.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo.1
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/man/man1/cargo.1
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/share/zsh/site-functions/_cargo
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/share/zsh/site-functions/_cargo
install: removing file /home/ekusiadadus/.rustup/toolchains/dev/src/etc/bash_completion.d/cargo
$ rm -f /home/ekusiadadus/.rustup/toolchains/dev/src/etc/bash_completion.d/cargo
install: removing component manifest /home/ekusiadadus/.rustup/toolchains/dev/lib/rustlib/manifest-cargo
$ rm /home/ekusiadadus/.rustup/toolchains/dev/lib/rustlib/manifest-cargo
$ echo "rust-analyzer-preview
rustfmt-preview
rust-demangler-preview
clippy-preview
miri-preview
llvm-tools-preview
rust-src
rustc
rust-docs
rust-std-x86_64-unknown-linux-gnu" > "/home/ekusiadadus/.rustup/toolchains/dev/lib/rustlib/components"
$ umask 022 && mkdir -p "/home/ekusiadadus/.rustup/toolchains/dev/lib/rustlib"
$ echo "3" > "/home/ekusiadadus/.rustup/toolchains/dev/lib/rustlib/rust-installer-version"
install: creating uninstall script at /home/ekusiadadus/.rustup/toolchains/dev/lib/rustlib/uninstall.sh
$ cp /home/ekusiadadus/dev/rust/rust/build/tmp/tarball/cargo/x86_64-unknown-linux-gnu/cargo-1.71.0-dev-x86_64-unknown-linux-gnu/install.sh /home/ekusiadadus/.rustup/toolchains/dev/lib/rustlib/uninstall.sh
install: installing component 'cargo'
$ echo "cargo" >> "/home/ekusiadadus/.rustup/toolchains/dev/lib/rustlib/components"
$ umask 022 && mkdir -p "/home/ekusiadadus/.rustup/toolchains/dev/bin"
install: copying file /home/ekusiadadus/.rustup/toolchains/dev/bin/cargo
$ cp /home/ekusiadadus/dev/rust/rust/build/tmp/tarball/cargo/x86_64-unknown-linux-gnu/cargo-1.71.0-dev-x86_64-unknown-linux-gnu/cargo/bin/cargo /home/ekusiadadus/.rustup/toolchains/dev/bin/cargo
$ chmod 755 /home/ekusiadadus/.rustup/toolchains/dev/bin/cargo
$ echo "file:/home/ekusiadadus/.rustup/toolchains/dev/bin/cargo" >> "/home/ekusiadadus/.rustup/toolchains/dev/lib/rustlib/manifest-cargo"
$ umask 022 && mkdir -p "/etc/bash_completion.d"
install: copying file /cargo
$ cp /home/ekusiadadus/dev/rust/rust/build/tmp/tarball/cargo/x86_64-unknown-linux-gnu/cargo-1.71.0-dev-x86_64-unknown-linux-gnu/cargo/etc/bash_completion.d/cargo /cargo
$ chmod 644 /cargo
install: error: file creation failed. see logs at '/home/ekusiadadus/.rustup/toolchains/dev/lib/rustlib/install.log'
```
2023-05-25 11:21:17 +00:00
bors
eb9da7bfa3 Auto merge of #111473 - compiler-errors:opaques, r=lcnr
Handle opaques in the new solver (take 2?)

Implement a new strategy for handling opaques in the new solver.

First, queries now carry both their defining anchor and the opaques that were defined in the inference context at the time of canonicalization. These are both used to pre-populate the inference context used by the canonical query.

Second, use the normalizes-to goal to handle opaque types in the new solver. This means that opaques are handled like projection aliases, but with their own rules:
* Can only define opaques if they're "defining uses" (i.e. have unique params in all their substs).
* Can only define opaques that are from the anchor.
* Opaque type definitions are modulo regions. So that means `Opaque<'?0r> = HiddenTy1` and `Opaque<?'1r> = HiddenTy2` equate `HiddenTy1` and `HiddenTy2` instead of defining them as different opaque type keys.
2023-05-25 08:41:54 +00:00
bors
0b011b7b7e Auto merge of #111933 - matthiaskrgr:rollup-m10k3ts, r=matthiaskrgr
Rollup of 4 pull requests

Successful merges:

 - #95198 (Add slice::{split_,}{first,last}_chunk{,_mut})
 - #109899 (Use apple-m1 as target CPU for aarch64-apple-darwin.)
 - #111624 (Emit diagnostic for privately uninhabited uncovered witnesses.)
 - #111875 (Don't leak the function that is called on drop)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-05-25 06:02:11 +00:00
Matthias Krüger
a9743e108a
Rollup merge of #111875 - WaffleLapkin:defer_on_drop, r=Nilstrieb
Don't leak the function that is called on drop

It probably wasn't causing problems anyway, but still, a `// this leaks, please don't pass anything that owns memory` is not sustainable.

I could implement a version which does not require `Option`, but it would require `unsafe`, at which point it's probably not worth it.
2023-05-25 08:01:08 +02:00
Matthias Krüger
725cadb276
Rollup merge of #111624 - cjgillot:private-uninhabited-pattern, r=petrochenkov
Emit diagnostic for privately uninhabited uncovered witnesses.

Fixes https://github.com/rust-lang/rust/issues/104034

cc `@Nadrieril`
2023-05-25 08:01:08 +02:00
Matthias Krüger
87bb7d8ac7
Rollup merge of #109899 - daxpedda:patch-1, r=jackh726
Use apple-m1 as target CPU for aarch64-apple-darwin.

This updates the target CPU for the `aarch64-apple-darwin` target to `apple-m1`, which is the first generation of CPUs with this target anyway.

This wasn't able to be done before because of the minimum supported version of LLVM being 12, now that it was updated to 13 (in fact we are already at 14), this is available.

See previous update: https://github.com/rust-lang/rust/pull/90478.
See LLVM update: https://github.com/rust-lang/rust/pull/100460.
2023-05-25 08:01:07 +02:00
Matthias Krüger
8497948c7a
Rollup merge of #95198 - clarfonthey:get_chunk, r=scottmcm
Add slice::{split_,}{first,last}_chunk{,_mut}

This adds to the existing tracking issue for `slice::array_chunks` (#74985) under a separate feature, `slice_get_chunk`.

Currently, we have the existing `first`/`last` API for slices:

```rust
impl [T] {
    pub const fn first(&self) -> Option<&T>;
    pub const fn first_mut(&mut self) -> Option<&mut T>;
    pub const fn last(&self) -> Option<&T>;
    pub const fn last_mut(&mut self) -> Option<&mut T>;
    pub const fn split_first(&self) -> Option<(&T, &[T])>;
    pub const fn split_first_mut(&mut self) -> Option<(&mut T, &mut [T])>;
    pub const fn split_last(&self) -> Option<(&T, &[T])>;
    pub const fn split_last_mut(&mut self) -> Option<(&mut T, &mut [T])>;
}
```

This augments it with a `first_chunk`/`last_chunk` API that allows retrieving multiple elements at once:

```rust
impl [T] {
    pub const fn first_chunk<const N: usize>(&self) -> Option<&[T; N]>;
    pub const fn first_chunk_mut<const N: usize>(&mut self) -> Option<&mut [T; N]>;
    pub const fn last_chunk<const N: usize>(&self) -> Option<&[T; N]>;
    pub const fn last_chunk_mut<const N: usize>(&mut self) -> Option<&mut [T; N]>;
    pub const fn split_first_chunk<const N: usize>(&self) -> Option<(&[T; N], &[T])>;
    pub const fn split_first_chunk_mut<const N: usize>(&mut self) -> Option<(&mut [T; N], &mut [T])>;
    pub const fn split_last_chunk<const N: usize>(&self) -> Option<(&[T; N], &[T])>;
    pub const fn split_last_chunk_mut<const N: usize>(&mut self) -> Option<(&mut [T; N], &mut [T])>;
}
```

The code is based off of a copy of the existing API, with the documentation and examples properly modified. Currently, the most common way to perform these kinds of lookups with the existing methods is via `slice.as_chunks::<N>().0[0]` or the worse `slice.as_chunks::<N>().0[slice.len() - N]`, which is substantially less readable than `slice.first_chunk::<N>()` or `slice.last_chunk::<N>()`.

ACP: https://github.com/rust-lang/libs-team/issues/69
2023-05-25 08:01:07 +02:00
ekusiadadus
08ce68b6a6 fix: 🐛 etc/bash_complettion -> src/etc/... to avoid copy error
chore: 🎨 format dist.rs
2023-05-25 14:49:01 +09:00
Michael Goulet
dd98198972 Match on both reveal and solver mode at the same time 2023-05-25 03:35:14 +00:00
Michael Goulet
980da667fe Add InferCtxt::register_hidden_type_in_new_solver 2023-05-25 03:35:14 +00:00
Michael Goulet
97c11ffb22 Strongly prefer alias and param-env bounds 2023-05-25 03:35:14 +00:00
Michael Goulet
a2d806d56d Pre-populate MIR with opaques, prefer subst-relate candidate 2023-05-25 03:35:14 +00:00
bors
776f22292f Auto merge of #111575 - alex:patch-1, r=pietroalbini
Enable sanitizers and profiler for aarch64-unknown-linux-musl

This is pretty heavily cargo-culted, hopefully I didn't screw it up too badly.
2023-05-25 03:21:28 +00:00
Michael Goulet
e3f8beaed6 Check that opaque is a defining use, prefer pre-defined opaques 2023-05-25 03:21:22 +00:00
Michael Goulet
f3c9c21658 Prepopulate opaques in canonical input 2023-05-25 03:21:22 +00:00
Michael Goulet
a2d7ffc635 Move DefiningAnchor 2023-05-25 03:21:21 +00:00
Michael Goulet
4d80b8090c Pull out logic from #111131, plus some new logic in EvalCtxt::normalize_opaque_type
Co-authored-by: lcnr <rust@lcnr.de>
2023-05-25 03:19:15 +00:00
bors
7664dfe433 Auto merge of #111925 - Manishearth:rollup-z6z6l2v, r=Manishearth
Rollup of 5 pull requests

Successful merges:

 - #111741 (Use `ObligationCtxt` in custom type ops)
 - #111840 (Expose more information in `get_body_with_borrowck_facts`)
 - #111876 (Roll compiler_builtins to 0.1.92)
 - #111912 (Use `Option::is_some_and` and `Result::is_ok_and` in the compiler  )
 - #111915 (libtest: Improve error when missing `-Zunstable-options`)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-05-25 00:33:43 +00:00
Manish Goregaokar
8038606bf3
Rollup merge of #111915 - jyn514:libtest-errors, r=thomcc
libtest: Improve error when missing `-Zunstable-options`

"only accepted on the nightly compiler" is misleading when this *is* nightly.
2023-05-24 15:05:05 -07:00
Manish Goregaokar
d0b3ebee66
Rollup merge of #111912 - WaffleLapkin:is_some_and_in_the_compiler, r=petrochenkov
Use `Option::is_some_and` and `Result::is_ok_and` in the compiler

`.is_some_and(..)`/`.is_ok_and(..)` replace `.map_or(false, ..)` and `.map(..).unwrap_or(false)`, making the code more readable.

This PR is a sibling of https://github.com/rust-lang/rust/pull/111873#issuecomment-1561316515
2023-05-24 15:05:05 -07:00
Manish Goregaokar
33ded73c76
Rollup merge of #111876 - danakj:builtins92, r=Mark-Simulacrum
Roll compiler_builtins to 0.1.92

This pulls in the weak-intrinsics feature (which currently defaults off), and a minor version update to libm for the compiler_builtins crate to 0.2.7.
2023-05-24 15:05:04 -07:00
Manish Goregaokar
b84ab57f90
Rollup merge of #111840 - voidc:borrowck-consumers, r=oli-obk
Expose more information in `get_body_with_borrowck_facts`

Verification tools for Rust such as, for example, Creusot or Prusti would benefit from having access to more information computed by the borrow checker.
As a first step in that direction, #86977 added the `get_body_with_borrowck_facts` API, allowing compiler consumers to obtain a `mir::Body` with accompanying borrow checker information.
At RustVerify 2023, multiple people working on verification tools expressed their need for a more comprehensive API.
While eventually borrow information could be part of Stable MIR, in the meantime, this PR proposes a more limited approach, extending the existing `get_body_with_borrowck_facts` API.
In summary, we propose the following changes:

- Permit obtaining the borrow-checked body without necessarily running Polonius
- Return the `BorrowSet` and the `RegionInferenceContext` in `BodyWithBorrowckFacts`
- Provide a way to compute the `borrows_out_of_scope_at_location` map
- Make some helper methods public

This is similar to #108328 but smaller in scope.
`@smoelius` Do you think these changes would also be sufficient for your needs?

r? `@oli-obk`
cc `@JonasAlaif`
2023-05-24 15:05:04 -07:00
Manish Goregaokar
a9a4c9b3db
Rollup merge of #111741 - compiler-errors:custom-type-op, r=lcnr
Use `ObligationCtxt` in custom type ops

We already make one when evaluating the `CustomTypeOp`, so it's simpler to just pass it to the user. Removes a redundant `ObligationCtxt::new_in_snapshot` usage and simplifies some other code.

This makes several refactorings related to opaque types in the new solver simpler, but those are not included in this PR.
2023-05-24 15:05:03 -07:00
bors
096309e6dc Auto merge of #111919 - matthiaskrgr:rollup-8qcdp0q, r=matthiaskrgr
Rollup of 6 pull requests

Successful merges:

 - #111121 (Work around `rust-analyzer` false-positive type errors)
 - #111759 (Leverage the interval property to precompute borrow kill points.)
 - #111841 (Run AST validation on match guards correctly)
 - #111862 (Split out opaque collection from from `type_of`)
 - #111863 (Don't skip mir typeck if body has errors)
 - #111903 (Migrate GUI colors test to original CSS color format)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-05-24 21:56:17 +00:00
Matthias Krüger
0cc987fae2
Rollup merge of #111903 - GuillaumeGomez:migrate-gui-test-color-6, r=notriddle
Migrate GUI colors test to original CSS color format

Follow-up of https://github.com/rust-lang/rust/pull/111459.

r? `@notriddle`
2023-05-24 21:36:58 +02:00
Matthias Krüger
680f8b8efe
Rollup merge of #111863 - compiler-errors:check-more-mir, r=b-naber
Don't skip mir typeck if body has errors

Comment says:

```
// if verifier failed, don't do further checks to avoid ICEs
```

But there are no ICEs to be found. The comment is quite old, so perhaps something fixed it... maybe because the MIR typechecker is delaying span bugs rather than panicking via eager bugs? IDK

I'm generally inclined to fix the ICEs themselves that were to arise from this, rather than just totally skipping large parts of the compiler that have impacts on downstream logic (namely, our opaque type results are affected). Anyways, this happens on the error path, so it shouldn't really matter.

Fixes this hack: https://github.com/rust-lang/rust/pull/111853/files#r1201501540
2023-05-24 21:36:58 +02:00
Matthias Krüger
d09ee575ee
Rollup merge of #111862 - compiler-errors:opq, r=lcnr
Split out opaque collection from from `type_of`

requested by lcnr

r? `@lcnr`
2023-05-24 21:36:57 +02:00
Matthias Krüger
092352f6fd
Rollup merge of #111841 - matthewjasper:validate-match-guards, r=compiler-errors
Run AST validation on match guards correctly

AST validation was being skipped on match guards other than `if let` guards.
2023-05-24 21:36:57 +02:00
Matthias Krüger
52890cc719
Rollup merge of #111759 - cjgillot:interval-kill, r=b-naber
Leverage the interval property to precompute borrow kill points.
2023-05-24 21:36:56 +02:00
Matthias Krüger
09489b9137
Rollup merge of #111121 - Zalathar:ra-false-positive, r=jackh726
Work around `rust-analyzer` false-positive type errors

rust-analyzer incorrectly reports two type errors in `debug.rs`:

> expected &dyn Display, found &i32
> expected &dyn Display, found &i32

This is due to a known bug in r-a: (https://github.com/rust-lang/rust-analyzer/issues/11847).

In these particular cases, changing `&0` to `&0i32` seems to be enough to avoid the bug.
2023-05-24 21:36:56 +02:00
Camille GILLOT
9a7ed3625f Emit diagnostic for privately uninhabited uncovered witnesses. 2023-05-24 19:16:07 +00:00
bors
c373194cb6 Auto merge of #111260 - petrochenkov:effvisperf7, r=cjgillot
rustc_privacy: Cleanups and perf improvements to `EmbargoVisitor`

Continuation of https://github.com/rust-lang/rust/pull/110907.
2023-05-24 19:02:19 +00:00
Michael Goulet
d7ccbdd696 Split out opaque from type_of 2023-05-24 17:23:58 +00:00