Commit Graph

121890 Commits

Author SHA1 Message Date
Ralf Jung 046165a807 rename location field of Drop terminators to place 2020-06-16 11:23:25 +02:00
Ralf Jung 302fb5039b get rid of an unused 'span' field 2020-06-16 09:43:31 +02:00
Ralf Jung 0bcefd9b5e remove visit_terminator_kind from MIR visitor 2020-06-16 09:43:31 +02:00
Ralf Jung 0265e4e61b add tracking issue 2020-06-16 09:25:29 +02:00
bors c8a9c340de Auto merge of #72962 - lcnr:ObligationCause-lrc, r=ecstatic-morse
store `ObligationCause` on the heap

Stores `ObligationCause` on the heap using an `Rc`.

This PR trades off some transient memory allocations to reduce the size of–and thus the number of instructions required to memcpy–a few widely used data structures in trait solving.
2020-06-16 06:22:52 +00:00
Lzu Tao 0e6c333ca6 Use `Ipv4Addr::from<[u8; 4]>` when possible 2020-06-16 01:54:17 +00:00
mark e855b90a8e track caller for delay_span_bug 2020-06-15 18:25:58 -05:00
mark 268decbac8 make all uses of ty::Error or ConstKind::Error delay a span bug 2020-06-15 18:25:58 -05:00
Vadim Petrochenkov e8cf5721b1 linker: Never pass `-no-pie` to non-gnu linkers 2020-06-15 23:17:39 +03:00
ivan tkachenko 71c54db3dc
Fix typo in docs of std::mem 2020-06-15 22:14:45 +03:00
Esteban Küber 8f12485335 review comments 2020-06-15 12:11:28 -07:00
Felix S. Klock II b34a417972 Add more info to `x.py build --help` on default value for `-j JOBS`. 2020-06-15 15:02:57 -04:00
Esteban Küber 96f5584b80 Expand "recursive opaque type" diagnostic
Fix #70968, partially address #66523.
2020-06-15 11:08:43 -07:00
Mark Rousskov 399bf383f4 Disable clippy tests 2020-06-15 13:57:55 -04:00
Mark Rousskov 51e11e310c Avoid prematurely recording toolstates
When we're running with dry_run enabled (i.e. all builds do this initially), we're
guaranteed to save of a toolstate of TestFail for tools that aren't tested. In practice,
we do test tools as well, so for those tools we would initially record them as being
TestPass, and then later on re-record the correct state after actually testing them.
However, this would not work well if the build failed for whatever reason (e.g. panicking
in bootstrap, or as was the case in 73097, clippy failing to test successfully), we would
just go on believing that things passed when they in practice did not.

This commit also adjusts saving toolstate to never record clippy explicitly (otherwise, it
would be recorded when building it); eventually that'll likely move to other tools as well
but not yet. This is deemed simpler than checking everywhere we generically save
toolstate.

We also move clippy out of the "toolstate" no-fail-fast build into a separate x.py
invocation; this should no longer be technically required but provides the nice state of
letting us check toolstate for all tools and only then check clippy (giving full results
on every build).
2020-06-15 13:56:11 -04:00
Esteban Küber bfe1434d3b fix rebase 2020-06-15 09:09:20 -07:00
Esteban Küber f7a1f97307 Change E0758 to E0759 to avoid conflict with #72912 2020-06-15 09:06:58 -07:00
Esteban Küber e31367de6b small tweaks 2020-06-15 09:06:58 -07:00
Esteban Küber 34d8692262 Register new eror code 2020-06-15 09:06:58 -07:00
Esteban Küber 10d9bf1767 Use note for requirement source span 2020-06-15 09:06:58 -07:00
Esteban Küber 31ea589a06 review comments: wording 2020-06-15 09:06:58 -07:00
Esteban Küber 539e9783df Tweak wording and add error code 2020-06-15 09:06:57 -07:00
Esteban Küber bc15790609 Tweak output for overlapping required/captured spans 2020-06-15 09:06:57 -07:00
Esteban Küber e75588934c Move overlapping span to a note 2020-06-15 09:06:57 -07:00
Esteban Küber 921f35fe73 Reduce verbosity of suggestion message and mention lifetime in label 2020-06-15 09:06:57 -07:00
Esteban Küber 4e90f177cc When `'static` is explicit, suggest constraining argument with it 2020-06-15 09:06:57 -07:00
Esteban Küber 81c909488e Suggest substituting `'static` lifetime in impl/dyn `Trait + 'static` return types 2020-06-15 09:06:57 -07:00
Esteban Küber e857696cf8 Tweak "non-primitive cast" error
- Suggest borrowing expression if it would allow cast to work.
- Suggest using `<Type>::from(<expr>)` when appropriate.
- Minor tweak to `;` typo suggestion.

Partily address #47136.
2020-06-15 08:57:20 -07:00
bors f315c35a77 Auto merge of #72357 - ortem:new-dbg-pretty-printers, r=pnkfelix
Implement new gdb/lldb pretty-printers

Reopened #60826

This PR replaces current gdb and lldb pretty-printers with new ones that were originally written for [IntelliJ Rust](https://github.com/intellij-rust/intellij-rust/tree/master/prettyPrinters).

The current state of lldb pretty-printers is poor, because [they don't use synthetic children](https://github.com/rust-lang/rust/issues/55586#issuecomment-436610063). When I started to reimplement lldb pretty-printers with synthetic children support, I've found current version strange and hard to support. I think `debugger_pretty_printers_common.py` is overkill, so I got rid of it.

The new pretty-printers have to support all types supported by current pretty-printers, and also support `Rc`, `Arc`, `Cell`, `Ref`, `RefCell`, `RefMut`, `HashMap`, `HashSet`.

Fixes #56252
2020-06-15 15:21:45 +00:00
Lzu Tao fe7456ce94 Use track caller for bug! macro 2020-06-15 14:17:58 +00:00
Guillaume Gomez b67bdb5082 Re-order correctly the sections in the sidebar 2020-06-15 15:25:24 +02:00
Alexis Bourget 9e510085ec Complete the std::time documentation to warn about the inconsistencies between OS 2020-06-15 15:19:02 +02:00
Lzu Tao 64a6de25ea Join mutiple lines if it is more readable 2020-06-15 13:15:47 +00:00
bors ff4a2533a0 Auto merge of #73369 - RalfJung:rollup-hl8g9zf, r=RalfJung
Rollup of 10 pull requests

Successful merges:

 - #72707 (Use min_specialization in the remaining rustc crates)
 - #72740 (On recursive ADT, provide indirection structured suggestion)
 - #72879 (Miri: avoid tracking current location three times)
 - #72938 (Stabilize Option::zip)
 - #73086 (Rename "cyclone" to "apple-a7" per changes in upstream LLVM)
 - #73104 (Example about explicit mutex dropping)
 - #73139 (Add methods to go from a nul-terminated Vec<u8> to a CString)
 - #73296 (Remove vestigial CI job msvc-aux.)
 - #73304 (Revert heterogeneous SocketAddr PartialEq impls)
 - #73331 (extend network support for HermitCore)

Failed merges:

r? @ghost
2020-06-15 11:39:23 +00:00
Nathan Corbyn e8e0a0e4e2 Update sanitizer test 2020-06-15 11:12:19 +01:00
Ralf Jung 54bd077cd6
Rollup merge of #73331 - hermitcore:listen, r=kennytm
extend network support for HermitCore

- add basic support of TcpListerner for HermitCore
- revise TcpStream to support peer_addr
2020-06-15 12:01:14 +02:00
Ralf Jung 202499fb43
Rollup merge of #73304 - dtolnay:socketeq, r=Mark-Simulacrum
Revert heterogeneous SocketAddr PartialEq impls

Originally added in #72239.

These lead to inference regressions (mostly in tests) in code that looks like:

```rust
let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080);
assert_eq!(socket, "127.0.0.1:8080".parse().unwrap());
```

That compiles as of stable 1.44.0 but fails in beta with:

```console
error[E0284]: type annotations needed
 --> src/main.rs:3:41
  |
3 |     assert_eq!(socket, "127.0.0.1:8080".parse().unwrap());
  |                                         ^^^^^ cannot infer type for type parameter `F` declared on the associated function `parse`
  |
  = note: cannot satisfy `<_ as std::str::FromStr>::Err == _`
help: consider specifying the type argument in the method call
  |
3 |     assert_eq!(socket, "127.0.0.1:8080".parse::<F>().unwrap());
  |
```

Closes #73242.
2020-06-15 12:01:13 +02:00
Ralf Jung fb75d4a746
Rollup merge of #73296 - ehuss:remove-msvc-aux, r=Mark-Simulacrum
Remove vestigial CI job msvc-aux.

This CI job isn't really doing anything, so it seems prudent to remove it.

For some history:
* This was introduced in #48809 when the msvc job was split in two to keep it under 2 hours (oh the good old days). At the time, this check-aux job did a bunch of things:
    * tidy
    * src/test/pretty
    * src/test/run-pass/pretty
    * src/test/run-fail/pretty
    * src/test/run-pass-valgrind/pretty
    * src/test/run-pass-fulldeps/pretty
    * src/test/run-fail-fulldeps/pretty
* Tidy was removed in #60777.
* run-pass and run-pass-fulldeps moved to UI in #63029
* src/test/pretty removed in #58140
* src/test/run-fail moved to UI in #71185
* run-fail-fulldeps removed in #51285

Over time through attrition, the job was left with one lonely thing: `src/test/run-pass-valgrind/pretty`. And of course, this wasn't actually running the "pretty" tests. The normal `run-pass-valgrind` tests ran, and then when it tried to run in "pretty" mode, all the tests were ignored because compiletest thought nothing had changed (apparently compiletest isn't fingerprinting the mode?  Needs more investigation…). `run-pass-valgrind` is already being run as part of `x86_64-msvc-1`, so there's no need to run it here.

I've taken the liberty of removing `src/test/run-pass-valgrind/pretty` as a distinct test. I'm guessing from the other PR's that the pretty tests should now live in `src/test/pretty`, and that the team has moved away from doing pretty tests on other parts of the `src/test` tree.
2020-06-15 12:01:11 +02:00
Ralf Jung ec6fe42dd4
Rollup merge of #73139 - poliorcetics:cstring-from-vec-with-nul, r=dtolnay
Add methods to go from a nul-terminated Vec<u8> to a CString

Fixes #73100.

Doc tests have been written and the documentation on the error type
updated too.

I used `#[stable(feature = "cstring_from_vec_with_nul", since = "1.46.0")]` but I don't know if the version is correct.
2020-06-15 12:01:09 +02:00
Ralf Jung 7c8b9413b8
Rollup merge of #73104 - poliorcetics:explicit-mutex-drop-example, r=dtolnay
Example about explicit mutex dropping

Fixes #67457.

Following the remarks made in #73074, I added an example on the main `Mutex` type, with a situation where there is mutable data and a computation result.

In my testing it is effectively needed to explicitly drop the lock, else it deadlocks.

r? @dtolnay because you were the one to review the previous PR.
2020-06-15 12:01:07 +02:00
Ralf Jung 344095715f
Rollup merge of #73086 - trevyn:apple-a7, r=nikic
Rename "cyclone" to "apple-a7" per changes in upstream LLVM

It looks like they intended to keep "cyclone" as a legacy option, but removed it from the list of subtarget features. This created a flood of warnings when targeting aarch64-apple-ios, and probably also created incorrectly optimized artifacts.

See:
https://reviews.llvm.org/D70779
https://reviews.llvm.org/D70779#C1703593NL568

LLVM 10 merged into master at:
https://github.com/rust-lang/rust/pull/67759
2020-06-15 12:01:05 +02:00
Ralf Jung 89eb74dcac
Rollup merge of #72938 - lzutao:stabilize_option_zip, r=dtolnay
Stabilize Option::zip

This PR stabilizes the following API:

```rust
impl<T> Option<T> {
    pub fn zip<U>(self, other: Option<U>) -> Option<(T, U)>;
}
```

This API has real world usage as seen in <https://grep.app/search?q=-%3E%20Option%3C%5C%28T%2C%5Cs%3FU%5C%29%3E&regexp=true&filter[lang][0]=Rust>.

The `zip_with` method is left unstably as this API is kinda niche
and it hasn't received much usage in Rust repositories on GitHub.

cc #70086
2020-06-15 12:01:03 +02:00
Ralf Jung f9c8a67593
Rollup merge of #72879 - RalfJung:miri-tctx-at, r=oli-obk
Miri: avoid tracking current location three times

Miri tracks the current instruction to execute in the call stack, but it also additionally has two `TyCtxtAt` that carry a `Span` that also tracks the current instruction. That is quite silly, so this PR uses `TyCtxt` instead, and then uses a method for computing the current span when a `TyCtxtAt` is needed. Having less redundant (semi-)global state seems like a good improvement to me. :D

To keep the ConstProp errors the same, I had to add the option to `error_to_const_error` to overwrite the span. Also for some reason this changes cycle errors a bit -- not sure if we are now better or worse as giving those queries the right span. (It is unfortunately quite easy to accidentally use `DUMMY_SP` by calling the query on a `TyCtxt` instead of a `TyCtxtAt`.)

r? @oli-obk @eddyb
2020-06-15 12:01:01 +02:00
Ralf Jung d97e8ca335
Rollup merge of #72740 - estebank:recursive-indirection, r=matthewjasper
On recursive ADT, provide indirection structured suggestion
2020-06-15 12:00:59 +02:00
Ralf Jung eef9356e39
Rollup merge of #72707 - matthewjasper:rustc_min_spec, r=oli-obk
Use min_specialization in the remaining rustc crates

This adds a lot of `transmute` calls to replace the unsound uses of specialization.
It's ugly, but at least it's honest about what's going on.

cc #71420, @RalfJung
2020-06-15 12:00:58 +02:00
Nathan Corbyn babda9470e Fix sanitizer test 2020-06-15 10:21:19 +01:00
Nathan Corbyn 11b56fbfb6 Fix whitespace 2020-06-15 09:40:57 +01:00
Nathan Corbyn ee810a75e4 Fix exports with `#[inline(always)]` 2020-06-15 09:40:56 +01:00
Nathan Corbyn d23bedd13d Fix whitespace 2020-06-15 09:40:56 +01:00
Nathan Corbyn 6b7cacb2c9 Export all fns with extern indicator 2020-06-15 09:40:56 +01:00