Commit Graph

54065 Commits

Author SHA1 Message Date
Steve Klabnik
2b94d84413 Rollup merge of #33897 - srinivasreddy:runfail_rustfmt, r=nrc
run rustfmt on test/run-fail folder
2016-06-07 10:43:56 -04:00
Steve Klabnik
98988ba05e Rollup merge of #33645 - withoutboats:woboats_trim_matches_doc, r=steveklabnik
Correct the docs on str::trim_matches

This pattern cannot be a str because str's pattern is not double-ended.
2016-06-07 10:43:55 -04:00
bors
9b2becaf6e Auto merge of #34128 - eddyb:mir-trans-fixes, r=luqmana
[MIR] Fix MIR trans edge cases that showed up on crater.

These fixes cover all of the [regressions found by crater](https://gist.github.com/nikomatsakis/88ce89ed06ef7f7f19bfd1e221d7f7ec) (for #34096).

Two of them were `Pair` edge cases (ZSTs and constants) causing LLVM assertions, the other one was  causing stack overflows in debug scripts compiled in debug mode, due to the `fn_ret_cast` `alloca` ending up in a loop.
2016-06-07 06:31:32 -07:00
Jacob Clark
4504df7514 Test case for borrowk ICE #25579 2016-06-07 11:38:32 +01:00
Felix S. Klock II
4b6a68e447 Fix issue #34101: do not track subcontent of type with dtor nor gather flags for untracked content.
(Includes a regression test, which needed to go into `compile-fail/`
due to weaknesses when combining `#[deny(warnings)]` with
`tcx.sess.span_warn(..)`)

(updated with review feedback from arielb1.)
2016-06-07 10:19:38 +02:00
bors
f35255038b Auto merge of #34012 - eddyb:tick-erased, r=nikomatsakis
rustc: add ReErased to be used by trait selection, MIR and trans.

`ReErased` replaces `ReStatic` (i.e. `'static`) for erasing regions.
Using a distinct lifetime helps prevent accidental mix-ups between the two.
It also allows cleaner type printing (see test changes), including in symbol names:
```rust
str..pattern..CharSearcher$LT$$u27$static$GT$::drop.30560::h840c2f2afc03bbea // before
str..pattern..CharSearcher::drop.30561::h6bd31d2af614377a // after
```
Not that we should be producing symbols this way, but it's still better.
2016-06-07 00:04:53 -07:00
Eduard Burtescu
02cbc0ef8c trans: don't create allocas anywhere other than the entry block. 2016-06-07 10:04:31 +03:00
Horace Abenga
b014039197 Minor changes to variable bindings chapter
* In "... name as another binding, that's currently in scope, will ...", ",
  that's currently in scope, " is not a parenthetical element, and the commas
  can be omitted.

* Other minor changes.
2016-06-07 09:38:15 +03:00
Corey Farwell
7755d0cda6 Add regression tests for #13727.
Fixes https://github.com/rust-lang/rust/issues/13727.
2016-06-06 21:09:24 -04:00
Jeffrey Seyfried
970e15d3c3 Fix bug in librustdoc in which an unmatched "</table>" is emitted. 2016-06-07 00:31:59 +00:00
Jeffrey Seyfried
49de80d7ea Refactor away the prelude injection pass 2016-06-07 00:31:42 +00:00
Joachim Viide
75fc40c668 Remove a gotcha from book/error-handling.md
The book's "Error handling with Box<Error>" section talks about Box<Error>.
In the actual example Box<Error + Send + Sync> is used instead so that the
corresponding From impls could be used to convert a plain string to an error
type. Rust 1.7 added support for conversion from &str/String to
Box<Error>, so this gotcha and later references to it can now be removed.
2016-06-07 02:48:20 +03:00
Eduard Burtescu
11e31091a9 trans: don't forget to cast Pair constants of the wrong type. 2016-06-07 02:21:58 +03:00
Michael Necio
f07aa35549 Noted that shadowing never destroys a value 2016-06-06 18:13:20 -04:00
Jeffrey Seyfried
0f37edb758 Refactor away method resolve_name_in_lexical_scope of ModuleS 2016-06-06 21:51:11 +00:00
Jonas Schievink
6e2f966f72 Remove old -Z options that do nothing
Technically, this is a [breaking-change], but I'm not sure what the
policy for -Z flags is (especially unused ones).
2016-06-06 23:43:44 +02:00
Eduard Burtescu
b6d9f8387a trans: use Pair for ignored nil pairs instead of Immediate. 2016-06-07 00:24:21 +03:00
bors
763f9234b0 Auto merge of #34006 - eddyb:mir-const-fixes, r=nikomatsakis
[MIR] Fix double-rounding of float constants and ignore NaN sign in tests.

Fixes #32805 by handling f32 and f64 separately in rustc_const_eval.

Also removes `#[rustc_no_mir]` from a couple libstd tests by ignoring NaN sign.
Turns out that runtime evaluation of `0.0 / 0.0` produces a NaN with the sign bit set,
whereas LLVM constant folds it to a NaN with the sign bit unset, which we were testing for.
2016-06-06 05:08:50 -07:00
Leo Testard
4dab8ae64e Remove the old FOLLOW checking (aka check_matcher_old). 2016-06-06 12:27:34 +02:00
bors
4a4a13a5bc Auto merge of #33920 - cristianoliveira:error-E0174-explanation, r=GuillaumeGomez
Add error description for E0174

Reference for issue: #32777

r? @GuillaumeGomez

Hey Guillaume, sorry for taking too long to do it. I got some unexpected work during the week.

Waiting for your review :)
2016-06-06 01:02:22 -07:00
Eduard-Mihai Burtescu
8519139ab4 Merge pull request #34102 from eddyb/rollup
Rollup of 12 pull requests
2016-06-06 11:02:19 +03:00
Cristian Oliveira
45e647dfe2 Add error description for E0174 2016-06-06 01:02:26 -03:00
Eduard-Mihai Burtescu
c77076074c Rollup merge of #34090 - srinivasreddy:rustfmt_unicode, r=nagisa
run rustfmt on librustc_unicode
2016-06-06 06:48:33 +03:00
Eduard-Mihai Burtescu
f7a82e04e3 Rollup merge of #34085 - srinivasreddy:rustfmt_libtest, r=eddyb
run rustfmt on libtest folder
2016-06-06 06:48:33 +03:00
Eduard-Mihai Burtescu
61eeffa372 Rollup merge of #34082 - ollie27:rustdoc_css, r=alexcrichton
rustdoc: Fix a few missing colors in the CSS

This adds color to some of the search results and sidebar items which were missing.
2016-06-06 06:48:33 +03:00
Eduard-Mihai Burtescu
324a356d78 Rollup merge of #34081 - RustOS-Fork-Holding-Ground:no-core-build-script, r=alexcrichton
No build.rs for libcore

I did a grep and there are no longer any mention of "rustbuild" in core, in `cfg`s or otherwise.
2016-06-06 06:48:33 +03:00
Eduard-Mihai Burtescu
594990dbde Rollup merge of #34062 - sanxiyn:no-wget, r=nagisa
Unsupport wget

wget support was removed in #32942 (search for wget in diff), but configure wasn't updated. wget support was introduced in #7498 for Windows, but we now use PowerShell on Windows.
2016-06-06 06:48:33 +03:00
Eduard-Mihai Burtescu
f646d93e42 Rollup merge of #34059 - reeze:patch-2, r=GuillaumeGomez
Update comment

The path has changed
2016-06-06 06:48:33 +03:00
Eduard-Mihai Burtescu
9f5be6c2a4 Rollup merge of #34052 - jonas-schievink:issue-32829, r=brson
Add regression test for issue #32829

Closes #32829
2016-06-06 06:48:32 +03:00
Eduard-Mihai Burtescu
d2b8fb4803 Rollup merge of #34048 - shepmaster:corrected-issue-number, r=steveklabnik
Correct issue number in test
2016-06-06 06:48:32 +03:00
Eduard-Mihai Burtescu
0e98d1dc8f Rollup merge of #33955 - zackmdavis:explain_E0429, r=GuillaumeGomez
add explanation for E0429 (`self` use declaration must use brace syntax)

This is an item under #32777.

r? @GuillaumeGomez
2016-06-06 06:48:32 +03:00
Eduard-Mihai Burtescu
a8ab762ea3 Rollup merge of #33786 - birkenfeld:make-fix, r=jseyfried
Makefile.in: dont use unnecessary escapes in echo

I don't know if `echo` allows escapes without `-e` on other systems, but on a GNU userland this outputs literal `\n` on the terminal. In this case there's an easy way to write this without escapes anyway.

r? @GuillaumeGomez
2016-06-06 06:48:32 +03:00
bors
5b1e914b91 Auto merge of #33786 - birkenfeld:make-fix, r=jseyfried
Makefile.in: dont use unnecessary escapes in echo

I don't know if `echo` allows escapes without `-e` on other systems, but on a GNU userland this outputs literal `\n` on the terminal. In this case there's an easy way to write this without escapes anyway.

r? @GuillaumeGomez
2016-06-05 18:24:22 -07:00
Simonas Kazlauskas
12abddb06b Require LLVM 3.7
We are using getMCTargetInfo which is 3.7+
2016-06-06 01:25:11 +03:00
Eduard Burtescu
f158a2f69d mir: remove unused float support from zero_literal. 2016-06-05 22:32:11 +03:00
flo-l
4e87986514 add documentation on howto build just rustc without libstd to the build system 2016-06-05 21:03:38 +02:00
Srinivas Reddy Thatiparthy
73ef372f63 run rustfmt on test/run-fail folder 2016-06-06 00:21:14 +05:30
Mark Côté
fb0d9acf36 Add missing space before parenthesis. 2016-06-05 14:41:42 -04:00
Frank McSherry
094f1c4dc6 Update rc.rs
The original description suggests that the original `Rc<T>` itself is downgraded, which doesn't seem to be what the code does. At the same time, `Rc` is one of those types that can do weird things with only a shared reference, so I thought it would be good to be clear.
2016-06-05 20:26:24 +02:00
Srinivas Reddy Thatiparthy
00bbc27276 run rustfmt on libpanic_unwind folder 2016-06-05 23:34:23 +05:30
Srinivas Reddy Thatiparthy
f5c071ccfa run rustfmt on librustc_unicode 2016-06-05 23:30:11 +05:30
Eduard Burtescu
c77166c685 rustc_const_eval: work around double rounding. 2016-06-05 19:18:28 +03:00
Eduard Burtescu
27673610a6 test: don't assume anything about the sign of NAN. 2016-06-05 19:17:42 +03:00
bors
1c975eafa9 Auto merge of #34039 - ollie27:linkchecker_dirs, r=alexcrichton
linkchecker: Treat directory links as errors

Directory links don't work well offline so they should be treated as errors.

All examples of this I know of are fixed in #34021.
2016-06-05 09:07:38 -07:00
Chris Krycho
2745d3e3d2 Update reference to indicate stabilization of deprecated attribute. 2016-06-05 11:52:47 -04:00
bors
8cbffc5bcf Auto merge of #33905 - eddyb:mir-overflow, r=nikomatsakis
[MIR] Implement overflow checking

The initial set of changes is from @Aatch's #33255 PR, rebased on master, plus:

Added an `Assert` terminator to MIR, to simplify working with overflow and bounds checks.
With this terminator, error cases can be accounted for directly, instead of looking for lang item calls.
It also keeps the MIR slimmer, with no extra explicit blocks for the actual panic calls.

Warnings can be produced when the `Assert` is known to always panic at runtime, e.g.:
```rust
warning: index out of bounds: the len is 1 but the index is 3
 --> <anon>:1:14
1 |> fn main() { &[std::io::stdout()][3]; }
  |>              ^^^^^^^^^^^^^^^^^^^^^^
```

Generalized the `OperandValue::FatPtr` optimization to any aggregate pair of immediates.
This allows us to generate the same IR for overflow checks as old trans, not something worse.
For example, addition on `i16` calls `llvm.sadd.with.overflow.i16`, which returns `{i16, i1}`.
However, the Rust type `(i16, bool)`, has to be `{i16, i8}`, only an immediate `bool` is `i1`.
But if we split the pair into an `i16` and an `i1`, we can pass them around as such for free.

The latest addition is a rebase of #34054, updated to work for pairs too. Closes #34054, fixes #33873.

Last but not least, the `#[rustc_inherit_overflow_checks]` attribute was introduced to control the
overflow checking behavior of generic or `#[inline]` functions, when translated in another crate.

It is **not** intended to be used by crates other than `libcore`, which is in the unusual position of
being distributed as only an optimized build with no checks, even when used from debug mode.
Before MIR-based translation, this worked out fine, as the decision for overflow was made at
translation time, in the crate being compiled, but MIR stored in `rlib` has to contain the checks.

To avoid always generating the checks and slowing everything down, a decision was made to
use an attribute in the few spots of `libcore` that need it (see #33255 for previous discussion):
* `core::ops::{Add, Sub, Mul, Neg, Shl, Shr}` implementations for integers, which have `#[inline]` methods and can be used in generic abstractions from other crates
* `core::ops::{Add, Sub, Mul, Neg, Shl, Shr}Assign` same as above, for augmented assignment
* `pow` and `abs` methods on integers, which intentionally piggy-back on built-in multiplication and negation, respectively, to get overflow checks
* `core::iter::{Iterator, Chain, Peek}::count` and `core::iter::Enumerate::{next, nth}`, also documented as panicking on overflow, from addition, counting elements of an iterator in an `usize`
2016-06-05 06:08:37 -07:00
Eduard Burtescu
cee244d4f0 trans: update Luqmana's patch for generalized pair handling. 2016-06-05 15:34:13 +03:00
Luqman Aden
da081e1eac [MIR] Handle call return values that need to be casted properly. 2016-06-05 14:46:33 +03:00
Eduard Burtescu
e71f6d8ac9 trans: report as many errors as possible for constants. 2016-06-05 14:41:04 +03:00
Eduard Burtescu
d735f6bf33 trans: implement CheckedBinaryOp in mir::constant. 2016-06-05 14:41:04 +03:00