1
Fork 0
Commit graph

108699 commits

Author SHA1 Message Date
Tomasz Miąsko
fd0e15bbcd Make std::sync::Arc compatible with ThreadSanitizer
The memory fences used previously in Arc implementation are not properly
understood by ThreadSanitizer as synchronization primitives. This had
unfortunate effect where running any non-trivial program compiled with
`-Z sanitizer=thread` would result in numerous false positives.

Replace acquire fences with acquire loads when using ThreadSanitizer to
address the issue.
2020-03-20 00:18:44 +01:00
CDirkx
6570e275b9 Removed unused Hasher import. 2020-03-19 21:58:11 +01:00
Matthew Jasper
0f0f254a9c Use erased regions in MIR 2020-03-19 19:59:13 +00:00
CDirkx
bd6deaa08d Derive PartialEq, Eq and Hash for RangeInclusive
The manual implementation of PartialEq, Eq and Hash for RangeInclusive was functionally equivalent to a derived implementation.

This change removes the manual implementation and adds the respective derives.
A side effect of this change is that the derives also add implementations for StructuralPartialEq and StructuralEq, which enables RangeInclusive to be used in const generics.
2020-03-19 20:45:47 +01:00
Bastian Kauschke
6cb584608c sort generic param order in generics_of 2020-03-19 20:20:09 +01:00
Waffle
121bffce81 make "other" in docs of Option::{zip,zip_with} monofont 2020-03-19 22:19:37 +03:00
Eduard-Mihai Burtescu
be9679de5c rustc/query: tweak comments on hir_owner{,_nodes}. 2020-03-19 19:05:41 +02:00
bors
f4c675c476 Auto merge of #69402 - GuillaumeGomez:extend-search, r=kinnison
Extend search

I realized that when looking for "struct:String" in the rustdoc search for example, the "in arguments" and "returned" tabs were always empty. After some investigation, I realized it was because we only provided the name, and not the type, making it impossible to pass the "type filtering" check.

To resolve this, I added the type alongside the name. Note for the future: we could improve this by instead only registering the path id and use the path dictionary directly. The only problem with that solution (which I already tested) is that it becomes complicated for types in other crates. It'd force us to handle both case with an id and a case with `(name, type)`. I found the current PR big enough to not want to provide it directly. However, I think this is definitely worth it to make it work this way in the future.

About the two tests I added: they don't have much interest except checking that we actually have something returned in the search in the cases of a type filtering with and without literal search.

I also had to update a bit the test script to add the new locally global (haha) variable I created (`NO_TYPE_FILTER`). I added this variable to make the code easier to read than just "-1".

r? @kinnison

cc @ollie27
2020-03-19 16:07:59 +00:00
flip1995
2b3168ce5f
Update Clippy 2020-03-19 16:46:51 +01:00
Mazdak Farrokhzad
89ef59af78
triagebot.toml: accept typo due to pnkfelix 2020-03-19 15:38:31 +01:00
Amanieu d'Antras
203bb2b572 Update stdarch submodule 2020-03-19 14:38:09 +00:00
John Kåre Alsaker
027c8d998e Use assert_ignored when encoding metadata 2020-03-19 15:22:55 +01:00
John Kåre Alsaker
801e4420b6 Add some comments 2020-03-19 15:22:55 +01:00
John Kåre Alsaker
a2bca90077 Make metadata prefetching more accurate 2020-03-19 15:22:55 +01:00
John Kåre Alsaker
3d59c0ee38 Make the timer more verbose 2020-03-19 15:12:31 +01:00
John Kåre Alsaker
03af82bb0c Prefetch exported symbols 2020-03-19 15:12:31 +01:00
John Kåre Alsaker
1a34cbc2e2 Encode exported symbols last 2020-03-19 15:12:31 +01:00
John Kåre Alsaker
6cd0dcade7 Prefetch queries used by the metadata encoder 2020-03-19 15:12:31 +01:00
John Kåre Alsaker
d641ad044e Update test 2020-03-19 14:59:14 +01:00
John Kåre Alsaker
82920f36c4 Don't unwind when hitting the macro expansion recursion limit 2020-03-19 14:59:14 +01:00
Hrvoje Nikšić
2bebe8d871 Don't hard-code the vector length in the examples.
Co-Authored-By: lzutao <taolzu@gmail.com>
2020-03-19 14:50:33 +01:00
Hrvoje Nikšić
755434121c Minor re-wordings and typo fixes.
Co-Authored-By: Ralf Jung <post@ralfj.de>
2020-03-19 14:50:33 +01:00
Hrvoje Niksic
2a08b0e300 Restore (and reword) the warning against passing invalid values to mem::forget.
As pointed out by Ralf Jung, dangling references and boxes are
undefined behavior as per
https://doc.rust-lang.org/reference/behavior-considered-undefined.html
and the Miri checker.
2020-03-19 14:49:21 +01:00
Hrvoje Niksic
8e0398c060 Clarify the relationship between forget() and ManuallyDrop.
As discussed on reddit, this commit addresses two issues with the
documentation of `mem::forget()`:

* The documentation of `mem::forget()` can confuse the reader because of the
  discrepancy between usage examples that show correct usage and the
  accompanying text which speaks of the possibility of double-free.  The
  text that says "if the panic occurs before `mem::forget` was called"
  refers to a variant of the second example that was never shown, modified
  to use `mem::forget` instead of `ManuallyDrop`.  Ideally the documentation
  should show both variants, so it's clear what it's talking about.

  Also, the double free could be fixed just by placing `mem::forget(v)`
  before the construction of `s`.  Since the lifetimes of `s` and `v`
  wouldn't overlap, there would be no point where panic could cause a double
  free.  This could be mentioned, and contrasted against the more robust fix
  of using `ManuallyDrop`.

* This sentence seems unjustified: "For some types, operations such as
  passing ownership (to a funcion like `mem::forget`) requires them to
  actually be fully owned right now [...]".  Unlike C++, Rust has no move
  constructors, its moves are (possibly elided) bitwise copies.  Even if you
  pass an invalid object to `mem::forget`, no harm should come to pass
  because `mem::forget` consumes the object and exists solely to prevent
  drop, so there no one left to observe the invalid state state.
2020-03-19 14:48:48 +01:00
Guillaume Gomez
6f16118f28 Clean up e0438 explanation 2020-03-19 14:11:27 +01:00
Guillaume Gomez
be06f678e1 Clean up E0437 explanation 2020-03-19 14:08:22 +01:00
bors
2602289632 Auto merge of #70137 - RalfJung:miri, r=RalfJung
update miri

Fixes https://github.com/rust-lang/rust/issues/70055
r? @ghost
Cc @oli-obk @Amanieu
2020-03-19 12:59:10 +00:00
Eduard-Mihai Burtescu
e8f1dfae64 hir: replace "items" terminology with "nodes" where appropriate. 2020-03-19 14:36:04 +02:00
Eduard-Mihai Burtescu
f8178c7a23 rustc: use LocalDefId instead of DefId in TypeckTables. 2020-03-19 14:25:50 +02:00
lzutao
2c38ecf72d
doc: Add quote to .init_array 2020-03-19 17:35:28 +07:00
Ralf Jung
4a2d54d07d add delay_span_bug to TransmuteSizeDiff, just to be sure 2020-03-19 10:40:48 +01:00
bors
3c6f982cc9 Auto merge of #66131 - eddyb:local-def-id, r=petrochenkov
rustc: use LocalDefId instead of DefIndex where possible.

That is, wherever `DefIndex` always referred to a "def" in the local crate, I replaced it with `LocalDefId`.
While `LocalDefId` already existed, it wasn't used a lot, but I hope I'm on the right track.

Unresolved questions:
* [x] ~~should `LocalDefId` implement `rustc_index::Idx`?~~
  * ~~this would get rid of a couple more `DefIndex` uses~~
* [x] ~~should `LocalDefId` be encoded/decoded as just a `DefIndex`?~~
  * ~~right now it's a bit messy, `LocalDefId` encodes/decodes like `DefId`~~
* [x] ~~should `DefId::assert_local` be named something else, like `expect_local`?~~

A future PR should change `tcx.hir().local_def_id(...)` to return `LocalDefId` instead of `DefId`, as changing it in this PR would be too noisy.

r? @michaelwoerister cc @nikomatsakis @petrochenkov @Zoxc
2020-03-19 09:18:49 +00:00
Eduard-Mihai Burtescu
16e25f0ea3 rustc: use LocalDefId instead of DefIndex in hir::map::definitions. 2020-03-19 11:16:08 +02:00
Eduard-Mihai Burtescu
2b0a21ead1 rustc: use LocalDefId instead of DefIndex in ich. 2020-03-19 11:16:08 +02:00
Eduard-Mihai Burtescu
f3ec069886 rustc: use LocalDefId instead of DefIndex in HirId. 2020-03-19 11:16:08 +02:00
Eduard-Mihai Burtescu
6130b9959c rustc: use LocalDefId instead of DefIndex in hir::lowering. 2020-03-19 11:15:35 +02:00
Eduard-Mihai Burtescu
42b2adfab0 rustc: introduce DefId::as_local(self) -> Option<LocalDefId> and use it. 2020-03-19 11:15:35 +02:00
Eduard-Mihai Burtescu
0c692797d7 rustc: rename DefId::to_local to expect_local and use it instead of LocalDefId::from_def_id. 2020-03-19 11:15:35 +02:00
Eduard-Mihai Burtescu
55ed19fe1b rustc: make LocalDefId's index field public like DefId's is. 2020-03-19 11:15:35 +02:00
Eduard-Mihai Burtescu
e1762fdad1 rustc_typeck: remove dead impl for DefIndex. 2020-03-19 11:15:35 +02:00
Eduard-Mihai Burtescu
e11dd47503 rustc: use LocalDefId instead of DefIndex for query keys. 2020-03-19 11:15:35 +02:00
Ralf Jung
898ff8d723 update miri 2020-03-19 09:08:13 +01:00
Ralf Jung
a39875b4dd do not 'return' in 'throw_' macros 2020-03-19 09:07:43 +01:00
Stefan Lankes
410cd7a3e0 remove unused imports
patch is required to avoid compiler errors by building src/libpanic_unwind/hermit.rs
2020-03-19 07:53:32 +01:00
bors
6724d584b8 Auto merge of #70132 - Centril:rollup-oe8unsn, r=Centril
Rollup of 9 pull requests

Successful merges:

 - #68941 (Properly handle Spans that reference imported SourceFiles)
 - #69036 (rustc: don't resolve Instances which would produce malformed shims.)
 - #69443 (tidy: Better license checks.)
 - #69814 (Smaller and more correct generator codegen)
 - #69929 (Regenerate tables for Unicode 13.0.0)
 - #69959 (std: Don't abort process when printing panics in tests)
 - #69969 (unix: Set a guard page at the end of signal stacks)
 - #70005 ([rustdoc] Improve visibility for code blocks warnings)
 - #70088 (Use copy bound in atomic operations to generate simpler MIR)

Failed merges:

r? @ghost
2020-03-19 05:57:57 +00:00
Mazdak Farrokhzad
605bb61ddf
Rollup merge of #70088 - tmiasko:atomic-copy, r=eddyb
Use copy bound in atomic operations to generate simpler MIR
2020-03-19 06:57:41 +01:00
Mazdak Farrokhzad
637233dfee
Rollup merge of #70005 - GuillaumeGomez:code-block-signs, r=kinnison
[rustdoc] Improve visibility for code blocks warnings

It appeared that a lot of people didn't notice when a code block was meant to fail compilation or wasn't tested at all. The changes here make the colors less transparent and the icon bigger. So before it looked like this:

![old-light](https://user-images.githubusercontent.com/3050060/76687070-f1cdbb80-6620-11ea-9b73-0c787dc671f7.png)
![old-dark](https://user-images.githubusercontent.com/3050060/76687079-f4c8ac00-6620-11ea-90fb-e548329e01b4.png)

And now it looks like this:

![new-light](https://user-images.githubusercontent.com/3050060/76687092-fd20e700-6620-11ea-9ebb-2b6852f00899.png)
![new-dark](https://user-images.githubusercontent.com/3050060/76687091-fd20e700-6620-11ea-8fea-6854c8367b97.png)

cc @rust-lang/rustdoc
r? @kinnison
2020-03-19 06:57:39 +01:00
Mazdak Farrokhzad
4c3a5a5da6
Rollup merge of #69969 - iximeow:sigstack-guard-page, r=cuviper
unix: Set a guard page at the end of signal stacks

This mitigates possible issues when signal stacks overflow, which could
manifest as segfaults or in unlucky circumstances possible clobbering of
other memory values as stack overflows tend to enable.

I went ahead and made a PR for this because it's a pretty small change, though if I should open an issue/RFC for this and discuss there first I'll happily do so. I've also added some example programs that demonstrate the uncomfortably clobber-happy behavior we currently have, and the segfaults that could/should result instead, [here](https://github.com/iximeow/jubilant-train).
2020-03-19 06:57:37 +01:00
Mazdak Farrokhzad
73c3a496cc
Rollup merge of #69959 - alexcrichton:fix-panic-in-print, r=Mark-Simulacrum
std: Don't abort process when printing panics in tests

This commit fixes an issue when using `set_print` and friends, notably
used by libtest, to avoid aborting the process if printing panics. This
previously panicked due to borrowing a mutable `RefCell` twice, and this
is worked around by borrowing these cells for less time, instead
taking out and removing contents temporarily.

Closes #69558
2020-03-19 06:57:36 +01:00
Mazdak Farrokhzad
904909fd06
Rollup merge of #69929 - cuviper:unicode-13.0.0, r=Mark-Simulacrum
Regenerate tables for Unicode 13.0.0
2020-03-19 06:57:34 +01:00