Commit Graph

66892 Commits

Author SHA1 Message Date
Corey Farwell
1412ff5512 Rollup merge of #43776 - zackmdavis:feature_gate_fn_must_use, r=alexcrichton
feature-gate #[must_use] for functions as `fn_must_use`

@eddyb I [was](https://github.com/rust-lang/rust/pull/43728#issuecomment-320854120) [dithering](https://github.com/rust-lang/rust/pull/43728#issuecomment-320856407) on this, but [your comment](https://github.com/rust-lang/rust/issues/43302#issuecomment-321174989) makes it sound like we do want a feature gate for this? Please advise.

r? @eddyb
2017-08-26 06:46:31 -07:00
bors
e7070dd019 Auto merge of #44071 - alexcrichton:no-cycles, r=nikomatsakis
rustc: Start moving toward "try_get is a bug" for incremental

This PR is an effort to burn down some of the work items on #42633. The basic change here was to leave the `try_get` function exposed but have it return a `DiagnosticBuilder` instead of a `CycleError`. This means that it should be a compiler bug to *not* handle the error as dropping a diagnostic should result in a complier panic.

After that change it was then necessary to update the compiler's callsites of `try_get` to handle the error coming out. These were handled as:

* The `sized_constraint` and `needs_drop_raw` checks take the diagnostic and defer it as a compiler bug. This was a new piece of functionality added to the error handling infrastructure, and the idea is that for both these checks a "real" compiler error should be emitted elsewhere, so it's only a bug if we don't actually emit the complier error elsewhere.
* MIR inlining was updated to just ignore the diagnostic. This is being tracked by https://github.com/rust-lang/rust/issues/43542 which sounded like it either already had some work underway or was planning to change regardless.
* The final case, `item_path`, is still sort of up for debate. At the time of this writing this PR simply removes the invocations of `try_get` there, assuming that the query will always succeed. This turns out to be true for the test suite anyway! It sounds like, though, that this logic was intended to assist in "weird" situations like `RUST_LOG` where debug implementations can trigger at any time. This PR would therefore, however, break those implementations.

I'm unfortunately sort of out of ideas on how to handle `item_path`, but other thoughts would be welcome!

Closes #42633
2017-08-26 08:25:44 +00:00
bors
398aaffc94 Auto merge of #44028 - nrc:rls-update, r=alexcrichton
Update RLS and Cargo

r? @alexcrichton
2017-08-26 01:28:57 +00:00
Nick Cameron
7cb3f45063 Update RLS and Cargo 2017-08-25 18:12:47 -07:00
Alex Crichton
c766aa4e3b rustc: Make report_cycle and CycleError private 2017-08-25 17:37:21 -07:00
Alex Crichton
c77213d0cc rustc: Skip cyclic checks in item_path
This seems like it may be likely to cause bugs with `RUST_LOG` and other
"interesting" scenarios, but it removes the usage of `try_get` for now!
2017-08-25 16:08:35 -07:00
Alex Crichton
82bad957c0 rustc: Add a FIXME for try_get in MIR inlining
It sounds like this is being handled elsewhere, so for now just preserve the
existing behavior of ignoring th error.
2017-08-25 16:08:35 -07:00
Alex Crichton
ecb29c11bb rustc: Fix two instances of try_get
The `sized_constraint` and `needs_drop_raw` queries both use `try_get` to detect
cycles, but in both of these cases the cycle indicates an error has happened
elsewhere in compilation. In these cases we can just delay the diagnostic to get
emitted as a bug later if we ended up forgetting to emit the error diagnostic.
2017-08-25 16:08:35 -07:00
Alex Crichton
97f2c37435 rustc: Change the return of a query's try_get
This alters the return value of the `try_get` function so the error contains a
diagnostic rather than a `CycleError`. This way consumers are forced to take
*some* action (else they get a bug to an un-emitted diagnostic). This action
could be to emit the error itself, or in some cases delay the diagnostic as a
bug and continue.
2017-08-25 16:08:35 -07:00
Alex Crichton
64b0b2bfeb rustc_errors: Add the ability to delay as bugs
This adds a function to `DiagnosticBuilder` to delay the entire diagnostic as a
bug to be emitted at a later time. This'll end up getting used in the compiler
in the subsequent commits...
2017-08-25 16:08:35 -07:00
bors
83fcd4dbba Auto merge of #43994 - tamird:remove-attributes, r=alexcrichton
*: remove crate_{name,type} attributes

Fixes #41701.

r? @arielb1
2017-08-25 22:54:00 +00:00
Tamir Duberstein
b3f50caee0
*: remove crate_{name,type} attributes
Fixes #41701.
2017-08-25 16:18:21 -04:00
Tamir Duberstein
0463566f27
syntax: clarify field name
The value of this field is meant to indicate whether or not the
crate is rustc's libtest itself - not whether or not it is a test
crate generally.
2017-08-25 16:13:02 -04:00
bors
2aeb5930f3 Auto merge of #44046 - alexcrichton:capture-diagnostics, r=michaelwoerister
rustc: Capture diagnostics from all queries

This commit alters the `rustc::ty::maps` implementation to ensure that all
output diagnostics from the compiler are tracked for the duration of each query.
These are then intended to be replayed back the first time a cached value is
loaded, and otherwise the cache should operate the same as it does today.

Closes #42513
2017-08-25 20:11:25 +00:00
Tamir Duberstein
f2fb45723a
syntax: remove unused field 2017-08-25 16:01:14 -04:00
bors
a1c3365529 Auto merge of #44053 - alexcrichton:no-choco, r=Mark-Simulacrum
appveyor: Use InnoSetup from our mirror

Chocolatey has been pretty flaky, so let's not rely on it.

Closes #43985
2017-08-25 17:26:15 +00:00
bors
a4d11495f9 Auto merge of #43700 - gaurikholkar:struct_lifetimes, r=nikomatsakis
Adding E0623 for structs

This is a fix to #43275

The error message is
```
+error[E0623]: lifetime mismatch
+  --> $DIR/ex3-both-anon-regions-both-are-structs.rs:15:12
+   |
+14 | fn foo(mut x: Vec<Ref>, y: Ref) {
+   |                   ---      --- these structs are declared with different lifetimes...
+15 |     x.push(y);
+   |            ^ ...but data from `y` flows into `x` here
+
+error: aborting due to previous error
```

r? @nikomatsakis
2017-08-25 12:59:04 +00:00
bors
ba65645c78 Auto merge of #44031 - scottmcm:swap_with_slice, r=alexcrichton
Add [T]::swap_with_slice

The safe version of a method from `ptr`, like `[T]::copy_from_slice` is.

Tracking issue: https://github.com/rust-lang/rust/issues/44030
2017-08-25 10:20:15 +00:00
bors
32b50e280f Auto merge of #44012 - michaelwoerister:cache-hir-dep-node-index, r=nikomatsakis
incr.comp.: Cache Hir-DepNodeIndices in the HIR map.

In preparation for red/green. This should also be faster than before without any additional memory cost.

r? @nikomatsakis
2017-08-25 06:40:10 +00:00
bors
426711d11c Auto merge of #43786 - scalexm:issue-43784, r=nikomatsakis
Elaborate trait obligations when typechecking impls

When typechecking trait impl declarations, we only checked that bounds explictly written on the trait declaration hold.

We now also check that bounds which would have been implied by the trait reference do hold.

Fixes #43784.
2017-08-25 02:43:20 +00:00
scalexm
68fd322a95 Change to Elaborate::None inside compute_projection 2017-08-25 03:57:44 +02:00
bors
0cbe6d8fd6 Auto merge of #44070 - smaeul:musl-libunwind, r=alexcrichton
Do not assume libunwind.a is available on musl

Fixes #40113, #44069, and clux/muslrust#16.

libunwind.a is not copied from musl_root, so it must be integrated into the unwind crate.
2017-08-25 00:04:06 +00:00
Alex Crichton
8e95b3a939 rustc: Capture diagnostics from all queries
This commit alters the `rustc::ty::maps` implementation to ensure that all
output diagnostics from the compiler are tracked for the duration of each query.
These are then intended to be replayed back the first time a cached value is
loaded, and otherwise the cache should operate the same as it does today.

Closes #42513
2017-08-24 15:18:06 -07:00
bors
c0771f2190 Auto merge of #44051 - eddyb:apfloat-faster-div, r=nagisa
Speed up APFloat division by using short division for small divisors.

Fixes #43828 (hopefully), by not doing long division bit-by-bit for small divisors.

When parsing the ~200,000 decimal float literals in the `tuple-stress` benchmark, this change brings roughly a 5x speed increase (from `0.6s` to `0.12s`), and the hottest instructions are native `div`s.
2017-08-24 21:18:16 +00:00
Samuel Holland
dbcaf6c80a Do not assume libunwind.a is available 2017-08-24 11:11:55 -05:00
bors
2c0558f635 Auto merge of #43345 - matthewhammer:master, r=nikomatsakis
Profile queries

This PR implements the "profile queries" debugging feature described here:
https://github.com/rust-lang-nursery/rust-forge/blob/master/profile-queries.md

In particular, it implements the debugging flag `-Z profile-queries`

FYI: This PR is my second attempt at pushing these changes.  My original PR required a rebase; I have now done that rebase manually, after messing up with git's "interactive" rebase support.  The original (now closed/cancelled) PR is this one: https://github.com/rust-lang/rust/issues/43156

r? @nikomatsakis
2017-08-24 16:04:50 +00:00
bors
af6298d590 Auto merge of #44011 - TobiasSchaffner:improved_target_spec_clean, r=alexcrichton
L4Re Target: Add the needed Libraries and locate them

Add the libraries and objects that have to be linked to a get working L4Re Binary using pre- and post-link-args. Additionaly some ld commands had to be passed.

* L4Re libraries and objects will be located by an environment variable.
* gcc libraries and objects will be located using a gcc call.

GCC is mandatory for this target, that might need documentation somewhere. As soon as something mandatory cannot be found, the compiler will panic. This is intended, because the functions involved don't allow the usage of a Result type. libgcc_eh is now passed using `-l` and crtbeginT.o and crtend.o are now located using `gcc -print-filename`.
2017-08-24 12:43:13 +00:00
bors
a125ec918f Auto merge of #43907 - euclio:command, r=alexcrichton
Use std::process::Command throughout compile-test

Resubmission of #43798.

Fixes #43762.

r? @alexcrichton
2017-08-24 10:02:18 +00:00
bors
a12e4f8098 Auto merge of #43532 - petrochenkov:pgargs, r=nikomatsakis
Desugar parenthesized generic arguments in HIR

Fixes ICE in https://github.com/rust-lang/rust/issues/43431 and maybe some other similar issues.

r? @eddyb
2017-08-24 03:48:25 +00:00
bors
560b6ca6c0 Auto merge of #42565 - murarth:rc-from-slice, r=aturon
Implement From<&[T]> and others for Arc/Rc (RFC 1845)

* Implements `From<`{`&[T]`, `&str`, `String`, `Box<T> where T: ?Sized`, `Vec<T>`}`>` for `Arc`/`Rc`
* Removes `rustc_private`-marked methods `Rc::__from_array` and `Rc::__from_str`, replacing their use with `Rc::from`

Tracking issue: #40475
2017-08-23 23:20:32 +00:00
Niko Matsakis
373e909d07 add a comment 2017-08-23 18:56:19 -04:00
Andy Russell
91bfe3f55b
capture adb shell stdout 2017-08-23 17:32:09 -04:00
Matthew Hammer
43335aec22 -Z profile-query-and-key, separate from -Z profile-query; query key is string option 2017-08-23 15:21:39 -06:00
gaurikholkar
2cd13189ce build fixes 2017-08-24 02:34:05 +05:30
gaurikholkar
cb563a93dc adding macro, cleaning up code 2017-08-24 01:29:13 +05:30
Matthew Hammer
4251032706 -Z profile-queries includes dep_graph.with_task uses in output 2017-08-23 09:26:48 -06:00
Matthew Hammer
3c24fea882 -Z profile-queries: remove panic when channel is unset 2017-08-23 09:26:48 -06:00
Matthew Hammer
28cb03d4e1 profiling with -Z profile-queries recognizes -Z time-passes 2017-08-23 09:26:48 -06:00
Matthew Hammer
d7ec3e1a7d inc comp: -Z profile-queries support; see also https://github.com/rust-lang-nursery/rust-forge/blob/master/profile-queries.md 2017-08-23 09:26:48 -06:00
gaurikholkar
b569094d94 minor fix 2017-08-23 19:43:05 +05:30
bors
2bb8fca182 Auto merge of #44058 - frewsxcv:rollup, r=frewsxcv
Rollup of 8 pull requests

- Successful merges: #43631, #43977, #43983, #44016, #44039, #44043, #44047, #44054
- Failed merges:
2017-08-23 13:46:14 +00:00
gaurikholkar
90ab9d9a6d code review fixes 2017-08-23 18:43:26 +05:30
Corey Farwell
96efcdf065 Rollup merge of #44054 - frewsxcv:frewsxcv-libstd-thread-unwrap-or-else, r=sfackler
Thread spawning: don't run `min_stack` if the user has specified stack size.

None
2017-08-23 08:44:30 -04:00
Corey Farwell
e9853c4758 Rollup merge of #44047 - cuviper:union-basic-endian, r=petrochenkov
Fix little-endian assumptions in run-pass/union/union-basic

None
2017-08-23 08:44:29 -04:00
Corey Farwell
86f0f44762 Rollup merge of #44043 - mattico:patch-1, r=alexcrichton
Clarify windows build instructions in README

The old wording made me think you were supposed to do `python x.py --build=msvc`, which is not the case. Specify that you need to use the target triple.
2017-08-23 08:44:28 -04:00
Corey Farwell
4d83634faf Rollup merge of #44039 - remexre:master, r=steveklabnik
Mention null_mut on the pointer primitive docs.

Also adds a few mentions that both `*const` and `*mut` support functions, when only `*const` was mentioned before.
2017-08-23 08:44:27 -04:00
Corey Farwell
99ab3193da Rollup merge of #44016 - steffengy:master, r=alexcrichton
libproc_macro docs: fix brace and bracket mixup

The documentation indicates that brace is `[`.
Brace is mapped token::Brace which (expectedly) is `{`.
So the documentation is simply confusing brace and bracket there.

Even though it's just a very small issue, it can lead to quite some confusion.
2017-08-23 08:44:26 -04:00
Corey Farwell
dd58d4e45e Rollup merge of #43983 - ids1024:redox-path-prefix, r=alexcrichton
Redox: correct is_absolute() and has_root()

This is awkward, but representing schemes properly in `Components` is not easily possible without breaking backwards compatibility, as discussed earlier in https://github.com/rust-lang/rust/pull/37702.

But these methods can be corrected anyway.
2017-08-23 08:44:25 -04:00
Corey Farwell
4902e6714f Rollup merge of #43977 - GuillaumeGomez:remove-outline, r=QuietMisdreavus
Remove outline when details have focus

r? @rust-lang/docs

(the green outline annoyed me a bit)
2017-08-23 08:44:24 -04:00
Corey Farwell
1182e52959 Rollup merge of #43631 - ruuda:update-docs, r=QuietMisdreavus
Point "deref coercions" links to new book

Currently the link on doc.rust-lang.org is semi-broken; it links to a page that links to the exact page in the first edition in the book, or to the index of the second edition of the book. If the second editions
is the recommended one now, we should point the links at that one. (In the mean time, the links have been updated to point directly to the first edition of the book, but that hasn't made it onto
the stable channel yet.) By the time this commit makes it onto the stable channel, the second edition of the book should be complete enough. At least the part about deref coercions is.

r? @steveklabnik
2017-08-23 08:44:23 -04:00