Commit graph

153806 commits

Author SHA1 Message Date
liudingming
bf2f6656bc Revert machine outliner disabling on LLVM 13 2021-08-28 15:11:46 +08:00
12101111
9a53d59b97
fix evaluation of target_feature = "crt-static" 2021-08-28 14:40:17 +08:00
Cheng XU
2de6c14b25
RELEASES.md: fix broken link 2021-08-27 23:21:50 -07:00
12101111
4c9896f279
build llvm libunwind.a in rustbuild 2021-08-28 14:14:22 +08:00
Aaron Hill
c9157efad6
Don't use guess_head_span in predicates_of for foreign span
Previously, the result of `predicates_of` for a foreign trait
would depend on the *current* state of the corresponding source
file in the foreign crate. This could lead to ICEs during incremental
compilation, since the on-disk contents of the upstream source file
could potentially change without the upstream crate being recompiled.

Additionally, this ensure that that the metadata we produce for a crate
only depends on its *compiled* upstream dependencies (e.g an rlib or
rmeta file), *not* the current on-disk state of the upstream crate
source files.
2021-08-27 23:19:49 -05:00
Santiago Pastorino
6ac223582f
Add weird return types TAIT test 2021-08-27 22:40:23 -03:00
Santiago Pastorino
c85529e628
Add auto trait leakage TAIT test that should work but currently doesn't 2021-08-27 22:03:39 -03:00
Santiago Pastorino
d0e08dffcf
Add auto trait that shouldn't leak TAIT test 2021-08-27 21:59:49 -03:00
Santiago Pastorino
5ac46d7bd8
Add auto trait leakage TAIT test 2021-08-27 21:25:59 -03:00
Aaron Hill
672d370764
Remove Session.if_let_suggestions
We can instead if either the LHS or RHS types contain
`TyKind::Error`. In addition to covering the case where
we would have previously updated `if_let_suggestions`, this might
also prevent redundant errors in other cases as well.
2021-08-27 18:28:22 -05:00
Mateusz Mikuła
f58289cc51 Update stacker and psm crates 2021-08-28 00:40:49 +02:00
Ryan Zoeller
0d1d9788e5 Handle stack_t.ss_sp type change for DragonFlyBSD
stack_t.ss_sp is now c_void on DragonFlyBSD, so the specialization is no longer needed.

Changed in 02922ef750.
2021-08-27 17:31:42 -05:00
Santiago Pastorino
1ba86f2c34
Add inference cycle TAIT test 2021-08-27 18:35:34 -03:00
bors
ac50a53359 Auto merge of #88328 - fee1-dead:not-quite-const, r=oli-obk
Introduce `~const`

 - [x] Removed `?const` and change uses of `?const`
 - [x] Added `~const` to the AST. It is gated behind const_trait_impl.
 - [x] Validate `~const` in ast_validation.
 - [x] Update UI Tests
 - [x] Add enum `BoundConstness` (With variants `NotConst` and
 `ConstIfConst` allowing future extensions)
 - [x] Adjust trait selection and pre-existing code to use `BoundConstness`.
 - [ ] Optional steps for this PR
      - [x] Fix #88155
      - [x] ~~Do something with constness bounds in chalk~~ Must be done to rust-lang/chalk (just tried to refactor, there are a lot of errors to resolve :( )
      - [ ] Adjust Error messages for `~const` bounds that can't be satisfied.

r? `@oli-obk`
2021-08-27 21:35:08 +00:00
Joe Ardent
7a46ff5981 Fix formatting in release notes from 52a988344b 2021-08-27 14:24:25 -07:00
Niko Matsakis
c4dba5a64e use |= 2021-08-27 17:13:41 -04:00
Santiago Pastorino
d7a777f034
Add nested TAIT inference test that fails 2021-08-27 17:51:46 -03:00
Santiago Pastorino
5c7400c12d
Add nested TAIT inference test 2021-08-27 17:48:51 -03:00
Niko Matsakis
f34909d68f simplify the logic and document 2021-08-27 16:30:45 -04:00
bors
dfd84729d6 Auto merge of #88397 - nagisa:nagisa/unsupported-calling-conventions, r=Mark-Simulacrum
Tracking issue for `UNSUPPORTED_CALLING_CONVENTIONS`

This was previously forgotten. Nominating for 1.55 as this lint will make it into stable in that release.

r? `@Mark-Simulacrum`
2021-08-27 18:45:53 +00:00
Simonas Kazlauskas
fb5fbaaab0 Tracking issue for UNSUPPORTED_CALLING_CONVENTIONS 2021-08-27 20:47:00 +03:00
klensy
92e30f608b crossbeam-deque v0.7.3 -> v0.7.4:
https://rustsec.org/advisories/RUSTSEC-2021-0093
    https://github.com/crossbeam-rs/crossbeam/pull/728/files

openssl-src v111.15.0+1.1.1k -> v111.16.0+1.1.1l:
    https://rustsec.org/advisories/RUSTSEC-2021-0097
    https://rustsec.org/advisories/RUSTSEC-2021-0098
    https://www.openssl.org/news/vulnerabilities-1.1.1.html

tar v0.4.35 -> v0.4.37:
    https://rustsec.org/advisories/RUSTSEC-2021-0080
    updated to 0.4.37 as there breaking change in 0.4.36: https://github.com/alexcrichton/tar-rs/pull/260
2021-08-27 17:38:53 +03:00
Chris Denton
50da1eb1cd
Document std::env::current_exe rename behaviour
It might not be obvious that the "path of the current running executable" may (or may not) mean "at the time it was loaded".
2021-08-27 14:25:29 +01:00
csmoe
5eb960c8d9 add rustc-demangle assertion on mangled symbol 2021-08-27 21:18:20 +08:00
Roxane
110a9b3b1c Add comment and fix fmt issue 2021-08-27 09:00:50 -04:00
Roxane
8fcfd6e136 Add missing const edge case 2021-08-27 08:25:06 -04:00
Deadbeef
2d7dbf2e05
Fix rustfmt test 2021-08-27 11:53:03 +00:00
Eric Huss
e6637284cc Remove vestigial rustfix tests. 2021-08-27 04:52:51 -07:00
Deadbeef
0a3a6087fb
Revive tests 2021-08-27 10:33:15 +00:00
Eduard-Mihai Burtescu
87d1fb747f rustc_target: require TyAbiInterface in LayoutOf. 2021-08-27 13:09:32 +03:00
Eduard-Mihai Burtescu
8486571a10 rustc_target: rename TyAndLayoutMethods to TyAbiInterface. 2021-08-27 13:09:32 +03:00
Eduard-Mihai Burtescu
83d986aa28 rustc_target: add lifetime parameter to LayoutOf. 2021-08-27 13:09:32 +03:00
bors
4a6547cca6 Auto merge of #88227 - 12101111:nobundle-link-order, r=petrochenkov
Adjust linking order of static nobundle libraries

Link the static libraries with "-bundle" modifier from upstream rust crate right after linking this rust crate.
Some linker such as GNU linker `ld.bdf` treat order of linking as order of dependency.

After this change, static libraries with "-bundle" modifier is linked in the same order as "+bundle" modifier.
So we can change the value of "bundle" modifier without causing linking error.

fix: https://github.com/rust-lang/rust/issues/87541

r? `@petrochenkov`
2021-08-27 09:18:14 +00:00
Deadbeef
f3d96e9391
fmt 2021-08-27 08:09:00 +00:00
Deadbeef
580ca930ac
Fix UI test 2021-08-27 07:12:40 +00:00
Deadbeef
80e1ee5aee
Add ty::BoundConstness 2021-08-27 06:49:18 +00:00
bors
dfd6306d26 Auto merge of #88326 - eddyb:inline-ty-layout-methods, r=oli-obk
`#[inline]` non-generic `pub fn`s in `rustc_target::abi` and `ty::layout`.

Mostly doing this as a perf curiosity, having spotted that `#[inline]` usage is a bit spotty.
2021-08-27 06:37:21 +00:00
Deadbeef
c75aeaac0b
Fix #88155 2021-08-27 05:07:38 +00:00
Deadbeef
703c557aaa
Fix more tests 2021-08-27 05:07:38 +00:00
Deadbeef
ff24ac4f2b
Try fixing some tests 2021-08-27 05:07:38 +00:00
Deadbeef
1164c946b0
Fix visiting twice 2021-08-27 05:07:37 +00:00
Deadbeef
8660832086
Introduce ~const
- [x] Removed `?const` and change uses of `?const`
 - [x] Added `~const` to the AST. It is gated behind const_trait_impl.
 - [x] Validate `~const` in ast_validation.
 - [ ] Add enum `BoundConstness` to the HIR. (With variants `NotConst` and
 `ConstIfConst` allowing future extensions)
 - [ ] Adjust trait selection and pre-existing code to use `BoundConstness`.
 - [ ] Optional steps (*for this PR, obviously*)
      - [ ] Fix #88155
      - [ ] Do something with constness bounds in chalk
2021-08-27 05:07:37 +00:00
bors
720a1b23c1 Auto merge of #88278 - ehuss:update-cargo, r=ehuss
Update cargo

19 commits in e96bdb0c3d0a418e7fcd7fbd69be08abf830b4bc..f559c109cc79fe413a8535fb620a5a58b3823d94
2021-08-17 22:58:47 +0000 to 2021-08-26 22:54:55 +0000
- Fix test not to rely on `cargo` in PATH. (rust-lang/cargo#9843)
- Improve resolver message to include dependency requirements (rust-lang/cargo#9827)
- Add hint for cargo metadata in environment section (rust-lang/cargo#9836)
- Fix panic with build-std of a proc-macro. (rust-lang/cargo#9834)
- Fix typos “a”→“an” (rust-lang/cargo#9821)
- Fix typo in git-authentication.md (rust-lang/cargo#9832)
- Add some debug logging for `cargo fix` (rust-lang/cargo#9831)
- Add documentation about third-party registries. (rust-lang/cargo#9830)
- unset the FIX_ENV when executing the real rustc (rust-lang/cargo#9818)
- Allow crate download by checksum (rust-lang/cargo#9801)
- Emit warning for migrating to unstable edition in stable channel (rust-lang/cargo#9792)
- Warning for no lib dependencies (rust-lang/cargo#9771)
- Temporarily disable extern-html-root-url test. (rust-lang/cargo#9824)
- Move `tmp` test directory. (rust-lang/cargo#9814)
- Fix test incorrectly validating CARGO_PKG_LICENSE_FILE. (rust-lang/cargo#9813)
- Implement `[future-incompat-report]` config section (rust-lang/cargo#9774)
- Bump curl. (rust-lang/cargo#9809)
- Determine packages to install prior to installing (rust-lang/cargo#9793)
- Show feature resolver differences for dev-dependencies. (rust-lang/cargo#9803)
2021-08-27 03:48:04 +00:00
Eric Huss
167ee54904 Update cargo 2021-08-26 20:04:45 -07:00
bors
d5cd3205fd Auto merge of #88371 - Manishearth:rollup-pkkjsme, r=Manishearth
Rollup of 11 pull requests

Successful merges:

 - #87832 (Fix debugger stepping behavior with `match` expressions)
 - #88123 (Make spans for tuple patterns in E0023 more precise)
 - #88215 (Reland #83738: "rustdoc: Don't load all extern crates unconditionally")
 - #88216 (Don't stabilize creation of TryReserveError instances)
 - #88270 (Handle type ascription type ops in NLL HRTB diagnostics)
 - #88289 (Fixes for LLVM change 0f45c16f2caa7c035e5c3edd40af9e0d51ad6ba7)
 - #88320 (type_implements_trait consider obligation failure on overflow)
 - #88332 (Add argument types tait tests)
 - #88340 (Add `c_size_t` and `c_ssize_t` to `std::os::raw`.)
 - #88346 (Revert "Add type of a let tait test impl trait straight in let")
 - #88348 (Add field types tait tests)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2021-08-27 01:07:17 +00:00
bors
517c28e421 Auto merge of #87280 - lcnr:lazy-anon-const-default-substs, r=nikomatsakis
lazily "compute" anon const default substs

Continuing the work of #83086, this implements the discussed solution for the [unused substs problem](https://github.com/rust-lang/project-const-generics/blob/master/design-docs/anon-const-substs.md#unused-substs). As of now, anonymous constants inherit all of their parents generics, even if they do not use them, e.g. in `fn foo<T, const N: usize>() -> [T; N + 1]`, the array length has `T` as a generic parameter even though it doesn't use it. These *unused substs* cause some backwards incompatible, and imo incorrect behavior, e.g. #78369.

---
We do not actually filter any generic parameters here and the `default_anon_const_substs` query still a dummy which only checks that
- we now prevent the previously existing query cycles and are able to call `predicates_of(parent)` when computing the substs of anonymous constants
- the default anon consts substs only include the typeflags we assume it does.

Implementing that filtering will be left as future work.

---

The idea of this PR is to delay the creation of the anon const substs until after we've computed `predicates_of` for the parent of the anon const. As the predicates of the parent can however contain the anon const we still have to create a `ty::Const` for it.

We do this by changing the substs field of `ty::Unevaluated` to an option and modifying accesses to instead call the method `unevaluated.substs(tcx)` which returns the substs as before. If the substs - now `substs_` -  of `ty::Unevaluated` are `None`, it means that the anon const currently has its default substs, i.e. the substs it has when first constructed, which are the generic parameters it has available. To be able to call `unevaluated.substs(tcx)` in a `TypeVisitor`, we add the non-defaulted method `fn tcx_for_anon_const_substs(&self) -> Option<TyCtxt<'tcx>>`. In case `tcx_for_anon_const_substs` returns `None`, unknown anon const default substs are skipped entirely.

Even when `substs_` is `None` we still have to treat the constant as if it has its default substs. To do this, `TypeFlags` are modified so that it is clear whether they can still change when *exposing* any anon const default substs. A new flag, `HAS_UNKNOWN_DEFAULT_CONST_SUBSTS`, is added in case some default flags are missing.

The rest of this PR are some smaller changes to either not cause cycles by trying to access the default anon const substs too early or to be able to access the `tcx` in previously unused locations.

cc `@rust-lang/project-const-generics`
r? `@nikomatsakis`
2021-08-26 22:26:23 +00:00
Manish Goregaokar
af549368f3
Rollup merge of #88348 - spastorino:field-types-tait-test, r=oli-obk
Add field types tait tests

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

Related to #86727
2021-08-26 12:38:15 -07:00
Manish Goregaokar
cb95e3650a
Rollup merge of #88346 - spastorino:revert-type-of-a-let2, r=jackh726
Revert "Add type of a let tait test impl trait straight in let"

This reverts commit dbadab54df.
This is not part of TAITs, so, if tested should probably be done
elsewhere.

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

This is similar to what I was commenting here https://github.com/rust-lang/rust/pull/88332#discussion_r695939901
These is not part of TAITs so should not live in type-alias-impl-trait test directory.
I'm going to avoid adding this kind of tests in `type-alias-impl-trait` test directory and avoid thinking about them in this pass.
2021-08-26 12:38:14 -07:00
Manish Goregaokar
e760740c03
Rollup merge of #88340 - thomcc:c_size_t, r=joshtriplett
Add `c_size_t` and `c_ssize_t` to `std::os::raw`.

Apparently these aren't guaranteed to be the same, and are merely "always the same in practice" (see https://rust-lang.zulipchat.com/#narrow/stream/136281-t-lang.2Fwg-unsafe-code-guidelines/topic/.60usize.60.20vs.20.60size_t.60).

This is a big footgun, but I suspect it can be alleviated if we expose this and start migrating people to it in advance of any platforms that ever have this as different.

I'll file a tracking issue after this gets some traction.
2021-08-26 12:38:13 -07:00
Manish Goregaokar
0f7dc5db45
Rollup merge of #88332 - spastorino:argument-types-tait-test, r=oli-obk
Add argument types tait tests

r? ``@oli-obk``

Related to #86727
2021-08-26 12:38:12 -07:00