Commit Graph

67492 Commits

Author SHA1 Message Date
Mark Simulacrum
50f14e906f Rollup merge of #44313 - RalfJung:book, r=nikomatsakis
rustbook: remove dead test functions

There is no "test" subcommand added to the `clap::App`, so this is all dead code.

Cc @steveklabnik -- your [commit](a076961fd0) introducing this stated the intention of having both commands, but it seems nobody has missed the `test` command since February.
2017-09-06 18:27:52 -06:00
Mark Simulacrum
923c3518bc Rollup merge of #44303 - clarcharr:debugs, r=alexcrichton
impl Debug for SplitWhitespace.

This one got missed because `libstd_unicode` doesn't have a `deny(missing_debug_implementations)` like `libstd` and `libcore`. I think that perhaps this lint should check for items exported from other crates too.
2017-09-06 18:27:51 -06:00
Mark Simulacrum
fee0b67177 Rollup merge of #44296 - zmanian:patch-1, r=steveklabnik
Minor documentation improvements for StmtKind

Documentation for Semi and Marco StmtKinds.

Wasn't obvious to me what these were when writing a lint recently.
2017-09-06 18:27:50 -06:00
Mark Simulacrum
5c79f6d05c Rollup merge of #44277 - mattico:test-33185, r=nikomatsakis
Add test for #33185

Closes #33185
2017-09-06 18:27:49 -06:00
Mark Simulacrum
2dabf35771 Rollup merge of #44276 - mattico:test-35376, r=alexcrichton
Add test for #35676

Closes #35676
2017-09-06 18:27:48 -06:00
Mark Simulacrum
da5e5ef4a2 Rollup merge of #44218 - SimonSapin:commit-hash, r=alexcrichton
Add full git commit hash to release channel manifests

The full hash is necessary to build the download URL for "alternate" compiler builds. This is a first step for https://github.com/rust-lang-nursery/rustup.rs/issues/1099.
2017-09-06 18:27:47 -06:00
Mark Simulacrum
b8812a2179 Rollup merge of #44206 - MarkMcCaskey:master, r=steveklabnik
update unimplemented! docs

For #42628 (updating docs from changes from #42155).

Initial changes made to make `unimplemented!` doc comments look more like `unreachable!` and remove statement about the panic message.

r? @steveklabnik
2017-09-06 18:27:46 -06:00
Mark Simulacrum
44351edb64 Rollup merge of #44097 - Xaeroxe:clamp, r=burntsushi
Add clamp functions

Implementation of clamp feature:

Tracking issue: https://github.com/rust-lang/rust/issues/44095
RFC: https://github.com/rust-lang/rfcs/pull/1961
2017-09-06 18:27:45 -06:00
Ben Boeckel
04cbf6eece config.toml.example: fix some typos 2017-09-06 18:23:50 -04:00
Niko Matsakis
ffd21b184c add in a "paranoid" trait bound 2017-09-06 17:54:37 -04:00
topecongiro
ed63e0be95 Add visibility to span for macros 2.0 2017-09-07 06:28:04 +09:00
bgermann
5b76b8681c Use memalign instead of posix_memalign for Solaris
As pointed out in https://github.com/rust-lang/libc/commit/deb61c8,
Solaris 10 does not support posix_memalign.
Use memalign for all Solaris versions instead.
With this change applied I am able to cross-build rustc for Solaris 10.
2017-09-06 21:31:19 +02:00
bors
3681220877 Auto merge of #43975 - RalfJung:gcc, r=alexcrichton
use gcc::Build rather than deprecated gcc::Config

I did `cargo update -p gcc` to upgrade only this package. Is there further process that should be follwoed when updating a build dependency from crates.io?

r? @alexcrichton
Fixes #43973
2017-09-06 19:28:36 +00:00
Stuart Pernsteiner
347db068a5 hir::print: fix parenthesization of exprs 2017-09-06 13:01:15 -04:00
Stuart Pernsteiner
5b2151ea21 better explanatory comment for the pprust-expr-roundtrip test 2017-09-06 10:30:00 -04:00
Stuart Pernsteiner
b79dada453 pprust: fix parenthesization of exprs 2017-09-06 10:26:51 -04:00
bors
a209539060 Auto merge of #43849 - QuietMisdreavus:foreign-impls, r=steveklabnik
rustdoc: add new "Implementations on Foreign Types" section to traits

Demo screenshot:

![image](https://user-images.githubusercontent.com/5217170/29281219-c547f758-80e3-11e7-808f-49f592c65c5b.png)

Full demo available at https://tonberry.quietmisdreavus.net/foreign-test/foreign_test/trait.CheckIt.html

This PR splits the "Implementors" section on trait pages into two: First, for impls on types local to the crate, their impls are kept as-is, printing one line for the impl line, and any additional lines for associated types. However, for types external to the crate, they are now pulled up over the others and are printed (almost) like the summary impl on the type page itself. This gives any doc comments on these impls or methods to be exposed in the documentation.

There's just one small problem, though: [libstd docs apparently surface impls for libc and rand, possibly among others](https://tonberry.quietmisdreavus.net/foreign-std/std/marker/trait.Copy.html#foreign-impls). This adds this section to pages in the std docs where we might not want them to show up in the first place. I think this is a bug distinct from this PR, but it does make it drastically apparent.

~~My question, then, is this: Do we want this here? Taking it out involves fixing which impls are visible to rustdoc, possibly specifically when rendering the std facade. I'm convinced this is fine to land as-is, since it adds a feature specifically for non-std crates (i'm thinking of things like `num` or related crates that implement things on primitives or std types as part of their functionality).~~ (EDIT: I have an open PR to fix this: https://github.com/rust-lang/rust/pull/44026)
2017-09-06 11:24:18 +00:00
Oliver Schneider
5bb870faca Reintroduce the early returns 2017-09-06 12:25:46 +02:00
Oliver Schneider
02fb1b0b72 Fix a bug in the inliner 2017-09-06 10:33:53 +02:00
Oliver Schneider
ddd01455e9
Suggest changing literals instead of calling methods (fixes #44307) 2017-09-06 10:09:25 +02:00
Guillaume Gomez
502e707fa7 Reduce false positives number in rustdoc html diff 2017-09-06 10:05:33 +02:00
Alex Crichton
ed938f08a9 rustc: Attempt to handle super long linker invocations
This commit adds logic to the compiler to attempt to handle super long linker
invocations by falling back to the `@`-file syntax if the invoked command is too
large. Each OS has a limit on how many arguments and how large the arguments can
be when spawning a new process, and linkers tend to be one of those programs
that can hit the limit!

The logic implemented here is to unconditionally attempt to spawn a linker and
then if it fails to spawn with an error from the OS that indicates the command
line is too big we attempt a fallback. The fallback is roughly the same for all
linkers where an argument pointing to a file, prepended with `@`, is passed.
This file then contains all the various arguments that we want to pass to the
linker.

Closes #41190
2017-09-05 21:07:02 -07:00
Zaki Manian
af3536dbbc Remove trailing white space 2017-09-05 18:46:21 -07:00
bors
f83d20eff7 Auto merge of #43426 - qnighy:intercrate-ambiguity-hints, r=nikomatsakis
Add hints when intercrate ambiguity causes overlap.

I'm going to tackle #23980.

# Examples

## Trait impl overlap caused by possible downstream impl

```rust
trait Foo<X> {}
trait Bar<X> {}
impl<X, T> Foo<X> for T where T: Bar<X> {}
impl<X> Foo<X> for i32 {}

fn main() {}
```

```
error[E0119]: conflicting implementations of trait `Foo<_>` for type `i32`:
 --> test1.rs:4:1
  |
3 | impl<X, T> Foo<X> for T where T: Bar<X> {}
  | ------------------------------------------ first implementation here
4 | impl<X> Foo<X> for i32 {}
  | ^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `i32`
  |
  = note: downstream crates may implement Bar

error: aborting due to previous error
```

## Trait impl overlap caused by possible upstream update

```rust
trait Foo {}
impl<T> Foo for T where T: ::std::fmt::Octal {}
impl Foo for () {}

fn main() {}
```

```
error[E0119]: conflicting implementations of trait `Foo` for type `()`:
 --> test2.rs:3:1
  |
2 | impl<T> Foo for T where T: ::std::fmt::Octal {}
  | ----------------------------------------------- first implementation here
3 | impl Foo for () {}
  | ^^^^^^^^^^^^^^^^^^ conflicting implementation for `()`
  |
  = note: upstream crates may add new impl for std::fmt::Octal in future versions

error: aborting due to previous error
```

## Inherent impl overlap caused by possible downstream impl

```rust
trait Bar<X> {}

struct A<T, X>(T, X);
impl<X, T> A<T, X> where T: Bar<X> { fn f(&self) {} }
impl<X> A<i32, X> { fn f(&self) {} }

fn main() {}
```

```
error[E0592]: duplicate definitions with name `f`
 --> test3.rs:4:38
  |
4 | impl<X, T> A<T, X> where T: Bar<X> { fn f(&self) {} }
  |                                      ^^^^^^^^^^^^^^ duplicate definitions for `f`
5 | impl<X> A<i32, X> { fn f(&self) {} }
  |                     -------------- other definition for `f`
  |
  = note: downstream crates may implement Bar

error: aborting due to previous error
```

## Inherent impl overlap caused by possible upstream update

```rust
struct A<T>(T);

impl<T> A<T> where T: ::std::fmt::Octal { fn f(&self) {} }
impl A<()> { fn f(&self) {} }

fn main() {}
```

```
error[E0592]: duplicate definitions with name `f`
 --> test4.rs:3:43
  |
3 | impl<T> A<T> where T: ::std::fmt::Octal { fn f(&self) {} }
  |                                           ^^^^^^^^^^^^^^ duplicate definitions for `f`
4 | impl A<()> { fn f(&self) {} }
  |              -------------- other definition for `f`
  |
  = note: upstream crates may add new impl for std::fmt::Octal in future versions

error: aborting due to previous error
```
2017-09-06 00:28:15 +00:00
Jonathan A. Kollasch
847d1ffbe9 bootstrap: avoid m4 -B for NetBSD-built sparc64 OpenSSL 2017-09-05 16:31:14 -05:00
Jonathan A. Kollasch
2047a0d083 bootstrap: add openssl config for sparc64-unknown-netbsd 2017-09-05 16:31:14 -05:00
Josh Stone
110efe25fa Include rustc in the default ./x.py install
The default install used to include rustc, rust-std, and rust-docs, but
the refactoring in commit 6b3413d825 make rustc only default in
extended builds.  This commit makes rustc installed by default again.
2017-09-05 14:19:22 -07:00
Nick Cameron
05739498c2 Fixup some nits from #44238 2017-09-06 08:34:39 +12:00
Luca Barbato
c3041e8b9e Add support for Vector Sum Saturated on PowerPC 2017-09-05 20:30:47 +00:00
Luca Barbato
eec1c178b3 Add support for Vector Sum Across Partial 1/4 Saturated on PowerPC 2017-09-05 20:27:57 +00:00
Luca Barbato
668d8ff262 Add support for Vector Sum Across Partial 1/2 Saturated on PowerPC 2017-09-05 20:22:34 +00:00
Alex Crichton
c6445ba25b Clarify failure condition on tests 2017-09-05 11:55:01 -07:00
Simon Sapin
f912d771ba Make git commit info optional and per-package in channel manifests
At the moment it is always missing for Cargo and RLS.
Their respective build systems need to be modified to include
`git-commit-hash` files in their "dist" tarballs.
2017-09-05 19:38:28 +02:00
Mark Simulacrum
f87696b268 Test rustdoc unit tests.
Doc tests are temporarily disabled until next release cycle, since
current beta Cargo errors on them. Upgrade should be smooth as the
relevant tests are already fixed in this commit.
2017-09-05 11:17:52 -06:00
Ralf Jung
13cf229037 disable gcc warnings 2017-09-05 18:46:26 +02:00
QuietMisdreavus
a9f0f6df94 add "Implementations on Foreign Types" to the sidebar 2017-09-05 11:21:18 -05:00
QuietMisdreavus
b357a9c09c if not showing default docs on an impl, autohide the items 2017-09-05 11:21:18 -05:00
QuietMisdreavus
30e526805d rustdoc: add new "Implementations on Foreign Types" section to traits 2017-09-05 11:21:14 -05:00
Niko Matsakis
37c9a60a7d factor out helper method 2017-09-05 12:19:36 -04:00
Masaki Hara
099bb1ba8a Fix misdetection of upstream intercrate ambiguity. 2017-09-05 12:19:35 -04:00
Masaki Hara
4d503b0c74 Add downstream tests for intercrate ambiguity hints. 2017-09-05 12:19:35 -04:00
Masaki Hara
d153ff3f79 Print more detailed trait-ref for intercrate ambiguity. 2017-09-05 12:19:35 -04:00
Masaki Hara
84bfc33fac Unify intercrate ambiguity emitters into a function. 2017-09-05 12:19:35 -04:00
Masaki Hara
043786dcdf Fix a very subtle mistake in a ui test. 2017-09-05 12:19:35 -04:00
Masaki Hara
a59cc32ed4 Add tests for intercrate ambiguity hints. 2017-09-05 12:19:35 -04:00
Masaki Hara
bebd622198 Slightly modify hint messages. 2017-09-05 12:19:35 -04:00
Masaki Hara
d49f278263 Add hints when intercrate ambiguity causes overlap. 2017-09-05 12:19:33 -04:00
Alex Crichton
0cdc58a1bc rustc: Store InternedString in DefPathData
Previously a `Symbol` was stored there, but this ended up causing hash
collisions in situations that otherwise shouldn't have a hash collision. Only
the symbol's string value was hashed, but it was possible for distinct symbols
to have the same string value, fooling various calcuations into thinking that
these paths *didn't* need disambiguating data when in fact they did!

By storing `InternedString` instead we're hopefully triggering all the exising
logic to disambiguate paths with same-name `Symbol` but actually distinct
locations.
2017-09-05 07:47:27 -07:00
Alex Crichton
9a231961d5 rustc: Move stability functionality into queries
This commit primarily removes the `stability` field from `TyCtxt` as well as its
internal mutable state, instead using a query to build the stability index as
well as primarily using queries for other related lookups.

Like previous commits the calculation of the stability index is wrapped in a
`with_ignore` node to avoid regressing the current tests, and otherwise this
commit also introduces #44232 but somewhat intentionally so.
2017-09-05 07:37:58 -07:00
Alex Crichton
0182c8bbda rustc: Rename item_body query to extern_const_body
Should hopefully more accurately reflect what's happening! This commit also
removes the cache in the cstore implementation as it's already cached through
the query infrastructure.
2017-09-05 07:37:58 -07:00