]> git.lizzy.rs Git - rust.git/log
rust.git
2 years agoRemove the source archive functionality of ArchiveWriter
bjorn3 [Tue, 14 Jun 2022 15:16:51 +0000 (15:16 +0000)]
Remove the source archive functionality of ArchiveWriter

We now build archives through strictly additive means rather than taking
an existing archive and potentially substracting parts.

2 years agoFix "Remove src_files and remove_file"
bjorn3 [Sat, 18 Jun 2022 17:55:24 +0000 (17:55 +0000)]
Fix "Remove src_files and remove_file"

2 years agoRemove src_files and remove_file
bjorn3 [Tue, 14 Jun 2022 15:11:14 +0000 (15:11 +0000)]
Remove src_files and remove_file

They only apply to the main source archive and their role can be
fulfilled through the skip argument of add_archive too.

2 years agoInline ArchiveConfig struct into LlvmArchiveBuilder
bjorn3 [Tue, 14 Jun 2022 14:33:48 +0000 (14:33 +0000)]
Inline ArchiveConfig struct into LlvmArchiveBuilder

2 years agoAuto merge of #98041 - jackh726:remove-regionckmode, r=oli-obk
bors [Tue, 14 Jun 2022 05:07:11 +0000 (05:07 +0000)]
Auto merge of #98041 - jackh726:remove-regionckmode, r=oli-obk

Remove RegionckMode in favor of calling new skip_region_resolution

Simple cleanup. We can skip a bunch of stuff for places where NLL does the region checking, so skip earlier.

r? rust-lang/types

2 years agoAuto merge of #98040 - calebcartwright:sync-rustfmt, r=calebcartwright
bors [Tue, 14 Jun 2022 02:17:38 +0000 (02:17 +0000)]
Auto merge of #98040 - calebcartwright:sync-rustfmt, r=calebcartwright

Sync rustfmt subtree

2 years agoAuto merge of #98075 - JohnTitor:rollup-nqwodnk, r=JohnTitor
bors [Mon, 13 Jun 2022 23:36:51 +0000 (23:36 +0000)]
Auto merge of #98075 - JohnTitor:rollup-nqwodnk, r=JohnTitor

Rollup of 4 pull requests

Successful merges:

 - #95211 (Improve parser diagnostics)
 - #95243 (Add Apple WatchOS compile targets)
 - #97385 (Add WIP stable MIR crate)
 - #97508 (Harden bad placeholder checks on statics/consts)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoRollup merge of #97508 - JohnTitor:more-strict-placeholder-dyn-obj, r=pnkfelix
Yuki Okushi [Mon, 13 Jun 2022 22:47:25 +0000 (07:47 +0900)]
Rollup merge of #97508 - JohnTitor:more-strict-placeholder-dyn-obj, r=pnkfelix

Harden bad placeholder checks on statics/consts

Resubmission of #89161
Fixes https://github.com/rust-lang/rust/issues/88643

In #83739, I added a check for trait objects on statics/consts but it wasn't robust. `is_suggestable_infer_ty` fn does a more strict check and finds more bad placeholders. See https://github.com/rust-lang/rust/pull/89161#issuecomment-934690300 for the more detailed explanation.

r? `@pnkfelix` as you're the reviewer of the previous PR

2 years agoRollup merge of #97385 - oli-obk:smir-tool-lib, r=pnkfelix
Yuki Okushi [Mon, 13 Jun 2022 22:47:24 +0000 (07:47 +0900)]
Rollup merge of #97385 - oli-obk:smir-tool-lib, r=pnkfelix

Add WIP stable MIR crate

r? ``@pnkfelix``

Discussion about this happend in the SMIR meeting yesterday. Some info can be found at https://rust-lang.zulipchat.com/#narrow/stream/320896-project-stable-mir/topic/dev.20plan.20mtg/near/283774691

2 years agoRollup merge of #95243 - vladimir-ea:compiler_watch_os, r=nagisa
Yuki Okushi [Mon, 13 Jun 2022 22:47:23 +0000 (07:47 +0900)]
Rollup merge of #95243 - vladimir-ea:compiler_watch_os, r=nagisa

Add Apple WatchOS compile targets

Hello,

I would like to add the following target triples for Apple WatchOS as Tier 3 platforms:

armv7k-apple-watchos
arm64_32-apple-watchos
x86_64-apple-watchos-sim
There are some pre-requisites Pull Requests:
https://github.com/rust-lang/compiler-builtins/pull/456 (merged)
https://github.com/alexcrichton/cc-rs/pull/662 (pending)
https://github.com/rust-lang/libc/pull/2717 (merged)

There will be a subsequent PR with standard library changes for WatchOS.  Previous compiler and library changes were in a single PR (https://github.com/rust-lang/rust/pull/94736) which is now closed in favour of separate PRs.

Many thanks!
Vlad.

### Tier 3 Target Requirements

Adds support for Apple WatchOS compile targets.

Below are details on how this target meets the requirements for tier 3:

>   tier 3 target must have a designated developer or developers (the "target maintainers") on record to be CCed when issues arise regarding the target. (The mechanism to track and CC such developers may evolve over time.)

`@deg4uss3r` has volunteered to be the target maintainer. I am also happy to help if a second maintainer is required.

> Targets must use naming consistent with any existing targets; for instance, a target for the same CPU or OS as an existing Rust target should use the same name for that CPU or OS. Targets should normally use the same names and naming conventions as used elsewhere in the broader ecosystem beyond Rust (such as in other toolchains), unless they have a very good reason to diverge. Changing the name of a target can be highly disruptive, especially once the target reaches a higher tier, so getting the name right is important even for a tier 3 target.

Uses the same naming as the LLVM target, and the same convention as other Apple targets.

> Target names should not introduce undue confusion or ambiguity unless absolutely necessary to maintain ecosystem compatibility. For example, if the name of the target makes people extremely likely to form incorrect beliefs about what it targets, the name should be changed or augmented to disambiguate it.

I don't believe there is any ambiguity here.

> Tier 3 targets may have unusual requirements to build or use, but must not create legal issues or impose onerous legal terms for the Rust project or for Rust developers or users.

I don't see any legal issues here.

> The target must not introduce license incompatibilities.
> Anything added to the Rust repository must be under the standard Rust license (MIT OR Apache-2.0).
> The target must not cause the Rust tools or libraries built for any other host (even when supporting cross-compilation to the target) to depend on any new dependency less permissive than the Rust licensing policy. This applies whether the dependency is a Rust crate that would require adding new license exceptions (as specified by the tidy tool in the rust-lang/rust repository), or whether the dependency is a native library or binary. In other words, the introduction of the target must not cause a user installing or running a version of Rust or the Rust tools to be subject to any new license requirements.
> If the target supports building host tools (such as rustc or cargo), those host tools must not depend on proprietary (non-FOSS) libraries, other than ordinary runtime libraries supplied by the platform and commonly used by other binaries built for the target. For instance, rustc built for the target may depend on a common proprietary C runtime library or console output library, but must not depend on a proprietary code generation library or code optimization library. Rust's license permits such combinations, but the Rust project has no interest in maintaining such combinations within the scope of Rust itself, even at tier 3.
> Targets should not require proprietary (non-FOSS) components to link a functional binary or library.
> "onerous" here is an intentionally subjective term. At a minimum, "onerous" legal/licensing terms include but are not limited to: non-disclosure requirements, non-compete requirements, contributor license agreements (CLAs) or equivalent, "non-commercial"/"research-only"/etc terms, requirements conditional on the employer or employment of any particular Rust developers, revocable terms, any requirements that create liability for the Rust project or its developers or users, or any requirements that adversely affect the livelihood or prospects of the Rust project or its developers or users.

I see no issues with any of the above.

> Neither this policy nor any decisions made regarding targets shall create any binding agreement or estoppel by any party. If any member of an approving Rust team serves as one of the maintainers of a target, or has any legal or employment requirement (explicit or implicit) that might affect their decisions regarding a target, they must recuse themselves from any approval decisions regarding the target's tier status, though they may otherwise participate in discussions.
> This requirement does not prevent part or all of this policy from being cited in an explicit contract or work agreement (e.g. to implement or maintain support for a target). This requirement exists to ensure that a developer or team responsible for reviewing and approving a target does not face any legal threats or obligations that would prevent them from freely exercising their judgment in such approval, even if such judgment involves subjective matters or goes beyond the letter of these requirements.

Only relevant to those making approval decisions.

> Tier 3 targets should attempt to implement as much of the standard libraries as possible and appropriate (core for most targets, alloc for targets that can support dynamic memory allocation, std for targets with an operating system or equivalent layer of system-provided functionality), but may leave some code unimplemented (either unavailable or stubbed out as appropriate), whether because the target makes it impossible to implement or challenging to implement. The authors of pull requests are not obligated to avoid calling any portions of the standard library on the basis of a tier 3 target not implementing those portions.

core and alloc can be used. std support will be added in a subsequent PR.

> The target must provide documentation for the Rust community explaining how to build for the target, using cross-compilation if possible. If the target supports running tests (even if they do not pass), the documentation must explain how to run tests for the target, using emulation if possible or dedicated hardware if necessary.

Use --target=<target> option to cross compile, just like any target. Tests can be run using the WatchOS simulator (see https://developer.apple.com/documentation/xcode/running-your-app-in-the-simulator-or-on-a-device).

> Tier 3 targets must not impose burden on the authors of pull requests, or other developers in the community, to maintain the target. In particular, do not post comments (automated or manual) on a PR that derail or suggest a block on the PR based on a tier 3 target. Do not send automated messages or notifications (via any medium, including via `@)` to a PR author or others involved with a PR regarding a tier 3 target, unless they have opted into such messages.
> Backlinks such as those generated by the issue/PR tracker when linking to an issue or PR are not considered a violation of this policy, within reason. However, such messages (even on a separate repository) must not generate notifications to anyone involved with a PR who has not requested such notifications.

I don't foresee this being a problem.

> Patches adding or updating tier 3 targets must not break any existing tier 2 or tier 1 target, and must not knowingly break another tier 3 target without approval of either the compiler team or the maintainers of the other tier 3 target.
> In particular, this may come up when working on closely related targets, such as variations of the same architecture with different features. Avoid introducing unconditional uses of features that another variation of the target may not have; use conditional compilation or runtime detection, as appropriate, to let each target run code supported by that target.

No other targets should be affected by the pull request.

2 years agoRollup merge of #95211 - terrarier2111:improve-parser, r=compiler-errors
Yuki Okushi [Mon, 13 Jun 2022 22:47:22 +0000 (07:47 +0900)]
Rollup merge of #95211 - terrarier2111:improve-parser, r=compiler-errors

Improve parser diagnostics

This pr fixes https://github.com/rust-lang/rust/issues/93867 and contains a couple of diagnostics related changes to the parser.
Here is a short list with some of the changes:
- don't suggest the same thing that is the current token
- suggest removing the current token if the following token is one of the suggestions (maybe incorrect)
- tell the user to put a type or lifetime after where if there is none (as a warning)
- reduce the amount of tokens suggested (via the new eat_noexpect and check_noexpect methods)

If any of these changes are undesirable, i can remove them, thanks!

2 years agodeps: add clap to workspace hack
Caleb Cartwright [Mon, 13 Jun 2022 22:01:44 +0000 (17:01 -0500)]
deps: add clap to workspace hack

2 years agoAuto merge of #98066 - matthiaskrgr:rollup-wb9gs92, r=matthiaskrgr
bors [Mon, 13 Jun 2022 19:36:41 +0000 (19:36 +0000)]
Auto merge of #98066 - matthiaskrgr:rollup-wb9gs92, r=matthiaskrgr

Rollup of 10 pull requests

Successful merges:

 - #97709 (Normalize consts' tys when relating with `adt_const_params`)
 - #97875 (Remove the `infer_static_outlives_requirements` feature)
 - #97960 (interpret: unify offset_from check with offset check)
 - #97999 (Make `type_changing_struct_update` no longer an incomplete feature)
 - #98043 (Remove unnecessary `to_string` and `String::new`)
 - #98044 ([issues:97981] del unrelated comment)
 - #98049 (Document an edge case of `str::split_once`)
 - #98050 (Add some more regression tests for #67945)
 - #98054 (Fix error message for `download-ci-llvm`)
 - #98057 (Update miri)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoRollup merge of #98057 - oli-obk:miri_ui_test, r=oli-obk
Matthias Krüger [Mon, 13 Jun 2022 19:36:01 +0000 (21:36 +0200)]
Rollup merge of #98057 - oli-obk:miri_ui_test, r=oli-obk

Update miri

r? ``@ghost``

fixes #98036

2 years agoRollup merge of #98054 - ferrocene:pa-fix-llvm-download-spaces, r=jyn514
Matthias Krüger [Mon, 13 Jun 2022 19:36:00 +0000 (21:36 +0200)]
Rollup merge of #98054 - ferrocene:pa-fix-llvm-download-spaces, r=jyn514

Fix error message for `download-ci-llvm`

The error message when `download-ci-llvm` fails includes too many newlines right now:

```
curl: (22) The requested URL returned error: 404

error: failed to download llvm from ci

help: old builds get deleted after a certain time

help: if trying to compile an old commit of rustc, disable `download-ci-llvm` in config.toml:

[llvm]

download-ci-llvm = false

Build completed unsuccessfully in 0:01:15
```

This PR fixes the message to include the right amount of newlines:

```
curl: (22) The requested URL returned error: 404

error: failed to download llvm from ci

help: old builds get deleted after a certain time
help: if trying to compile an old commit of rustc, disable `download-ci-llvm` in config.toml:

[llvm]
download-ci-llvm = false

Build completed unsuccessfully in 0:00:07
```

r? `@jyn514`

2 years agoRollup merge of #98050 - JohnTitor:issue-67945, r=compiler-errors
Matthias Krüger [Mon, 13 Jun 2022 19:35:58 +0000 (21:35 +0200)]
Rollup merge of #98050 - JohnTitor:issue-67945, r=compiler-errors

Add some more regression tests for #67945

Closes #67945, added two tests from https://github.com/rust-lang/rust/issues/67945#issuecomment-572617285, other snippets were already added in #71952 and #77439
r? `@compiler-errors`

2 years agoRollup merge of #98049 - imbolc:patch-3, r=Dylan-DPC
Matthias Krüger [Mon, 13 Jun 2022 19:35:58 +0000 (21:35 +0200)]
Rollup merge of #98049 - imbolc:patch-3, r=Dylan-DPC

Document an edge case of `str::split_once`

2 years agoRollup merge of #98044 - dust1:master, r=Dylan-DPC
Matthias Krüger [Mon, 13 Jun 2022 19:35:57 +0000 (21:35 +0200)]
Rollup merge of #98044 - dust1:master, r=Dylan-DPC

[issues:97981] del unrelated comment

fixes https://github.com/rust-lang/rust/issues/97981
summary: del unrelated comment

2 years agoRollup merge of #98043 - TaKO8Ki:remove-unnecessary-to-string, r=davidtwco
Matthias Krüger [Mon, 13 Jun 2022 19:35:56 +0000 (21:35 +0200)]
Rollup merge of #98043 - TaKO8Ki:remove-unnecessary-to-string, r=davidtwco

Remove unnecessary `to_string` and `String::new`

https://github.com/rust-lang/rust/pull/96468/commits/73fa217bc11fbac76f730223f6766c8e03513b5e changed the type of the `suggestion` argument to `impl ToString`. This patch removes unnecessary `to_string` and `String::new`.

cc: `````@davidtwco`````

2 years agoRollup merge of #97999 - compiler-errors:type_changin_struct_update_is_probably_compl...
Matthias Krüger [Mon, 13 Jun 2022 19:35:56 +0000 (21:35 +0200)]
Rollup merge of #97999 - compiler-errors:type_changin_struct_update_is_probably_complete, r=oli-obk

Make `type_changing_struct_update` no longer an incomplete feature

After #97705, I don't see what would make it incomplete anymore. `check_expr_struct_fields` seems to now implement the RFC to the letter.

r? ``````@nikomatsakis``````
cc ``````@rust-lang/types``````

2 years agoRollup merge of #97960 - RalfJung:offset-from, r=oli-obk
Matthias Krüger [Mon, 13 Jun 2022 19:35:55 +0000 (21:35 +0200)]
Rollup merge of #97960 - RalfJung:offset-from, r=oli-obk

interpret: unify offset_from check with offset check

`offset` does the check with a single `check_ptr_access` call while `offset_from` used two calls. Make them both just one one call.

I originally intended to actually factor this into a common function, but I am no longer sure if that makes a lot of sense... the two functions start with pretty different precondition (e.g. `offset` *knows* that the 2nd pointer has the same provenance).

I also reworded the UB messages a little. Saying it "cannot" do something is not how we usually phrase UB (as far as I know). Instead it's not *allowed* to do that.

r? ``````@oli-obk``````

2 years agoRollup merge of #97875 - JohnTitor:rm-infer-static-outlives-requirements, r=pnkfelix
Matthias Krüger [Mon, 13 Jun 2022 19:35:54 +0000 (21:35 +0200)]
Rollup merge of #97875 - JohnTitor:rm-infer-static-outlives-requirements, r=pnkfelix

Remove the `infer_static_outlives_requirements` feature

Closes #54185
r? ``@pnkfelix``

2 years agoRollup merge of #97709 - compiler-errors:normalize-const-param-ty, r=oli-obk
Matthias Krüger [Mon, 13 Jun 2022 19:35:53 +0000 (21:35 +0200)]
Rollup merge of #97709 - compiler-errors:normalize-const-param-ty, r=oli-obk

Normalize consts' tys when relating with `adt_const_params`

Fixes #97007

2 years agoAdd Apple WatchOS compile targets
Vladimir Michael Eatwell [Wed, 23 Mar 2022 14:54:58 +0000 (14:54 +0000)]
Add Apple WatchOS compile targets

2 years agoUpdate miri
Oli Scherer [Mon, 13 Jun 2022 14:36:44 +0000 (14:36 +0000)]
Update miri

2 years agofix error message for download-ci-llvm
Pietro Albini [Mon, 13 Jun 2022 13:17:19 +0000 (15:17 +0200)]
fix error message for download-ci-llvm

2 years agoAdd some more regression tests for #67945
Yuki Okushi [Mon, 13 Jun 2022 10:51:51 +0000 (19:51 +0900)]
Add some more regression tests for #67945

2 years agoUpdate variance-object-types.stderr
Yoke [Mon, 13 Jun 2022 10:51:28 +0000 (18:51 +0800)]
Update variance-object-types.stderr

2 years agoDocument an edge case of `str::split_once`
Imbolc [Mon, 13 Jun 2022 10:35:49 +0000 (13:35 +0300)]
Document an edge case of `str::split_once`

2 years agoremove use Cell in variance-object-types.rs
Yoke [Mon, 13 Jun 2022 10:25:49 +0000 (18:25 +0800)]
remove use Cell in variance-object-types.rs

2 years agodel unrelated comment
Yoke [Mon, 13 Jun 2022 09:20:24 +0000 (17:20 +0800)]
del unrelated comment

issues97981

2 years agoremove unnecessary `to_string` and `String::new` for `tool_only_span_suggestion`
Takayuki Maeda [Mon, 13 Jun 2022 07:01:16 +0000 (16:01 +0900)]
remove unnecessary `to_string` and `String::new` for `tool_only_span_suggestion`

2 years agoremove unnecessary `to_string` and `String::new`
Takayuki Maeda [Mon, 13 Jun 2022 06:48:40 +0000 (15:48 +0900)]
remove unnecessary `to_string` and `String::new`

2 years agoRemove RegionckMode in favor of calling new skip_region_resolution
Jack Huey [Mon, 13 Jun 2022 05:11:16 +0000 (01:11 -0400)]
Remove RegionckMode in favor of calling new skip_region_resolution

2 years agoAuto merge of #98038 - TaKO8Ki:remove-unnecessary-space-in-doc, r=compiler-errors
bors [Mon, 13 Jun 2022 04:26:05 +0000 (04:26 +0000)]
Auto merge of #98038 - TaKO8Ki:remove-unnecessary-space-in-doc, r=compiler-errors

Remove an unnecessary space in doc

2 years agoupdate rustfmt version
Caleb Cartwright [Mon, 13 Jun 2022 03:04:54 +0000 (22:04 -0500)]
update rustfmt version

2 years agoMerge commit '7b73b60faca71d01d900e49831fcb84553e93019' into sync-rustfmt
Caleb Cartwright [Mon, 13 Jun 2022 03:03:05 +0000 (22:03 -0500)]
Merge commit '7b73b60faca71d01d900e49831fcb84553e93019' into sync-rustfmt

2 years agochore: prep v1.5.0 release
Caleb Cartwright [Mon, 13 Jun 2022 02:04:12 +0000 (21:04 -0500)]
chore: prep v1.5.0 release

2 years agoAuto merge of #98037 - compiler-errors:rollup-fbvy456, r=compiler-errors
bors [Mon, 13 Jun 2022 01:45:16 +0000 (01:45 +0000)]
Auto merge of #98037 - compiler-errors:rollup-fbvy456, r=compiler-errors

Rollup of 3 pull requests

Successful merges:

 - #97920 (Fix some test annotations)
 - #97950 (Clarify `#[derive(PartialEq)]` on enums)
 - #98011 (Add documentation for error E0208)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoremove an unnecessary space in doc
Takayuki Maeda [Mon, 13 Jun 2022 00:51:13 +0000 (09:51 +0900)]
remove an unnecessary space in doc

2 years agoRollup merge of #98011 - onlineSoftwareDevOK:long-error-explanation-e0208, r=Guillaum...
Michael Goulet [Mon, 13 Jun 2022 00:35:42 +0000 (17:35 -0700)]
Rollup merge of #98011 - onlineSoftwareDevOK:long-error-explanation-e0208, r=GuillaumeGomez

Add documentation for error E0208

Related to https://github.com/rust-lang/rust/issues/61137

2 years agoRollup merge of #97950 - eggyal:issue-97945, r=Dylan-DPC
Michael Goulet [Mon, 13 Jun 2022 00:35:41 +0000 (17:35 -0700)]
Rollup merge of #97950 - eggyal:issue-97945, r=Dylan-DPC

Clarify `#[derive(PartialEq)]` on enums

Fixes #97945

2 years agoRollup merge of #97920 - bjorn3:test_annotation_fixes, r=Dylan-DPC
Michael Goulet [Mon, 13 Jun 2022 00:35:40 +0000 (17:35 -0700)]
Rollup merge of #97920 - bjorn3:test_annotation_fixes, r=Dylan-DPC

Fix some test annotations

These are necessary for running the rustc test suite with cg_clif.

2 years agoAuto merge of #98020 - TaKO8Ki:use-create-snapshot-for-diagnostic-in-rustc-expand...
bors [Sun, 12 Jun 2022 23:25:35 +0000 (23:25 +0000)]
Auto merge of #98020 - TaKO8Ki:use-create-snapshot-for-diagnostic-in-rustc-expand, r=Dylan-DPC

Use `create_snapshot_for_diagnostic` instead of `clone` for `Parser`

Use [`create_snapshot_for_diagnostic`](https://github.com/rust-lang/rust/blob/cd119057160cedea245aa2679add56723f3dc784/compiler/rustc_parse/src/parser/diagnostics.rs#L214-L223) I implemented in https://github.com/rust-lang/rust/pull/94731 instead of `clone` to avoid duplicate unclosed delims errors being emitted when the `Parser` is dropped. I missed this one in #95068.

2 years agoAdd comment for internal error codes
onlinesoftwaredevok [Sun, 12 Jun 2022 22:52:49 +0000 (19:52 -0300)]
Add comment for internal error codes

2 years agoAuto merge of #98018 - scottmcm:miri-yeet, r=RalfJung
bors [Sun, 12 Jun 2022 20:44:58 +0000 (20:44 +0000)]
Auto merge of #98018 - scottmcm:miri-yeet, r=RalfJung

Try out `yeet` in the MIR interpreter

Since we got a new bootstrap, we can give this a shot.

r? `@oli-obk`

2 years agoAuto merge of #97833 - tmiasko:borrowed-locals, r=nagisa
bors [Sun, 12 Jun 2022 17:56:54 +0000 (17:56 +0000)]
Auto merge of #97833 - tmiasko:borrowed-locals, r=nagisa

Remove duplicated implementations of borrowed locals analysis

2 years agoImproves parser diagnostics, fixes #93867
threadexception [Sun, 1 May 2022 17:05:35 +0000 (19:05 +0200)]
Improves parser diagnostics, fixes #93867

2 years agoFix some test annotations
bjorn3 [Thu, 9 Jun 2022 16:06:27 +0000 (16:06 +0000)]
Fix some test annotations

These are necessary for running the rustc test suite with cg_clif

2 years agoAuto merge of #98025 - Dylan-DPC:rollup-cwt2hb7, r=Dylan-DPC
bors [Sun, 12 Jun 2022 12:41:06 +0000 (12:41 +0000)]
Auto merge of #98025 - Dylan-DPC:rollup-cwt2hb7, r=Dylan-DPC

Rollup of 5 pull requests

Successful merges:

 - #97921 (additional docs example for replace **all** of str)
 - #97970 (Fix Termination impl panic on closed stderr)
 - #97991 (Use safer `strip=symbols`-flag for dylibs on macOS)
 - #97992 (Stabilize scoped threads.)
 - #98012 (`ValuePairs::PolyTraitRefs` should be called "trait"s in type error diagnostics)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoRollup merge of #98012 - compiler-errors:poly-trait-refs-are-traits, r=cjgillot
Dylan DPC [Sun, 12 Jun 2022 10:14:30 +0000 (12:14 +0200)]
Rollup merge of #98012 - compiler-errors:poly-trait-refs-are-traits, r=cjgillot

`ValuePairs::PolyTraitRefs` should be called "trait"s in type error diagnostics

Pretty simple, we already do this for `ValuePairs::TraitRefs`...

2 years agoRollup merge of #97992 - m-ou-se:stabilize-scoped-threads, r=joshtriplett
Dylan DPC [Sun, 12 Jun 2022 10:14:29 +0000 (12:14 +0200)]
Rollup merge of #97992 - m-ou-se:stabilize-scoped-threads, r=joshtriplett

Stabilize scoped threads.

Tracking issue: https://github.com/rust-lang/rust/issues/93203

FCP finished here: https://github.com/rust-lang/rust/issues/93203#issuecomment-1152249466

2 years agoRollup merge of #97991 - davidkna:fix-macos-strip, r=joshtriplett
Dylan DPC [Sun, 12 Jun 2022 10:14:28 +0000 (12:14 +0200)]
Rollup merge of #97991 - davidkna:fix-macos-strip, r=joshtriplett

Use safer `strip=symbols`-flag for dylibs on macOS

Closes #93988

To safely strip dylibs on macOS, the `-x` flag is needed per the manpage (see the discussion here: https://github.com/rust-lang/rust/issues/93988#issuecomment-1042574854).

Thus, when the current `crate_type` is producing a dylib (I assume this is the case for proc macros) use the `-x` flag instead of bare `strip` for `strip=symbols`.

2 years agoRollup merge of #97970 - dtolnay:terminate, r=joshtriplett
Dylan DPC [Sun, 12 Jun 2022 10:14:27 +0000 (12:14 +0200)]
Rollup merge of #97970 - dtolnay:terminate, r=joshtriplett

Fix Termination impl panic on closed stderr

Repro:

```rust
#![feature(backtrace)]

use std::backtrace::Backtrace;
use std::io::{self, Write as _};
use std::panic::{self, PanicInfo};

#[derive(Debug)]
pub struct Error;

fn panic_hook(panic_info: &PanicInfo) {
    let backtrace = Backtrace::force_capture();
    let _ = write!(io::stdout(), "{}\n{}", panic_info, backtrace);
}

fn main() -> Result<(), Error> {
    panic::set_hook(Box::new(panic_hook));
    let stderr = io::stderr();
    let mut stderr = stderr.lock();
    while stderr.write_all(b".\n").is_ok() {}
    Err(Error)
}
```

### Before:

```console
$ target/debug/repro 3>&2 2>&1 1>&3 | head
.
.
.
.
.
.
.
.
.
.
panicked at 'failed printing to stderr: Broken pipe (os error 32)', library/std/src/io/stdio.rs:1016:9
   0: testing::panic_hook
             at ./src/main.rs:11:21
   1: core::ops::function::Fn::call
             at /git/rust/library/core/src/ops/function.rs:77:5
   2: std::panicking::rust_panic_with_hook
   3: std::panicking::begin_panic_handler::{{closure}}
   4: std::sys_common::backtrace::__rust_end_short_backtrace
   5: rust_begin_unwind
   6: core::panicking::panic_fmt
   7: std::io::stdio::_eprint
   8: <core::result::Result<!,E> as std::process::Termination>::report
             at /git/rust/library/std/src/process.rs:2164:9
   9: <core::result::Result<(),E> as std::process::Termination>::report
             at /git/rust/library/std/src/process.rs:2148:25
  10: std::rt::lang_start::{{closure}}
             at /git/rust/library/std/src/rt.rs:145:18
  11: std::rt::lang_start_internal
  12: std::rt::lang_start
             at /git/rust/library/std/src/rt.rs:144:17
  13: main
  14: __libc_start_main
             at /build/glibc-SzIz7B/glibc-2.31/csu/../csu/libc-start.c:308:16
  15: _start
```

### After:

```console
$ target/debug/repro 3>&2 2>&1 1>&3 | head
.
.
.
.
.
.
.
.
.
.
```

2 years agoRollup merge of #97921 - bvanjoi:docs-example-str-replace, r=Dylan-DPC
Dylan DPC [Sun, 12 Jun 2022 10:14:26 +0000 (12:14 +0200)]
Rollup merge of #97921 - bvanjoi:docs-example-str-replace, r=Dylan-DPC

additional docs example for replace **all** of str

2 years agouse `create_snapshot_for_diagnostic` instead of `clone`
Takayuki Maeda [Sun, 12 Jun 2022 08:27:36 +0000 (17:27 +0900)]
use `create_snapshot_for_diagnostic` instead of `clone`

2 years agoAuto merge of #97993 - lengyijun:clean-variance, r=compiler-errors
bors [Sun, 12 Jun 2022 06:43:18 +0000 (06:43 +0000)]
Auto merge of #97993 - lengyijun:clean-variance, r=compiler-errors

clean variance test

Remove unnecessary generic parameter.

2 years agoTry out `yeet` in the MIR interpreter
Scott McMurray [Sun, 29 May 2022 08:19:52 +0000 (01:19 -0700)]
Try out `yeet` in the MIR interpreter

2 years agoMerge arms in borrowed locals transfer function
Tomasz Miąsko [Tue, 7 Jun 2022 00:00:00 +0000 (00:00 +0000)]
Merge arms in borrowed locals transfer function

2 years agoRemove duplicated implementations of borrowed locals analysis
Tomasz Miąsko [Mon, 6 Jun 2022 00:00:00 +0000 (00:00 +0000)]
Remove duplicated implementations of borrowed locals analysis

2 years agoDedup `imports_granularity = "Item"` (#4737)
David Bar-On [Tue, 16 Mar 2021 01:57:04 +0000 (03:57 +0200)]
Dedup `imports_granularity = "Item"` (#4737)

* Fix for issue 4725 - dedup Item imports_granularity (2nd version)

* Use unique() instead of unique_by()

2 years agoAuto merge of #97778 - compiler-errors:misc-diagnostics-tidy, r=cjgillot
bors [Sun, 12 Jun 2022 00:47:54 +0000 (00:47 +0000)]
Auto merge of #97778 - compiler-errors:misc-diagnostics-tidy, r=cjgillot

Tidy up miscellaneous bounds suggestions

Just some small fixes to suggestions

- Generalizes `Ty::is_suggestable` into a `TypeVisitor`, so that it can be called on things other than `Ty`
- Makes `impl Trait` in arg position no longer suggestible (generalizing the fix in #97640)
- Fixes `impl Trait` not being replaced with fresh type param when it's deeply nested in function signature (fixes #97760)
- Fixes some poor handling of `where` clauses with no predicates (also #97760)
- Uses `InferCtxt::resolve_numeric_literals_with_default` so we suggest `i32` instead of `{integer}` (fixes #97677)

Sorry there aren't many tests the fixes. Most of them would just be duplicates of other tests with empty `where` clauses or `impl Trait` in arg position instead of generic params. Let me know if you'd want more test coverage.

2 years agoAddress comments
Michael Goulet [Tue, 7 Jun 2022 04:01:06 +0000 (21:01 -0700)]
Address comments

2 years agoProperly replace `impl Trait` in fn args, turn {integer} to i32
Michael Goulet [Mon, 6 Jun 2022 01:56:26 +0000 (18:56 -0700)]
Properly replace `impl Trait` in fn args, turn {integer} to i32

2 years agoMake is_suggestable work on all TypeFoldable
Michael Goulet [Mon, 6 Jun 2022 01:45:45 +0000 (18:45 -0700)]
Make is_suggestable work on all TypeFoldable

2 years agoHandle empty where-clause better
Michael Goulet [Mon, 6 Jun 2022 00:37:45 +0000 (17:37 -0700)]
Handle empty where-clause better

2 years agoMake Ty::is_suggestable use a visitor
Michael Goulet [Sun, 5 Jun 2022 20:06:37 +0000 (13:06 -0700)]
Make Ty::is_suggestable use a visitor

2 years agoValuePairs::PolyTraitRefs should be called 'trait'
Michael Goulet [Sat, 11 Jun 2022 23:25:35 +0000 (16:25 -0700)]
ValuePairs::PolyTraitRefs should be called 'trait'

2 years agoAuto merge of #97705 - compiler-errors:guide-inference, r=lcnr
bors [Sat, 11 Jun 2022 22:32:20 +0000 (22:32 +0000)]
Auto merge of #97705 - compiler-errors:guide-inference, r=lcnr

Fix inference issues with unconstrained base expr in `type_changing_struct_update`

Use fresh infer vars to guide inference along in `type_changing_struct_update`.

Fixes #96878

2 years agoAuto merge of #95880 - cjgillot:def-ident-span, r=petrochenkov
bors [Sat, 11 Jun 2022 20:08:48 +0000 (20:08 +0000)]
Auto merge of #95880 - cjgillot:def-ident-span, r=petrochenkov

Handle `def_ident_span` like `def_span`.

`def_ident_span` had an ad-hoc status in the compiler.

This PR refactors it to be a first-class citizen like `def_span`:
- it gets encoded in the main metadata loop, instead of the visitor;
- its implementation is updated to mirror the one of `def_span`.

We do not remove the `Option` in the return type, since some items do not have an ident, AnonConsts for instance.

2 years agoMake type_changing_struct_update no longer incomplete
Michael Goulet [Sat, 11 Jun 2022 18:15:44 +0000 (11:15 -0700)]
Make type_changing_struct_update no longer incomplete

2 years agoAuto merge of #97996 - matthiaskrgr:rollup-bvbjlid, r=matthiaskrgr
bors [Sat, 11 Jun 2022 17:49:22 +0000 (17:49 +0000)]
Auto merge of #97996 - matthiaskrgr:rollup-bvbjlid, r=matthiaskrgr

Rollup of 5 pull requests

Successful merges:

 - #97904 (Small grammar fix in the compile_error documentation)
 - #97943 (line 1352, change `self` to `*self`, other to `*other`)
 - #97969 (Make -Cpasses= only apply to pre-link optimization)
 - #97990 (Add more eslint checks)
 - #97994 (feat(fix): update some links in `hir.rs`)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoStop using string equality to check if ADT is a union
Michael Goulet [Sat, 11 Jun 2022 17:35:36 +0000 (10:35 -0700)]
Stop using string equality to check if ADT is a union

2 years agoUse if-let instead of match with guard
Michael Goulet [Sat, 11 Jun 2022 16:57:33 +0000 (09:57 -0700)]
Use if-let instead of match with guard

2 years agoGuide inference along during type_changing_struct_update
Michael Goulet [Fri, 3 Jun 2022 19:54:11 +0000 (12:54 -0700)]
Guide inference along during type_changing_struct_update

2 years agoRollup merge of #97994 - kyoto7250:fix_hir_link, r=cjgillot
Matthias Krüger [Sat, 11 Jun 2022 16:05:36 +0000 (18:05 +0200)]
Rollup merge of #97994 - kyoto7250:fix_hir_link, r=cjgillot

feat(fix): update some links in `hir.rs`

This PR fixes some links in `hir.rs`.

The relative paths seem to be different from when this comment was committed.

ref:

- related commit
https://github.com/rust-lang/rust/commit/1e6adad33f3664d7f09742b73fd97aca63d6406f

- current page
https://doc.rust-lang.org/beta/nightly-rustc/rustc_hir/hir/enum.QPath.html
https://doc.rust-lang.org/beta/nightly-rustc/rustc_hir/hir/enum.ExprKind.html#variant.MethodCall

Thank you in advance.

2 years agoRollup merge of #97990 - GuillaumeGomez:eslint-checks, r=Dylan-DPC
Matthias Krüger [Sat, 11 Jun 2022 16:05:35 +0000 (18:05 +0200)]
Rollup merge of #97990 - GuillaumeGomez:eslint-checks, r=Dylan-DPC

Add more eslint checks

List of newly added checks:

 * [no-lonely-if](https://eslint.org/docs/rules/no-lonely-if)
 * [no-mixed-operators](https://eslint.org/docs/rules/no-mixed-operators)
 * [no-multi-assign](https://eslint.org/docs/rules/no-multi-assign)
 * [no-return-assign](https://eslint.org/docs/rules/no-return-assign)
 * [no-script-url](https://eslint.org/docs/rules/no-script-url)

r? `@Dylan-DPC`

2 years agoRollup merge of #97969 - inglorion:prelinkpasses, r=nikic
Matthias Krüger [Sat, 11 Jun 2022 16:05:34 +0000 (18:05 +0200)]
Rollup merge of #97969 - inglorion:prelinkpasses, r=nikic

Make -Cpasses= only apply to pre-link optimization

This change causes passes specified in -Cpasses= to be applied
only during pre-link optimization, not during LTO. This avoids
such passes running multiple times, which they may not be
designed for.

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

2 years agoRollup merge of #97943 - Warrenren:master, r=Dylan-DPC
Matthias Krüger [Sat, 11 Jun 2022 16:05:33 +0000 (18:05 +0200)]
Rollup merge of #97943 - Warrenren:master, r=Dylan-DPC

line 1352, change `self` to `*self`, other to `*other`

The current code will not results bug, but it difficult to understand. These code result to call &f32::partial_cmp(), and the performance will be lower than the changed code. I'm not sure why the current code don't use (*self) (*other), if you have some idea, please let me know.

2 years agoRollup merge of #97904 - est31:master, r=Dylan-DPC
Matthias Krüger [Sat, 11 Jun 2022 16:05:32 +0000 (18:05 +0200)]
Rollup merge of #97904 - est31:master, r=Dylan-DPC

Small grammar fix in the compile_error documentation

2 years agoAuto merge of #97989 - Dylan-DPC:rollup-wol1a1y, r=Dylan-DPC
bors [Sat, 11 Jun 2022 15:08:41 +0000 (15:08 +0000)]
Auto merge of #97989 - Dylan-DPC:rollup-wol1a1y, r=Dylan-DPC

Rollup of 5 pull requests

Successful merges:

 - #97761 (validating the vtable can lead to Stacked Borrows errors)
 - #97789 (Fix #71363's test by adding `-Z translate-remapped-path-to-local-path=no`)
 - #97913 (Wrap `HirId`s of locals into `LocalVarId`s for THIR nodes)
 - #97979 (Fix typos in Provider API docs)
 - #97987 (remove an unnecessary `String`)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agofeat(fix): update some links
kyoto7250 [Sat, 11 Jun 2022 14:19:58 +0000 (23:19 +0900)]
feat(fix): update some links

2 years agoStabilize scoped threads.
Mara Bos [Thu, 9 Jun 2022 08:53:45 +0000 (10:53 +0200)]
Stabilize scoped threads.

2 years agoclean variance test
lengyijun [Sat, 11 Jun 2022 12:37:39 +0000 (12:37 +0000)]
clean variance test

2 years agoAdd eslint rule "no-script-url"
Guillaume Gomez [Sat, 11 Jun 2022 11:23:08 +0000 (13:23 +0200)]
Add eslint rule "no-script-url"

2 years agoAdd eslint rule "no-return-assign"
Guillaume Gomez [Sat, 11 Jun 2022 11:22:12 +0000 (13:22 +0200)]
Add eslint rule "no-return-assign"

2 years agoUse safer `strip=symbols`-flag for dylibs on macOS
David Knaack [Wed, 8 Jun 2022 09:42:37 +0000 (11:42 +0200)]
Use safer `strip=symbols`-flag for dylibs on macOS

2 years agoAdd eslint rule "no-multi-assign"
Guillaume Gomez [Sat, 11 Jun 2022 11:19:51 +0000 (13:19 +0200)]
Add eslint rule "no-multi-assign"

2 years agoAdd eslint rule "no-mixed-operator"
Guillaume Gomez [Sat, 11 Jun 2022 11:19:29 +0000 (13:19 +0200)]
Add eslint rule "no-mixed-operator"

2 years agoAdd eslint rule "no-lonely-if"
Guillaume Gomez [Sat, 11 Jun 2022 11:16:23 +0000 (13:16 +0200)]
Add eslint rule "no-lonely-if"

2 years agoRollup merge of #97987 - TaKO8Ki:remove-unnecessary-format-macro, r=Dylan-DPC
Dylan DPC [Sat, 11 Jun 2022 10:59:30 +0000 (12:59 +0200)]
Rollup merge of #97987 - TaKO8Ki:remove-unnecessary-format-macro, r=Dylan-DPC

remove an unnecessary `String`

2 years agoRollup merge of #97979 - ben0x539:providerdocs, r=Dylan-DPC
Dylan DPC [Sat, 11 Jun 2022 10:59:29 +0000 (12:59 +0200)]
Rollup merge of #97979 - ben0x539:providerdocs, r=Dylan-DPC

Fix typos in Provider API docs

2 years agoRollup merge of #97913 - dingxiangfei2009:wrap-into-local-var-id, r=nikomatsakis
Dylan DPC [Sat, 11 Jun 2022 10:59:28 +0000 (12:59 +0200)]
Rollup merge of #97913 - dingxiangfei2009:wrap-into-local-var-id, r=nikomatsakis

Wrap `HirId`s of locals into `LocalVarId`s for THIR nodes

This is the first effort to decouple `HirId`s from THIR. `HirId` is not very relevant in building THIR and MIR.

Based on the changeset, I think there are a few other pending refactoring that we could perform after this, in case we want to eliminate use of `HirId` in THIR.
- `TypeckResults::closure_min_captures` could be remapped from the variable `HirId`s to `LocalVarId` while the THIR is getting built.
- Use of `ScopeTree::var_scope` could be eliminated as well, since we will consider deprecating `ScopeTree` in the future.

2 years agoRollup merge of #97789 - ferrocene:pa-fix-issue-71363-test, r=cjgillot
Dylan DPC [Sat, 11 Jun 2022 10:59:27 +0000 (12:59 +0200)]
Rollup merge of #97789 - ferrocene:pa-fix-issue-71363-test, r=cjgillot

Fix #71363's test by adding `-Z translate-remapped-path-to-local-path=no`

The test relies on `library/std/src/error.rs` not corresponding to a local path, but remapping might still find the related local file of a remapped path. To fix the test, this PR adds a new `-Z` flag to disable finding the corresponding local path of a remapped path.

2 years agoRollup merge of #97761 - RalfJung:vtable-validation, r=cjgillot
Dylan DPC [Sat, 11 Jun 2022 10:59:26 +0000 (12:59 +0200)]
Rollup merge of #97761 - RalfJung:vtable-validation, r=cjgillot

validating the vtable can lead to Stacked Borrows errors

Fixes https://github.com/rust-lang/miri/issues/2123

2 years agoremove an unnecessary format macro
Takayuki Maeda [Sat, 11 Jun 2022 09:35:10 +0000 (18:35 +0900)]
remove an unnecessary format macro

2 years agoAuto merge of #97903 - est31:unused_macro_rules_compile_error, r=petrochenkov
bors [Sat, 11 Jun 2022 08:46:21 +0000 (08:46 +0000)]
Auto merge of #97903 - est31:unused_macro_rules_compile_error, r=petrochenkov

Never regard macro rules with compile_error! invocations as unused

The very point of compile_error! is to never be reached, and one of
the use cases of the macro, currently also listed as examples in the
documentation of compile_error, is to create nicer errors for wrong
macro invocations. Thus, we should never warn about unused macro arms
that contain invocations of compile_error.

See also https://github.com/rust-lang/rust/pull/96150#issuecomment-1126599107 and the discussion after that.

Furthermore, the PR also contains two commits to silence `unused_macro_rules` when a macro has an invalid rule, and to add a test that `unused_macros` does not behave badly in the same situation.

r? `@petrochenkov` as I've talked to them about this

2 years agoAuto merge of #97980 - Dylan-DPC:rollup-l8exe4b, r=Dylan-DPC
bors [Sat, 11 Jun 2022 06:17:54 +0000 (06:17 +0000)]
Auto merge of #97980 - Dylan-DPC:rollup-l8exe4b, r=Dylan-DPC

Rollup of 6 pull requests

Successful merges:

 - #96868 (Stabilize explicit_generic_args_with_impl_trait)
 - #97703 (some additional `need_type_info.rs` cleanup)
 - #97812 (Suggest to swap a struct and a trait in trait impls)
 - #97958 (ExitStatus docs fixups)
 - #97967 (Mention `infer::Trace` methods on `infer::At` methods' docs)
 - #97972 (Update #[doc(html_playground_url)] documentation to mention what the request will be)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoRollup merge of #97972 - hamza1311:patch-1, r=Dylan-DPC
Dylan DPC [Sat, 11 Jun 2022 05:42:17 +0000 (07:42 +0200)]
Rollup merge of #97972 - hamza1311:patch-1, r=Dylan-DPC

Update #[doc(html_playground_url)] documentation to mention what the request will be

The [documentation for `#![doc(html_playground_url = "_")]`](https://doc.rust-lang.org/rustdoc/write-documentation/the-doc-attribute.html#html_playground_url) specifies that a request will be made to the given URL but does specify what the contents of the request will be. This PR updates the documentation to include the query parameters through which the code is provided to the playground.

2 years agoRollup merge of #97967 - BoxyUwU:at_docs_mention_trace, r=compiler-errors
Dylan DPC [Sat, 11 Jun 2022 05:42:16 +0000 (07:42 +0200)]
Rollup merge of #97967 - BoxyUwU:at_docs_mention_trace, r=compiler-errors

Mention `infer::Trace` methods on `infer::At` methods' docs

I missed that you could do `infcx.at(...).trace(...).eq(a, b)` when `a` and `b` dont implement `ToTrace` but does implement `Relate` these docs would have helped see that :sweat_smile: