Commit Graph

105645 Commits

Author SHA1 Message Date
Esteban Küber
00c8272612 Split librustc/traits/error_reporting.rs 2020-01-16 09:49:13 -08:00
Ralf Jung
9dee5d582f fix rustfmt fallout 2020-01-16 18:43:51 +01:00
bors
4884061838 Auto merge of #68286 - Dylan-DPC:rollup-x7ssgov, r=Dylan-DPC
Rollup of 5 pull requests

Successful merges:

 - #68033 (Don't use f64 shims for f32 cmath functions on non 32-bit x86 MSVC)
 - #68244 (Enable leak sanitizer test case)
 - #68255 (Remove unused auxiliary file that was replaced with rust_test_helpers)
 - #68263 (rustdoc: HTML escape codeblocks which fail syntax highlighting)
 - #68274 (remove dead code)

Failed merges:

r? @ghost
2020-01-16 17:43:19 +00:00
Esteban Küber
4c13d2555c Add E0746 explanation to the index 2020-01-16 09:37:24 -08:00
Esteban Küber
93293c56e8 fmt 2020-01-16 09:37:24 -08:00
Esteban Küber
e1dd8a9095 When trait bounds are missing for return values, point at them 2020-01-16 09:37:24 -08:00
Esteban Küber
b4bbe784a9 Make impl Trait suggestion in E0746 MachineApplicable 2020-01-16 09:37:24 -08:00
Esteban Küber
ea7e885204 Elide E0308 errors in favor of E0746
When a type error involves a `dyn Trait` as the return type, do not emit
the type error, as the "return type is not `Sized`" error will provide
enough information to the user.
2020-01-16 09:37:24 -08:00
Esteban Küber
75eabb17ae Account for diverging types in return impl Trait 2020-01-16 09:37:24 -08:00
Esteban Küber
6fd564112f Specific error for unsized dyn Trait return type
Suggest `impl Trait` when possible, and `Box<dyn Trait>` otherwise.
2020-01-16 09:37:24 -08:00
Dylan DPC
a529e70be1
Rollup merge of #68274 - matthiaskrgr:dead_code, r=Dylan-DPC
remove dead code

The condition
`if obligation.recursion_depth >= 0`
is always true since `recursion_depth` is `usize`.

The else branch is dead code and can be removed.

Found by Clippy.

Fixes #68251
2020-01-16 20:53:32 +05:30
Dylan DPC
6e797ff8d9
Rollup merge of #68263 - ollie27:rustdoc_invalid_syntax_highlight_escape, r=GuillaumeGomez
rustdoc: HTML escape codeblocks which fail syntax highlighting

r? @GuillaumeGomez
2020-01-16 20:53:30 +05:30
Dylan DPC
c0ff382cb5
Rollup merge of #68255 - tmiasko:unused-aux, r=Dylan-DPC
Remove unused auxiliary file that was replaced with rust_test_helpers
2020-01-16 20:53:29 +05:30
Dylan DPC
678f662e54
Rollup merge of #68244 - tmiasko:leak, r=Centril
Enable leak sanitizer test case

* Use `black_box` to avoid memory leak removal during optimization.
* Leak multiple objects to make test case more robust.
2020-01-16 20:53:27 +05:30
Dylan DPC
c8125fb36a
Rollup merge of #68033 - ollie27:win_f32, r=dtolnay
Don't use f64 shims for f32 cmath functions on non 32-bit x86 MSVC

These shims are only needed on 32-bit x86. Additionally since https://reviews.llvm.org/rL268875 LLVM handles adding the shims itself for the intrinsics.
2020-01-16 20:53:26 +05:30
Oliver Scherer
eed0d33a65 Array repeat expression lengths must be monomorphic at MIR building time 2020-01-16 16:18:08 +01:00
flip1995
25f1bf9a66
Update Clippy 2020-01-16 16:07:54 +01:00
bors
117ceeba40 Auto merge of #68258 - RalfJung:miri, r=RalfJung
update miri

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

r? @ghost Cc @oli-obk
2020-01-16 14:16:54 +00:00
Guillaume Gomez
5022dd3b85 Extend url in titles test 2020-01-16 14:26:43 +01:00
Guillaume Gomez
0e6a941820 Don't keep link title either, text is generated outside of the link tag 2020-01-16 14:19:37 +01:00
Guillaume Gomez
6f1bdb47f2 clean up E0197 explanation 2020-01-16 13:54:58 +01:00
Guillaume Gomez
a1a0aea9e3 clean up E0195 explanation 2020-01-16 13:54:58 +01:00
Matthias Krüger
c4d91aae5a remove dead code
The condition
if obligation.recursion_depth >= 0
is always true since recursion_depth is usize.

The else branch is dead code and can be removed.

Found by Clippy.

Fixes #68251
2020-01-16 08:27:41 +01:00
bors
9fe05e9456 Auto merge of #68272 - Dylan-DPC:rollup-vrb90gu, r=Dylan-DPC
Rollup of 5 pull requests

Successful merges:

 - #67780 (Move some queries from rustc::ty to librustc_ty.)
 - #68096 (Clean up some diagnostics by making them more consistent)
 - #68223 (Use 3.6 instead of 3.5 in float fract() documentation)
 - #68265 (Fix some issue numbers of unstable features)
 - #68266 (Changed docs for f32 and f64.)

Failed merges:

 - #68204 (Use named fields for `{ast,hir}::ItemKind::Impl`)

r? @ghost
2020-01-16 07:20:52 +00:00
Dylan DPC
90b9a627bf
Rollup merge of #68266 - Stromberg90:patch-2, r=Dylan-DPC
Changed docs for f32 and f64.
2020-01-16 11:58:07 +05:30
Dylan DPC
4d5e5a6ec0
Rollup merge of #68265 - JohnTitor:fix-issue-number, r=Dylan-DPC
Fix some issue numbers of unstable features

Looking into the unstable book, some issue numbers are outdated.
2020-01-16 11:58:05 +05:30
Dylan DPC
69eee569d6
Rollup merge of #68223 - SOF3:float-fract-doc, r=varkor
Use 3.6 instead of 3.5 in float fract() documentation

It is not self-explanatory whether the fract() function inverts the fractional part of negative numbers. This change clarifies this possible question (so that it is `.6` not `.4`)
2020-01-16 11:58:04 +05:30
Dylan DPC
1389caf860
Rollup merge of #68096 - varkor:diagnostic-cleanup, r=Centril
Clean up some diagnostics by making them more consistent

In general:

- Diagnostic should start with a lowercase letter.
- Diagnostics should not end with a full stop.
- Ellipses contain three dots.
- Backticks should encode Rust code.

I also reworded a couple of messages to make them read more clearly.

It might be sensible to create a style guide for diagnostics, so these informal conventions are written down somewhere, after which we could audit the existing diagnostics.

r? @Centril
2020-01-16 11:58:02 +05:30
Dylan DPC
6b83862d09
Rollup merge of #67780 - cjgillot:passes-ty, r=Zoxc
Move some queries from rustc::ty to librustc_ty.

cc #65031
2020-01-16 11:58:00 +05:30
Yuki Okushi
91c6a5aaee Fix issue number of infer_static_outlives_requirements 2020-01-16 11:59:04 +09:00
Yuki Okushi
49d8aebbf3 Fix issue number of repr128 2020-01-16 11:58:28 +09:00
Strømberg
d0db6d5791
Update f32.rs 2020-01-16 03:35:31 +01:00
Strømberg
3f337b312d
Update f64.rs 2020-01-16 03:34:23 +01:00
Strømberg
54b961658b
Update f32.rs 2020-01-16 03:30:27 +01:00
Yuki Okushi
bf0a7845d7 Fix issue number of member_constraints 2020-01-16 11:18:36 +09:00
bors
e02c475da5 Auto merge of #67339 - CAD97:rc-provenance, r=sfackler
Use pointer offset instead of deref for A/Rc::into_raw

Internals thread: https://internals.rust-lang.org/t/rc-and-internal-mutability/11463/2?u=cad97

The current implementation of (`A`)`Rc::into_raw` uses the `Deref::deref` implementation to get the pointer-to-data that is returned. This is problematic in the proposed Stacked Borrow rules, as this only gets shared provenance over the data location. (Note that the strong/weak counts are `UnsafeCell` (`Cell`/`Atomic`) so shared provenance can still mutate them, but the data itself is not.) When promoted back to a real reference counted pointer, the restored pointer can be used for mutation through `::get_mut` (if it is the only surviving reference). However, this mutates through a pointer ultimately derived from a `&T` borrow, violating the Stacked Borrow rules.

There are three known potential solutions to this issue:

- Stacked Borrows is wrong, liballoc is correct.
- Fully admit (`A`)`Rc` as an "internal mutability" type and store the data payload in an `UnsafeCell` like the strong/weak counts are. (Note: this is not needed generally since the `RcBox`/`ArcInner` is stored behind a shared `NonNull` which maintains shared write provenance as a raw pointer.)
- Adjust `into_raw` to do direct manipulation of the pointer (like `from_raw`) so that it maintains write provenance and doesn't derive the pointer from a reference.

This PR implements the third option, as recommended by @RalfJung.

Potential future work: provide `as_raw` and `clone_raw` associated functions to allow the [`&T` -> (`A`)`Rc<T>` pattern](https://internals.rust-lang.org/t/rc-and-internal-mutability/11463/2?u=cad97) to be used soundly without creating (`A`)`Rc` from references.
2020-01-16 00:47:45 +00:00
Tomasz Miąsko
ea64a33943 Update sanitizer tests
* Move tests from src/test/run-make-fulldeps to src/test/ui.
* Fix memory sanitizer test to detect the intended issue rather than
  an unrelated one caused by the use of an uninstrumented std.
2020-01-16 00:00:00 +00:00
Oliver Middleton
baf2921ebc rustdoc: HTML escape codeblocks which fail syntax highlighting 2020-01-15 22:42:04 +00:00
Guillaume Gomez
8a9b951f57 Fix rendering on sidebar and update tests 2020-01-15 21:34:15 +01:00
Guillaume Gomez
d755238172 Simplify deref impls for type aliases 2020-01-15 21:21:30 +01:00
bors
3291ae3390 Auto merge of #68254 - Dylan-DPC:rollup-9vhc59u, r=Dylan-DPC
Rollup of 6 pull requests

Successful merges:

 - #68123 (Implement Cursor for linked lists. (RFC 2570).)
 - #68212 (Suggest to shorten temporary lifetime during method call inside generator)
 - #68232 (Optimize size/speed of Unicode datasets)
 - #68236 (Add some regression tests)
 - #68237 (Account for `Path`s in `is_suggestable_infer_ty`)
 - #68252 (remove redundant clones, found by clippy)

Failed merges:

r? @ghost
2020-01-15 19:40:45 +00:00
Ralf Jung
d9d7877f0e update miri 2020-01-15 20:03:22 +01:00
SOFe
33bc9ef513
Use 3.6 instead of 3.5 in float fract() documentation
It is not self-explanatory whether the fract() function inverts the fractional part of negative numbers.

Co-Authored-By: Mateusz Mikuła <mati865@users.noreply.github.com>
2020-01-15 18:46:44 +00:00
Tomasz Miąsko
5d00b5c4aa Enable leak sanitizer test case
* Use `black_box` to avoid memory leak removal during optimization.
* Leak multiple objects to make test case more robust.
2020-01-15 18:36:42 +01:00
Tomasz Miąsko
f2fc35128b Remove unused auxiliary file that was replaced with rust_test_helpers 2020-01-15 18:25:37 +01:00
Dylan DPC
4ff6195929
Rollup merge of #68252 - matthiaskrgr:redundant_clones, r=oli-obk
remove redundant clones, found by clippy
2020-01-15 22:49:32 +05:30
Dylan DPC
9de54fadae
Rollup merge of #68237 - estebank:bad-bad-ice, r=petrochenkov
Account for `Path`s in `is_suggestable_infer_ty`

Fix #68162.
2020-01-15 22:49:30 +05:30
Dylan DPC
2039d7ee49
Rollup merge of #68236 - JohnTitor:ice-tests, r=Centril
Add some regression tests

Closes #64848 (fixed by #67631)
Closes #65918 (ICE is hidden by #67000, no longer ICE)
Closes #66473 (fixed by #68084)
Closes #67550 (set mir-opt-level to 3)

r? @Centril
2020-01-15 22:49:28 +05:30
Dylan DPC
6270e49ce7
Rollup merge of #68232 - Mark-Simulacrum:unicode-tables, r=joshtriplett
Optimize size/speed of Unicode datasets

The overall implementation has the same general idea as the prior approach,
which was based on a compressed trie structure, but modified to use less space
(and, coincidentally, be an overall performance improvement).

Sizes | Old | New | New/current
-- | -- | -- | --
Alphabetic | 4616 | 2982 | 64.60%
Case_Ignorable | 3144 | 2112 | 67.18%
Cased | 2376 | 934 | 39.31%
Cc | 19 | 43 | 226.32%
Grapheme_Extend | 3072 | 1734 | 56.45%
Lowercase | 2328 | 985 | 42.31%
N | 2648 | 1239 | 46.79%
Uppercase | 1978 | 934 | 47.22%
White_Space | 241 | 140 | 58.09%
  |   |   |
Total | 20422 | 11103 | 54.37%

This table shows the size of the old and new tables in bytes. The most important
of these tables is "Grapheme_Extend", as it is present in essentially all Rust
programs due to being called from `str`'s Debug impl (`char::escape_debug`). In
a representative case given by this [blog post] for the embedded world, the
shrinking in this PR shrinks the final binary by 1,604 bytes, from 14,440 to
12,836.

The performance of these new tables, based on the (rough) benchmark of linearly
scanning the entire valid set of chars, querying for each `is_*`, is roughly
~50% better, though in some cases is either on par or slightly (3-5%) worse. In
practice, I believe the size benefits of this PR are the main concern. The new
implementation has been tested to be equivalent to the current nightly in terms
of returned values on the set of valid chars.

A (relatively) high-level explanation of the specific compression scheme used
can be found [in the generator].

This is split into three commits -- the first adds the generator which produces
the Rust code for the tables, the second adds support code for the lookup, and
the third actually swaps the current implementation out for the new one.

[blog post]: https://jamesmunns.com/blog/fmt-unreasonably-expensive/
[in the generator]: https://github.com/Mark-Simulacrum/rust/blob/unicode-tables/src/tools/unicode-table-generator/src/raw_emitter.rs
2020-01-15 22:49:27 +05:30
Dylan DPC
ae1e75bf4e
Rollup merge of #68212 - csmoe:temp, r=estebank
Suggest to shorten temporary lifetime during method call inside generator

Closes https://github.com/rust-lang/rust/issues/67376
![image](https://user-images.githubusercontent.com/35686186/72364752-f6b1e400-3731-11ea-8ec9-8297ba4c6c77.png)

r? @estebank
cc @tmandry @nikomatsakis
2020-01-15 22:49:26 +05:30