Commit Graph

58759 Commits

Author SHA1 Message Date
Guillaume Gomez
850e355d28 Rollup merge of #37821 - tshepang:nits, r=steveklabnik
doc: nits and typos on comments
2016-11-17 19:40:58 +01:00
Guillaume Gomez
214bcc5290 Rollup merge of #37806 - GuillaumeGomez:net_examples, r=frewsxcv
Net examples

r? @steveklabnik
2016-11-17 19:40:58 +01:00
Guillaume Gomez
e88e13d311 Rollup merge of #37799 - michaelwoerister:ich-type-def-tests, r=nikomatsakis
ICH: Add test case for type alias definitions

r? @nikomatsakis
2016-11-17 19:40:58 +01:00
Guillaume Gomez
5426143f6a Rollup merge of #37772 - durka:patch-32, r=petrochenkov
add test for #37765

Adds a test for #37765, a path parsing fix which removes the need for a parenthesis workaround.

Closes #37765.
cc #37290 @withoutboats
r? @petrochenkov
2016-11-17 19:40:58 +01:00
Guillaume Gomez
369b996d5f Rollup merge of #37766 - tarka:book-testing-concurrency-capture, r=steveklabnik
Add sections about testing concurrency and stdout/err capture
2016-11-17 19:40:57 +01:00
Guillaume Gomez
b633767b10 Rollup merge of #37759 - robinst:trait-use-message-add-semicolon, r=eddyb
Add semicolon to "perhaps add a `use` for one of them" help

Similar to pull request #37430, this makes the message more copy-paste
friendly and aligns it with other messages like:

    help: you can import it into scope: use foo::Bar;

r? @eddyb
2016-11-17 19:40:57 +01:00
Guillaume Gomez
5c8824da07 Rollup merge of #37757 - rust-lang:E0002-precision, r=brson
Uncomment some long error explanation

Retry of #37058.

r? @steveklabnik
cc @brson
2016-11-17 19:40:57 +01:00
Guillaume Gomez
9ed3797fb6 Rollup merge of #37752 - arielb1:incoherent-error, r=nikomatsakis
coherence: skip impls with an erroneous trait ref

Impls with a erroneous trait ref are already ignored in the first part
of coherence, so ignore them in the second part too. This avoids
cascading coherence errors when 1 impl of a trait has an error.

r? @nikomatsakis
2016-11-17 19:40:57 +01:00
bors
5bd1e7f59f Auto merge of #37793 - jseyfried:fix_proc_macro_def_ids, r=nrc
Fix proc macro def ids

Update some `CStore` methods to also work correctly with proc macro def ids.
Fixes #37788.
r? @nrc
2016-11-17 04:38:08 -08:00
bors
29181b3f0c Auto merge of #37717 - nikomatsakis:region-obligations-pre, r=eddyb
Refactoring towards region obligation

Two refactorings towards the intermediate goal of propagating region obligations through the `InferOk` structure (which in turn leads to the possibility of lazy normalization).

1. Remove `TypeOrigin` and add `ObligationCause`
    - as we converge subtyping and obligations and so forth, the ability to keep these types distinct gets harder
2. Propagate obligations from `InferOk` into the surrounding fulfillment context

After these land, I have a separate branch (which still needs a bit of work) that can make the actual change to stop directly adding subregion edges and instead propagate obligations. (This should also make it easier to fix the unsoundness in specialization around lifetimes.)

r? @eddyb
2016-11-17 01:18:51 -08:00
Tshepang Lekhonkhobe
99b1f9c9c8 doc: nits and typos on comments 2016-11-17 08:32:17 +02:00
bors
6cd5be81cc Auto merge of #37607 - dns2utf8:doc_grammar, r=alexcrichton
Fix grammar verification

 * Use make check-lexer to verify the grammar.
 * Extend grammar/README
 * Add make clean-grammar rule
 * Add target check-build-lexer-verifier to make tidy, so it will build the verifier with every build and catch future errors

This is the continuation of #34994

r? @steveklabnik @jonathandturner @alexcrichton
2016-11-16 21:02:55 -08:00
bors
f22fdb03eb Auto merge of #37375 - GuillaumeGomez:cast_message, r=arielb1
Improve reference cast help message

Fixes #37338.
2016-11-16 16:30:27 -08:00
Brian Anderson
ba872f2707 Revert "Bump the bootstrap cargo to match the one paired with 1.13"
This reverts commit 5ad235c8c0.
2016-11-17 00:11:10 +00:00
Brian Anderson
beb9a0dfc5 Merge pull request #37635 from brson/bootstrap
Bump the bootstrap cargo to match the one paired with 1.13
2016-11-16 16:08:41 -08:00
Stefan Schindler
0e1828ab03 Fix grammar verification
* Use `make check-lexer` to verify the grammar.
 * Extend grammar/README
 * Add make clean-grammar rule
 * Add target `check-build-lexer-verifier` to `make tidy`, so it will build the verifier with every build and catch future errors
 * Search for antlr4 with configure and find
2016-11-16 22:42:07 +01:00
Guillaume Gomez
37903bfcf6 Improve reference cast help message 2016-11-16 22:40:55 +01:00
Jeffrey Seyfried
0172e463b0 Add regression test. 2016-11-16 21:29:56 +00:00
Guillaume Gomez
976bfc0322 Add examples for Ipv4Addr 2016-11-16 21:13:44 +01:00
Guillaume Gomez
27acb5ca11 Add missing urls and improve internal doc representation 2016-11-16 19:56:01 +01:00
Michael Woerister
8e4097f6a8 ICH: Add test case for type alias definitions 2016-11-16 11:56:18 -05:00
bors
9d4b6fa51d Auto merge of #37545 - alexcrichton:crt-static, r=brson
rustc: Implement #[link(cfg(..))] and crt-static

This commit is an implementation of [RFC 1721] which adds a new target feature
to the compiler, `crt-static`, which can be used to select how the C runtime for
a target is linked. Most targets dynamically linke the C runtime by default with
the notable exception of some of the musl targets.

[RFC 1721]: https://github.com/rust-lang/rfcs/blob/master/text/1721-crt-static.md

This commit first adds the new target-feature, `crt-static`. If enabled, then
the `cfg(target_feature = "crt-static")` will be available. Targets like musl
will have this enabled by default. This feature can be controlled through the
standard target-feature interface, `-C target-feature=+crt-static` or
`-C target-feature=-crt-static`.

Next this adds an gated and unstable `#[link(cfg(..))]` feature to enable the
`crt-static` semantics we want with libc. The exact behavior of this attribute
is a little squishy, but it's intended to be a forever-unstable
implementation detail of the liblibc crate.

Specifically the `#[link(cfg(..))]` annotation means that the `#[link]`
directive is only active in a compilation unit if that `cfg` value is satisfied.
For example when compiling an rlib, these directives are just encoded and
ignored for dylibs, and all staticlibs are continued to be put into the rlib as
usual. When placing that rlib into a staticlib, executable, or dylib, however,
the `cfg` is evaluated *as if it were defined in the final artifact* and the
library is decided to be linked or not.

Essentially, what'll happen is:

* On MSVC with `-C target-feature=-crt-static`, the `msvcrt.lib` library will be
  linked to.
* On MSVC with `-C target-feature=+crt-static`, the `libcmt.lib` library will be
  linked to.
* On musl with `-C target-feature=-crt-static`, the object files in liblibc.rlib
  are removed and `-lc` is passed instead.
* On musl with `-C target-feature=+crt-static`, the object files in liblibc.rlib
  are used and `-lc` is not passed.

This commit does **not** include an update to the liblibc module to implement
these changes. I plan to do that just after the 1.14.0 beta release is cut to
ensure we get ample time to test this feature.

cc #37406
2016-11-16 08:25:38 -08:00
Alex Crichton
06242ff15d rustc: Implement #[link(cfg(..))] and crt-static
This commit is an implementation of [RFC 1721] which adds a new target feature
to the compiler, `crt-static`, which can be used to select how the C runtime for
a target is linked. Most targets dynamically linke the C runtime by default with
the notable exception of some of the musl targets.

[RFC 1721]: https://github.com/rust-lang/rfcs/blob/master/text/1721-crt-static.md

This commit first adds the new target-feature, `crt-static`. If enabled, then
the `cfg(target_feature = "crt-static")` will be available. Targets like musl
will have this enabled by default. This feature can be controlled through the
standard target-feature interface, `-C target-feature=+crt-static` or
`-C target-feature=-crt-static`.

Next this adds an gated and unstable `#[link(cfg(..))]` feature to enable the
`crt-static` semantics we want with libc. The exact behavior of this attribute
is a little squishy, but it's intended to be a forever-unstable
implementation detail of the liblibc crate.

Specifically the `#[link(cfg(..))]` annotation means that the `#[link]`
directive is only active in a compilation unit if that `cfg` value is satisfied.
For example when compiling an rlib, these directives are just encoded and
ignored for dylibs, and all staticlibs are continued to be put into the rlib as
usual. When placing that rlib into a staticlib, executable, or dylib, however,
the `cfg` is evaluated *as if it were defined in the final artifact* and the
library is decided to be linked or not.

Essentially, what'll happen is:

* On MSVC with `-C target-feature=-crt-static`, the `msvcrt.lib` library will be
  linked to.
* On MSVC with `-C target-feature=+crt-static`, the `libcmt.lib` library will be
  linked to.
* On musl with `-C target-feature=-crt-static`, the object files in liblibc.rlib
  are removed and `-lc` is passed instead.
* On musl with `-C target-feature=+crt-static`, the object files in liblibc.rlib
  are used and `-lc` is not passed.

This commit does **not** include an update to the liblibc module to implement
these changes. I plan to do that just after the 1.14.0 beta release is cut to
ensure we get ample time to test this feature.

cc #37406
2016-11-16 07:00:09 -08:00
bors
478c0d1614 Auto merge of #37774 - frewsxcv:path-doc-example, r=brson
Update top-level path doc examples to show results.

None
2016-11-16 05:06:30 -08:00
bors
d88d06448e Auto merge of #37773 - ollie27:rustdoc_inline_glob, r=brson
rustdoc: Fix some local inlining issues

* Only inline public items when inlining glob imports.
* Never inline while in a private module or a child of a private module.
* Never inline impls. This allowed the removal of a workaround in the
rendering code.
2016-11-16 01:17:53 -08:00
Jeffrey Seyfried
88dfb885ea Improve proc macro def ids. 2016-11-16 06:10:34 +00:00
bors
c19cb9c12d Auto merge of #37764 - nnethercote:shrink-scope_auxiliary, r=nikomatsakis
Remove `scope_auxiliary`.

`scope_auxiliary` is a big part of the high memory usage in #36799. It's only used for MIR dumping. I have taken a hubristic approach: I have assumed that particular use is unimportant and removed `scope_auxiliary` and related things. This reduces peak RSS by ~10% for a cut-down version of the program in #36799.

If that assumption is wrong perhaps we can avoid building `scope_auxiliary` unless MIR dumping is enabled.
2016-11-15 20:43:53 -08:00
bors
c87bae6b65 Auto merge of #37758 - euclio:unstable, r=brson
do not use deprecated text for unstable docs

![2016-11-13-18 55 23](https://cloud.githubusercontent.com/assets/1372438/20249943/d7f684a2-a9d2-11e6-8c5a-a2bfe354b9aa.png)
![2016-11-13-18 55 12](https://cloud.githubusercontent.com/assets/1372438/20249942/d7f6595a-a9d2-11e6-9240-07f5a89367f4.png)

![2016-11-13-18 54 00](https://cloud.githubusercontent.com/assets/1372438/20249946/da176d46-a9d2-11e6-8f34-c09cff9bcc15.png)
![2016-11-13-18 54 45](https://cloud.githubusercontent.com/assets/1372438/20249941/d7d9837a-a9d2-11e6-99f4-e4bf8807b1c9.png)
2016-11-15 15:59:52 -08:00
Niko Matsakis
48dc6e26ca register infer-ok obligations properly
Or at least, more properly. I think I left one or two FIXMEs still in
there.

cc #32730
2016-11-15 16:12:41 -05:00
Niko Matsakis
19c1a47713 remove TypeOrigin and use ObligationCause instead
In general having all these different structs for "origins" is not
great, since equating types can cause obligations and vice-versa.  I
think we should gradually collapse these things. We almost certainly
also need to invest a big more energy into the `error_reporting` code to
rationalize it: this PR does kind of the minimal effort in that
direction.
2016-11-15 16:12:41 -05:00
bors
43006fcea0 Auto merge of #37742 - mrhota:llvm_debuginfo, r=alexcrichton
Add llvm debuginfo configure option

CC @nnethercote @Mark-Simulacrum

We add a new configure option, `--enable-llvm-debuginfo`, to do exactly what you'd think.

Re: #31033

Fixes #37738
2016-11-15 09:10:23 -08:00
bors
30857ae8f6 Auto merge of #37714 - alexcrichton:builtins-hidden, r=nikomatsakis
rustc: Flag all builtins functions as hidden

When compiling compiler-rt you typically compile with `-fvisibility=hidden`
which to ensure that all symbols are hidden in shared objects and don't show up
in symbol tables. This is important for these intrinsics being linked in every
crate to ensure that we're not unnecessarily bloating the public ABI of Rust
crates.

This should help allow the compiler-builtins project with Rust-defined builtins
start landing in-tree as well.
2016-11-15 04:42:28 -08:00
bors
c8867f8b46 Auto merge of #37672 - japaric:msp430, r=alexcrichton
enable the MSP430 LLVM backend

to let people experiment with this target out of tree.

The MSP430 architecture is used in 16-bit microcontrollers commonly used
in Digital Signal Processing applications.

---

How this was tested:

Declaring a custom target with the following specification:

``` json
{
  "arch": "msp430",
  "data-layout": "e-m:e-p:16:16-i32:16:32-a:16-n8:16",
  "executables": true,
  "linker": "msp430-gcc",
  "llvm-target": "msp430",
  "max-atomic-width": 0,
  "no-integrated-as": true,
  "os": "none",
  "panic-strategy": "abort",
  "relocation-model": "static",
  "target-endian": "little",
  "target-pointer-width": "16"
}
```

And this minimal file:

``` rust

pub fn start() -> ! {
    loop {}
}

trait Copy {}

trait Sized {}
```

Produces the following object files:

```
$ rustc --target=msp430 --emit=obj foo.rs

$ msp430-objdump -Cd foo.o

foo.o:     file format elf32-msp430

Disassembly of section .text.start:

00000000 <start>:
   0:   21 83           decd    r1
   2:   00 3c           jmp     $+2             ;abs 0x4
   4:   00 3c           jmp     $+2             ;abs 0x6
   6:   ff 3f           jmp     $+0             ;abs 0x6

$ rustc --target=msp430 --emit=obj foo.rs -O

$ msp430-objdump -Cd foo.o

foo.o:     file format elf32-msp430

Disassembly of section .text.start:

00000000 <start>:
   0:   ff 3f           jmp     $+0             ;abs 0x0
```

---

r? @alexcrichton
~~TODO get this working with Makefiles so nightly releases include this backend~~
~~TODO measure the increase in binary size~~ +187KiB (+0.47%)
~~FIXME --emit=obj produces empty object files~~
2016-11-15 01:27:47 -08:00
bors
0ed951993f Auto merge of #37775 - alexcrichton:try-fix-dox, r=brson
rustbuild: Tweak default rule inclusion

If a rule is flagged with `default(true)` then the pseudo-rule `default:foo`
will include that. If a rule is also flagged with `.host(true)`, however, then
the rule shouldn't be included for targets that aren't in the host array. This
adds a filter to ensure we don't pull in host rules for targets by accident.
2016-11-14 18:12:26 -08:00
bors
bd6a54db74 Auto merge of #37771 - alexcrichton:fix-nightlies, r=brson
test: Move missing-items to a ui test

This test is failing on nightly for unknown reasons, and my best guess is a
difference in grep versions which is interpreting symbols differently. For now
let's just move this to a ui test and hope it fixes nightlies.
2016-11-14 14:04:54 -08:00
Corey Farwell
af1aa1bccf Update top-level path doc examples to show results. 2016-11-14 15:54:40 -05:00
Alex Crichton
7cd8a497cc rustbuild: Tweak default rule inclusion
If a rule is flagged with `default(true)` then the pseudo-rule `default:foo`
will include that. If a rule is also flagged with `.host(true)`, however, then
the rule shouldn't be included for targets that aren't in the host array. This
adds a filter to ensure we don't pull in host rules for targets by accident.
2016-11-14 12:52:06 -08:00
bors
2154588f7a Auto merge of #37740 - bluss:corrected-vec-collect, r=alexcrichton
Restore Vec::from_iter() specialization

Since I said "no intentional functional change" in the previous commit,
I guess it was inevitable there were unintentional changes. Not
functional, but optimization-wise. This restores the extend
specialization's use in Vec::from_iter. (commit 1).

Also use specialization in from_iter to reduce allocation code duplication
for the TrustedLen case (commit 2).

Bug introduced in PR #37709
2016-11-14 11:07:29 -08:00
Oliver Middleton
6fe7786db6 rustdoc: Fix some local inlining issues
* Only inline public items when inlining glob imports.
* Never inline while in a private module or a child of a private module.
* Never inline impls. This allowed the removal of a workaround in the
rendering code.
2016-11-14 18:24:47 +00:00
Alex Burka
8e70a50a8a add test for #37765 2016-11-14 12:35:37 -05:00
Alex Crichton
3216024523 test: Move missing-items to a ui test
This test is failing on nightly for unknown reasons, and my best guess is a
difference in grep versions which is interpreting symbols differently. For now
let's just move this to a ui test and hope it fixes nightlies.
2016-11-14 09:23:17 -08:00
Steve Smith
5a76fe4225 Remove thread-per-CPU bit as it may not be accurate. 2016-11-14 16:43:25 +00:00
Steve Smith
b9e17fa58a Typo in new section 2016-11-14 14:21:35 +00:00
bors
766f6e4782 Auto merge of #37755 - polo-language:doc-punct, r=GuillaumeGomez
Improved punctuation, capitalization, and sentence structure of code snippet comments

r? @GuillaumeGomez
2016-11-14 06:00:27 -08:00
Steve Smith
67df9b9ac6 Add sections about concurrency and stdout/err capture to the Testing chapter of the book. 2016-11-14 13:52:43 +00:00
bors
8289a8916f Auto merge of #37278 - matklad:lone-lifetime, r=jseyfried
Fix syntax error in the compiler

Currently `rustc` accepts the following code: `fn f<'a>() where 'a {}`. This should be a syntax error, shouldn't it?

Not sure if my changes actually compile, waiting for the LLVM to build.
2016-11-14 02:46:12 -08:00
Jorge Aparicio
80ca1e1251 don't build an object file for emit=asm,llvm-ir 2016-11-14 03:37:46 -05:00
bors
7bef60a648 Auto merge of #37754 - frewsxcv:path-push, r=GuillaumeGomez
Minor rewriting of `std::path::Path::push` doc example.

None
2016-11-13 23:31:54 -08:00
Aleksey Kladov
cf9ff2b59b Fix where clauses parsing
Don't allow lifetimes without any bounds at all
2016-11-14 10:23:20 +03:00
Nicholas Nethercote
d7755701ad Remove scope_auxiliary.
This reduces the peak RSS for a cut-down version of the program
in #36799 by 10%, from 951MB to 856MB.
2016-11-14 17:04:05 +11:00