Commit Graph

62615 Commits

Author SHA1 Message Date
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
Nick Cameron
3ec61ea921 save-analysis: allow clients to get data directly without writing to a file 2017-03-23 16:32:49 +13: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
Corey Farwell
0e57709161 Rollup merge of #40732 - petrochenkov:booktidy, r=steveklabnik
Update the book submodule and fix tidy

When the book was included into https://github.com/rust-lang/rust as a submodule, tidy started failing on Windows.
https://github.com/rust-lang/book/pull/549 fixed the problem, now the submodule needs to be updated.
2017-03-22 19:30:35 -04:00
Corey Farwell
b2d62e8737 Rollup merge of #40725 - Cldfire:master, r=estebank
Remove duplicated styling in main.css

If nothing else, it saves a bit of data.
2017-03-22 19:30:34 -04:00
Corey Farwell
3e4c910a67 Rollup merge of #40723 - SamWhited:e0090_error_explanation, r=estebank
E0090: Add explanation for error message

See #32777

    $ rustc --explain E0090
    The wrong number of lifetimes were supplied. For example:

    ```
    fn foo<'a: 'b, 'b: 'a>() {}

    fn main() {
        foo::<'static>(); // error, expected 2 lifetime parameters
    }
    ```
2017-03-22 19:30:33 -04:00
Corey Farwell
6e7533f3ae Rollup merge of #40722 - stjepang:doc-consistency-fixes, r=steveklabnik
Various fixes to wording consistency in the docs

A bunch of random fixes, added punctuation, plurals, backticks, and so on...

r? @steveklabnik
2017-03-22 19:30:32 -04:00
Corey Farwell
f2e801e4b4 Rollup merge of #40704 - omtcyfz:clang_version_bump, r=alexcrichton
Nit: LLVM & Clang latest version is 4.0

Small nit: since latest Clang version is 4.0 it's nice to reflect this in the documentation.

Also, I couldn't find anything, but there might be any hard-coded check that Clang version matches "3.X" anywhere in the build system; if there is one, it'd be great to bump that one too.
2017-03-22 19:30:31 -04:00
Corey Farwell
baaa253659 Rollup merge of #40692 - SamWhited:consistent_str_docs_punctuation, r=bstrie
str: Make docs consistently punctuated

Every so slightly pointless one character PR, but this was driving me nuts while reading the docs a moment ago (all the [other public structs](https://doc.rust-lang.org/std/str/index.html#structs) have descriptions that end in a full-stop).
2017-03-22 19:30:30 -04:00
Corey Farwell
81edcb8753 Rollup merge of #40690 - GuillaumeGomez:fix-iter-docs, r=frewsxcv
Fix invalid linking in iter docs

r? @rust-lang/docs
2017-03-22 19:30:29 -04:00
Corey Farwell
88d40dc773 Rollup merge of #40689 - GuillaumeGomez:rustdoc-associated-type-formatting, r=frewsxcv
Add whitespace around "=" in assoc items

Part of #40641.

r? @rust-lang/docs

Before:

<img width="1440" alt="screen shot 2017-03-20 at 22 42 34" src="https://cloud.githubusercontent.com/assets/3050060/24123102/89181d8c-0dbe-11e7-897c-841497cf7001.png">

After:

<img width="1440" alt="screen shot 2017-03-20 at 22 42 36" src="https://cloud.githubusercontent.com/assets/3050060/24123118/8dec176e-0dbe-11e7-9759-cabbd062a4c2.png">
2017-03-22 19:30:28 -04:00
Corey Farwell
5947db1d4e Rollup merge of #40619 - stjepang:unstable-book-sort-unstable, r=frewsxcv
Add docs for sort_unstable to unstable book

Tracking issue for the feature: #40585

r? @steveklabnik
2017-03-22 19:30:27 -04:00
Corey Farwell
d4f296f03b Rollup merge of #40578 - michaelwoerister:shorter-compiletest-stamps, r=alexcrichton
Make the filenames of .stamp files generated by compiletest shorter

Otherwise we run into filename length limitations on some file systems. See https://bugs.launchpad.net/ecryptfs/+bug/344878 for an example where we only can have ~145 characters for filenames.

r? @alexcrichton
2017-03-22 19:30:26 -04:00
Corey Farwell
fde69411dc Rollup merge of #40548 - alexcrichton:appveyor-ninja, r=brson
appveyor: Use Ninja to build LLVM on MinGW

I have a suspicion that MinGW's make is the cause of #40546 rather than anything
else, but that's purely a suspicion without any facts to back it up. In any case
we'll eventually be moving the MSVC build over to Ninja in order to leverage
sccache regardless, so this commit simply jumpstarts that process by downloading
Ninja for use by MinGW anyway.

I'm not sure if this closes #40546 for real, but this is my current best shot at
closing it out, so...

Closes #40546
2017-03-22 19:30:25 -04:00
Corey Farwell
3f4ef9a535 Rollup merge of #40523 - durka:patch-38, r=petrochenkov
add test for nested macro def (#31946)

Adds a test for issue #31946 which was fixed in 1.12.0.

Closes #31946.
2017-03-22 19:30:24 -04:00
Corey Farwell
880f03b28c Rollup merge of #40509 - jseyfried:duplicate_check_macro_exports, r=nrc
Forbid conflicts between macros 1.0 exports and macros 2.0 exports

This PR forbids for conflicts between `#[macro_export]`/`#[macro_reexport]` macro exports and `pub use` macro exports. For example,
```rust
// crate A:
pub use macros::foo;
//^ This is allowed today, will be forbidden by this PR.

// crate B:
extern crate A; // This triggers a confusing error today.
use A::foo; // This could refer to refer to either macro export in crate A.
```

r? @nrc
2017-03-22 19:30:23 -04:00
Jake Goulding
c5a9f1f3f6 Basic documentation for inclusive range syntax 2017-03-22 17:46:27 -04:00
Stjepan Glavina
b7a3d46efa Add 'the' before 'start'/'end' 2017-03-22 18:42:42 +01:00
Josh Stone
a033f1a8ee 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-22 10:32:38 -07:00
Stjepan Glavina
d6da1d9b46 Various fixes to wording consistency in the docs 2017-03-22 17:19:52 +01:00
Michael Woerister
090767b5ef Allocate numerical values of DefIndexes from two seperate ranges.
This way we can have all item-likes occupy a dense range of
DefIndexes, which is good for making fast, array-based
dictionaries.
2017-03-22 17:07:19 +01:00
Michael Woerister
bc259ee844 Introduce HirId, a replacement for NodeId after lowering to HIR.
HirId has a more stable representation than NodeId, meaning that
modifications to one item don't influence (part of) the IDs within
other items. The other part is a DefIndex for which there already
is a way of stable hashing and persistence.

This commit introduces the HirId type and generates a HirId for
every NodeId during HIR lowering, but the resulting values are
not yet used anywhere, except in consistency checks.
2017-03-22 17:02:07 +01:00
Niko Matsakis
0f1eb8a70f add regression test for #39984
Fixes #39984
2017-03-22 11:13:09 -04:00
Niko Matsakis
89ddd717ca Revert "Auto merge of #39485 - canndrew:inference-fix-39297, r=nikomatsakis"
This reverts commit dc0bb3f283, reversing
changes made to e879aa43ef.

This is a temporary step intended to fix regressions. A more
comprehensive fix for type inference and dead-code is in the works.
2017-03-22 11:13:09 -04:00
Michael Woerister
559127b451 Implement indexed_vec::Idx for ast::NodeId 2017-03-22 16:11:18 +01:00
Michael Woerister
9e0589a52b Add resize() method to IndexVec. 2017-03-22 16:11:18 +01:00
Adam Ransom
1ae1a19ba6 Refactor checking if a Lifetime is static
Simply move the test for `keywords::StaticLifetime` into the
`Lifetime` impl, to match how elision is checked.
2017-03-22 19:27:35 +09:00
Steven Fackler
dae66e000a Specialize Vec::from_iter for vec::IntoIter
It's fairly common to expose an API which takes an `IntoIterator` and
immediately collects that into a vector. It's also common to buffer
a bunch of items into a vector and then pass that into one of these
APIs. If the iterator hasn't been advanced, we can make this `from_iter`
simply reassemble the original `Vec` with no actual iteration or
reallocation.
2017-03-22 08:55:17 +00:00
Vadim Petrochenkov
9e772b0092 Update the book submodule and fix tidy 2017-03-22 11:51:03 +03:00
Michael Woerister
45deab4a2c Address review comments. 2017-03-22 09:14:24 +01:00
Michael Woerister
03b8091d10 Move some constants to rustc::ich. 2017-03-22 09:14:24 +01:00
Michael Woerister
9af97e7ff2 Move CachingCodemapView to rustc::ich. 2017-03-22 09:14:24 +01:00
Michael Woerister
1445ed272e Move DefPathHashes to rustc::ich 2017-03-22 09:14:24 +01:00
Michael Woerister
8c00e63f3f Move Fingerprint to rustc::ich::Fingerprint. 2017-03-22 09:14:24 +01:00
Michael Woerister
bb24305742 Add some missing method impls to MIR region eraser. 2017-03-22 09:14:24 +01:00
Michael Woerister
439bf132d9 Support more kinds of Regions in TypeIdHasher. 2017-03-22 09:14:24 +01:00