Commit Graph

80766 Commits

Author SHA1 Message Date
kennytm 1d035f7bcc
Rollup merge of #52302 - ljedrz:dyn_futureproofing, r=cramertj
Deny bare trait objects in the rest of rust

Add `#![deny(bare_trait_objects)]` to all the modules not covered before (those did not require code changes) that I consider applicable (I left out shims) in order to futureproof them.
2018-07-14 02:56:49 +08:00
kennytm 700f19ad09
Rollup merge of #52300 - ljedrz:dyn_target_test, r=Mark-Simulacrum
Deny bare trait objects in librustc_target and libtest

Enforce `#![deny(bare_trait_objects)]` in `src/librustc_target` and `src/libtest`.
2018-07-14 02:56:47 +08:00
kennytm a6dc16e075
Rollup merge of #52299 - ljedrz:dyn_libserialize, r=cramertj
Deny bare trait objects in src/libserialize

Enforce `#![deny(bare_trait_objects)]` in `src/libserialize`.
2018-07-14 02:56:46 +08:00
kennytm d711c5cd7c
Rollup merge of #52293 - ljedrz:dyn_librustc_typeck, r=estebank
Deny bare trait objects in librustc_typeck

Enforce `#![deny(bare_trait_objects)]` in `src/librustc_typeck`.
2018-07-14 02:56:45 +08:00
kennytm e1452fa71f
Rollup merge of #52290 - ljedrz:dyn_librustc_save_analysis, r=cramertj
Deny bare trait objects in src/librustc_save_analysis

Enforce `#![deny(bare_trait_objects)]` in `src/librustc_save_analysis`.
2018-07-14 02:56:44 +08:00
kennytm 9f79e915ff
Rollup merge of #52280 - japaric:llvm-tools-preview, r=kennytm
llvm-tools-preview: fix build-manifest

r? @alexcrichton
2018-07-14 02:56:42 +08:00
kennytm dad4efb961
Rollup merge of #52156 - zajlerke:update-deprecation-notice, r=Kimundi
Update std::ascii::ASCIIExt deprecation notes

Fixes #52085
2018-07-14 02:56:41 +08:00
kennytm a2c3713ea6
Rollup merge of #52003 - Kerollmops:option-replace, r=Kimundi
Implement `Option::replace` in the core library

Here is the implementation of the `Option::replace` method. The first step of [the tracking issue #51998](https://github.com/rust-lang/rust/issues/51998).
2018-07-14 02:56:40 +08:00
kennytm d8b8402784
Rollup merge of #51962 - crlf0710:patch-2, r=alexcrichton
Provide llvm-strip in llvm-tools component

Shipping this tool gives people reliable way to reduce the generated executable size.

I'm not sure if this strip tool is available from the llvm version current rust is built on. But let's take a look. @japaric
2018-07-14 02:56:37 +08:00
Oliver Schneider 61414fd6c1 Use the correct visibility 2018-07-13 20:45:23 +02:00
Matt Brubeck ecb2dc6b41 Fix link to RFC 1510 2018-07-13 11:00:33 -07:00
Pietro Albini 04d31df71d
Bump bootstrap compiler to 1.28.0-beta.10 2018-07-13 19:33:48 +02:00
Jethro Beekman 488472d754 Don't silently ignore invalid data in target spec 2018-07-13 10:14:16 -07:00
bors fe29a4cda5 Auto merge of #52242 - ashtneoi:suggest-ref-mut, r=pnkfelix
NLL: Suggest `ref mut` and `&mut self`

Fixes #51244. Supersedes #51249, I think.

Under the old lexical lifetimes, the compiler provided helpful suggestions about adding `mut` when you tried to mutate a variable bound as `&self` or (explicit) `ref`. NLL doesn't have those suggestions yet. This pull request adds them.

I didn't bother making the help text exactly the same as without NLL, but I can if that's important.

(Originally this was supposed to be part of #51612, but I got bogged down trying to fit everything in one PR.)
2018-07-13 17:08:39 +00:00
Alex Crichton 94c9ea4bae rustc: Tweak expansion of #[proc_macro] for 2018
The syntactical expansion of `#[proc_macro]` and related attributes currently
contains absolute paths which conflicts with a lint for the 2018 edition,
causing issues like #52214. This commit puts a band-aid on the issue by ensuring
that procedural macros can also migrate to the 2018 edition for now by tweaking
the expansion based on what features are activated. A more long-term solution
would probably tweak the edition hygiene of spans, but this should do the trick
for now.

Closes #52214
2018-07-13 09:32:29 -07:00
Robin Kruppe e20f1d159e Fix typo in improper_ctypes suggestion
closes #52345
2018-07-13 17:09:09 +02:00
kennytm 1e1b800c2e
Enabled core dump on Linux, and print stack trace on failure. 2018-07-13 22:11:02 +08:00
bors bce32b532d Auto merge of #51987 - nikomatsakis:nll-region-infer-scc, r=pnkfelix
nll experiment: compute SCCs instead of iterative region solving

This is an attempt to speed up region solving by replacing the current iterative dataflow with a SCC computation. The idea is to detect cycles (SCCs) amongst region constraints and then compute just one value per cycle. The graph with all cycles removed is of course a DAG, so we can then solve constraints "bottom up" once the liveness values are known.

I kinda ran out of time this morning so the last commit is a bit sloppy but I wanted to get this posted, let travis run on it, and maybe do a perf run, before I clean it up.
2018-07-13 13:28:55 +00:00
Oliver Schneider 22d21b1575 Remove unused macro argument 2018-07-13 15:03:05 +02:00
Michael Woerister e045a6cd8c Use callback-based interface to load ThinLTO import data into rustc. 2018-07-13 12:41:22 +02:00
bors c0955a34bc Auto merge of #51622 - kennytm:three-field-range-inclusive, r=SimonSapin
Change RangeInclusive to a three-field struct.

Fix #45222.

This PR also reverts #48012 (i.e. removed the `try_fold`/`try_rfold` specialization for `RangeInclusive`) because LLVM no longer has trouble recognizing a RangeInclusive loop.
2018-07-13 10:18:38 +00:00
bors 8b48b247dc Auto merge of #52281 - cramertj:fast-tls, r=alexcrichton
Use fast TLS on Fuchsia

I'm not sure why Fuchsia was separated here, but we provide these symbols, and tests are passing in QEMU with this change. cc @raphlinus.

r? @alexcrichton
2018-07-13 08:00:16 +00:00
David Wood d0d33a0335
Switch to any from count when checking for non_exhaustive attribute. 2018-07-13 08:36:01 +01:00
ashtneoi 1ed861910f Bless one more test 2018-07-12 23:11:57 -07:00
ashtneoi 531a68cea7 Factor out suggest_ref_mut; use it in rustc_borrowck
Also teach rustc_borrowck not to show useless help messages like
"use a mutable reference instead: `x`".
2018-07-12 22:51:30 -07:00
ashtneoi 323df7b504 Bless tests and update ERROR 2018-07-12 22:51:30 -07:00
csmoe 7a70140ed5 span_suggestion 2018-07-12 22:51:30 -07:00
csmoe 8932684ccc add nll stderr 2018-07-12 22:51:30 -07:00
csmoe 212da122f7 update test 2018-07-12 22:51:30 -07:00
csmoe af5edc32df replace ref 2018-07-12 22:51:30 -07:00
csmoe 1662daa23d lint with ref_span 2018-07-12 22:51:30 -07:00
csmoe 4e5d22889b update test 2018-07-12 22:51:30 -07:00
csmoe 246caea009 fix wrong replacing 2018-07-12 22:51:30 -07:00
ashtneoi 77d5f39771 Also test `&mut self` suggestion 2018-07-12 22:51:30 -07:00
ashtneoi 73a979ad63 Simplify match expression 2018-07-12 22:51:30 -07:00
ashtneoi b8b04f6385 Put the two halves of suggest_ampmut back together 2018-07-12 22:51:30 -07:00
ashtneoi 6fd1a9fff7 Don't try to suggest `ref mut` for implicit `ref` 2018-07-12 22:51:30 -07:00
ashtneoi 52d6ae854d Reimplement some "add `mut`" suggestions under NLL
Specifically, `&self` -> `&mut self` and explicit `ref` -> `ref mut`.
Implicit `ref` isn't handled yet and causes an ICE.
2018-07-12 22:51:30 -07:00
ashtneoi f8eb9a685c Add `ref mut` suggestion test 2018-07-12 22:51:30 -07:00
Niko Matsakis 6918c17048 nit: fix typo 2018-07-13 01:29:10 -04:00
Niko Matsakis eed2c09a64 nit: fix `all_sccs` comment 2018-07-13 01:29:10 -04:00
Niko Matsakis 0472da3ed6 nit: tweak comment order 2018-07-13 01:29:10 -04:00
Niko Matsakis 114cdd0816 nit: improve SCC comments 2018-07-13 01:29:10 -04:00
Niko Matsakis 9d2999461f nit: clarify "keep it around" comment 2018-07-13 01:29:10 -04:00
Niko Matsakis 666c365db3 nit: s/successor/successors/ 2018-07-13 01:29:10 -04:00
Niko Matsakis 48c414027d nit: `use graph::{self, ..}` 2018-07-13 01:29:10 -04:00
Niko Matsakis 3f90bbc556 dump scc graphviz too 2018-07-13 01:29:10 -04:00
Niko Matsakis d5e77a3c75 impl graphviz trait for a newtype of regioncx 2018-07-13 01:29:10 -04:00
Niko Matsakis ed36698031 compute region values using SCCs not iterative flow
The strategy is this:

- we compute SCCs once all outlives constraints are known
- we allocate a set of values **per region** for storing liveness
- we allocate a set of values **per SCC** for storing the final values
- when we add a liveness constraint to the region R, we also add it
  to the final value of the SCC to which R belongs
- then we can apply the constraints by just walking the DAG for the
  SCCs and union'ing the children (which have their liveness
  constraints within)

There are a few intermediate refactorings that I really ought to have
broken out into their own commits:

- reverse the constraint graph so that `R1: R2` means `R1 -> R2` and
  not `R2 -> R1`. This fits better with the SCC computation and new
  style of inference (`->` now means "take value from" and not "push
  value into")
  - this does affect some of the UI tests, since they traverse the
    graph, but mostly the artificial ones and they don't necessarily
    seem worse
- put some things (constraint set, etc) into `Rc`. This lets us root
  them to permit mutation and iteration. It also guarantees they don't
  change, which is critical to the correctness of the algorithm.
- Generalize various helpers that previously operated only on points
  to work on any sort of region element.
2018-07-13 01:29:10 -04:00
kennytm 6093128ef3
Changed implementation of the third field to make LLVM optimize it better. 2018-07-13 13:26:07 +08:00