Commit Graph

58218 Commits

Author SHA1 Message Date
Mikhail Modin
a0e7e357a7 Improve "Doesn't live long enough" error
case with different lifetime with spans
2016-11-01 19:39:28 +03:00
bors
69ec350f59 Auto merge of #37497 - iirelu:proper-vec-brackets-2, r=steveklabnik
Make all vec! macros use square brackets: Attempt 2

[The last PR](https://github.com/rust-lang/rust/pull/37476) ended with tears after a valiant struggle with git. I managed to clean up the completely broken history of that into a brand spanking new PR! Yay!

Original:

> Everyone hates the old syntax. I hope. Otherwise this PR has some controversy I wasn't expecting.

> This would be the perfect time to write a lint recommending vec![..] when you use another style.

> Disclaimer: I may have broken something. If I have, I'll fix them when the tests come in. Luckily the chance for a non-syntactical error is pretty low in all this.
2016-10-31 16:29:03 -07:00
iirelu
e593c3b893 Changed most vec! invocations to use square braces
Most of the Rust community agrees that the vec! macro is clearer when
called using square brackets [] instead of regular brackets (). Most of
these ocurrences are from before macros allowed using different types of
brackets.

There is one left unchanged in a pretty-print test, as the pretty
printer still wants it to have regular brackets.
2016-10-31 22:51:40 +00:00
bors
f26eedb571 Auto merge of #37191 - zackmdavis:we_heard_you_the_first_time_really, r=nikomatsakis
introing one-time diagnostics: only emit "lint level defined here" once

This is a revised resubmission of PR #34084 (which was closed due to inactivity on account of time constraints on the author's part).
---

We introduce a new `one_time_diagnostics` field on
`rustc::session::Session` to hold a hashset of diagnostic messages we've
set once but don't want to see again (as uniquified by span and message
text), "lint level defined here" being the motivating example dealt with
here.

This is in the matter of #24690.
---

r? @nikomatsakis
2016-10-31 10:56:25 -07:00
bors
bf5b824c1c Auto merge of #37494 - GuillaumeGomez:rollup, r=GuillaumeGomez
Rollup of 5 pull requests

- Successful merges: #37438, #37458, #37462, #37475, #37486
- Failed merges:
2016-10-31 07:22:58 -07:00
Guillaume Gomez
0a59eba0e8 Rollup merge of #37486 - msiglreith:pr_doc_bitandassign, r=apasel422
Fix typo in the BitAndAssign operator documentation

The name of the operator should be `&=` instead of `&`.
2016-10-31 12:27:24 +01:00
Guillaume Gomez
aa80a8c0a9 Rollup merge of #37475 - AndiDog:feature/error-explanation-E0532, r=GuillaumeGomez
Add E0532 error explanation

This resolves one of the error list in https://github.com/rust-lang/rust/issues/35347 - just because I stumbled over it today.

I assumed the error code should be removed from `register_diagnostics!` because it's now defined above.

Since that is my first code contribution, please check that all is in order. It would be helpful to know how to run the test for the `compile_fail,E0532` part. I did `make check-stage1-cfail NO_REBUILD=1` but that doesn't test the inlined example.

r? @GuillaumeGomez
2016-10-31 12:27:24 +01:00
Guillaume Gomez
46cfba29cf Rollup merge of #37462 - Mark-Simulacrum:remove-obsolete-fixme, r=petrochenkov
Remove outdated fixme comment.

Linked issue has been closed, but the comment was not removed.

If this is still an issue, then the comment should probably be updated.

r? @petrochenkov
2016-10-31 12:27:24 +01:00
Guillaume Gomez
6627cb8928 Rollup merge of #37458 - nrc:save-span-errs2, r=petrochenkov
Fix more spans in deriving::generic

r? @petrochenkov
2016-10-31 12:27:23 +01:00
Guillaume Gomez
48def35f1b Rollup merge of #37438 - Cobrand:index_doc, r=GuillaumeGomez
improve docs for Index and IndexMut

This mainly changes the boring example of Foo/Bar of `IndexMut` into a better one.

Also added explanations about syntactic sugar for `v[index]`.

Closes #36329
2016-10-31 12:27:23 +01:00
bors
074d30d030 Auto merge of #37465 - pftbest:rust-llvm-2016-10-29, r=alexcrichton
LLVM: Update submodule to rust-llvm-2016-10-29 branch.

Fixes #37227
2016-10-31 02:52:54 -07:00
bors
4497196ba5 Auto merge of #37439 - michaelwoerister:remove-sha256, r=alexcrichton
Replace all uses of SHA-256 with BLAKE2b.

Removes the SHA-256 implementation and replaces all uses of it with BLAKE2b, which we already use for debuginfo type guids and incremental compilation hashes. It doesn't make much sense to have two different cryptographic hash implementations in the compiler and Blake has a few advantages over SHA-2 (computationally less expensive, hashes of up to 512 bits).
2016-10-30 23:37:18 -07:00
bors
8f1fc86533 Auto merge of #37489 - nagisa:unnecessary-clone, r=eddyb
Do not clone Mir unnecessarily

r? @eddyb
2016-10-30 20:30:38 -07:00
Andreas Sommer
c8937e0e6a Add E0532 error explanation 2016-10-31 01:53:23 +01:00
Simonas Kazlauskas
8ec0b3a12a Do not clone Mir unnecessarily 2016-10-31 02:16:21 +02:00
bors
bfc9b29acc Auto merge of #37460 - nrc:save-imports, r=eddyb
save-analysis: change imports to carry a ref id rather than their own…

… node id

To make jump to def for imports work

r? @eddyb
2016-10-30 17:01:28 -07:00
Michael Woerister
9ef9194528 Make the crate disambiguator 128 bits instead of 256 bits. 2016-10-30 19:14:18 -04:00
Michael Woerister
bd1ce91249 Add rustc_data_structures to rustc_driver dependencies. 2016-10-30 19:14:18 -04:00
Michael Woerister
a2a2763e6d Replace all uses of SHA-256 with BLAKE2b. 2016-10-30 19:14:18 -04:00
bors
ea20ab107e Auto merge of #37459 - Mark-Simulacrum:closure-ice, r=eddyb
Fix ICE when attempting to print closure generics

Fixes #36622.

r? @eddyb or @arielb1
2016-10-30 13:36:58 -07:00
bors
f5a702dc78 Auto merge of #37445 - nnethercote:shrink-Expr_, r=eddyb
Shrink Expr_::ExprInlineAsm.

On 64-bit this reduces the size of `Expr_` from 144 to 64 bytes, and
reduces the size of `Expr` from 176 to 96 bytes.

For the workload in #36799 this reduces the RSS for the "lowering ast -> hir" phase and all subsequent phases by 50 MiB, which reduces the peak RSS for that workload by about 1%. Not huge, but it's a very easy improvement.

r? @eddyb
2016-10-30 10:12:20 -07:00
msiglreith
9802c4c5f4 Fix typo in the BitAndAssign operator documentation 2016-10-30 17:50:28 +01:00
Mark-Simulacrum
bdb399db01 Fix ICE when attempting to get closure generics. 2016-10-30 08:12:20 -06:00
bors
6062e7ed3d Auto merge of #37431 - jseyfried:refactor_crate_config, r=eddyb
Move `CrateConfig` from `Crate` to `ParseSess`

This is a syntax-[breaking-change]. Most breakage can be fixed by removing a `CrateConfig` argument.
r? @eddyb
2016-10-30 06:51:30 -07:00
bors
aef5ca5590 Auto merge of #37392 - alexcrichton:more-disable-jemalloc, r=brson
Disable jemalloc on aarch64/powerpc

Sounds like jemalloc is broken on systems which differ in page size than the
host it was compiled on (unless an option was passed). This unfortunately
reduces the portability of binaries created and can often make Rust segfault by
default. For now let's patch over this by disabling jemalloc until we can figure
out a better solution.

Closes #36994
Closes #37320
cc jemalloc/jemalloc#467
2016-10-30 03:31:00 -07:00
bors
12382665a9 Auto merge of #37401 - eddyb:lazy-2, r=nikomatsakis
[2/n] rustc_metadata: move is_extern_item to trans.

*This is part of a series ([prev](https://github.com/rust-lang/rust/pull/37400) | [next](https://github.com/rust-lang/rust/pull/37402)) of patches designed to rework rustc into an out-of-order on-demand pipeline model for both better feature support (e.g. [MIR-based](https://github.com/solson/miri) early constant evaluation) and incremental execution of compiler passes (e.g. type-checking), with beneficial consequences to IDE support as well.
If any motivation is unclear, please ask for additional PR description clarifications or code comments.*
<hr>

Minor cleanup missed by #36551: `is_extern_item` is one of, if not the only `CrateStore` method who takes a `TyCtxt` but doesn't produce something cached in it, and such methods are going away.
2016-10-30 00:01:21 -07:00
bors
ef6f743407 Auto merge of #37400 - eddyb:lazy-1, r=nikomatsakis
[1/n] Move the MIR map into the type context.

*This is part of a series ([prev]() | [next](https://github.com/rust-lang/rust/pull/37401)) of patches designed to rework rustc into an out-of-order on-demand pipeline model for both better feature support (e.g. [MIR-based](https://github.com/solson/miri) early constant evaluation) and incremental execution of compiler passes (e.g. type-checking), with beneficial consequences to IDE support as well.
If any motivation is unclear, please ask for additional PR description clarifications or code comments.*
<hr>

The first commit reorganizes the `rustc::mir` module to contain the MIR types directly without an extraneous `repr` module which serves no practical purpose but is rather an eyesore.

The second commit performs the actual move of the MIR map into the type context, for the purposes of future integration with requesting analysis/lowering by-products through `TyCtxt`.

Local `Mir` bodies need to be mutated by passes (hence `RefCell`), and at least one pass (`qualify_consts`) needs simultaneous access to multiple `Mir` bodies (hence arena-allocation).
`Mir` bodies loaded from other crates appear as if immutably borrowed (by `.borrow()`-ing one `Ref` and subsequently "leaking" it) to avoid, at least dynamically, *any* possibility of their local mutation.

One caveat is that lint passes can now snoop at the MIR (helpful) or even mutate it (dangerous).
However, lints are unstable anyway and we can find a way to deal with this in due time.
Future work will result in a tighter API, potentially hiding mutation *completely* outside of MIR passes.
2016-10-29 20:46:20 -07:00
bors
248e7b302a Auto merge of #37399 - retep998:heap-of-trouble, r=alexcrichton
Print out the error when HeapFree failures do occur

cc https://github.com/rust-lang/rust/issues/37395

I'd prefer to use `assert!` instead of `debug_assert!` if the cost is acceptable.

r? @alexcrichton
2016-10-29 17:28:07 -07:00
bors
2b262cf111 Auto merge of #37389 - cramertj:cramertj/fn-item-to-unsafe-ptr, r=eddyb
rustc_typeck: Allow reification from fn item to unsafe ptr

See https://github.com/rust-lang/rfcs/issues/1762.

I've never contributed to the compiler internals before-- apologies if I'm not going about this the right way.
2016-10-29 12:08:38 -07:00
Vadzim Dambrouski
c0e82ad177 LLVM: Update submodule to rust-llvm-2016-10-29 branch. 2016-10-29 18:56:20 +03:00
bors
69d364bc4f Auto merge of #37449 - pnkfelix:fix-issue-37274, r=eddyb
Do not intern filemap to entry w/ mismatched length.

Do not intern filemap to entry w/ mismatched length.

Fix #37274 (I think).

Beta-nominated; note that only the second commit needs to be cherry picked to beta branch. (The first just adds some debug instrumentation that I wish had been present.)
2016-10-29 08:54:30 -07:00
bors
75a87c54d0 Auto merge of #37378 - petrochenkov:nopat, r=eddyb
Prohibit patterns in trait methods without bodies

They are not properly type checked
```rust
trait Tr {
    fn f(&a: u8); // <- This compiles
}
```
, mostly rejected by the parser already and generally don't make much sense.
This PR is kind of a missing part of https://github.com/rust-lang/rust/pull/35015.

Given the [statistics from crater](https://github.com/rust-lang/rust/pull/37378#issuecomment-256154994), the effect of this PR is mostly equivalent to improving `unused_mut` lint.

cc https://github.com/rust-lang/rust/issues/35078#issuecomment-255707355 https://github.com/rust-lang/rust/pull/35015 https://github.com/rust-lang/rfcs/pull/1685 https://github.com/rust-lang/rust/issues/35203
r? @eddyb
2016-10-29 05:41:05 -07:00
Vadim Petrochenkov
4ca11ce196 Update cargo sha for cargotest 2016-10-29 13:19:44 +03:00
Jeffrey Seyfried
cbd24757eb Move CrateConfig from Crate to ParseSess. 2016-10-29 07:52:58 +00:00
bors
5db21c3af6 Auto merge of #37387 - raphlinus:fuchsia_aarch64, r=alexcrichton
Support for aarch64 architecture on Fuchsia

This patch adds support for the aarch64-unknown-fuchsia target. Also
updates src/liblibc submodule to include required libc change.
2016-10-29 00:28:39 -07:00
bors
17e9d9ae82 Auto merge of #37385 - raphlinus:fuchsia_random, r=alexcrichton
Add support for kernel randomness for Fuchsia

Wire up cprng syscall as provider for rand::os::OsRng on Fuchsia.
2016-10-28 21:31:26 -07:00
Mark-Simulacrum
709a06bc92 Remove outdated fixme comment. 2016-10-28 19:35:30 -06:00
bors
e9b2fcb2fe Auto merge of #37373 - nnethercote:html5ever-more-more, r=nrc
Avoid more allocations when compiling html5ever

These three commits reduce the number of allocations performed when compiling html5ever from 13.2M to 10.8M, which speeds up compilation by about 2%.

r? @nrc
2016-10-28 17:02:01 -07:00
Nick Cameron
c751c08cf4 save-analysis: change imports to carry a ref id rather than their own node id 2016-10-29 08:43:14 +10:00
Nick Cameron
c2c37b401e Fix more spans in deriving::generic 2016-10-29 11:18:30 +13:00
bors
f0ab4a4f2a Auto merge of #37367 - jseyfried:import_crate_root, r=nrc
Support `use *;` and `use ::*;`.

Fixes #31484.
r? @nrc
2016-10-28 13:42:23 -07:00
bors
421b595f25 Auto merge of #37450 - GuillaumeGomez:rollup, r=GuillaumeGomez
Rollup of 5 pull requests

- Successful merges: #36206, #37343, #37430, #37436, #37441
- Failed merges:
2016-10-28 10:20:55 -07:00
Cobrand
6768edde78 improve docs for Index and IndexMut 2016-10-28 17:18:48 +02:00
Felix S. Klock II
3f639a0f11 Do not intern filemap to entry w/ mismatched length. Fix #37274 (I think). 2016-10-28 17:16:34 +02:00
Felix S. Klock II
c40fad34e2 Debug instrumentation for construction of ImportedFileMap table entries. 2016-10-28 17:16:34 +02:00
Guillaume Gomez
61e765ad98 Rollup merge of #37441 - federicomenaquintero:master, r=steveklabnik
reference: Mention --crate-type=cdylib in the Linkage section

This option is missing in the docs! :)
2016-10-28 17:05:48 +02:00
Guillaume Gomez
1d7e1b3552 Rollup merge of #37436 - nrc:save-span-errs, r=petrochenkov
Give variant spans used in derives the correct expansion id

This fixes a problem in save-analysis where it mistakes a path to a variant as the variant itself.

r? @petrochenkov
2016-10-28 17:05:48 +02:00
Guillaume Gomez
f12e66e642 Rollup merge of #37430 - robinst:missing-crate-message-add-semicolon, r=eddyb
Add semicolon to "Maybe a missing `extern crate foo`" message

I had it a couple of times that I was missing the "extern crate" line
after I introduced a new dependency. So I copied the text from the
message and inserted it into the beginning of my code, only to find the
compiler complaining that I was missing the semicolon. (I forgot to add
it after the text that I had pasted.)

There's a similar message which does include the semicolon, namely
"help: you can import it into scope: `use foo::Bar;`". I think the two
messages should be consistent, so this change adds it for "extern
crate".
2016-10-28 17:05:47 +02:00
Guillaume Gomez
777502ef05 Rollup merge of #37343 - bluss:write-doc, r=GuillaumeGomez
Add documentation for Read, Write impls for slices and Vec

The Write imps for &[u8] and Vec<u8> are quite different, and we need this to
be reflected in the docs.

These documentation comments will be visible on the respective type's
page in the trait impls section.
2016-10-28 17:05:47 +02:00
Guillaume Gomez
f02577d491 Rollup merge of #36206 - mcarton:35755, r=pnkfelix
Fix bad error message with `::<` in types

Fix #36116.

Before:
```rust
error: expected identifier, found `<`
  --> src/test/compile-fail/issue-36116.rs:16:52
   |
16 |     let f = Some(Foo { _a: 42 }).map(|a| a as Foo::<i32>);
   |                                                    ^

error: chained comparison operators require parentheses
  --> src/test/compile-fail/issue-36116.rs:16:52
   |
16 |     let f = Some(Foo { _a: 42 }).map(|a| a as Foo::<i32>);
   |                                                    ^^^^^^
   |
   = help: use `::<...>` instead of `<...>` if you meant to specify type arguments

error: expected expression, found `)`
  --> src/test/compile-fail/issue-36116.rs:16:57
   |
16 |     let f = Some(Foo { _a: 42 }).map(|a| a as Foo::<i32>);
   |                                                         ^

error: expected identifier, found `<`
  --> src/test/compile-fail/issue-36116.rs:20:17
   |
20 |     let g: Foo::<i32> = Foo { _a: 42 };
   |                 ^

error: aborting due to 5 previous errors
```

After:
```rust
error: unexpected token: `::`
  --> src/test/compile-fail/issue-36116.rs:16:50
   |
16 |     let f = Some(Foo { _a: 42 }).map(|a| a as Foo::<i32>);
   |                                                  ^^
   |
   = help: use `<...>` instead of `::<...>` if you meant to specify type arguments

error: unexpected token: `::`
  --> src/test/compile-fail/issue-36116.rs:20:15
   |
20 |     let g: Foo::<i32> = Foo { _a: 42 };
   |               ^^
   |
   = help: use `<...>` instead of `::<...>` if you meant to specify type arguments

error: aborting due to 2 previous errors
```
2016-10-28 17:05:47 +02:00