Commit Graph

156067 Commits

Author SHA1 Message Date
Vadim Petrochenkov ded08e44c6 resolve: Avoid comparing modules by optional def-id
It makes all block modules identical during comparison
2021-10-02 18:31:50 +03:00
Vadim Petrochenkov 5aa732a364 resolve: Cache module loading for all foreign modules
It was previously cached for modules loaded from `fn get_module`, but not for modules loaded from `fn build_reduced_graph_for_external_crate_res`.
This also makes all foreign modules use their real parent, span and expansion instead of possibly a parent/span/expansion of their reexport.

An ICE happening on attempt to decode expansions for foreign enums and traits is avoided.

Also local enums and traits are now added to the module map.
2021-10-02 18:31:42 +03:00
Erik Desjardins bec5a91450 only check for automatically_derived on impls, not individual methods
this matches behavior of existing code
https://github.com/rust-lang/rust/blob/b27661eb33c74cb514dba059b47d86b6582ac1c2/compiler/rustc_passes/src/liveness.rs#L326-L333
2021-10-02 09:53:51 -04:00
bors edebf77e00 Auto merge of #89408 - Mark-Simulacrum:fix-query-nondet, r=petrochenkov
Avoid nondeterminism in trimmed_def_paths

Previously this query depended on the global interning order of Symbols, which
meant that irrelevant changes could influence the query and cause
recompilations. This commit ensures that the return set is stable and will not
be affected by the global order by deterministically (in lexicographic order)
choosing a name to use if there are multiple names for a single DefId.

This should fix the cause of the [regressions] in #83343.

[regressions]: https://perf.rust-lang.org/compare.html?start=9620f3a84b079decfdc2e557be007580b097fe43&end=addb4da686a97da46159f0123cb6cdc2ce3d7fdb
2021-10-02 13:36:27 +00:00
David Carlier 98dde56eb1 haiku thread affinity build fix 2021-10-02 13:24:30 +01:00
bors b27661eb33 Auto merge of #89405 - GuillaumeGomez:fix-clippy-lints, r=cjgillot
Fix clippy lints

I'm currently working on allowing clippy to run on librustdoc after a discussion I had with `@Mark-Simulacrum.` So in the meantime, I fixed a few lints on the compiler crates.
2021-10-02 10:52:09 +00:00
Trevor Spiteri 1139ee32aa Use bitand when checking for signed integer division overflow
For `self == Self::MIN && rhs == -1`, LLVM does not realize that this is the
same check made by `self / rhs`, so the code generated may have some unnecessary
duplication. For `(self == Self::MIN) & (rhs == -1)`, LLVM realizes it is the
same check.
2021-10-02 12:16:08 +02:00
Audun Halland 87241e9099 Expand one test (from jackh726) 2021-10-02 11:26:56 +02:00
Oli Scherer 69274aa549 Bump tracing to get the instrumentation perf improvement 2021-10-02 08:22:03 +00:00
bors a8387aef8c Auto merge of #89450 - usbalbin:const_try_revert, r=oli-obk
Revert #86853

Should fix issue found in #89432
2021-10-02 07:41:25 +00:00
Josh Stone 03cf07f85f Update to the final LLVM 13.0.0 release 2021-10-01 21:06:19 -07:00
Erik Desjardins eb4ba58572 perf: only check for rustc_trivial_field_reads attribute on traits
The checks removed here caused a small perf regression:
https://github.com/rust-lang/rust/pull/88824#issuecomment-932664761

Since the attribute is currently only applied to traits, I don't think
it's worth keeping the additional checks for now.
If/when we decide to apply the attribute somewhere else, we can
(partially) revert this and evaluate if the perf impact is acceptable.
2021-10-01 22:07:22 -04:00
Bruce Mitchener 058a21d5cf Consistently use 'supertrait'.
A subset of places referred to 'super-trait', so this changes them
to all use 'supertrait'. This matches 'supertype' and some other
usages. An exception is 'auto-trait' which is consistently used
in that manner.
2021-10-02 08:05:44 +07:00
Manish Goregaokar 6bf5c0b185 Correctly handle signs in exponents in numeric_literal::format() 2021-10-01 17:27:47 -07:00
Michael Howell 277a018140 rustdoc: use slice::contains instead of open-coding it 2021-10-01 16:42:29 -07:00
Manish Goregaokar 51160808b8 Add regression test 2021-10-01 16:14:35 -07:00
Albin Hedman 6a0c97aa5c Add regression test for #89432
Co-authored-by: Josh Stone <cuviper@gmail.com>
2021-10-02 01:12:15 +02:00
bors 6e12110812 Auto merge of #89449 - Manishearth:rollup-3alb61f, r=Manishearth
Rollup of 7 pull requests

Successful merges:

 - #85223 (rustdoc: Clarified the attribute which prompts the warning)
 - #88847 (platform-support.md: correct ARMv7+MUSL platform triple notes)
 - #88963 (Coerce const FnDefs to implement const Fn traits )
 - #89376 (Fix use after drop in self-profile with llvm events)
 - #89422 (Replace whitespaces in doctests' name with dashes)
 - #89440 (Clarify a sentence in the documentation of Vec (#84488))
 - #89441 (Normalize after substituting via `field.ty()`)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2021-10-01 22:47:22 +00:00
bors 2cb37a1911 Auto merge of #89449 - Manishearth:rollup-3alb61f, r=Manishearth
Rollup of 7 pull requests

Successful merges:

 - #85223 (rustdoc: Clarified the attribute which prompts the warning)
 - #88847 (platform-support.md: correct ARMv7+MUSL platform triple notes)
 - #88963 (Coerce const FnDefs to implement const Fn traits )
 - #89376 (Fix use after drop in self-profile with llvm events)
 - #89422 (Replace whitespaces in doctests' name with dashes)
 - #89440 (Clarify a sentence in the documentation of Vec (#84488))
 - #89441 (Normalize after substituting via `field.ty()`)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2021-10-01 22:47:22 +00:00
Albin Hedman 81bb5a54c3 Revert "Auto merge of #86853 - usbalbin:const_try, r=oli-obk"
This reverts commit c6007fdc70, reversing
changes made to 69c1c6a173.
2021-10-02 00:07:48 +02:00
Manish Goregaokar 5ab1245303 Rollup merge of #89441 - Nadrieril:fix-89393, r=tmandry
Normalize after substituting via `field.ty()`

Back in https://github.com/rust-lang/rust/issues/72476 I hadn't understood where the problem was coming from, and only worked around the issue. What happens is that calling `field.ty()` on a field of a generic struct substitutes the appropriate generics but doesn't normalize the resulting type.
As a consumer of types I'm surprised that one would substitute without normalizing, feels like a footgun, so I added a comment.

Fixes https://github.com/rust-lang/rust/issues/89393.
2021-10-01 14:46:52 -07:00
Manish Goregaokar b458ecf29d Rollup merge of #89440 - chrismit3s:issue-84488-fix, r=steveklabnik
Clarify a sentence in the documentation of Vec (#84488)

 I literally changed a single word, but this should clear up the confusion of #84488. Can probably be `rollup`ed :) (My first PR, hope I'm doing this right)

fixes #84488

r? `@steveklabnik`
2021-10-01 14:46:51 -07:00
Manish Goregaokar 04ba15392b Rollup merge of #89422 - GuillaumeGomez:doctest-whitespace-name, r=CraftSpider
Replace whitespaces in doctests' name with dashes

Fixes #88263.

Instead of handling white spaces when we filter tests (which would be quite complicated since we split on them!), I propose to instead replace them with dashes.

So for example, this:

```console
test foo.rs - Iter2<T, P>::len (line 13) ... ok
test foo.rs - Iter<T, P>::len (line 4) ... ok
```

becomes:

```console
test foo.rs - Iter<T,-P>::len (line 4) ... ok
test foo.rs - Iter2<T,-P>::len (line 13) ... ok
```

r? `@jyn514`
2021-10-01 14:46:50 -07:00
Manish Goregaokar 1781e4b81a Rollup merge of #89376 - andjo403:selfProfileUseAfterDropFix, r=Mark-Simulacrum
Fix use after drop in self-profile with llvm events

self-profile with `-Z self-profile-events=llvm` have failed with a segmentation fault due to this use after drop.
this type of events can be more useful now that the new passmanager is the default.
2021-10-01 14:46:49 -07:00
Manish Goregaokar 6d18c9912f Rollup merge of #88963 - fee1-dead:const-iterator, r=oli-obk
Coerce const FnDefs to implement const Fn traits

You can now pass a FnDef to a function expecting `F` where `F: ~const FnTrait`.

r? ``@oli-obk``

``@rustbot`` label T-compiler F-const_trait_impl
2021-10-01 14:46:48 -07:00
Manish Goregaokar 743e842afb Rollup merge of #88963 - fee1-dead:const-iterator, r=oli-obk
Coerce const FnDefs to implement const Fn traits

You can now pass a FnDef to a function expecting `F` where `F: ~const FnTrait`.

r? ``@oli-obk``

``@rustbot`` label T-compiler F-const_trait_impl
2021-10-01 14:46:48 -07:00
Manish Goregaokar 2bab0a08e9 Rollup merge of #88847 - oliverbr:master, r=steveklabnik
platform-support.md: correct ARMv7+MUSL platform triple notes

This PR fixes two minor inconsistencies in the platform support list.

- use "with MUSL" suffix for "armv7-unknown-linux-musleabi"
- add "hardfloat" suffix for "armv7-unknown-linux-musleabihf"

r? `@steveklabnik`
2021-10-01 14:46:47 -07:00
Manish Goregaokar eedc76d6ab Rollup merge of #85223 - simbleau:master, r=steveklabnik
rustdoc: Clarified the attribute which prompts the warning

The example call was lacking clarification of the  `#![warn(rustdoc::invalid_codeblock_attributes)]` attribute which generates the specified warning.
2021-10-01 14:46:46 -07:00
jackh726 4bd1751d4c Don't use Default, since the impls are different on wasm 2021-10-01 17:21:39 -04:00
Guillaume Gomez 759eba0a08 Fix clippy lints 2021-10-01 23:17:19 +02:00
Fabian Wolff d92c683933 Improve error message for missing angle brackets in [_]::method 2021-10-01 23:03:28 +02:00
bors c02371c442 Auto merge of #88880 - cjgillot:no-krate, r=oli-obk
Rework HIR API to make invocations of the hir_crate query harder.

`hir_crate` forces the recomputation of queries that depend on it.

This PR aims at avoiding useless invocations of `hir_crate` by making dependent code go through `tcx.hir()`.
2021-10-01 20:06:34 +00:00
bors 72bf97f932 Auto merge of #88880 - cjgillot:no-krate, r=oli-obk
Rework HIR API to make invocations of the hir_crate query harder.

`hir_crate` forces the recomputation of queries that depend on it.

This PR aims at avoiding useless invocations of `hir_crate` by making dependent code go through `tcx.hir()`.
2021-10-01 20:06:34 +00:00
jackh726 b2b34351de Don't lose binders when printing trait bound suggestion 2021-10-01 16:04:32 -04:00
Josh Stone d6fde80cb4 Include the length in BTree hashes
This change makes it consistent with `Hash` for all other collections.
2021-10-01 12:29:09 -07:00
Guillaume Gomez 3792be6ac9 Replace whitespaces in doctests' name with dashes 2021-10-01 21:24:05 +02:00
Fabian Wolff 65ef265c12 Call libc::sigaction() only on Android 2021-10-01 21:22:18 +02:00
Sean Young fa4072f7d3 path.push() should work as expected on windows verbatim paths 2021-10-01 19:54:57 +01:00
Nadrieril 68b76a4835 Normalize after substituting via field.ty() 2021-10-01 19:45:19 +01:00
Yechan Bae ef8df9df68 Forgot to bless ui-toml test 2021-10-01 14:26:04 -04:00
pierwill 2a5dcd5890 fix: edit description of "prefix-free" 2021-10-01 13:18:06 -05:00
chrismit3s 1a796441f5 Clarify a sentence in the documentation of Vec (#84488) 2021-10-01 20:07:36 +02:00
Yechan Bae dfed2e31d5 Do not use full type path in help message 2021-10-01 14:04:20 -04:00
Yechan Bae 4f01656a7d Add ui-test for enable-raw-pointer-heuristic-for-send config 2021-10-01 14:04:20 -04:00
Yechan Bae 08f0aecffd Minor changes from PR feedback 2021-10-01 14:04:20 -04:00
Yechan Bae 427a09ba7b Add configuration for raw pointer heuristic 2021-10-01 14:04:20 -04:00
Yechan Bae d413e157a5 Look into tuple, array, ADT args in raw pointer heuristic 2021-10-01 14:04:20 -04:00
Yechan Bae ee74574876 Emit one report for all fields in the same ADT 2021-10-01 14:04:20 -04:00
Yechan Bae a81a5ad1a8 Update documentation 2021-10-01 14:04:20 -04:00
Yechan Bae 6458630e1a typo 2021-10-01 14:04:20 -04:00