Commit Graph

53364 Commits

Author SHA1 Message Date
Luqman Aden
f3e1d57bc2 Allow repr attribute on single variant enum. 2016-05-13 12:36:57 -04:00
Jonathan Turner
ecadd7e957 Update span_label call to new api 2016-05-13 09:27:35 -07:00
bors
bc5789902b Auto merge of #33531 - antonblanchard:local_stage0_fix, r=alexcrichton
Copy more libraries from local Rust to stage0

When bootstrapping Rust using a previously built toolchain, I noticed
a number of libraries were not copied in. As a result the copied in
rustc fails to execute because it can't find all its dependences.

Add them into the local_stage0.sh script.
2016-05-13 08:46:16 -07:00
bors
edb6f83b89 Auto merge of #33513 - sanxiyn:tab-in-error, r=nikomatsakis
Better handling of tab in error

cc #33240.
2016-05-13 06:26:15 -07:00
Andrea Canciani
f96864dab6 Document the x87 control word
Explain the meaning of the fields of the control word and provide more
details about how the relevant one (Precision Control) is updated in
the fast path.
2016-05-13 15:19:23 +02:00
Andrea Canciani
78124a2b32 Fix fast path of float parsing on x87
The fast path of the float parser relies on the rounding to happen
exactly and directly to the correct number of bits. On x87, instead,
double rounding would occour as the FPU stack defaults to 80 bits of
precision.

This can be fixed by setting the precision of the FPU stack before
performing the int to float conversion. This can be achieved by
changing the value of the x87 control word. This is a somewhat common
operation that is in fact performed whenever a float needs to be
truncated to an integer, but it is undesirable to add its overhead for
code that does not rely on x87 for computations (i.e. on non-x86
architectures, or x86 architectures which perform FPU computations on
using SSE).

Fixes `num::dec2flt::fast_path_correct` (on x87).
2016-05-13 15:18:31 +02:00
ggomez
1d6411d863 Add compile-fail tests for error codes 2016-05-13 14:43:56 +02:00
bors
a581c82bdc Auto merge of #33541 - eddyb:promote-only-temps, r=arielb1
mir: don't attempt to promote Unpromotable constant temps.

Fixes #33537. This was a non-problem in regular functions, but we also promote in `const fn`s.
There we always qualify temps so you can't depend on `Unpromotable` temps being `NOT_CONST`.
2016-05-13 03:10:46 -07:00
bors
709e5c5fde Auto merge of #33596 - nikomatsakis:issue-33586-regr-assoc-type-path, r=eddyb
re-introduce a cache for ast-ty-to-ty

It turns out that `ast_ty_to_ty` is supposed to be updating the `def`
after it finishes, but at some point in the past it stopped doing
so. This was never noticed because of the `ast_ty_to_ty_cache`, but that
cache was recently removed. This PR fixes the code to update the def
properly, but apparently that is not quite enough to make the operation
idempotent, so for now we reintroduce the cache too.

Fixes #33586.

r? @eddyb
2016-05-13 00:29:22 -07:00
Steven Burns
04baf2593e Generic encoded enums no longer crash on reference/pointer types 2016-05-12 22:01:49 -06:00
bors
01ed700640 Auto merge of #33450 - SiegeLord:dep_info_no_analysis, r=nrc
Make --emit dep-info work correctly with -Z no-analysis again.

Previously, it would attempt to resolve some external crates that weren't necessary for dep-info output.

Fixes #33231.
2016-05-12 19:52:51 -07:00
Jonathan Turner
1b6afd1e42 Update errors to use new error format 2016-05-12 16:48:59 -07:00
Björn Steinbrink
8ad6d27f87 [MIR] Enhance the SimplifyCfg pass to merge consecutive blocks 2016-05-13 01:46:52 +02:00
Jonathan Turner
104fe1c4db Updating a few more errors with labels 2016-05-12 16:39:19 -07:00
Jonathan Turner
f3054ce18c Set of fixes to improve borrowcks that weren't updated 2016-05-12 16:39:19 -07:00
Jonas Schievink
96b178b131 Some simple improvements to MIR pretty printing
In short, this PR changes the MIR printer so that it:

* places an empty line between the MIR for each item
* does *not* write an empty line before the first BB when there are no
  var decls
* aligns the "// Scope" comments 50 chars in (makes the output more
  readable)
* prints the scope comments as "// scope N at ..." instead of "//
  Scope(N) at ..."
* prints a prettier scope tree:
 * no more unbalanced delimiters!
 * no more "Parent" entry (these convey no useful information)
 * drop the "Scope()" and just print scope IDs
 * no braces when the scope is empty
2016-05-13 00:20:59 +02:00
Tshepang Lekhonkhobe
226cb9c9bd doc: to_string not needed since we gots coercion 2016-05-12 23:52:05 +02:00
Tshepang Lekhonkhobe
10c984a155 doc: use less awkward and less confusing language 2016-05-12 23:37:17 +02:00
bors
4ec5ce5e44 Auto merge of #33282 - alexcrichton:rustbuild-crate-tests, r=brson
rustbuild: Add support for crate tests + doctests

This commit adds support to rustbuild to run crate unit tests (those defined by
`#[test]`) as well as documentation tests. All tests are powered by `cargo test`
under the hood.

Each step requires the `libtest` library is built for that corresponding stage.
Ideally the `test` crate would be a dev-dependency, but for now it's just easier
to ensure that we sequence everything in the right order.

Currently no filtering is implemented, so there's not actually a method of
testing *only* libstd or *only* libcore, but rather entire swaths of crates are
tested all at once.

A few points of note here are:

* The `coretest` and `collectionstest` crates are just listed as `[[test]]`
  entires for `cargo test` to naturally pick up. This mean that `cargo test -p
  core` actually runs all the tests for libcore.
* Libraries that aren't tested all mention `test = false` in their `Cargo.toml`
* Crates aren't currently allowed to have dev-dependencies due to
  rust-lang/cargo#860, but we can likely alleviate this restriction once
  workspaces are implemented.

cc #31590
2016-05-12 14:31:54 -07:00
Tshepang Lekhonkhobe
a181d2fad4 doc: line these comments up
Looks more nice, and same is done with prior examples
2016-05-12 23:25:34 +02:00
Dan Fockler
1e901de9e8 Add error explanations for E0374, E0375, E0376 on issue #33383 2016-05-12 14:20:45 -07:00
Haiko Schol
d4bff0cdda doc: Fix comment in std::string::String example code 2016-05-12 21:49:14 +02:00
Oliver Middleton
538de73f5b rustdoc: Fix missing type parameters on impls 2016-05-12 20:08:33 +01:00
Björn Steinbrink
0eeb14eaba Improve derived implementations for enums with lots of fieldless variants
A number of trait methods like PartialEq::eq or Hash::hash don't
actually need a distinct arm for each variant, because the code within
the arm only depends on the number and types of the fields in the
variants. We can easily exploit this fact to create less and better
code for enums with multiple variants that have no fields at all, the
extreme case being C-like enums.

For nickel.rs and its by now infamous 800 variant enum, this reduces
optimized compile times by 25% and non-optimized compile times by 40%.
Also peak memory usage is down by almost 40% (310MB down to 190MB).

To be fair, most other crates don't benefit nearly as much, because
they don't have as huge enums. The crates in the Rust distribution that
I measured saw basically no change in compile times (I only tried
optimized builds) and only 1-2% reduction in peak memory usage.
2016-05-12 21:05:13 +02:00
Niko Matsakis
aa00e3a552 re-introduce a cache for ast-ty-to-ty
It turns out that `ast_ty_to_ty` is supposed to be updating the `def`
after it finishes, but at some point in the past it stopped doing
so. This was never noticed because of the `ast_ty_to_ty_cache`, but that
cache was recently removed. This PR fixes the code to update the def
properly, but apparently that is not quite enough to make the operation
idempotent, so for now we reintroduce the cache too.

Fixes #33425.
2016-05-12 14:23:26 -04:00
Pavel Sountsov
215b2603f1 Fix the sed invocation to also work with BSD sed. 2016-05-12 09:32:17 -07:00
Steven Fackler
9393e52d4d Don't use env::current_exe with libbacktrace
If the path we give to libbacktrace doesn't actually correspond to the
current process, libbacktrace will segfault *at best*.

cc #21889
2016-05-12 09:13:58 -07:00
Alex Crichton
bb9062a296 rustbuild: Add support for crate tests + doctests
This commit adds support to rustbuild to run crate unit tests (those defined by
`#[test]`) as well as documentation tests. All tests are powered by `cargo test`
under the hood.

Each step requires the `libtest` library is built for that corresponding stage.
Ideally the `test` crate would be a dev-dependency, but for now it's just easier
to ensure that we sequence everything in the right order.

Currently no filtering is implemented, so there's not actually a method of
testing *only* libstd or *only* libcore, but rather entire swaths of crates are
tested all at once.

A few points of note here are:

* The `coretest` and `collectionstest` crates are just listed as `[[test]]`
  entires for `cargo test` to naturally pick up. This mean that `cargo test -p
  core` actually runs all the tests for libcore.
* Libraries that aren't tested all mention `test = false` in their `Cargo.toml`
* Crates aren't currently allowed to have dev-dependencies due to
  rust-lang/cargo#860, but we can likely alleviate this restriction once
  workspaces are implemented.

cc #31590
2016-05-12 08:52:20 -07:00
Stefan Schindler
91e43acf1f Use the correct word in the explanation 2016-05-12 17:38:20 +02:00
Alex Burka
b9fce76f47 fix tidy 2016-05-12 10:59:37 -04:00
ggomez
5f2099d4af Add more details and examples in error code 2016-05-12 16:42:43 +02:00
Alex Burka
df4fe5fbd4 update "reason" for fnbox feature gate
It isn't "newly introduced" anymore.
2016-05-12 10:40:10 -04:00
bors
e88defe718 Auto merge of #33338 - birkenfeld:issue-25356, r=jseyfried
typeck: limit number of candidates shown for a single error

No idea if 10/11 is a good limit. Are there any other such limits in rustc currently?

Fixes: #25356
2016-05-12 04:01:55 -07:00
Seo Sanghyeon
c331032755 Better handling of tab in error 2016-05-12 16:28:13 +09:00
bors
992bb1332f Auto merge of #33306 - vadixidav:master, r=alexcrichton
add implementation of Ord for Cell<T> and RefCell<T> where T: Ord

Raised this in issue #33305.
2016-05-12 00:18:15 -07:00
Georg Brandl
843b174e93 typeck: if a private field exists, also check for a public method
For example, `Vec::len` is both a field and a method, and usually
encountering `vec.len` just means that the parens were forgotten.

Fixes: #26472
2016-05-12 07:53:17 +02:00
Georg Brandl
6ab93d7430 typeck: limit number of candidates shown for a single error
Limit of 4 taken consistent with limit for "similar impl candidates"
in rustc::traits::error_reporting.

Fixes: #25356
2016-05-12 07:39:10 +02:00
Seo Sanghyeon
a7902b12e8 Tighten span for E0063 2016-05-12 13:42:57 +09:00
Corey Farwell
6458b0454f Cleanup formatting and wording for std::env::temp_dir docs. 2016-05-12 00:05:25 -04:00
bors
ed1ece6fd8 Auto merge of #33169 - swgillespie:issue32829, r=eddyb
const_fn: Check the terminating expression of a block for blocks in a const initializer

In a const or static initializer, the `CheckBlock` check ensures that blocks in the initializer expression are only in tail positions or in items. In this case, it didn't check the terminating expression of a block, which resulted in an ICE later in the compiler pipeline if the trailing expression was itself a block. This change fixes the ICE and ensures that the proper error is emitted. This fixes the ICE in #32829 .
2016-05-11 19:48:54 -07:00
Masood Malekghassemi
f52b655621 Plumb inference obligations through selection 2016-05-11 17:29:23 -07:00
bors
22ac88f1a4 Auto merge of #33562 - GuillaumeGomez:rollup, r=steveklabnik
Rollup of 3 pull requests

- Successful merges: #33401, #33489, #33558
- Failed merges: #33342, #33475, #33517
2016-05-11 16:34:54 -07:00
Simonas Kazlauskas
d3218fae7b Check the constants’ parameter environment 2016-05-12 01:10:34 +03:00
Masood Malekghassemi
ec7c483d67 Don't mutate the inference context when assembling 2016-05-11 14:56:52 -07:00
Masood Malekghassemi
8628ccec8f Add inferred obligation storage to all Vtable variants and SelectionContext 2016-05-11 14:40:24 -07:00
Simonas Kazlauskas
5af829b0d0 Gen right parameter envirnoment for assoc consts 2016-05-12 00:33:01 +03:00
Simonas Kazlauskas
fd70788e6d Do not use const Rib for associated constants 2016-05-12 00:31:43 +03:00
Michael Woerister
802bb578e4 trans: Use CrateContext::empty_substs_for_def_id() instead of Substs::empty() where appropriate. 2016-05-11 17:11:20 -04:00
Nick Cameron
3e14f011ec save-analysis: give better text info in value fields 2016-05-11 13:50:23 -07:00
Nick Cameron
a0a987722e save-analysis: attempt number 2 at a JSON version 2016-05-11 13:50:23 -07:00