]> git.lizzy.rs Git - rust.git/log
rust.git
9 years agoRollup merge of #23013 - nikomatsakis:syncbox, r=pnkfelix
Manish Goregaokar [Wed, 4 Mar 2015 10:17:02 +0000 (15:47 +0530)]
Rollup merge of #23013 - nikomatsakis:syncbox, r=pnkfelix

 When generating WF criteria, do not visit the same type more than once. Fixes an infinite stack overflow (#23003).

r? @aturon

9 years agoRollup merge of #23004 - alexcrichton:libc-stable, r=brson
Manish Goregaokar [Wed, 4 Mar 2015 10:16:51 +0000 (15:46 +0530)]
Rollup merge of #23004 - alexcrichton:libc-stable, r=brson

 This same source is being built in the Cargo ecosystem and hence needs to build
on stable Rust as well. This commit places the `no_std` attribute along with the
`no_std` feature behind a `cfg_attr` flag so they are not processed when
compiled on crates.io

9 years agoRollup merge of #23001 - alexcrichton:index-output-stable, r=nikomatsakis
Manish Goregaokar [Wed, 4 Mar 2015 10:16:35 +0000 (15:46 +0530)]
Rollup merge of #23001 - alexcrichton:index-output-stable, r=nikomatsakis

 This stability attribute was left out by accident and the stability pass has
since picked up the ability to check for this. As a result, crates are currently
getting warnings for implementations of `Index`.

9 years agoRollup merge of #23000 - Florob:unicode-FL, r=brson
Manish Goregaokar [Wed, 4 Mar 2015 10:16:17 +0000 (15:46 +0530)]
Rollup merge of #23000 - Florob:unicode-FL, r=brson

 This handles the ranges contained in UnicodeData.txt.
Counterintuitively this actually makes the tables shorter.

9 years agoRollup merge of #22939 - bleibig:grammar-updates, r=sanxiyn
Manish Goregaokar [Wed, 4 Mar 2015 10:16:07 +0000 (15:46 +0530)]
Rollup merge of #22939 - bleibig:grammar-updates, r=sanxiyn

 Updates to the bison grammar to account for recent grammar additions and new tests. In particular:

* Support parsing `impl MyTrait for .. { }`
* Support parsing ExprQualifiedPaths without \"as TRAIT_REF\" such as `<Foo>::bar(&Foo)`
* Support parsing \"for\" clauses at the beginning of where clauses such as `where for<'a, 'b> &'a T: Bar<'b>`

9 years agoRollup merge of #22029 - iKevinY:tidy-changes, r=brson
Manish Goregaokar [Wed, 4 Mar 2015 10:15:53 +0000 (15:45 +0530)]
Rollup merge of #22029 - iKevinY:tidy-changes, r=brson

 Currently, the list of files linted in `tidy.py` is unordered. It seems more appropriate for more frequently appearing files (like `.rs`) to appear at the top of the list and for \"other files\" to appear at the very end. This PR also changes the wildcard import of `check_license()` into an explicit one.

```
Before:                     After:
* linted 4 .sh files        * linted 5034 .rs files
* linted 4 .h files         * linted 29 .c files
* linted 29 .c files        * linted 28 .py files
* linted 2 .js files        * linted 4 .sh files
* linted 0 other files      * linted 4 .h files
* linted 28 .py files       * linted 2 .js files
* linted 5034 .rs files     * linted 0 other files
```

r? @brson

9 years agoAuto merge of #22061 - pczarn:quote_matcher_and_attr, r=kmcallister
bors [Thu, 5 Mar 2015 04:32:51 +0000 (04:32 +0000)]
Auto merge of #22061 - pczarn:quote_matcher_and_attr, r=kmcallister

Fixes #19674
Fixes #17396 (already closed, yeah)

cc @kmcallister , @cmr

9 years agoAuto merge of #22873 - alexcrichton:deprecate-fs, r=aturon
bors [Thu, 5 Mar 2015 01:19:15 +0000 (01:19 +0000)]
Auto merge of #22873 - alexcrichton:deprecate-fs, r=aturon

This commit deprecates the majority of std::old_io::fs in favor of std::fs and
its new functionality. Some functions remain non-deprecated but are now behind a
feature gate called `old_fs`. These functions will be deprecated once
suitable replacements have been implemented.

The compiler has been migrated to new `std::fs` and `std::path` APIs where
appropriate as part of this change.

[breaking-change]

9 years agostd: Deprecate std::old_io::fs
Alex Crichton [Fri, 27 Feb 2015 05:00:43 +0000 (21:00 -0800)]
std: Deprecate std::old_io::fs

This commit deprecates the majority of std::old_io::fs in favor of std::fs and
its new functionality. Some functions remain non-deprecated but are now behind a
feature gate called `old_fs`. These functions will be deprecated once
suitable replacements have been implemented.

The compiler has been migrated to new `std::fs` and `std::path` APIs where
appropriate as part of this change.

9 years agoAdd quasiquote for matchers and attributes
Piotr Czarnecki [Tue, 24 Feb 2015 18:56:01 +0000 (19:56 +0100)]
Add quasiquote for matchers and attributes

9 years agoAuto merge of #22235 - michaelwoerister:cross-crate-spans, r=michaelwoerister
bors [Wed, 4 Mar 2015 14:47:51 +0000 (14:47 +0000)]
Auto merge of #22235 - michaelwoerister:cross-crate-spans, r=michaelwoerister

This allows to create proper debuginfo line information for items inlined from other crates (e.g. instantiations of generics). Only the codemap's 'metadata' is stored in a crate's metadata. That is, just filename, positions of line-beginnings, etc. but not the actual source code itself.

Crate metadata size is increased by this change because spans in the encoded ASTs take up space now:
```
                BEFORE    AFTER
libcore         36 MiB    39.6 MiB    +10%
libsyntax       51.1 MiB  60.5 MiB    +18.4%
libcollections  11.2 MiB  12.8 MiB    +14.3%
```
This only affects binaries containing metadata (rlibs and dylibs), executables should not be affected in size.

Fixes #19228 and probably #22226.

9 years agoAuto merge of #22920 - tshepang:remove-some-warnings, r=huonw
bors [Wed, 4 Mar 2015 12:16:51 +0000 (12:16 +0000)]
Auto merge of #22920 - tshepang:remove-some-warnings, r=huonw

9 years agoAuto merge of #22958 - laijs:option_map_for_iter_map, r=alexcrichton
bors [Wed, 4 Mar 2015 09:46:29 +0000 (09:46 +0000)]
Auto merge of #22958 - laijs:option_map_for_iter_map, r=alexcrichton

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
9 years agoEncode codemap and span information in crate metadata.
Michael Woerister [Wed, 11 Feb 2015 17:29:49 +0000 (18:29 +0100)]
Encode codemap and span information in crate metadata.

This allows to create proper debuginfo line information for items inlined from other crates (e.g. instantiations of generics).
Only the codemap's 'metadata' is stored in a crate's metadata. That is, just filename, line-beginnings, etc. but not the actual source code itself. We are thus missing the opportunity of making Rust the first "open-source-only" programming language out there. Pity.

9 years agoWhen generating WF criteria, do not visit the same type more than
Niko Matsakis [Wed, 4 Mar 2015 00:27:50 +0000 (19:27 -0500)]
When generating WF criteria, do not visit the same type more than
once. Fixes an infinite stack overflow (#23003).

9 years agolibc: Move features behind a cfg_attr gate
Alex Crichton [Tue, 3 Mar 2015 21:05:55 +0000 (13:05 -0800)]
libc: Move features behind a cfg_attr gate

This same source is being built in the Cargo ecosystem and hence needs to build
on stable Rust as well. This commit places the `no_std` attribute along with the
`no_std` feature behind a `cfg_attr` flag so they are not processed when
compiled on crates.io

9 years agoAuto merge of #23002 - pnkfelix:fsk-box-place-runway, r=nikomatsakis
bors [Tue, 3 Mar 2015 20:17:08 +0000 (20:17 +0000)]
Auto merge of #23002 - pnkfelix:fsk-box-place-runway, r=nikomatsakis

Runway for RFC 809 (overloaded box/placement-in) by adding type annotations or explicit calls to `Box::new` where I found it necessary on PR #22086.

I have broken this up into more than one PR because the entire commit chain (see PR #22086) is long, widespread and unwieldy to rebase frequently.

To my knowledge this is not a breaking change.  Also, there is in principle nothing stopping someone from reverting some/all of these annotations, since without the rest of the commit chain in #22086, the associated code would continue to compile.

All I can do is ask: Try to discourage others from removing seemingly "unnecessary" uses of the `Box` type or the `Box::new()` function, until the rest of RFC 809 lands.

9 years agoFix doc example to accommodate overloaded-box.
Felix S. Klock II [Thu, 26 Feb 2015 17:27:11 +0000 (18:27 +0100)]
Fix doc example to accommodate overloaded-box.

9 years agoSwitched to Box::new in many places.
Felix S. Klock II [Sun, 15 Feb 2015 08:52:21 +0000 (09:52 +0100)]
Switched to Box::new in many places.

Many of the modifications putting in `Box::new` calls also include a
pointer to Issue 22405, which tracks going back to `box <expr>` if
possible in the future.

(Still tried to use `Box<_>` where it sufficed; thus some tests still
have `box_syntax` enabled, as they use a mix of `box` and `Box::new`.)

Precursor for overloaded-`box` and placement-`in`; see Issue 22181.

9 years agoinline `Box::new` always.
Felix S. Klock II [Mon, 16 Feb 2015 10:53:29 +0000 (11:53 +0100)]
inline `Box::new` always.

(You shouldn't use it, but it is a semi-reasonable way to annotate
types when necessary.)

9 years agoAdd `: Box<_>` or `::Box<_>` type annotations to various places.
Felix S. Klock II [Tue, 17 Feb 2015 20:41:32 +0000 (21:41 +0100)]
Add `: Box<_>` or `::Box<_>` type annotations to various places.

This is the kind of change that one is expected to need to make to
accommodate overloaded-`box`.

----

Note that this is not *all* of the changes necessary to accommodate
Issue 22181.  It is merely the subset of those cases where there was
already a let-binding in place that made it easy to add the necesasry
type ascription.

(For unnamed intermediate `Box` values, one must go down a different
route; `Box::new` is the option that maximizes portability, but has
potential inefficiency depending on whether the call is inlined.)

----

There is one place worth note, `run-pass/coerce-match.rs`, where I
used an ugly form of `Box<_>` type ascription where I would have
preferred to use `Box::new` to accommodate overloaded-`box`.  I
deliberately did not use `Box::new` here, because that is already done
in coerce-match-calls.rs.

----

Precursor for overloaded-`box` and placement-`in`; see Issue 22181.

9 years agostd: Mark `Index::Output` as a stable associated type
Alex Crichton [Tue, 3 Mar 2015 19:28:57 +0000 (11:28 -0800)]
std: Mark `Index::Output` as a stable associated type

This stability attribute was left out by accident and the stability pass has
since picked up the ability to check for this. As a result, crates are currently
getting warnings for implementations of `Index`.

9 years agounicode: Properly parse ranges in UnicodeData.txt
Florian Zeitz [Tue, 3 Mar 2015 17:35:41 +0000 (18:35 +0100)]
unicode: Properly parse ranges in UnicodeData.txt

This handles the ranges contained in UnicodeData.txt.
Counterintuitively this actually makes the tables shorter.

9 years agoAuto merge of #22997 - pnkfelix:make-timestamps-robust-to-concurrent-edits, r=nikomat...
bors [Tue, 3 Mar 2015 17:07:57 +0000 (17:07 +0000)]
Auto merge of #22997 - pnkfelix:make-timestamps-robust-to-concurrent-edits, r=nikomatsakis

Make build timestamp files robust in face of concurrent source modification.

Strategy: If the end goal is to touch e.g. `stamp.std`, then we first touch `stamp.std.start_time` before doing anything else.  Then when the receipe finishes, we touch `stamp.std` using the timestamp from `stamp.std.start_time` as the reference time, and remove `stamp.std.start_time`.

Fix #6518.

9 years agoAuto merge of #22532 - pnkfelix:arith-overflow, r=pnkfelix,eddyb
bors [Tue, 3 Mar 2015 14:18:03 +0000 (14:18 +0000)]
Auto merge of #22532 - pnkfelix:arith-overflow, r=pnkfelix,eddyb

Rebase and follow-through on work done by @cmr and @aatch.

Implements most of rust-lang/rfcs#560. Errors encountered from the checks during building were fixed.

The checks for division, remainder and bit-shifting have not been implemented yet.

See also PR #20795

cc @Aatch ; cc @nikomatsakis

9 years agoMake build timestamp files robust in face of concurrent source modification.
Felix S. Klock II [Tue, 3 Mar 2015 14:11:01 +0000 (15:11 +0100)]
Make build timestamp files robust in face of concurrent source modification.

Strategy: If the end goal is to touch e.g. `stamp.std`, then we first
touch `stamp.std.start_time` before doing anything else.  Then when
the receipe finishes, we touch `stamp.std` using the timestamp from
`stamp.std.start_time` as the reference time, and remove
`stamp.std.start_time`.

Fix #6518.

9 years agosidestep potential over- and underflow in estimated stack bounds.
Felix S. Klock II [Tue, 3 Mar 2015 11:07:48 +0000 (12:07 +0100)]
sidestep potential over- and underflow in estimated stack bounds.

See buildlog here for evidence of such occurring:
  http://buildbot.rust-lang.org/builders/auto-linux-32-opt/builds/3910/steps/test/logs/stdio

9 years agoAuto merge of #22995 - Manishearth:rollup, r=Manishearth
bors [Tue, 3 Mar 2015 11:32:11 +0000 (11:32 +0000)]
Auto merge of #22995 - Manishearth:rollup, r=Manishearth

9 years agoRollup merge of #22988 - dcrewi:slice-swap-inline, r=alexcrichton
Manish Goregaokar [Tue, 3 Mar 2015 08:49:09 +0000 (14:19 +0530)]
Rollup merge of #22988 - dcrewi:slice-swap-inline, r=alexcrichton

9 years agoRollup merge of #22982 - tbu-:pr_fixup_22510, r=Manishearth
Manish Goregaokar [Tue, 3 Mar 2015 08:47:32 +0000 (14:17 +0530)]
Rollup merge of #22982 - tbu-:pr_fixup_22510, r=Manishearth

r? @Manishearth

9 years agoRollup merge of #22977 - kmcallister:issue-15778, r=sfackler
Manish Goregaokar [Tue, 3 Mar 2015 08:43:46 +0000 (14:13 +0530)]
Rollup merge of #22977 - kmcallister:issue-15778, r=sfackler

 Fixes #15778.

r? @sfackler

9 years agoRevert incorrect `usize` -> `u32` replacements from #22510
Tobias Bucher [Mon, 2 Mar 2015 22:56:13 +0000 (23:56 +0100)]
Revert incorrect `usize` -> `u32` replacements from #22510

Conflicts:
src/libstd/thread.rs

9 years agoRollup merge of #22974 - nagisa:reintuint-std, r=alexcrichton
Manish Goregaokar [Tue, 3 Mar 2015 08:43:35 +0000 (14:13 +0530)]
Rollup merge of #22974 - nagisa:reintuint-std, r=alexcrichton

 Reverts a small part of c74d49c804c3 because compilation pukes with warnings now.

9 years agoRollup merge of #22970 - pnkfelix:fsk-robust-backtrace-test-against-env, r=alexcrichton
Manish Goregaokar [Tue, 3 Mar 2015 08:43:25 +0000 (14:13 +0530)]
Rollup merge of #22970 - pnkfelix:fsk-robust-backtrace-test-against-env, r=alexcrichton

 Make `test/run-pass/backtrace.rs` more robust about own host environment

Namely, I have been annoyed in the past when I have done `RUST_BACKTRACE=1 make check` only to discover (again) that such a trick causes this test to fail, because it assumes that the `RUST_BACKTRACE` environment variable is not set.

Fix #22870

9 years agoRollup merge of #22956 - ejjeong:aarch64-linux-android, r=alexcrichton
Manish Goregaokar [Tue, 3 Mar 2015 08:43:17 +0000 (14:13 +0530)]
Rollup merge of #22956 - ejjeong:aarch64-linux-android, r=alexcrichton

 aarch64-linux-android build has been broken since #22839.
Aarch64 android has _Unwind_GetIPInfo, so re-define this only for arm32 android.
r? @alexcrichton

9 years agoRollup merge of #22952 - huonw:missing-stable, r=alexcrichton
Manish Goregaokar [Tue, 3 Mar 2015 08:43:09 +0000 (14:13 +0530)]
Rollup merge of #22952 - huonw:missing-stable, r=alexcrichton

 Unstable is the conservative choice.

cc #22950.

9 years agoRollup merge of #22951 - huonw:weak-chuck-slice, r=alexcrichton
Manish Goregaokar [Tue, 3 Mar 2015 08:43:01 +0000 (14:13 +0530)]
Rollup merge of #22951 - huonw:weak-chuck-slice, r=alexcrichton

 `#[derive(Clone)]` unnecessarily requires the element type to also be
`Clone`.

9 years agoRollup merge of #22876 - Florob:const, r=nikomatsakis
Manish Goregaokar [Tue, 3 Mar 2015 08:42:53 +0000 (14:12 +0530)]
Rollup merge of #22876 - Florob:const, r=nikomatsakis

 This changes the type of some public constants/statics in libunicode.
Notably some `&'static &'static [(char, char)]` have changed
to `&'static [(char, char)]`. The regexp crate seems to be the
sole user of these, yet this is technically a [breaking-change]

9 years agoRollup merge of #22990 - japaric:privATe, r=alexcrichton
Manish Goregaokar [Tue, 3 Mar 2015 08:42:44 +0000 (14:12 +0530)]
Rollup merge of #22990 - japaric:privATe, r=alexcrichton

 Associated types are now treated as part of the public API by the privacy checker.

If you were exposing a private type in your public API via an associated type, make that type public:

``` diff
  pub struct PublicType { .. }

- struct Struct { .. }
+ pub struct Struct { .. }

  pub trait PublicTrait {
      type Output;

      fn foo(&self) -> Self::Output;
  }

  impl PublicTrait for PublicType {
      type Output = Struct;

      fn foo(&self) -> Struct {  // `Struct` is part of the public API, it must be marked as `pub`lic
          ..
      }
  }
```

[breaking-change]

---

r? @nikomatsakis
closes #22912

9 years agoRollup merge of #22989 - laijs:fix_FromStr_bool_comment, r=alexcrichton
Manish Goregaokar [Tue, 3 Mar 2015 08:42:36 +0000 (14:12 +0530)]
Rollup merge of #22989 - laijs:fix_FromStr_bool_comment, r=alexcrichton

 Fix the return type in the comments.

An old commit 082bfde41217 (\"Fallout of std::str stabilization\") removed
the example of FromStr::from_str(), this commit adds it back. But
the example of StrExt::parse() is still kept with an additinal note.

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
9 years agoRollup merge of #22969 - dotdash:no_alloca_zeroed, r=huonw
Manish Goregaokar [Tue, 3 Mar 2015 08:42:27 +0000 (14:12 +0530)]
Rollup merge of #22969 - dotdash:no_alloca_zeroed, r=huonw

 Its only user was lvalue_scratch_datum which is called with zero=true
anymore, so it's effectively unused.

9 years agoRollup merge of #22960 - huonw:static-assert, r=huonw
Manish Goregaokar [Tue, 3 Mar 2015 08:42:18 +0000 (14:12 +0530)]
Rollup merge of #22960 - huonw:static-assert, r=huonw

 The API this exposes is a little strange (being attached to `static`s),
so it makes sense to conservatively feature gate it. If it is highly
popular, it is possible to reverse this gating.

9 years agoRollup merge of #22943 - ipetkov:lint-recursion, r=alexcrichton
Manish Goregaokar [Tue, 3 Mar 2015 08:42:12 +0000 (14:12 +0530)]
Rollup merge of #22943 - ipetkov:lint-recursion, r=alexcrichton

 * The lint visitor's visit_ty method did not recurse, and had a
  reference to the now closed #10894
* The newly enabled recursion has only affected the `deprectated` lint
  which now detects uses of deprecated items in trait impls and
  function return types
* Renamed some references to `CowString` and `CowVec` to `Cow<str>` and
  `Cow<[T]>`, respectively, which appear outside of the crate which
  defines them
* Replaced a few instances of `InvariantType<T>` with
  `PhantomData<Cell<T>>`
* Disabled the `deprecated` lint in several places that
  reference/implement traits on deprecated items which will get cleaned
  up in the future
* Unfortunately, this means that if a library declares
  `#![deny(deprecated)]` and marks anything as deprecated, it will have
  to disable the lint for any uses of said item, e.g. any impl the now
  deprecated item

For any library that denies deprecated items but has deprecated items
of its own, this is a [breaking-change]

I had originally intended for the lint to ignore uses of deprecated items that are declared in the same crate, but this goes against some previous test cases that expect the lint to capture *all* uses of deprecated items, so I maintained the previous approach to avoid changing the expected behavior of the lint.

Tested locally on OS X, so hopefully there aren't any deprecated item uses behind a `cfg` that I may have missed.

9 years agoRollup merge of #22916 - rprichard:fmt-num-cleanup, r=alexcrichton
Manish Goregaokar [Tue, 3 Mar 2015 08:42:05 +0000 (14:12 +0530)]
Rollup merge of #22916 - rprichard:fmt-num-cleanup, r=alexcrichton

  * Make num::UpperHex private.  I was unable to determine why this struct
   is public.  The num module itself is not public, and the UpperHex struct
   is not referenced anywhere in the core::fmt module.  (Only the UpperHex
   trait is reference.)  num::LowerHex is not public.

 * Remove the suffix parameters from the macros that generate integral
   display traits.

   The code to print the Debug::fmt suffixes was removed when Show was
   renamed to Debug.  It was an intentional change.  From RFC 0565:

    * Focus on the *runtime* aspects of a type; repeating information such
      as suffixes for integer literals is not generally useful since that
      data is readily available from the type definition.

 * Because Show was renamed to Debug, rename show! to debug!.

9 years agoFix backtrace tests for Linux
Manish Goregaokar [Mon, 2 Mar 2015 10:41:01 +0000 (16:11 +0530)]
Fix backtrace tests for Linux

9 years agoIncorporated second review suggestion from eddyb.
Felix S. Klock II [Sun, 1 Mar 2015 11:29:46 +0000 (12:29 +0100)]
Incorporated second review suggestion from eddyb.

9 years agoIncorporated first review sugestion from eddyb.
Felix S. Klock II [Fri, 27 Feb 2015 17:16:30 +0000 (18:16 +0100)]
Incorporated first review sugestion from eddyb.

Suggestion was here:

  https://github.com/rust-lang/rust/pull/22532#discussion_r25505609

9 years agoFix span typo in the arithmetic overflow for array length reporting.
Felix S. Klock II [Fri, 27 Feb 2015 16:24:22 +0000 (17:24 +0100)]
Fix span typo in the arithmetic overflow for array length reporting.

Added pair of regression tests that I should have made when I thought
of doing this in the first place.

9 years agoUpdate tests for const-eval error handling changes.
Felix S. Klock II [Sun, 22 Feb 2015 15:38:22 +0000 (16:38 +0100)]
Update tests for const-eval error handling changes.

9 years agoSwitch to eval_const_expr_partial in `trans::consts`.
Felix S. Klock II [Sun, 22 Feb 2015 15:36:57 +0000 (16:36 +0100)]
Switch to eval_const_expr_partial in `trans::consts`.

However, I left the ICEs rather than switching to nicer error
reporting there; these cases *should* be detected prior to hitting
trans, and thus ICE'ing here is appropriate.

(So why switch to `eval_const_expr_partial`? Because I want to try to
eliminate all uses of `eval_const_expr` entirely.)

9 years agoSwitch to `eval_const_expr_partial` when `check_match.rs` checks for `NaN`.
Felix S. Klock II [Sun, 22 Feb 2015 15:35:11 +0000 (16:35 +0100)]
Switch to `eval_const_expr_partial` when `check_match.rs` checks for `NaN`.

9 years agoAddress arith-overflow and error-handling in `const_eval.rs`.
Felix S. Klock II [Sun, 22 Feb 2015 15:34:26 +0000 (16:34 +0100)]
Address arith-overflow and error-handling in `const_eval.rs`.

 1. Detect and report arithmetic overflow during const-expr eval.

 2. Instead `eval_const_expr_partial` returning `Err(String)`, it now
    has a dedicated enum of different cases. The main benefit of this
    is the ability to pass along an interpretable payload, namely the
    two inputs that caused an overlfow.

I attempted to minimize fallout to error output in tests, but some was
unavoidable. Those changes are in a follow-on commit.

9 years agoAvoid fatal errors in astconv; just err and return `ty_err` instead.
Felix S. Klock II [Sun, 22 Feb 2015 15:24:39 +0000 (16:24 +0100)]
Avoid fatal errors in astconv; just err and return `ty_err` instead.

This allows computation to proceed and find further errors.

(However, this is also annoying at times when the subsequent errors
are just reporting that a ty_err occurred. I have thoughts on ways to
fix this that I will experiment with separately.)

9 years agoCatch arith-overflow explicitly during `rustc::middle::const_eval`.
Felix S. Klock II [Fri, 20 Feb 2015 23:35:20 +0000 (00:35 +0100)]
Catch arith-overflow explicitly during `rustc::middle::const_eval`.

This only replaces the conditional arith-overflow asserts with
unconditional errors from the guts of const-eval; it does *not*
attempt to sanely handle such errors e.g. with a nice error message
from `rustc`.  So the same test that led me to add this commit are
still failing, and must be addressed.

9 years agoAccommodate simple cases of arith-overflow in `rustc` related crates.
Felix S. Klock II [Fri, 20 Feb 2015 12:10:54 +0000 (13:10 +0100)]
Accommodate simple cases of arith-overflow in `rustc` related crates.

9 years ago`core::iter`: fix bug uncovered by arith-overflow.
Felix S. Klock II [Fri, 20 Feb 2015 08:22:40 +0000 (09:22 +0100)]
`core::iter`: fix bug uncovered by arith-overflow.

(The bug was in `impl RandomAccessIterator for Rev`; it may or may not
have been innocuous, depending on what guarantees one has about the
behavior of `idx` for the underlying iterator.)

9 years agoAccommodate arith-overflow in `rand` and `std::rand`.
Felix S. Klock II [Thu, 19 Feb 2015 23:10:08 +0000 (00:10 +0100)]
Accommodate arith-overflow in `rand` and `std::rand`.

Regarding the `rand` changes: It is unfortunate that Wrapping(T) does
not support the `+=` operator.  We may want to try to fix that before
1.0 to make porting code like this palatable.

Regarding `std::rand`, just arith-overflow in first example from
`std::rand::random()` doc.

9 years agoAccommodate arith-overflow in serialize::json numeric parsing.
Felix S. Klock II [Thu, 19 Feb 2015 18:21:53 +0000 (19:21 +0100)]
Accommodate arith-overflow in serialize::json numeric parsing.

9 years agoAccommodate arith-overflow in `core::num`, `std::num`, `coretest::num`.
Felix S. Klock II [Thu, 19 Feb 2015 14:14:48 +0000 (15:14 +0100)]
Accommodate arith-overflow in `core::num`, `std::num`, `coretest::num`.

 * `core::num`: adjust `UnsignedInt::is_power_of_two`,
   `UnsignedInt::next_power_of_two`, `Int::pow`.

   In particular for `Int::pow`: (1.) do not panic when `base`
   overflows if `acc` never observes the overflowed `base`, and (2.)
   if `acc` does observe the overflowed `base`, make sure we only
   panic if we would have otherwise (e.g. during a computation of
   `base * base`).

 * also in `core::num`: avoid underflow during computation of `uint::MAX`.

 * `std::num`: adjust tests `uint::test_uint_from_str_overflow`,
   `uint::test_uint_to_str_overflow`, `strconv`

 * `coretest::num`: adjust `test::test_int_from_str_overflow`.

9 years agoFix the overflowing tests in run-fail.
Felix S. Klock II [Thu, 19 Feb 2015 11:37:27 +0000 (12:37 +0100)]
Fix the overflowing tests in run-fail.

* The error patterns had a typo.

* Our current constant evaluation would silently allow the overflow
  (filed as Issue 22531).

* The overflowing-mul test was accidentally doing addition instead of
  multiplication.

9 years agoFixes to collections to accommodate arith-overflow changes.
Felix S. Klock II [Thu, 19 Feb 2015 07:33:32 +0000 (08:33 +0100)]
Fixes to collections to accommodate arith-overflow changes.

* `collections::btree::node`: accommodate (transient) underflow.

* `collections::btree::map`: avoid underflow during `fn next`
  for `BTreeMap::range` methods.

* `collections::slice`: note that pnkfelix deliberately used
  `new_pos_wrapping` only once; the other cases of arithmetic do not
  over- nor underflow, which is a useful property to leave implicitly
  checked/documented via the remaining calls to `fn new_pos(..)`.

* `collections::vec_deque` applied wrapping ops (somewhat blindly)
  to two implementation methods, and many tests.

* `std::collections::hash::table` : Use `OverflowingOps` trait to
  track overflow during `calculate_offsets` and `calculate_allocation`
  functions.

9 years agofix test generic-extern-mangle.rs
Niko Matsakis [Wed, 18 Feb 2015 23:56:26 +0000 (18:56 -0500)]
fix test generic-extern-mangle.rs

9 years agofix Iter::rposition for new arith-overflow checking.
Felix S. Klock II [Wed, 18 Feb 2015 22:01:48 +0000 (23:01 +0100)]
fix Iter::rposition for new arith-overflow checking.

9 years agoAdded `OverflowingOps` trait to core::num::wrapping.
Felix S. Klock II [Thu, 19 Feb 2015 11:32:27 +0000 (12:32 +0100)]
Added `OverflowingOps` trait to core::num::wrapping.

These return the result of the operation *plus* an overflow/underflow bit.

This can make it easier to write operations where you want to chain
some arithmetic together, but also want to return a flag signalling if
overflow every occurred.

9 years agoImplement parse_opt_bool better
James Miller [Fri, 9 Jan 2015 05:06:45 +0000 (18:06 +1300)]
Implement parse_opt_bool better

During my clean-up of rebase errors, I took the opportunity to implement
parse_opt_bool so that it isn't identical to parse_bool wrapped in
`Some`.

parse_opt_bool considers no value to be true, a value of 'y', 'yes' or
'on' to be true and 'n', 'no' or 'off' to be false. All other values are
an error.

9 years agoAdd `core::num::wrapping` and fix overflow errors.
James Miller [Fri, 9 Jan 2015 03:10:57 +0000 (16:10 +1300)]
Add `core::num::wrapping` and fix overflow errors.

Many of the core rust libraries have places that rely on integer
wrapping behaviour. These places have been altered to use the wrapping_*
methods:

 * core::hash::sip - A number of macros
 * core::str - The `maximal_suffix` method in `TwoWaySearcher`
 * rustc::util::nodemap - Implementation of FnvHash
 * rustc_back::sha2 - A number of macros and other places
 * rand::isaac - Isaac64Rng, changed to use the Wrapping helper type

Some places had "benign" underflow. This is when underflow or overflow
occurs, but the unspecified value is not used due to other conditions.

 * collections::bit::Bitv - underflow when `self.nbits` is zero.
 * collections::hash::{map,table} - Underflow when searching an empty
   table. Did cause undefined behaviour in this case due to an
   out-of-bounds ptr::offset based on the underflowed index. However the
   resulting pointers would never be read from.
 * syntax::ext::deriving::encodable - Underflow when calculating the
   index of the last field in a variant with no fields.

These cases were altered to avoid the underflow, often by moving the
underflowing operation to a place where underflow could not happen.

There was one case that relied on the fact that unsigned arithmetic and
two's complement arithmetic are identical with wrapping semantics. This
was changed to use the wrapping_* methods.

Finally, the calculation of variant discriminants could overflow if the
preceeding discriminant was `U64_MAX`. The logic in `rustc::middle::ty`
for this was altered to avoid the overflow completely, while the
remaining places were changed to use wrapping methods. This is because
`rustc::middle::ty::enum_variants` now throws an error when the
calculated discriminant value overflows a `u64`.

This behaviour can be triggered by the following code:

```
enum Foo {
  A = U64_MAX,
  B
}
```

This commit also implements the remaining integer operators for
Wrapped<T>.

9 years agorustc: implement arithmetic overflow checking
Corey Richardson [Tue, 6 Jan 2015 05:56:30 +0000 (00:56 -0500)]
rustc: implement arithmetic overflow checking

Adds overflow checking to integer addition, multiplication, and subtraction
when `-Z force-overflow-checks` is true, or if `--cfg ndebug` is not passed to
the compiler. On overflow, it panics with `arithmetic operation overflowed`.
Also adds `overflowing_add`, `overflowing_sub`, and `overflowing_mul`
intrinsics for doing unchecked arithmetic.

[breaking-change]

9 years agoMake `test/run-pass/backtrace.rs` more robust about own host environment.
Felix S. Klock II [Thu, 19 Feb 2015 11:41:10 +0000 (12:41 +0100)]
Make `test/run-pass/backtrace.rs` more robust about own host environment.

Namely, I have been annoyed in the past when I have done
`RUST_BACKTRACE=1 make check` only to discover (again) that such a
trick causes this test to fail, because it assumes that the
`RUST_BACKTRACE` environment variable is not set.

9 years agoAvoid ICE when `FnCtxt::local_ty` cannot find type; issue error then, return `ty_err`.
Felix S. Klock II [Sun, 22 Feb 2015 15:18:32 +0000 (16:18 +0100)]
Avoid ICE when `FnCtxt::local_ty` cannot find type; issue error then, return `ty_err`.

9 years agoAuto merge of #22971 - lifthrasiir:metadata-reform, r=huonw
bors [Tue, 3 Mar 2015 08:06:59 +0000 (08:06 +0000)]
Auto merge of #22971 - lifthrasiir:metadata-reform, r=huonw

This is a series of individual but correlated changes to the metadata format. The changes are significant enough that it (finally) bumps the metadata encoding version. In brief, they altogether reduce the total size of stage1 binaries by 27% (!!!!). Almost every low-hanging fruit has been considered and fixed; see the individual commits for details.

Detailed library (not just metadata) size changes for x86_64-unknown-linux-gnu stage1 binaries (baseline being 3a96d6a9818fe2affc98a187fb1065120458cee9):

````
   before     after  delta path
--------- --------- ------ --------------------------------
  1706146   1050412  38.4% liballoc-4e7c5e5c.rlib
   398576    152454  61.8% libarena-4e7c5e5c.rlib
    71441     56892  20.4% libarena-4e7c5e5c.so
 14424754   5084102  64.8% libcollections-4e7c5e5c.rlib
 39143186  14743118  62.3% libcore-4e7c5e5c.rlib
   195574    188150   3.8% libflate-4e7c5e5c.rlib
   153123    152603   0.3% libflate-4e7c5e5c.so
   477152    215262  54.9% libfmt_macros-4e7c5e5c.rlib
    77728     66601  14.3% libfmt_macros-4e7c5e5c.so
  1216936    684104  43.8% libgetopts-4e7c5e5c.rlib
   207846    181116  12.9% libgetopts-4e7c5e5c.so
   349722    147530  57.8% libgraphviz-4e7c5e5c.rlib
    60196     49197  18.3% libgraphviz-4e7c5e5c.so
   729842    259906  64.4% liblibc-4e7c5e5c.rlib
   349358    247014  29.3% liblog-4e7c5e5c.rlib
    88878     83163   6.4% liblog-4e7c5e5c.so
  1968508    732840  62.8% librand-4e7c5e5c.rlib
  1968204    696326  64.6% librbml-4e7c5e5c.rlib
   283207    206589  27.1% librbml-4e7c5e5c.so
 72369394  46401230  35.9% librustc-4e7c5e5c.rlib
 11941372  10498483  12.1% librustc-4e7c5e5c.so
  2717894   1983272  27.0% librustc_back-4e7c5e5c.rlib
   501900    464176   7.5% librustc_back-4e7c5e5c.so
    15058     12588  16.4% librustc_bitflags-4e7c5e5c.rlib
  4008268   2961912  26.1% librustc_borrowck-4e7c5e5c.rlib
   837550    785633   6.2% librustc_borrowck-4e7c5e5c.so
  6473348   6095470   5.8% librustc_driver-4e7c5e5c.rlib
  1448785   1433945   1.0% librustc_driver-4e7c5e5c.so
 95483688  94779704   0.7% librustc_llvm-4e7c5e5c.rlib
 43516815  43487809   0.1% librustc_llvm-4e7c5e5c.so
   938140    817236  12.9% librustc_privacy-4e7c5e5c.rlib
   182653    176563   3.3% librustc_privacy-4e7c5e5c.so
  4390288   3543284  19.3% librustc_resolve-4e7c5e5c.rlib
   872981    831824   4.7% librustc_resolve-4e7c5e5c.so
 18176426  14795426  18.6% librustc_trans-4e7c5e5c.rlib
  3657354   3480026   4.8% librustc_trans-4e7c5e5c.so
 16815076  13868862  17.5% librustc_typeck-4e7c5e5c.rlib
  3274439   3123898   4.6% librustc_typeck-4e7c5e5c.so
 21372308  14890582  30.3% librustdoc-4e7c5e5c.rlib
  4501971   4172202   7.3% librustdoc-4e7c5e5c.so
  8055028   2951044  63.4% libserialize-4e7c5e5c.rlib
   958101    710016  25.9% libserialize-4e7c5e5c.so
 30810208  15160648  50.8% libstd-4e7c5e5c.rlib
  6819003   5967485  12.5% libstd-4e7c5e5c.so
 58850950  31949594  45.7% libsyntax-4e7c5e5c.rlib
  9060154   7882423  13.0% libsyntax-4e7c5e5c.so
  1474310   1062102  28.0% libterm-4e7c5e5c.rlib
   345577    323952   6.3% libterm-4e7c5e5c.so
  2827854   1643056  41.9% libtest-4e7c5e5c.rlib
   517811    452519  12.6% libtest-4e7c5e5c.so
  2274106   1761240  22.6% libunicode-4e7c5e5c.rlib
--------- --------- ------ --------------------------------
499359187 363465583  27.2% total
````

Some notes:

* Uncompressed metadata compacts very well. It is less visible for compressed metadata but still it achieves about 5~10% reduction.
* *Every* commit is designed to reduce the metadata in one way. There is absolutely no negative impact associated to changes (that's why the table above doesn't contain a minus delta).
* I've confirmed that this compiles through `make all`, making it almost correct. Other platforms have to be tested though.
* Oh, I'll rebase this as soon as I have spare time, but I guess this needs an extensive review anyway.
* I haven't rigorously checked the encoder and decoder performance. I tried to minimize the impact (some encodings are actually simpler than the original), but I'm not sure.

Fixes #2743, #9303 (partially) and #21482.

9 years agofix fallout
Jorge Aparicio [Tue, 3 Mar 2015 05:25:14 +0000 (00:25 -0500)]
fix fallout

9 years agoprivacy: walk associated types in trait impls
Jorge Aparicio [Tue, 3 Mar 2015 04:26:14 +0000 (23:26 -0500)]
privacy: walk associated types in trait impls

9 years agometadata: Reordered integral tags in the ascending order.
Kang Seonghoon [Tue, 3 Mar 2015 02:18:12 +0000 (11:18 +0900)]
metadata: Reordered integral tags in the ascending order.

Also clarified the mysterious `_next_int` method.

9 years agostr: fix comments for FromStr for bool
Lai Jiangshan [Mon, 2 Mar 2015 10:01:01 +0000 (18:01 +0800)]
str: fix comments for FromStr for bool

Fix the return type in the comments.

An old commit 082bfde41217 ("Fallout of std::str stabilization") removed
the example of FromStr::from_str(), this commit adds it back. But
the example of StrExt::parse() is still kept with an additinal note.

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
9 years agoSlice::swap should be inlineable
David Creswick [Tue, 3 Mar 2015 04:06:51 +0000 (22:06 -0600)]
Slice::swap should be inlineable

9 years agometadata: Bump the metadata encoding version.
Kang Seonghoon [Mon, 2 Mar 2015 16:54:49 +0000 (01:54 +0900)]
metadata: Bump the metadata encoding version.

We have changed the encoding enough to bump that.
Also added some notes about metadata encoding to librbml/lib.rs.

9 years agometadata: Compact integer encoding.
Kang Seonghoon [Mon, 2 Mar 2015 15:34:50 +0000 (00:34 +0900)]
metadata: Compact integer encoding.

Previously every auto-serialized tags are strongly typed. However
this is not strictly required, and instead it can be exploited
to provide the optimal encoding for smaller integers. This commit
repurposes `EsI8`/`EsU8` through `EsI64`/`EsU64` tags to represent
*any* integers with given ranges: It is now possible to encode
`42u64` as two bytes `EsU8 0x2a`, for example.

There are some limitations:

* It does not apply to non-auto-serialized tags for obvious reasons.
  Fortunately, we have already eliminated the biggest source of
  such tag in favor of auto-serialized tags: `tag_table_id`.
* Bigger tags cannot be used to represent smaller types.
* Signed tags and unsigned tags do not mix.

9 years agometadata: Flatten `tag_table_id` and `tag_table_val` tags.
Kang Seonghoon [Mon, 2 Mar 2015 11:26:36 +0000 (20:26 +0900)]
metadata: Flatten `tag_table_id` and `tag_table_val` tags.

This avoids a biggish eight-byte `tag_table_id` tag in favor of
autoserialized integer tags, which are smaller and can be later
used to encode them in the optimal number of bytes. `NodeId` was
u32 after all.

Previously:

                       <------------- len1 -------------->
    tag_table_* <len1> tag_table_id 88 <nodeid in 8 bytes>
                       tag_table_val <len2> <actual data>
                                            <-- len2 --->

Now:

                      <--------------- len --------------->
    tag_table_* <len> U32 <nodeid in 4 bytes> <actual data>

9 years agometadata: Space-optimize empty vectors and maps.
Kang Seonghoon [Mon, 2 Mar 2015 09:54:51 +0000 (18:54 +0900)]
metadata: Space-optimize empty vectors and maps.

So that `EsVec 82 EsSub8 00` becomes `EsVec 80` now.

9 years agometadata: Implement relaxation of short RBML lengths.
Kang Seonghoon [Mon, 2 Mar 2015 05:34:16 +0000 (14:34 +0900)]
metadata: Implement relaxation of short RBML lengths.

We try to move the data when the length can be encoded in
the much smaller number of bytes. This interferes with indices and
type abbreviations however, so this commit introduces a public
interface to get and mark a "stable" (i.e. not affected by
relaxation) position of the current pointer.

The relaxation logic only moves a small data, currently at most
256 bytes, as moving the data can be costly. There might be
further opportunities to allow more relaxation by moving fields
around, which I didn't seriously try.

9 years agometadata: Introduce `EsSub8` and `EsSub32` tags.
Kang Seonghoon [Sun, 1 Mar 2015 17:46:53 +0000 (02:46 +0900)]
metadata: Introduce `EsSub8` and `EsSub32` tags.

They replace the existing `EsEnumVid`, `EsVecLen` and `EsMapLen`
tags altogether; the meaning of them can be easily inferred
from the enclosing tag. It also has an added benefit of
encodings for smaller variant ids or lengths being more compact
(5 bytes to 2 bytes).

9 years agometadata: Bye bye `EsLabel`. No regrets.
Kang Seonghoon [Sun, 1 Mar 2015 17:20:46 +0000 (02:20 +0900)]
metadata: Bye bye `EsLabel`. No regrets.

For the reference, while it is designed to be selectively enabled,
it was essentially enabled throughout every snapshot and nightly
as far as I can tell. This makes the usefulness of `EsLabel` itself
questionable, as it was quite rare that `EsLabel` broke the build.
It had consumed about 20~30% of metadata (!) and so this should be
a huge win.

9 years agometadata: Eliminate the `EsEnumBody` tag.
Kang Seonghoon [Sun, 1 Mar 2015 15:37:14 +0000 (00:37 +0900)]
metadata: Eliminate the `EsEnumBody` tag.

It doesn't serve any useful purpose. It *might* be useful when
there are some tags that are generated by `Encodable` and
not delimited by any tags, but IIUC it's not the case.

Previous:

                  <-------------------- len1 ------------------->
    EsEnum <len1> EsEnumVid <vid> EsEnumBody <len2> <arg1> <arg2>
                                                    <--- len2 -->

Now:

                  <----------- len1 ---------->
    EsEnum <len1> EsEnumVid <vid> <arg1> <arg2>

9 years agometadata: Introduce implicit lengths for auto-serialization.
Kang Seonghoon [Sun, 1 Mar 2015 02:57:20 +0000 (11:57 +0900)]
metadata: Introduce implicit lengths for auto-serialization.

Many auto-serialization tags are fixed-size (note: many ordinary
tags are also fixed-size but for now this commit ignores them),
so having an explicit length is a waste. This moves any
auto-serialization tags with an implicit length before other tags,
so a test for them is easy. A preliminary experiment shows this
has at least 1% gain over the status quo.

9 years agometadata: New tag encoding scheme.
Kang Seonghoon [Sat, 28 Feb 2015 16:09:39 +0000 (01:09 +0900)]
metadata: New tag encoding scheme.

EBML tags are encoded in a variable-length unsigned int (vuint),
which is clever but causes some tags to be encoded in two bytes
while there are really about 180 tags or so. Assuming that there
wouldn't be, say, over 1,000 tags in the future, we can use much
more efficient encoding scheme. The new scheme should support
at most 4,096 tags anyway.

This also flattens a scattered tag namespace (did you know that
0xa9 is followed by 0xb0?) and makes a room for autoserialized tags
in 0x00 through 0x1f.

9 years agometadata: Avoid the use of raw `wr_str` or `write_all`.
Kang Seonghoon [Sun, 1 Mar 2015 06:09:58 +0000 (15:09 +0900)]
metadata: Avoid the use of raw `wr_str` or `write_all`.

They are, with a conjunction of `start_tag` and `end_tag`, commonly
used to write a document with a binary data of known size. However
the use of `start_tag` makes the length always 4 bytes long, which
is almost not optimal (requiring the relaxation step to remedy).
Directly using `wr_tagged_*` methods is better for both readability
and resulting metadata size.

9 years agoAuto merge of #22600 - brson:num, r=Gankro
bors [Tue, 3 Mar 2015 02:05:18 +0000 (02:05 +0000)]
Auto merge of #22600 - brson:num, r=Gankro

* count_ones/zeros, trailing_ones/zeros return u32, not usize
* rotate_left/right take u32, not usize
* RADIX, MANTISSA_DIGITS, DIGITS, BITS, BYTES are u32, not usize

Doesn't touch pow because there's another PR for it.

cc https://github.com/rust-lang/rust/issues/22240

r? @Gankro

9 years agoFeature gate `#[static_assert]`.
Huon Wilson [Mon, 2 Mar 2015 10:46:31 +0000 (21:46 +1100)]
Feature gate `#[static_assert]`.

The API this exposes is a little strange (being attached to `static`s),
so it makes sense to conservatively feature gate it. If it is highly
popular, it is possible to reverse this gating.

9 years agocore: Audit num module for int/uint
Brian Anderson [Fri, 20 Feb 2015 05:05:35 +0000 (21:05 -0800)]
core: Audit num module for int/uint

* count_ones/zeros, trailing_ones/zeros return u32, not usize
* rotate_left/right take u32, not usize
* RADIX, MANTISSA_DIGITS, DIGITS, BITS, BYTES are u32, not usize

Doesn't touch pow because there's another PR for it.

[breaking-change]

9 years agoEnable recursion for visit_ty in lint visitor
Ivan Petkov [Sun, 1 Mar 2015 07:24:05 +0000 (23:24 -0800)]
Enable recursion for visit_ty in lint visitor

* The lint visitor's visit_ty method did not recurse, and had a
  reference to the now closed #10894
* The newly enabled recursion has only affected the `deprectated` lint
  which now detects uses of deprecated items in trait impls and
  function return types
* Renamed some references to `CowString` and `CowVec` to `Cow<str>` and
  `Cow<[T]>`, respectively, which appear outside of the crate which
  defines them
* Replaced a few instances of `InvariantType<T>` with
  `PhantomData<Cell<T>>`
* Disabled the `deprecated` lint in several places that
  reference/implement traits on deprecated items which will get cleaned
  up in the future
* Disabled the `exceeding_bitshifts` lint for
  compile-fail/huge-array-simple test so it doesn't shadow the expected
  error on 32bit systems
* Unfortunately, this means that if a library declares
  `#![deny(deprecated)]` and marks anything as deprecated, it will have
  to disable the lint for any uses of said item, e.g. any impl the now
  deprecated item

For any library that denies deprecated items but has deprecated items
of its own, this is a [breaking-change]

9 years agoAuto merge of #22882 - alexcrichton:stabilize-process, r=aturon
bors [Mon, 2 Mar 2015 23:18:36 +0000 (23:18 +0000)]
Auto merge of #22882 - alexcrichton:stabilize-process, r=aturon

This commits blanket marks the API of the `std::process` module as `#[stable]`.
The module's API is very similar to the old `std::old_io::process` API and has
generally had quite a bit of time to bake both before and after the new module
landed.

9 years agoAdd regression tests for #15778
Keegan McAllister [Mon, 2 Mar 2015 21:21:40 +0000 (13:21 -0800)]
Add regression tests for #15778

Fixes #15778.

9 years agoReadd int_uint feature to libstd
Simonas Kazlauskas [Mon, 2 Mar 2015 20:54:39 +0000 (22:54 +0200)]
Readd int_uint feature to libstd

Reverts a small part of c74d49c804c3 because compilation pukes with warnings now.

9 years agoAuto merge of #22963 - Manishearth:rollup, r=Manishearth
bors [Mon, 2 Mar 2015 20:26:39 +0000 (20:26 +0000)]
Auto merge of #22963 - Manishearth:rollup, r=Manishearth

9 years agoRollup merge of #22966 - nikomatsakis:closure-region-hierarchy, r=pnkfelix
Manish Goregaokar [Mon, 2 Mar 2015 16:06:33 +0000 (21:36 +0530)]
Rollup merge of #22966 - nikomatsakis:closure-region-hierarchy, r=pnkfelix

 Remove the synthetic \"region bound\" from closures and instead update how
type-outlives works for closure types so that it ensures that all upvars
outlive the region in question. This gives the same guarantees but
without introducing artificial regions (and gives better error messages
to boot). This is refactoring towards #3696.

r? @pnkfelix

9 years agoRollup merge of #22961 - dotdash:branch_drop, r=eddyb
Manish Goregaokar [Mon, 2 Mar 2015 16:06:23 +0000 (21:36 +0530)]
Rollup merge of #22961 - dotdash:branch_drop, r=eddyb

9 years agoAdd cfg_attr to known attributes
Manish Goregaokar [Mon, 2 Mar 2015 12:14:01 +0000 (17:44 +0530)]
Add cfg_attr to known attributes

9 years agoRollup merge of #22961 - dotdash:branch_drop, r=eddyb
Manish Goregaokar [Mon, 2 Mar 2015 11:24:01 +0000 (16:54 +0530)]
Rollup merge of #22961 - dotdash:branch_drop, r=eddyb

9 years agoRollup merge of #22925 - leonardinius:issue-22646-fmt, r=steveklabnik
Manish Goregaokar [Mon, 2 Mar 2015 08:08:57 +0000 (13:38 +0530)]
Rollup merge of #22925 - leonardinius:issue-22646-fmt, r=steveklabnik

 Addresses rust-lang/rust#22646

Removes deprecated `{:08d}` format from the module documentation.
`{:08}` should be used instead now.

9 years agoRollup merge of #22911 - djmally:master, r=steveklabnik
Manish Goregaokar [Mon, 2 Mar 2015 08:08:50 +0000 (13:38 +0530)]
Rollup merge of #22911 - djmally:master, r=steveklabnik

 ... example that actually does use an Option