about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorLines
2023-05-26Validate fluent variable references with `debug_assertions`clubby789-7/+106
2023-05-26Auto merge of #111918 - compiler-errors:custom-type-ops-err, r=lcnrbors-159/+158
Use `ErrorGuaranteed` more in MIR type ops Delay bugs more eagerly and pass them through type op infra instead of delaying them at all the usage-sites. Follow up to: https://github.com/rust-lang/rust/pull/111741#discussion_r1203840588 r? `@lcnr`
2023-05-26Auto merge of #111858 - clubby789:fluent-alphabetical, r=jyn514,compiler-errorsbors-3947/+4022
Ensure Fluent messages are in alphabetical order Fixes #111847 This adds a tidy check to ensure Fluent messages are in alphabetical order, as well as sorting all existing messages. I think the error could be worded better, would appreciate suggestions. <details> <summary>Script used to sort files</summary> ```py import sys import re fn = sys.argv[1] with open(fn, 'r') as f: data = f.read().split("\n") chunks = [] cur = "" for line in data: if re.match(r"^([a-zA-Z0-9_]+)\s*=\s*", line): chunks.append(cur) cur = "" cur += line + "\n" chunks.append(cur) chunks.sort() with open(fn, 'w') as f: f.write(''.join(chunks).strip("\n\n") + "\n") ``` </details>
2023-05-25Ensure Fluent messages are in alphabetical orderclubby789-3947/+4022
2023-05-25Auto merge of #111960 - compiler-errors:rollup-onka2dl, r=compiler-errorsbors-411/+856
Rollup of 7 pull requests Successful merges: - #107522 (Add Median of Medians fallback to introselect) - #111152 (update `pulldown-cmark` to `0.9.3`) - #111757 (Consider lint check attributes on match arms) - #111831 (Always capture slice when pattern requires checking the length) - #111929 (Don't print newlines in APITs) - #111945 (Migrate GUI colors test to original CSS color format) - #111950 (Remove ExpnKind::Inlined.) r? `@ghost` `@rustbot` modify labels: rollup
2023-05-25Rollup merge of #111950 - cjgillot:expn-noinline, r=oli-obkMichael Goulet-57/+29
Remove ExpnKind::Inlined. Suggested in https://github.com/rust-lang/rust/pull/111815#issuecomment-1561903339 r? ``@oli-obk``
2023-05-25Rollup merge of #111945 - GuillaumeGomez:migrate-gui-test-color-7, r=notriddleMichael Goulet-42/+42
Migrate GUI colors test to original CSS color format Follow-up of https://github.com/rust-lang/rust/pull/111459. r? ``@notriddle``
2023-05-25Rollup merge of #111929 - compiler-errors:no-newline-apit, r=wesleywiserMichael Goulet-1/+54
Don't print newlines in APITs This is kind of a hack, but it gets the job done because the only "special" formatting that (afaict) `rustc_ast_pretty` does is break with newlines sometimes. Fixes rust-lang/measureme#207
2023-05-25Rollup merge of #111831 - clubby789:capture-slice-pat, r=cjgillotMichael Goulet-91/+209
Always capture slice when pattern requires checking the length Fixes #111751 cc ``@zirconium-n,`` I see you were assigned to this but I've fixed some similar issues in the past and had an idea on how to investigate this.
2023-05-25Rollup merge of #111757 - lowr:fix/lint-attr-on-match-arm, r=eholkMichael Goulet-64/+170
Consider lint check attributes on match arms Currently, lint check attributes on match arms have no effect for some lints. This PR makes some lint passes to take those attributes into account. - `LateContextAndPass` for late lint doesn't update `last_node_with_lint_attrs` when it visits match arms. This leads to lint check attributes on match arms taking no effects on late lints that operate on the arms' pattern: ```rust match value { #[deny(non_snake_case)] PAT => {} // `non_snake_case` only warned due to default lint level } ``` To be honest, I'm not sure whether this is intentional or just an oversight. I've dug the implementation history and searched up issues/PRs but couldn't find any discussion on this. - `MatchVisitor` doesn't update its lint level when it visits match arms. This leads to check lint attributes on match arms taking no effect on some lints handled by this visitor, namely: `bindings_with_variant_name` and `irrefutable_let_patterns`. This seems to be a fallout from #108504. Before 05082f57afbf5d2e8fd7fb67719336d78b58e759, when the visitor operated on HIR rather than THIR, check lint attributes for the said lints were effective. [This playground][play] compiles successfully on current stable (1.69) but fails on current beta and nightly. I wasn't sure where best to place the test for this. Let me know if there's a better place. [play]: https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=38432b79e535cb175f8f7d6d236d29c3 [play-match]: https://play.rust-lang.org/?version=beta&mode=debug&edition=2021&gist=629aa71b7c84b269beadeba664e2221d
2023-05-25Rollup merge of #111152 - lukas-code:markdown-parsers-are-hard, r=GuillaumeGomezMichael Goulet-16/+41
update `pulldown-cmark` to `0.9.3` This PR updates `pulldown-cmark` to version `0.9.3`, which does two main things: * Pulls in https://github.com/raphlinus/pulldown-cmark/pull/643 to fix https://github.com/rust-lang/rust/issues/111117 * Allows parsing strikethrough with single tildes, e.g. `~foo~` -> ~foo~. This matches the [GFM spec](https://github.github.com/gfm/#strikethrough-extension-). Full changelog: https://github.com/raphlinus/pulldown-cmark/pull/646
2023-05-25Rollup merge of #107522 - Sp00ph:introselect, r=AmanieuMichael Goulet-140/+311
Add Median of Medians fallback to introselect Fixes #102451. This PR is a follow up to #106997. It adds a Fast Deterministic Selection implementation as a fallback to the introselect algorithm used by `select_nth_unstable`. This allows it to guarantee O(n) worst case running time, while maintaining good performance in all cases. This would fix #102451, which was opened because the `select_nth_unstable` docs falsely claimed that it had O(n) worst case performance, even though it was actually quadratic in the worst case. #106997 improved the worst case complexity to O(n log n) by using heapsort as a fallback, and this PR further improves it to O(n) (this would also make #106933 unnecessary). It also improves the actual runtime if the fallback gets called: Using a pathological input of size `1 << 19` (see the playground link in #102451), calculating the median is roughly 3x faster using fast deterministic selection as a fallback than it is using heapsort. The downside to this is less code reuse between the sorting and selection algorithms, but I don't think it's that bad. The additional algorithms are ~250 LOC with no `unsafe` blocks (I tried using unsafe to avoid bounds checks but it didn't noticeably improve the performance). I also let it fuzz for a while against the current `select_nth_unstable` implementation to ensure correctness, and it seems to still fulfill all the necessary postconditions. cc `@scottmcm` who reviewed #106997
2023-05-25Fallible<_> -> Result<_, NoSolution>Michael Goulet-53/+55
2023-05-25Use ErrorGuaranteed more in MIR type opsMichael Goulet-107/+104
2023-05-25Always capture slice when pattern requires checking the lengthclubby789-91/+209
2023-05-25Auto merge of #86844 - bjorn3:global_alloc_improvements, r=pnkfelixbors-217/+358
Support #[global_allocator] without the allocator shim This makes it possible to use liballoc/libstd in combination with `--emit obj` if you use `#[global_allocator]`. This is what rust-for-linux uses right now and systemd may use in the future. Currently they have to depend on the exact implementation of the allocator shim to create one themself as `--emit obj` doesn't create an allocator shim. Note that currently the allocator shim also defines the oom error handler, which is normally required too. Once `#![feature(default_alloc_error_handler)]` becomes the only option, this can be avoided. In addition when using only fallible allocator methods and either `--cfg no_global_oom_handling` for liballoc (like rust-for-linux) or `--gc-sections` no references to the oom error handler will exist. To avoid this feature being insta-stable, you will have to define `__rust_no_alloc_shim_is_unstable` to avoid linker errors. (Labeling this with both T-compiler and T-lang as it originally involved both an implementation detail and had an insta-stable user facing change. As noted above, the `__rust_no_alloc_shim_is_unstable` symbol requirement should prevent unintended dependence on this unstable feature.)
2023-05-25Manually add inlined frames in the interpreter stacktrace.Camille GILLOT-6/+22
2023-05-25Remove ExpnKind::Inlined.Camille GILLOT-51/+7
2023-05-25Auto merge of #111512 - petrochenkov:microdoc2, r=GuillaumeGomezbors-84/+51
rustdoc: Cleanup doc string collapsing `doc_value` and (former) `collapsed_doc_value` can be implemented in terms of each other, and `doc_value` doesn't need the `Option`. This PR doesn't do any semantic changes, only refactoring, although some pre-existing choices between `doc_value` and `collapsed_doc_value` across rustdoc may be questionable.
2023-05-25rustdoc book: document single tilde strikethroughLukas Markeffsky-3/+3
2023-05-25rustdoc: add test for strikethrough with single tildesLukas Markeffsky-9/+10
Also merge the two almost identical strikethrough tests together and document what the test tests.
2023-05-25Migrate GUI colors test to original CSS color formatGuillaume Gomez-42/+42
2023-05-25Auto merge of #110906 - ekusiadadus:ekusiadadus/fix-bash-complete-etc, ↵bors-1/+5
r=albertlarsan68 fix: :bug: 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-25Auto merge of #111473 - compiler-errors:opaques, r=lcnrbors-189/+658
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-25Auto merge of #111933 - matthiaskrgr:rollup-m10k3ts, r=matthiaskrgrbors-17/+313
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-25Rollup merge of #111875 - WaffleLapkin:defer_on_drop, r=NilstriebMatthias Krüger-15/+21
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-25Rollup merge of #111624 - cjgillot:private-uninhabited-pattern, r=petrochenkovMatthias Krüger-1/+33
Emit diagnostic for privately uninhabited uncovered witnesses. Fixes https://github.com/rust-lang/rust/issues/104034 cc `@Nadrieril`
2023-05-25Rollup merge of #109899 - daxpedda:patch-1, r=jackh726Matthias Krüger-1/+1
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-25Rollup merge of #95198 - clarfonthey:get_chunk, r=scottmcmMatthias Krüger-0/+258
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-25fix: :bug: etc/bash_complettion -> src/etc/... to avoid copy errorekusiadadus-1/+5
chore: :art: format dist.rs
2023-05-25Match on both reveal and solver mode at the same timeMichael Goulet-41/+38
2023-05-25Add InferCtxt::register_hidden_type_in_new_solverMichael Goulet-41/+47
2023-05-25Strongly prefer alias and param-env boundsMichael Goulet-32/+78
2023-05-25Pre-populate MIR with opaques, prefer subst-relate candidateMichael Goulet-28/+87
2023-05-25Auto merge of #111575 - alex:patch-1, r=pietroalbinibors-3/+13
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-25Check that opaque is a defining use, prefer pre-defined opaquesMichael Goulet-14/+127
2023-05-25Prepopulate opaques in canonical inputMichael Goulet-81/+243
2023-05-25Move DefiningAnchorMichael Goulet-27/+34
2023-05-25Pull out logic from #111131, plus some new logic in ↵Michael Goulet-43/+122
EvalCtxt::normalize_opaque_type Co-authored-by: lcnr <rust@lcnr.de>
2023-05-25Don't print newlines in APITsMichael Goulet-1/+54
2023-05-25Auto merge of #111925 - Manishearth:rollup-z6z6l2v, r=Manishearthbors-378/+417
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-24Rollup merge of #111915 - jyn514:libtest-errors, r=thomccManish Goregaokar-3/+3
libtest: Improve error when missing `-Zunstable-options` "only accepted on the nightly compiler" is misleading when this *is* nightly.
2023-05-24Rollup merge of #111912 - WaffleLapkin:is_some_and_in_the_compiler, ↵Manish Goregaokar-246/+201
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-24Rollup merge of #111876 - danakj:builtins92, r=Mark-SimulacrumManish Goregaokar-3/+3
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-24Rollup merge of #111840 - voidc:borrowck-consumers, r=oli-obkManish Goregaokar-66/+144
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-24Rollup merge of #111741 - compiler-errors:custom-type-op, r=lcnrManish Goregaokar-60/+66
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-24Auto merge of #111919 - matthiaskrgr:rollup-8qcdp0q, r=matthiaskrgrbors-428/+661
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-24Rollup merge of #111903 - GuillaumeGomez:migrate-gui-test-color-6, r=notriddleMatthias Krüger-6/+6
Migrate GUI colors test to original CSS color format Follow-up of https://github.com/rust-lang/rust/pull/111459. r? `@notriddle`
2023-05-24Rollup merge of #111863 - compiler-errors:check-more-mir, r=b-naberMatthias Krüger-27/+9
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-24Rollup merge of #111862 - compiler-errors:opq, r=lcnrMatthias Krüger-305/+303
Split out opaque collection from from `type_of` requested by lcnr r? `@lcnr`