Commit Graph

62492 Commits

Author SHA1 Message Date
bors
49c67bd632 Auto merge of #40806 - frewsxcv:rollup, r=frewsxcv
Rollup of 8 pull requests

- Successful merges: #40567, #40602, #40636, #40739, #40756, #40790, #40794, #40803
- Failed merges:
2017-03-24 23:46:45 +00:00
Corey Farwell
6cd46603a4 Rollup merge of #40803 - lukaramu:contributing-docs, r=steveklabnik
Update CONTRIBUTING.md regarding documentation contributions

Changed link to documentation issues from A-docs to T-doc as this has just been migrated.
Added a link to the documentation style guidelines in RFC 1574 (I've linked to [Appendix A][1] specifically since that's the combined version).

r? @steveklabnik

[1]: https://github.com/rust-lang/rfcs/blob/master/text/1574-more-api-documentation-conventions.md#appendix-a-full-conventions-text
2017-03-24 18:13:16 -05:00
Corey Farwell
0566e13ed4 Rollup merge of #40794 - s3rvac:fix-formatting-in-command-envs-docs, r=steveklabnik
Fix formatting in the docs for std::process::Command::envs()

An empty line between the *Basic usage:* text and the example is required to properly format the code. Without the empty line, the example is not formatted as code.

[Here](https://doc.rust-lang.org/std/process/struct.Command.html#method.envs) you can see the current (improper) formatting.
2017-03-24 18:13:15 -05:00
Corey Farwell
eb6f09ce24 Rollup merge of #40790 - stepancheg:btreemap-drop, r=alexcrichton
Unnecessary iteration in BTreeMap::drop

`IntoIter::drop` already iterates.
2017-03-24 18:13:14 -05:00
Corey Farwell
433c0b70ce Rollup merge of #40756 - stjepang:fix-pdqsort-link, r=steveklabnik
Fix markdown links to pdqsort

r? @alexcrichton
2017-03-24 18:13:13 -05:00
Corey Farwell
dd9e5892f4 Rollup merge of #40739 - cuviper:hash-rev-drop, r=arthurprs
Simplify hash table drops

This replaces the `std::collections:#️⃣:table::RevMoveBuckets`
iterator with a simpler `while` loop.  This iterator was only used for
dropping the remaining elements of a `RawTable`, so instead we can just
loop through directly and drop them in place.

This should be functionally equivalent to the former code, but a little
easier to read.  I was hoping it might have some performance benefit
too, but it seems the optimizer was already good enough to see through
the iterator -- the generated code is nearly the same.  Maybe it will
still help if an element type has more complicated drop code.
2017-03-24 18:13:12 -05:00
Corey Farwell
b561d2b530 Rollup merge of #40636 - nikomatsakis:revert-39485, r=eddyb
Revert #39485, fixing type-inference regressions

This reverts PR #39485, which should fix the immediate regressions. Eventually I'd like to land https://github.com/rust-lang/rust/pull/40224 -- or some variant of it -- which revisits the question fo dead-code and inference.

r? @eddyb
cc @canndrew
2017-03-24 18:13:11 -05:00
Corey Farwell
6cf5988651 Rollup merge of #40602 - oli-obk:fn_const, r=eddyb
Represent function pointers in mir-constants as a Value instead of Item

r? @eddyb
2017-03-24 18:13:10 -05:00
Corey Farwell
667e3166d8 Rollup merge of #40567 - clarcharr:rustdoc-sort, r=frewsxcv
Fix for #39596: sort Trait2 before Trait10.

This is a change discussed in #39596. Essentially, item names will be sorted as if they're (&str, u64) pairs instead of just `&str`, meaning that `"Apple" < "Banana"` and also `"Fruit10" > "Fruit2"`.

Sample sorting:

1. Apple
2. Banana
3. Fruit
4. Fruit0
5. Fruit00
6. Fruit1
7. Fruit01
8. Fruit2
9. Fruit02
10. Fruit20
11. Fruit100
12. Pear

Examples of generated documentation:
https://docs.charr.xyz/before-doc/test_sorting/
https://docs.charr.xyz/after-doc/test_sorting/

Screenshots of generated documentation:
Before: http://imgur.com/Ktb10ti
After: http://imgur.com/CZJjqIN
2017-03-24 18:13:09 -05:00
bors
3da40237e5 Auto merge of #40779 - arielb1:bad-arm, r=alexcrichton
update LLVM with fix for PR32379

Fixes #40593.

The "root" codegen bug fixed here is that, when generating ARM code, unpatched LLVM 3.9/3.9.1 miscompiles bit operations in rare circumstances - this can cause user code compiled via LLVM (through both `rustc` and `clang`) to subtly return incorrect results - for more details, see the test in this PR or in the LLVM rare report.

One effect of that LLVM bug is that `rustc` 1.17 (and possibly other versions) is miscompiled on ARM. The code generated by a miscompiled `rustc` lacks destructor calls in many circumstances.

Users who run an affected/miscompiled `rustc` - 1.17 or above - on an ARM build machine will be affected by the (fairly blatant) missing destructor bug, regardless of the target architecture (this includes the official `1.17.0-beta.1`, `1.17.0-beta.2`, and some official 1.17/1.18 nightlies).

Users who use an affected LLVM (that's any unpatched LLVM 3.9/3.9.1), whether through `rustc` (in any version that supports 3.9 - that's 1.12 or above) or through `clang`, who compile code to an ARM target architecture might be affected by the (fairly hard to hit) bit operation bug, regardless of the build machine.

Distributors and user who want to compile rustc using their own LLVM should apply the [patch](cdc303e5ed) to avoid miscompilations.

r? @alexcrichton
Beta-nominating because regression (rustc 1.16 is not blatantly miscompiled). This also picks a fix for the (MSVC-affecting) PR29151.
2017-03-24 21:09:34 +00:00
lukaramu
7643ccd29c Split paragraph in CONTRIBUTING.md 2017-03-24 21:28:59 +01:00
lukaramu
3b0add459c Update CONTRIBUTING.md
Changed link to documentation issues from A-docs to T-doc as this has just been migrated.
Added a link to the documentation style guidelines.
2017-03-24 21:16:00 +01:00
bors
8cf8fc9d89 Auto merge of #40777 - alexcrichton:update-mingw-compilers, r=aturon
appveyor: Upgrade MinGW toolchains we use

In debugging #40546 I was able to reproduce locally finally using
the literal toolchain that the bots were using. I reproduced the error maybe 4
in 10 builds. I also have the 6.3.0 toolchain installed through `pacman` which
has yet to have a failed build.

When attempting to reproduce the bug with the toolchain that this commit
switches to I was unable to reproduce anything after a few builds. I have no
idea what the original problem was, but I'm hoping that it was just some random
bug fixed somewhere along the way.

I don't currently know of a technical reason to stick to the 4.9.2 toolchains we
were previously using. Historcal 5.3.* toolchains would cause llvm to segfault
(maybe a miscompile?) but this seems to have been fixed recently. To me if it
passes CI then I think we're good.

Closes #40546
2017-03-24 18:40:57 +00:00
Alex Crichton
e6e8c91961 appveyor: Upgrade MinGW toolchains we use
In debugging #40546 I was able to reproduce locally finally using
the literal toolchain that the bots were using. I reproduced the error maybe 4
in 10 builds. I also have the 6.3.0 toolchain installed through `pacman` which
has yet to have a failed build.

When attempting to reproduce the bug with the toolchain that this commit
switches to I was unable to reproduce anything after a few builds. I have no
idea what the original problem was, but I'm hoping that it was just some random
bug fixed somewhere along the way.

I don't currently know of a technical reason to stick to the 4.9.2 toolchains we
were previously using. Historcal 5.3.* toolchains would cause llvm to segfault
(maybe a miscompile?) but this seems to have been fixed recently. To me if it
passes CI then I think we're good.

Closes #40546
2017-03-24 09:59:18 -07:00
bors
f2036c7be4 Auto merge of #40769 - alexcrichton:osx-crash-logs, r=nikomatsakis
travis: See if OSX generates crash dumps

I know for a fact we've had sccache segfault on various platforms and we've also
historically had a lot of problems with the linker on OSX. Let's just poke
around in the crash log directory to see if anything exists. If in the future we
see a build we think segfaulted *and* there's contents here then we can add some
bits that actually print out the logs.
2017-03-24 15:42:15 +00:00
Oliver Schneider
9c918464e1
Remove zst hacks 2017-03-24 16:19:32 +01:00
Oliver Schneider
b0d9afbc04
Represent function pointers in mir-constants as a Value instead of Item 2017-03-24 16:19:31 +01:00
Petr Zemek
432673a8dd Add a missing feature attribute to the example for std::process::Command::envs().
The person who originally wrote the example forgot to include this attribute.
This caused Travis CI to fail on commit 9b0a4a4e97 (#40794), which just fixed
formatting in the description of std::process::Command::envs().
2017-03-24 15:47:45 +01:00
bors
366386c46d Auto merge of #40676 - alexcrichton:update-sccache, r=brson
travis: Update sccache binary

Pick up mozilla/sccache#82
2017-03-24 10:11:05 +00:00
Petr Zemek
9b0a4a4e97 Fix formatting in the docs for std::process::Command::envs().
An empty line between the "Basic usage:" text and the example is required to
properly format the code. Without the empty line, the example is not formatted
as code.
2017-03-24 09:42:21 +01:00
Stepan Koltsov
f97b3f08cd Unnecessary iteration in BTreeMap::drop
`IntoIter::drop` already iterates.
2017-03-24 06:18:23 +03:00
Ariel Ben-Yehuda
bd52ff1cc3 update LLVM with fix for PR32379
Fixes #40593.
2017-03-24 00:54:23 +02:00
Clar Charr
c09083c3d1 Fix for #39596: sort Trait1 before Trait2. 2017-03-23 18:21:34 -04:00
Alex Crichton
37fd1320bd travis: Attempt to see if oom kills anything
There's a suspicion that the OOM killer is killing sccache (maybe) so this adds
some logging to test out that assumption to see if anything dies and is logged
by `dmesg`
2017-03-23 12:33:24 -07:00
Alex Crichton
7bed84f17e travis: See if OSX generates crash dumps
I know for a fact we've had sccache segfault on various platforms and we've also
historically had a lot of problems with the linker on OSX. Let's just poke
around in the crash log directory to see if anything exists. If in the future we
see a build we think segfaulted *and* there's contents here then we can add some
bits that actually print out the logs.
2017-03-23 12:00:50 -07:00
bors
e703b33e3e Auto merge of #40759 - alexcrichton:appveyor-retry, r=brson
appveyor: Leverage auto-retry to upload to S3

This was recently implemented (appveyor/ci#1387) in response to one of our
feature requests, so let's take advantage of it! I'm going to optimistically
say...

Closes #39074
2017-03-23 18:43:40 +00:00
Alex Crichton
05c4051f64 travis: Update sccache binary 2017-03-23 10:16:57 -07:00
Alex Crichton
38795677ae travis: Delay sccache downloads in docker
Let's have this layer be towards the end as we're emprically changing sccache
more than we're changing the rest of the image, so this'll allow us to reuse as
much of the cached image as possible.
2017-03-23 10:16:57 -07:00
bors
d5580374d7 Auto merge of #40758 - frewsxcv:rollup, r=frewsxcv
Rollup of 5 pull requests

- Successful merges: #40612, #40627, #40668, #40715, #40753
- Failed merges:
2017-03-23 14:26:13 +00:00
Alex Crichton
823715c18e appveyor: Leverage auto-retry to upload to S3
This was recently implemented (appveyor/ci#1387) in response to one of our
feature requests, so let's take advantage of it! I'm going to optimistically
say...

Closes #39074
2017-03-23 07:07:02 -07:00
Corey Farwell
ea76c5ed56 Rollup merge of #40753 - mandeep:change-ObjectSafetyViolation-message, r=brson
Change object safety violation message

Hello!

This is my first pull request to rust so hopefully all goes well. This PR should fix issue #40670. I changed the error message in object_safety.rs and the corresponding compile-fail test in object-safety-supertrait-mentions-Self.rs.

Once the changes were made, I ran ```python x.py test src/tools/tidy``` and ```python x.py test```. Tidy passed and the compile-fail tests passed, however the test suite failed on the tcp tests as my machine has IPv6 disabled. I'm not sure what to do in this case besides letting travis run the suite against my changes. Please let me know if there's anything I can do to help further.

Thanks!
Mandeep
2017-03-23 08:42:49 -05:00
Corey Farwell
08134cf861 Rollup merge of #40715 - manuel-rhdt:patch-1, r=brson
Fix doc error for ExactSizeIterator

The code example in the trait documentation of ExactSizeIterator
has an incorrect implementation of the len method that does not return
the number of times the example iterator 'Counter' will iterate. This
may confuse readers of the docs as the example code will compile but
doesn't uphold the trait's contract.

This is easily fixed by modifying the implementation of len and changing
the assert statement to actually assert the correct behaviour. I also
slightly modified a code comment to better reflect what the method
returns.
2017-03-23 08:42:48 -05:00
Corey Farwell
2233c6dbf1 Rollup merge of #40668 - cramertj:on-demandify-more, r=nikomatsakis
On-demandify associated item retrieval

Part of #40614.

I also started converting `adt_def`, but I decided to open a PR with just this bit first to make sure I'm going about this correctly.

r? @nikomatsakis
2017-03-23 08:42:47 -05:00
Corey Farwell
640dbbdd3a Rollup merge of #40627 - estebank:pub-restricted, r=petrochenkov
Add diagnostic for incorrect `pub (restriction)`

Given the following statement

```rust
pub (a) fn afn() {}
```

Provide the following diagnostic:

```rust
error: incorrect restriction in `pub`
  --> file.rs:15:1
   |
15 | pub (a) fn afn() {}
   |     ^^^
   |
   = help: some valid visibility restrictions are:
           `pub(crate)`: visible only on the current crate
           `pub(super)`: visible only in the current module's parent
           `pub(in path::to::module)`: visible only on the specified path
help: to make this visible only to module `a`, add `in` before the path:
   | pub (in a) fn afn() {}
```

Follow up to #40340, fix #40599, cc #32409.
2017-03-23 08:42:46 -05:00
Corey Farwell
4e962422d7 Rollup merge of #40612 - TimNN:new-netbsd-cross, r=alexcrichton
Use the "official" cross compiler for NetBSD

The current NetBSD cross compiler is lacking, for example `std::thread` is not available (which causes problems for LLVM 4.0). This PR uses the official netbsd build system to compiler the cross compiler.

@alexcrichton: Can you please mirror `ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-7.0/source/sets/{src,gnusrc,sharesrc,syssrc}.tgz`. (Optionally you may want to use NetBSD versions 7.0.2 or 7.1, in that case you'll probably want to update the binary downloads used today as well).

I'll update the URL's afterwards (or feel free to use "allow edits from maintainers").

r? @alexcrichton
2017-03-23 08:42:45 -05:00
bors
8dfc25e05e Auto merge of #40605 - alexcrichton:add-stamps, r=brson
travis: Add timestamps to all build messages

When debugging why builds are taking so long it's often useful to get the
timestamp of all log messages as we're not always timing every tiny step of the
build. I wrote a [utility] for prepending a relative timestamp from the start of
a process which is now downloaded to the builders and is what we wrap the entire
build invocation in.

[utility]: https://github.com/alexcrichton/stamp-rs

Closes #40577
2017-03-23 12:03:39 +00:00
Stjepan Glavina
49c408e679 Fix markdown links to pdqsort 2017-03-23 12:20:13 +01:00
bors
90346eae18 Auto merge of #40549 - alexcrichton:uwtable-everywhere, r=eddyb
rustc: Always emit the `uwtable` attribute on Windows

This commit alters the translation layer to unconditionally emit the `uwtable`
LLVM attribute on Windows regardless of the `no_landing_pads` setting.
Previously I believe we omitted this attribute as an optimization when the
`-Cpanic=abort` flag was passed, but this unfortunately caused problems for
Gecko.

It [was discovered] that there was trouble unwinding through Rust functions due
to foreign exceptions such as illegal instructions or otherwise in-practice
methods used to abort a process. In testing it looked like the major difference
between a working binary and a non-working binary is indeed this `uwtable`
attribute, but this PR has unfortunately not been thoroughly tested in terms of
compiling Gecko with `-C panic=abort` *and* this PR to see whether it works, so
this is still somewhat working on just suspicion.

[was discovered]: https://bugzilla.mozilla.org/show_bug.cgi?id=1302078
2017-03-23 09:18:11 +00:00
bors
c6df67afca Auto merge of #40515 - alexcrichton:tarball-names, r=brson
rustbuild: Don't hardcode 'nightly' for Cargo

It now follows rustc release trains. I also had to land this commit on beta (0a27a8713b) before https://github.com/rust-lang/rust/pull/40484 could land, so this is basically just a forward port (if you will) of that commit to master.
2017-03-23 06:48:23 +00:00
Esteban Küber
769b95dc9f Add diagnostic for incorrect pub (restriction)
Given the following statement

```rust
pub (a) fn afn() {}
```

Provide the following diagnostic:

```rust
error: incorrect restriction in `pub`
  --> file.rs:15:1
   |
15 | pub (a) fn afn() {}
   | ^^^^^^^
   |
   = help: some valid visibility restrictions are:
           `pub(crate)`: visible only on the current crate
           `pub(super)`: visible only in the current module's parent
           `pub(in path::to::module)`: visible only on the specified path
help: to make this visible only to module `a`, add `in` before the path:
   | pub (in a) fn afn() {}
```

Remove cruft from old `pub(path)` syntax.
2017-03-22 22:51:45 -07:00
mandeep
7d302d2582 Changed E0038 error message in test to comply with new message 2017-03-22 23:06:56 -05:00
bors
7c7753d370 Auto merge of #40752 - frewsxcv:rollup, r=frewsxcv
Rollup of 6 pull requests

- Successful merges: #39891, #40518, #40542, #40617, #40678, #40696
- Failed merges:
2017-03-23 03:53:06 +00:00
Corey Farwell
93074187b6 Rollup merge of #40696 - cramertj:remove-unused-adt-def-code, r=petrochenkov
Remove unused adt-def insertion by constructor DefIndex

It looks to me like ADT definitions weren't being looked up by constructor id, and a test run supports my theory.

In any case, I'm not sure it would have worked in its current configuration. If I understand correctly, the `adt_def` map entry from constructor id -> adt def would only be present after a successful call to `queries::adt_def::get` with the proper ADT `DefIndex`. Trying to look up an adt_def by the constructor index prior to a successful lookup by ADT index would fail since `item.kind` would be `EntryKind::Fn` (for the constructor function) and so would trigger the `bug!`.

r? @nikomatsakis
2017-03-22 23:38:03 -04:00
Corey Farwell
39e4a27204 Rollup merge of #40678 - michaelwoerister:dmi-prep, r=nikomatsakis
Some preparations for directly computing the ICH of crate-metadata.

This PR contains some small fixes in preparation for direct metadata hashing. It mostly just moves stuff into places where it will be needed (making the module structure slightly cleaner along the way) and it fixes some omissions in the MIR region eraser.

r? @nikomatsakis
2017-03-22 23:38:02 -04:00
Corey Farwell
a419ce9406 Rollup merge of #40617 - TimNN:dist-update-gcc, r=alexcrichton
Update gcc used for dist-x86-linux builds

GCC 4.7 is too old to build LLVM 4.0, so this PR updates to 4.8.

r? @alexcrichton (I'll ping you again once travis is green and the test commit is removed).
2017-03-22 23:38:01 -04:00
Corey Farwell
b5dad3a1ab Rollup merge of #40542 - abonander:issue_40535, r=jseyfried
Correctly get source for metatdata-only crate type

Closes #40535

However, I'm not sure how to approach writing a regression test since I'm still working on a reduced test case from the code that caused the ICE in the first place. It's not enough to have an unknown `extern crate` in a metadata crate, it depends on a few extra arguments but I'm not sure which yet.

Also replaced the `unwrap()` with a more informative `expect()`.

r? @jseyfried
2017-03-22 23:38:00 -04:00
Corey Farwell
cc98dfc8d2 Rollup merge of #40518 - michaelwoerister:hir-id, r=eddyb
Introduce HirId, a replacement for ast::NodeId after lowering to HIR

This is the first step towards implementing #40303. This PR introduces the `HirId` type and generates a `HirId` for everything that would be assigned one (i.e. stuff in the HIR), but the HIR data types still use `NodeId` for now. Changing that is a big refactoring that I want to do in a separate PR.

A `HirId` uniquely identifies a node in the HIR of the current crate. It is composed of the `owner`, which is the `DefIndex` of the directly enclosing `hir::Item`, `hir::TraitItem`, or `hir::ImplItem` (i.e. the closest "item-like"), and the `local_id` which is unique within the given owner.

This PR is also running a number of consistency checks for the generated `HirId`s:
- Does `NodeId` in the HIR have a corresponding `HirId`?
- Is the `owner` part of each `HirId` consistent with its position in the HIR?
- Do the numerical values of the `local_id` part all lie within a dense range of integers?

cc @rust-lang/compiler

r? @eddyb or @nikomatsakis
2017-03-22 23:37:59 -04:00
Corey Farwell
916c0b83cc Rollup merge of #39891 - shepmaster:emit-mir, r=nikomatsakis
Teach rustc --emit=mir

I'm opening this PR to discuss:

1. Is this a good idea?
1. Is this a good implementation?

I'm sure people will have opinions on both points!

This spawned from https://github.com/rust-lang/rust/issues/31847#issuecomment-279179057, so I figured a prototype implementation could help provide a seed to talk about.
2017-03-22 23:37:58 -04:00
mandeep
85dbc6570a Changed error message for ObjectSafetyViolation::SupertraitSelf 2017-03-22 21:16:37 -05:00
bors
c62e532f3d Auto merge of #40748 - frewsxcv:rollup, r=frewsxcv
Rollup of 13 pull requests

- Successful merges: #40509, #40523, #40548, #40578, #40619, #40689, #40690, #40692, #40704, #40722, #40723, #40725, #40732
- Failed merges:
2017-03-22 23:31:08 +00:00