]> git.lizzy.rs Git - rust.git/log
rust.git
10 years agoauto merge of #13799 : m-r-r/rust/patch-std-io-standard_error, r=alexcrichton
bors [Sun, 27 Apr 2014 23:01:39 +0000 (16:01 -0700)]
auto merge of #13799 : m-r-r/rust/patch-std-io-standard_error, r=alexcrichton

Hello,

With the latest version of Rust, calling to the function [`std::io::standard_error()`](http://static.rust-lang.org/doc/master/std/io/fn.standard_error.html) succeeds only if the value of the argument is `EndOfFile`, `IoUnavailable` or `InvalidInput`. If the function is called with another value as argument, it fails without message.

Here is a piece of code that reproduces the problem:

```rust
use std::io::{standard_error,EndOfFile,FileNotFound,PermissionDenied};

fn main() {
     println!("Error 1: {}", standard_error(EndOfFile)); // does not fail
     println!("Error 2: {}", standard_error(FileNotFound)); // fails
     println!("Error 3: {}", standard_error(PermissionDenied)); //fails
}
```
This was because the `IoErrorKind` passed as argument wasn't matched against all the possible values.

I added the missing branches in the `match` statement inside the function, and i removed the call to the `fail!()` macro. I rebuilt the crate with the latest `rustc` version and it seems to works.

10 years agoauto merge of #13792 : jacob-hegna/rust/master, r=alexcrichton
bors [Sun, 27 Apr 2014 21:36:41 +0000 (14:36 -0700)]
auto merge of #13792 : jacob-hegna/rust/master, r=alexcrichton

Just modified the documentation for parse_bytes to make it more clear how the bytes were parsed (big endian) and to show an example of what it returned.  I also added documentation for the to_str_bytes which previously had no documentation (besides one stackoverflow post).

10 years agoRewrote documentation for parse_bytes and to_str_bytes in {int, uint}_macros.rs
Jacob Hegna [Sun, 27 Apr 2014 20:49:47 +0000 (15:49 -0500)]
Rewrote documentation for parse_bytes and to_str_bytes in {int, uint}_macros.rs

10 years agoauto merge of #13798 : aochagavia/rust/pr, r=alexcrichton
bors [Sun, 27 Apr 2014 20:11:43 +0000 (13:11 -0700)]
auto merge of #13798 : aochagavia/rust/pr, r=alexcrichton

10 years agoauto merge of #13796 : ema-fox/rust/patch-1, r=kballard
bors [Sun, 27 Apr 2014 18:46:46 +0000 (11:46 -0700)]
auto merge of #13796 : ema-fox/rust/patch-1, r=kballard

10 years agoFixed typo in std::iter
Adolfo Ochagavía [Sun, 27 Apr 2014 14:50:55 +0000 (16:50 +0200)]
Fixed typo in std::iter

10 years agoAdded missing values in std::io::standard_error()
m-r-r [Sun, 27 Apr 2014 12:45:28 +0000 (14:45 +0200)]
Added missing values in std::io::standard_error()

10 years agoFix link to hashmap.rs and json.rs in sample code FAQ
Emanuel Rylke [Sun, 27 Apr 2014 12:17:06 +0000 (14:17 +0200)]
Fix link to hashmap.rs and json.rs in sample code FAQ

10 years agoauto merge of #13783 : wackywendell/rust/permfix, r=kballard
bors [Sun, 27 Apr 2014 06:41:31 +0000 (23:41 -0700)]
auto merge of #13783 : wackywendell/rust/permfix, r=kballard

I filed bugs #13734 and #13759 recently, and then realized I could probably fix them myself. This does exactly that, with a couple additional modifications and additions to the test-suite to pick up on that.

I've never done this before, so please feel free to tell me all the things I'm doing wrong or could be doing better.

10 years agoFixing permutation of small lists, such that [], [x] -> [[]], [[x]], and updating...
Wendell Smith [Fri, 25 Apr 2014 20:19:53 +0000 (16:19 -0400)]
Fixing permutation of small lists, such that [], [x] -> [[]], [[x]], and updating size_hints.
Fixes #13734 and #13759.

10 years agoauto merge of #13777 : lifthrasiir/rust/no-multi-viewitemuse, r=alexcrichton
bors [Sun, 27 Apr 2014 00:01:28 +0000 (17:01 -0700)]
auto merge of #13777 : lifthrasiir/rust/no-multi-viewitemuse, r=alexcrichton

It reflected the obsolete syntax `use a, b, c;` and did not make past the parser (though it was a non-fatal error so we can continue). This legacy affected many portions of rustc and rustdoc as well, so this PR cleans them up altogether.

As a side effect of cleanup, we now have `SCHEMA_VERSION` in `rustdoc::clean` (instead of the crate root), so it has a better chance to be updated when `rustdoc::clean` gets updated.

10 years agoauto merge of #13769 : alexcrichton/rust/restrict-some-scopes, r=huonw
bors [Sat, 26 Apr 2014 13:46:24 +0000 (06:46 -0700)]
auto merge of #13769 : alexcrichton/rust/restrict-some-scopes, r=huonw

This addresses the ICE from #13763, but it does not allow the test to compile,
due to #13768. An alternate test was checked in in the meantime.

Closes #13763

10 years agorustdoc: Moved `SCHEMA_VERSION` to `clean`.
Kang Seonghoon [Sat, 26 Apr 2014 13:45:50 +0000 (22:45 +0900)]
rustdoc: Moved `SCHEMA_VERSION` to `clean`.

it should be changed when the module gets updated, so it helps to
have the `SCHEMA_VERSION` with the definitions themselves.

10 years agosyntax: ViewItemUse no longer contains multiple view paths.
Kang Seonghoon [Sat, 26 Apr 2014 13:33:45 +0000 (22:33 +0900)]
syntax: ViewItemUse no longer contains multiple view paths.

it reflected the obsolete syntax `use a, b, c;` and did not make
past the parser (though it was a non-fatal error so we can continue).
this legacy affected many portions of rustc and rustdoc as well,
so this commit cleans them up altogether.

10 years agoauto merge of #13766 : BurntSushi/rust/regex-dynamic-tests, r=alexcrichton
bors [Sat, 26 Apr 2014 08:16:23 +0000 (01:16 -0700)]
auto merge of #13766 : BurntSushi/rust/regex-dynamic-tests, r=alexcrichton

Before, tests for dynamic regexes ran during stage1 and tests for
native regexes ran during stage2. But the buildbots don't test stage1,
so now both dynamic and native tests are run during stage2.

Closes #13740.

10 years agoauto merge of #13758 : sodaplayer/rust/patch-1, r=alexcrichton
bors [Sat, 26 Apr 2014 06:31:25 +0000 (23:31 -0700)]
auto merge of #13758 : sodaplayer/rust/patch-1, r=alexcrichton

Rustdoc doesn't seem like it's converting the old format to a table as we can see here:
http://static.rust-lang.org/doc/master/complement-cheatsheet.html#ffi-(foreign-function-interface)
This new format should fix that and it's also rendered by Github's markdown preview.

10 years agoauto merge of #13750 : aturon/rust/issue-12583, r=alexcrichton
bors [Sat, 26 Apr 2014 04:51:27 +0000 (21:51 -0700)]
auto merge of #13750 : aturon/rust/issue-12583, r=alexcrichton

Clarifies the interaction of `is_dir`, `is_file` and `exists` with
symbolic links.  Adds a convenience `lstat` function alongside of
`stat`.  Removes references to conditions.

Closes issue #12583.

10 years agoauto merge of #13748 : hjr3/rust/guide-container-update, r=alexcrichton
bors [Sat, 26 Apr 2014 03:06:32 +0000 (20:06 -0700)]
auto merge of #13748 : hjr3/rust/guide-container-update, r=alexcrichton

10 years agoauto merge of #13744 : adrientetar/rust/derp, r=brson
bors [Sat, 26 Apr 2014 01:26:33 +0000 (18:26 -0700)]
auto merge of #13744 : adrientetar/rust/derp, r=brson

- Serve webfonts locally
- Style changes around `blockquote` and `code`
- Minor adjustments from previous changes

Bringing back updated examples: [modified tutorial](http://adrientetar.legtux.org/cached/rust-docs/tutorial.htm) and [modified manual](http://adrientetar.legtux.org/cached/rust-docs/manual.htm).
And for rustdoc, [modified `enum.FileType`](http://adrientetar.legtux.org/cached/rust-docs/enum.FileType.htm), [modified `std`](http://adrientetar.legtux.org/cached/rust-docs/std.htm) and [modified `std::io`](http://adrientetar.legtux.org/cached/rust-docs/io.htm).

10 years agoclarify docs for std:io::fs::Path::{is_dir,is_file,exists}; add lstat
Aaron Turon [Fri, 25 Apr 2014 17:18:06 +0000 (10:18 -0700)]
clarify docs for std:io::fs::Path::{is_dir,is_file,exists}; add lstat

Clarifies the interaction of `is_dir`, `is_file` and `exists` with
symbolic links.  Adds a convenience `lstat` function alongside of
`stat`.  Removes references to conditions.

Closes issue #12583.

10 years agorustc: Restrict the scope of a borrow on def_map
Alex Crichton [Fri, 25 Apr 2014 21:42:36 +0000 (14:42 -0700)]
rustc: Restrict the scope of a borrow on def_map

This addresses the ICE from #13763, but it does not allow the test to compile,
due to #13768. An alternate test was checked in in the meantime.

Closes #13763

10 years agoTests for dynamic regexes will now run during 'check-stage2'.
Andrew Gallant [Fri, 25 Apr 2014 21:28:05 +0000 (17:28 -0400)]
Tests for dynamic regexes will now run during 'check-stage2'.

Before, tests for dynamic regexes ran during stage1 and tests for
native regexes ran during stage2. But the buildbots don't test stage1,
so now both dynamic and native tests are run during stage2.

Closes #13740.

10 years agoUpdate FFI signature table to use pipe format
John Fresco [Fri, 25 Apr 2014 19:07:30 +0000 (13:07 -0600)]
Update FFI signature table to use pipe format

Rustdoc doesn't seem like it's converting the old format to a table as we can see here:
http://static.rust-lang.org/doc/master/complement-cheatsheet.html#ffi-(foreign-function-interface)
This new format should fix that and it's also rendered by Github's markdown preview.

10 years agoauto merge of #13735 : aturon/rust/float-consts-take-2, r=brson
bors [Fri, 25 Apr 2014 19:01:27 +0000 (12:01 -0700)]
auto merge of #13735 : aturon/rust/float-consts-take-2, r=brson

Follow-up on issue #13297 and PR #13710.  Instead of following the (confusing) C/C++ approach
of using `MIN_VALUE` for the smallest *positive* number, we introduce `MIN_POS_VALUE` (and
in the Float trait, `min_pos_value`) to represent this number.

This patch also removes a few remaining redundantly-defined constants that were missed last
time around.

10 years agoauto merge of #13741 : klutzy/rust/test-reachable, r=alexcrichton
bors [Fri, 25 Apr 2014 17:51:24 +0000 (10:51 -0700)]
auto merge of #13741 : klutzy/rust/test-reachable, r=alexcrichton

It didn't work because it tried to call itself but symbols are not
exported as default in executables.

Note that `fun5` is not internal anymore since it is in library.

Second commit removes/updates some old tests.

10 years agoauto merge of #13747 : michaelfairley/rust/patch-1, r=alexcrichton
bors [Fri, 25 Apr 2014 16:21:20 +0000 (09:21 -0700)]
auto merge of #13747 : michaelfairley/rust/patch-1, r=alexcrichton

10 years agodoc: Update modules for containers
Herman J. Radtke III [Fri, 25 Apr 2014 15:13:22 +0000 (08:13 -0700)]
doc: Update modules for containers

10 years agoFix variable name in prose to match code it's describing
Michael Fairley [Fri, 25 Apr 2014 15:15:47 +0000 (10:15 -0500)]
Fix variable name in prose to match code it's describing

10 years agotest: Remove/update some old ignored tests
klutzy [Fri, 25 Apr 2014 05:29:30 +0000 (14:29 +0900)]
test: Remove/update some old ignored tests

10 years agorustdoc: bring it inline
Adrien Tétar [Fri, 25 Apr 2014 08:34:32 +0000 (17:34 +0900)]
rustdoc: bring it inline

10 years agotest: Enable extern-fn-reachable test
klutzy [Fri, 25 Apr 2014 04:57:54 +0000 (13:57 +0900)]
test: Enable extern-fn-reachable test

It didn't work because it tried to call itself but symbols are not
exported as default in executables.

Note that `fun5` is not internal anymore since it is in library.

10 years agodoc,rustdoc: store webfonts locally
Adrien Tétar [Fri, 25 Apr 2014 08:05:52 +0000 (17:05 +0900)]
doc,rustdoc: store webfonts locally

- Avoids cross-domain requests restrictions
- Better availability of content
- No HTML queries needed for an offline build

10 years agodoc: slight design refresh
Adrien Tétar [Fri, 25 Apr 2014 07:56:55 +0000 (16:56 +0900)]
doc: slight design refresh

10 years agorustdoc: fixes
Adrien Tétar [Fri, 25 Apr 2014 07:56:39 +0000 (16:56 +0900)]
rustdoc: fixes

10 years agoauto merge of #13700 : BurntSushi/rust/regexp, r=alexcrichton
bors [Fri, 25 Apr 2014 06:41:15 +0000 (23:41 -0700)]
auto merge of #13700 : BurntSushi/rust/regexp, r=alexcrichton

Implements [RFC 7](https://github.com/rust-lang/rfcs/blob/master/active/0007-regexps.md) and will hopefully resolve #3591. The crate is marked as experimental. It includes a syntax extension for compiling regexps to native Rust code.

Embeds and passes the `basic`, `nullsubexpr` and `repetition` tests from [Glenn Fowler's (slightly modified by Russ Cox for leftmost-first semantics) testregex test suite](http://www2.research.att.com/~astopen/testregex/testregex.html). I've also hand written a plethora of other tests that exercise Unicode support, the parser, public API, etc. Also includes a `regex-dna` benchmark for the shootout.

I know the addition looks huge at first, but consider these things:

1. More than half the number of lines is dedicated to Unicode character classes.
2. Of the ~4,500 lines remaining, 1,225 of them are comments.
3. Another ~800 are tests.
4. That leaves 2500 lines for the meat. The parser is ~850 of them. The public API, compiler, dynamic VM and code generator (for `regexp!`) make up the rest.

10 years agoIgnore regex tests (regular, cfail and benchmark) on Windows (for now).
Andrew Gallant [Fri, 25 Apr 2014 05:37:27 +0000 (01:37 -0400)]
Ignore regex tests (regular, cfail and benchmark) on Windows (for now).

10 years agoauto merge of #13697 : pongad/rust/consts, r=alexcrichton
bors [Fri, 25 Apr 2014 05:31:16 +0000 (22:31 -0700)]
auto merge of #13697 : pongad/rust/consts, r=alexcrichton

I decided to put architecture constants in another mod. They are not used, so a part of me is thinking of just getting rid of them altogether. The rest should be similar to what @brson wants.
Fixes #13536

10 years agoCleaned up os::consts. The module only exposes constants for the target OS and arch.
Michael Darakananda [Wed, 23 Apr 2014 05:01:31 +0000 (01:01 -0400)]
Cleaned up os::consts. The module only exposes constants for the target OS and arch.

Constants for other OS's and arch's must be defined manually.
[breaking-change]

10 years agomk: Copy fewer libraries into the host artifacts
Andrew Gallant [Fri, 25 Apr 2014 04:31:29 +0000 (00:31 -0400)]
mk: Copy fewer libraries into the host artifacts

10 years agoAdd a regex crate to the Rust distribution.
Andrew Gallant [Fri, 25 Apr 2014 04:27:24 +0000 (00:27 -0400)]
Add a regex crate to the Rust distribution.

Also adds a regex_macros crate, which provides natively compiled
regular expressions with a syntax extension.

Closes #3591.

RFC: 0007-regexps

10 years agoauto merge of #13723 : alexcrichton/rust/pipe-connect-timeout, r=brson
bors [Fri, 25 Apr 2014 02:36:14 +0000 (19:36 -0700)]
auto merge of #13723 : alexcrichton/rust/pipe-connect-timeout, r=brson

This adds support for connecting to a unix socket with a timeout (a named pipe
on windows), and accepting a connection with a timeout. The goal is to bring
unix pipes/named sockets back in line with TCP support for timeouts.

Similarly to the TCP sockets, all methods are marked #[experimental] due to
uncertainty about the type of the timeout argument.

This internally involved a good bit of refactoring to share as much code as
possible between TCP servers and pipe servers, but the core implementation did
not change drastically as part of this commit.

cc #13523

10 years agoauto merge of #13711 : alexcrichton/rust/snapshots, r=brson
bors [Fri, 25 Apr 2014 01:26:15 +0000 (18:26 -0700)]
auto merge of #13711 : alexcrichton/rust/snapshots, r=brson

These are the first successful snapshots after the LLVM upgrade, built with LLVM
that requires C++11

10 years agoauto merge of #13671 : dcrewi/rust/lint-directives-on-use-items, r=alexcrichton
bors [Fri, 25 Apr 2014 00:16:14 +0000 (17:16 -0700)]
auto merge of #13671 : dcrewi/rust/lint-directives-on-use-items, r=alexcrichton

Fixes #10534

10 years agoadd min_pos_value constant for floats
Aaron Turon [Fri, 25 Apr 2014 00:09:58 +0000 (17:09 -0700)]
add min_pos_value constant for floats

Follow-up on issue #13297 and PR #13710.  Instead of following the (confusing) C/C++ approach
of using `MIN_VALUE` for the smallest *positive* number, we introduce `MIN_POS_VALUE` (and
in the Float trait, `min_pos_value`) to represent this number.

This patch also removes a few remaining redundantly-defined constants that were missed last
time around.

10 years agostd: Add timeouts to unix connect/accept
Alex Crichton [Wed, 23 Apr 2014 01:38:59 +0000 (18:38 -0700)]
std: Add timeouts to unix connect/accept

This adds support for connecting to a unix socket with a timeout (a named pipe
on windows), and accepting a connection with a timeout. The goal is to bring
unix pipes/named sockets back in line with TCP support for timeouts.

Similarly to the TCP sockets, all methods are marked #[experimental] due to
uncertainty about the type of the timeout argument.

This internally involved a good bit of refactoring to share as much code as
possible between TCP servers and pipe servers, but the core implementation did
not change drastically as part of this commit.

cc #13523

10 years agonative: Remove unused and untested UnixDatagram
Alex Crichton [Tue, 22 Apr 2014 23:23:19 +0000 (16:23 -0700)]
native: Remove unused and untested UnixDatagram

10 years agoauto merge of #13729 : chris-morgan/rust/fix-vim-indent, r=alexcrichton
bors [Thu, 24 Apr 2014 22:01:19 +0000 (15:01 -0700)]
auto merge of #13729 : chris-morgan/rust/fix-vim-indent, r=alexcrichton

The change in #13600 was incorrect, containing a bad regular expression;
inside an indent function, errors are silently ignored (and the ``~=``
operation will return 0), so it just always failed, causing the cases
that were supposed to be caught to not be caught and making things like
the ``match`` example shown above or struct field definitions regress.

I have fixed the regular expression to what it should have been. This is
still imperfect, of course, not handling cases like where the first
argument to a function is a function call (``foo(bar(),``), but it'll do
for now.

----

I have a general request to make of reviewers about any changes made to `src/etc/vim`: **please tell me**. As a general rule I want to review them. (I’ll make an exception for changes the prelude; it needs fixing from time to time when some people don’t update the syntax file, anyway.)

cc @brandonw

10 years agoauto merge of #13720 : aturon/rust/walk_dir-perf, r=alexcrichton
bors [Thu, 24 Apr 2014 20:51:19 +0000 (13:51 -0700)]
auto merge of #13720 : aturon/rust/walk_dir-perf, r=alexcrichton

The `walk_dir` iterator was simulating a queue using a vector (in particular, using `shift`),
leading to O(n^2) performance. Since the order was not well-specified (see issue #13411),
the simplest fix is to use the vector as a stack (and thus yield a depth-first traversal).
This patch does exactly that, and adds a test checking for depth-first behavior.

Note that the underlying `readdir` function does not specify any particular order, nor
does the system call it uses.

Closes #13411.

10 years agoauto merge of #13706 : alexcrichton/rust/test-nocapture, r=brson
bors [Thu, 24 Apr 2014 18:31:22 +0000 (11:31 -0700)]
auto merge of #13706 : alexcrichton/rust/test-nocapture, r=brson

A new flag to the test runner, --nocapture, can be passed to instruct that the
output of tests should not be captured by default. The behavior can also be
triggered via a RUST_TEST_NOCAPTURE environment variable being set.

Closes #13374

10 years agofix O(n^2) perf bug for std::io::fs::walk_dir
Aaron Turon [Thu, 24 Apr 2014 00:09:58 +0000 (17:09 -0700)]
fix O(n^2) perf bug for std::io::fs::walk_dir

The `walk_dir` iterator was simulating a queue using a vector (in particular, using `shift`),
leading to O(n^2) performance. Since the order was not well-specified (see issue #13411),
the simplest fix is to use the vector as a stack (and thus yield a depth-first traversal).
This patch does exactly that.  It leaves the order as originally specified -- "some top-down
order" -- and adds a test to ensure a top-down traversal.

Note that the underlying `readdir` function does not specify any particular order, nor
does the system call it uses.

Closes #13411.

10 years agoauto merge of #13619 : alexcrichton/rust/update-libuv, r=brson
bors [Thu, 24 Apr 2014 17:21:22 +0000 (10:21 -0700)]
auto merge of #13619 : alexcrichton/rust/update-libuv, r=brson

This update brings a few months of changes, but primarily a fix for the
following situation.

When creating a handle to stdin, libuv used to set the stdin handle to
nonblocking mode. This would end up affect this stdin handle across all
processes that shared it, which mean that stdin become nonblocking for everyone
using the same stdin. On linux, this also affected *stdout* because stdin/stdout
roughly point at the same thing.

This problem became apparent when running the test suite manually on a local
computer. The stdtest suite (running with libgreen) would set stdout to
nonblocking mode (as described above), and then the next test suite would always
fail for a printing failure (because stdout was returning EAGAIN).

This has been fixed upstream, joyent/libuv@342e8c, and this update pulls in this
fix. This also brings us in line with a recently upstreamed libuv patch.

Closes #12827
Closes #13336
Closes #13355

10 years agotest: Add an option to not capture output
Alex Crichton [Wed, 23 Apr 2014 16:38:46 +0000 (09:38 -0700)]
test: Add an option to not capture output

A new flag to the test runner, --nocapture, can be passed to instruct that the
output of tests should not be captured by default. The behavior can also be
triggered via a RUST_TEST_NOCAPTURE environment variable being set.

Closes #13374

10 years agoUpdate libuv
Alex Crichton [Sat, 19 Apr 2014 02:09:31 +0000 (19:09 -0700)]
Update libuv

This update brings a few months of changes, but primarily a fix for the
following situation.

When creating a handle to stdin, libuv used to set the stdin handle to
nonblocking mode. This would end up affect this stdin handle across all
processes that shared it, which mean that stdin become nonblocking for everyone
using the same stdin. On linux, this also affected *stdout* because stdin/stdout
roughly point at the same thing.

This problem became apparent when running the test suite manually on a local
computer. The stdtest suite (running with libgreen) would set stdout to
nonblocking mode (as described above), and then the next test suite would always
fail for a printing failure (because stdout was returning EAGAIN).

This has been fixed upstream, joyent/libuv@342e8c, and this update pulls in this
fix. This also brings us in line with a recently upstreamed libuv patch.

Closes #13336
Closes #13355

10 years agoauto merge of #13715 : nick29581/rust/unsized-assign2, r=nikomatsakis
bors [Thu, 24 Apr 2014 15:16:24 +0000 (08:16 -0700)]
auto merge of #13715 : nick29581/rust/unsized-assign2, r=nikomatsakis

Closes #13376.

10 years agoauto merge of #13713 : edwardw/rust/methodcall-span, r=alexcrichton
bors [Thu, 24 Apr 2014 14:06:26 +0000 (07:06 -0700)]
auto merge of #13713 : edwardw/rust/methodcall-span, r=alexcrichton

Specifically, the method parameter cardinality mismatch or missing
method error message span now gets method itself exactly. It was the
whole expression.

Closes #9390
Closes #13684
Closes #13709

10 years agoFix Vim indent regressions from #13600.
Chris Morgan [Thu, 24 Apr 2014 13:33:28 +0000 (23:33 +1000)]
Fix Vim indent regressions from #13600.

The change in #13600 was incorrect, containing a bad regular expression;
inside an indent function, errors are silently ignored (and the ``~=``
operation will return 0), so it just always failed, causing the cases
that were supposed to be caught to not be caught and making things like
the ``match`` example shown above or struct field definitions regress.

I have fixed the regular expression to what it should have been. This is
still imperfect, of course, not handling cases like where the first
argument to a function is a function call (``foo(bar(),``), but it'll do
for now.

10 years agoauto merge of #13559 : FlaPer87/rust/remove-special-root, r=nikomatsakis
bors [Thu, 24 Apr 2014 12:51:28 +0000 (05:51 -0700)]
auto merge of #13559 : FlaPer87/rust/remove-special-root, r=nikomatsakis

This patch removes the special auto-rooting for `@` from the borrow checker. With `@` moving into a library, it doesn't make sense to keep this code around anymore. It also simplifies `trans` by removing root checking from there

@nikomatsakis

Closes: #11586
10 years agoauto merge of #13710 : aturon/rust/float-constants, r=brson
bors [Thu, 24 Apr 2014 10:21:28 +0000 (03:21 -0700)]
auto merge of #13710 : aturon/rust/float-constants, r=brson

Some of the constant values in std::f32 were incorrectly copied from
std::f64.  More broadly, both modules defined their constants redundantly
in two places, which is what led to the bug.  Moreover, the specs for
some of the constants were incorrect, even when the values were correct.

Closes #13297.  Closes #11537.

10 years agorustdoc: fix de-@rooting fallout
Niko Matsakis [Thu, 24 Apr 2014 03:29:38 +0000 (23:29 -0400)]
rustdoc: fix de-@rooting fallout

10 years agoauto merge of #13531 : alexcrichton/rust/fix-some-ices, r=brson
bors [Thu, 24 Apr 2014 08:26:29 +0000 (01:26 -0700)]
auto merge of #13531 : alexcrichton/rust/fix-some-ices, r=brson

See the commits for the affected issues.

10 years agoauto merge of #12812 : sfackler/rust/attr-arm, r=alexcrichton
bors [Thu, 24 Apr 2014 06:51:30 +0000 (23:51 -0700)]
auto merge of #12812 : sfackler/rust/attr-arm, r=alexcrichton

This is really only useful for #[cfg()]. For example:

```rust
enum Foo {
    Bar,
    Baz,
    #[cfg(blob)]
    Blob
}

fn match_foos(f: &Foo) {
    match *f {
        Bar => {}
        Baz => {}
        #[cfg(blob)]
        Blob => {}
    }
}
```

This is a kind of weird place to allow attributes, so it should probably
be discussed before merging.

10 years agoAllow attributes on match arms
Steven Fackler [Wed, 23 Apr 2014 04:54:48 +0000 (21:54 -0700)]
Allow attributes on match arms

RFC: 0008-match-arm-attributes

10 years agoauto merge of #13704 : edwardw/rust/doc-hidden, r=alexcrichton
bors [Thu, 24 Apr 2014 04:46:34 +0000 (21:46 -0700)]
auto merge of #13704 : edwardw/rust/doc-hidden, r=alexcrichton

Closes #13698

10 years agoauto merge of #13675 : sfackler/rust/taskbuilder-new, r=alexcrichton
bors [Thu, 24 Apr 2014 03:31:36 +0000 (20:31 -0700)]
auto merge of #13675 : sfackler/rust/taskbuilder-new, r=alexcrichton

The constructor for `TaskBuilder` is being changed to an associated
function called `new` for consistency with the rest of the standard
library.

Closes #13666

[breaking-change]

10 years agoMove task::task() to TaskBuilder::new()
Steven Fackler [Tue, 22 Apr 2014 04:19:59 +0000 (21:19 -0700)]
Move task::task() to TaskBuilder::new()

The constructor for `TaskBuilder` is being changed to an associated
function called `new` for consistency with the rest of the standard
library.

Closes #13666

[breaking-change]

10 years agoauto merge of #13688 : alexcrichton/rust/accept-timeout, r=brson
bors [Thu, 24 Apr 2014 02:21:33 +0000 (19:21 -0700)]
auto merge of #13688 : alexcrichton/rust/accept-timeout, r=brson

This adds experimental support for timeouts when accepting sockets through
`TcpAcceptor::accept`. This does not add a separate `accept_timeout` function,
but rather it adds a `set_timeout` function instead. This second function is
intended to be used as a hard deadline after which all accepts will never block
and fail immediately.

This idea was derived from Go's SetDeadline() methods. We do not currently have
a robust time abstraction in the standard library, so I opted to have the
argument be a relative time in millseconds into the future. I believe a more
appropriate argument type is an absolute time, but this concept does not exist
yet (this is also why the function is marked #[experimental]).

The native support is built on select(), similarly to connect_timeout(), and the
green support is based on channel select and a timer.

cc #13523

10 years agostd: Add support for an accept() timeout
Alex Crichton [Tue, 22 Apr 2014 03:30:07 +0000 (20:30 -0700)]
std: Add support for an accept() timeout

This adds experimental support for timeouts when accepting sockets through
`TcpAcceptor::accept`. This does not add a separate `accept_timeout` function,
but rather it adds a `set_timeout` function instead. This second function is
intended to be used as a hard deadline after which all accepts will never block
and fail immediately.

This idea was derived from Go's SetDeadline() methods. We do not currently have
a robust time abstraction in the standard library, so I opted to have the
argument be a relative time in millseconds into the future. I believe a more
appropriate argument type is an absolute time, but this concept does not exist
yet (this is also why the function is marked #[experimental]).

The native support is built on select(), similarly to connect_timeout(), and the
green support is based on channel select and a timer.

cc #13523

10 years agoPrevent unsized types being stored in variables
Nick Cameron [Wed, 23 Apr 2014 23:57:22 +0000 (11:57 +1200)]
Prevent unsized types being stored in variables

Closes #13376.

10 years agoCalibrate span for method call error messages
Edward Wang [Wed, 23 Apr 2014 21:19:23 +0000 (05:19 +0800)]
Calibrate span for method call error messages

Specifically, the method parameter cardinality mismatch or missing
method error message span now gets method itself exactly. It was the
whole expression.

Closes #9390
Closes #13684
Closes #13709

10 years agoRegister new snapshots
Alex Crichton [Wed, 23 Apr 2014 21:58:50 +0000 (14:58 -0700)]
Register new snapshots

These are the first successful snapshots after the LLVM upgrade, built with LLVM
that requires C++11

10 years agoauto merge of #13705 : edwardw/rust/rcboxptr-doc, r=alexcrichton
bors [Wed, 23 Apr 2014 21:48:54 +0000 (14:48 -0700)]
auto merge of #13705 : edwardw/rust/rcboxptr-doc, r=alexcrichton

It is for internal use only and should not appear in docs.

10 years agofix std::f32 and std::f64 constants
Aaron Turon [Wed, 23 Apr 2014 19:04:34 +0000 (12:04 -0700)]
fix std::f32 and std::f64 constants

Some of the constant values in std::f32 were incorrectly copied from
std::f64.  More broadly, both modules defined their constants redundantly
in two places, which is what led to the bug.  Moreover, the specs for
some of the constants were incorrent, even when the values were correct.

Closes #13297.  Closes #11537.

10 years agoauto merge of #13584 : rcxdude/rust/cross-syntax-ext, r=alexcrichton
bors [Wed, 23 Apr 2014 20:11:37 +0000 (13:11 -0700)]
auto merge of #13584 : rcxdude/rust/cross-syntax-ext, r=alexcrichton

This allows the use of syntax extensions when cross-compiling (fixing #12102). It does this by encoding the target triple in the crate metadata and checking it when searching for files. Currently the crate triple must match the host triple when there is a macro_registrar_fn, it must match the target triple when linking, and can match either when only macro_rules! macros are used.

due to carelessness, this is pretty much a duplicate of https://github.com/mozilla/rust/pull/13450.

10 years agoEnable use of syntax extensions when cross compiling.
Douglas Young [Thu, 17 Apr 2014 15:52:25 +0000 (16:52 +0100)]
Enable use of syntax extensions when cross compiling.

This adds the target triple to the crate metadata.
When searching for a crate the phase (link, syntax) is taken into account.
During link phase only crates matching the target triple are considered.
During syntax phase, either the target or host triple will be accepted, unless
the crate defines a macro_registrar, in which case only the host triple will
match.

10 years agoauto merge of #13686 : alexcrichton/rust/issue-12224, r=nikomatsakis
bors [Wed, 23 Apr 2014 19:01:53 +0000 (12:01 -0700)]
auto merge of #13686 : alexcrichton/rust/issue-12224, r=nikomatsakis

This alters the borrow checker's requirements on invoking closures from
requiring an immutable borrow to requiring a unique immutable borrow. This means
that it is illegal to invoke a closure through a `&` pointer because there is no
guarantee that is not aliased. This does not mean that a closure is required to
be in a mutable location, but rather a location which can be proven to be
unique (often through a mutable pointer).

For example, the following code is unsound and is no longer allowed:

    type Fn<'a> = ||:'a;

    fn call(f: |Fn|) {
        f(|| {
            f(|| {})
        });
    }

    fn main() {
        call(|a| {
            a();
        });
    }

There is no replacement for this pattern. For all closures which are stored in
structures, it was previously allowed to invoke the closure through `&self` but
it now requires invocation through `&mut self`.

The standard library has a good number of violations of this new rule, but the
fixes will be separated into multiple breaking change commits.

Closes #12224

10 years agorustc: Don't die when a crate id can't be inferred
Alex Crichton [Tue, 15 Apr 2014 14:47:26 +0000 (07:47 -0700)]
rustc: Don't die when a crate id can't be inferred

The filestem of the desired output isn't necessarily a valid crate id, and
calling unwrap() will trigger an ICE in rustc. This tries a little harder to
infer a "valid crate id" from a crate, with an eventual fallback to a generic
crate id if alll else fails.

Closes #11107

10 years agorustc: Give a friendlier error when writing deps
Alex Crichton [Tue, 15 Apr 2014 14:35:17 +0000 (07:35 -0700)]
rustc: Give a friendlier error when writing deps

When an error is encountered when writing dependencies, this presents a nicer
error rather than an ICE.

Closes #13517

10 years agorustc: Fix passing errors from LLVM to rustc
Alex Crichton [Tue, 15 Apr 2014 14:25:22 +0000 (07:25 -0700)]
rustc: Fix passing errors from LLVM to rustc

Many of the instances of setting a global error variable ended up leaving a
dangling pointer into free'd memory. This changes the method of error
transmission to strdup any error and "relinquish ownership" to rustc when it
gets an error. The corresponding Rust code will then free the error as
necessary.

Closes #12865

10 years agoFix other bugs with new closure borrowing
Alex Crichton [Tue, 22 Apr 2014 06:25:18 +0000 (23:25 -0700)]
Fix other bugs with new closure borrowing

This fixes various issues throughout the standard distribution and tests.

10 years agostd: Change Finally to take `&mut self`
Alex Crichton [Tue, 22 Apr 2014 05:28:21 +0000 (22:28 -0700)]
std: Change Finally to take `&mut self`

As with the previous commits, the Finally trait is primarily implemented for
closures, so the trait was modified from `&self` to `&mut self`. This will
require that any closure variable invoked with `finally` to be stored in a
mutable slot.

[breaking-change]

10 years agostd: Change CharEq to take `&mut self`
Alex Crichton [Tue, 22 Apr 2014 05:21:37 +0000 (22:21 -0700)]
std: Change CharEq to take `&mut self`

This is similar to the previous commits to allow invocation of a closure through
a `&mut self` pointer because `&self` is disallowed. One of the primary
implementors of the CharEq trait is a closure type, which would not work if the
method continued to have `&self`.

In addition to changing mutability of the `matches` method, this modifies the
following methods from &CharEq to take a type which implements CharEq by value.

* trim_chars
* trim_left_chars
* trim_right_chars

Where these methods were previously invoked via

    s.trim_chars(&'a')

it would now be invoked through

    s.trim_chars('a')

[breaking-change]

10 years agostd: Change RandomAccessIterator to use `&mut self`
Alex Crichton [Tue, 22 Apr 2014 05:15:42 +0000 (22:15 -0700)]
std: Change RandomAccessIterator to use `&mut self`

Many iterators go through a closure when dealing with the `idx` method, which
are invalid after the previous change (closures cannot be invoked through a `&`
pointer). This commit alters the `fn idx` method on the RandomAccessIterator
to take `&mut self` rather than `&self`.

[breaking-change]

10 years agorustc: Tweak the borrow on closure invocations
Alex Crichton [Tue, 22 Apr 2014 05:02:19 +0000 (22:02 -0700)]
rustc: Tweak the borrow on closure invocations

This alters the borrow checker's requirements on invoking closures from
requiring an immutable borrow to requiring a unique immutable borrow. This means
that it is illegal to invoke a closure through a `&` pointer because there is no
guarantee that is not aliased. This does not mean that a closure is required to
be in a mutable location, but rather a location which can be proven to be
unique (often through a mutable pointer).

For example, the following code is unsound and is no longer allowed:

    type Fn<'a> = ||:'a;

    fn call(f: |Fn|) {
        f(|| {
            f(|| {})
        });
    }

    fn main() {
        call(|a| {
            a();
        });
    }

There is no replacement for this pattern. For all closures which are stored in
structures, it was previously allowed to invoke the closure through `&self` but
it now requires invocation through `&mut self`.

The standard library has a good number of violations of this new rule, but the
fixes will be separated into multiple breaking change commits.

Closes #12224

[breaking-change]

10 years agoauto merge of #13689 : alexcrichton/rust/ignore-tcp-connect-freebsd, r=brson
bors [Wed, 23 Apr 2014 16:56:38 +0000 (09:56 -0700)]
auto merge of #13689 : alexcrichton/rust/ignore-tcp-connect-freebsd, r=brson

The BSD builders are failing with a different error that is not a timeout error
(Connection reset by peer), so this test isn't really all that useful on
freebsd. Due to a lack of a better idea of how to test a connect timeout, this
test is going to just be ignored for now.

10 years agorustc: fix de-@rooting fallout
Flavio Percoco [Wed, 23 Apr 2014 16:16:23 +0000 (18:16 +0200)]
rustc: fix de-@rooting fallout

10 years agosyntax: fix de-@rooting fallout
Flavio Percoco [Wed, 23 Apr 2014 16:16:06 +0000 (18:16 +0200)]
syntax: fix de-@rooting fallout

10 years agorustc: Remove moved_variables_set
Flavio Percoco [Tue, 22 Apr 2014 22:59:42 +0000 (00:59 +0200)]
rustc: Remove moved_variables_set

10 years agoTreat @T like ~T in borrowck
Flavio Percoco [Wed, 16 Apr 2014 23:03:14 +0000 (01:03 +0200)]
Treat @T like ~T in borrowck

`@` pointers used to have special rooting and regions management. With `@`
moving to standalone library, we don't need to keep that special
treatment around. This patch modifies the way `@` pointers are treated by
treating them as if they were `~` pointers

Region checker and borrow checker were modified in this patch.

Closes #11586

[breaking-change]

10 years agorustc: Remove obsolete error_out_of_root_scope variant
Flavio Percoco [Wed, 16 Apr 2014 23:00:00 +0000 (01:00 +0200)]
rustc: Remove obsolete error_out_of_root_scope variant

10 years agoUpdate tests and move other tests around
Flavio Percoco [Wed, 16 Apr 2014 22:58:55 +0000 (00:58 +0200)]
Update tests and move other tests around

10 years agorustc: Remove root_map entirely
Flavio Percoco [Wed, 16 Apr 2014 21:33:38 +0000 (23:33 +0200)]
rustc: Remove root_map entirely

10 years agorustc: Remove root_map usage from lifetime
Flavio Percoco [Tue, 15 Apr 2014 21:33:37 +0000 (23:33 +0200)]
rustc: Remove root_map usage from lifetime

10 years agorustc: Remove root_map usage from _match
Flavio Percoco [Tue, 15 Apr 2014 20:47:37 +0000 (22:47 +0200)]
rustc: Remove root_map usage from _match

10 years agorustc: remove usage of root_map from astencode
Flavio Percoco [Tue, 15 Apr 2014 20:43:24 +0000 (22:43 +0200)]
rustc: remove usage of root_map from astencode

10 years agoRemove special rooting code from trans
Flavio Percoco [Tue, 15 Apr 2014 20:05:37 +0000 (22:05 +0200)]
Remove special rooting code from trans

[breaking-change]

cc #11586

10 years agotest: Ignore tcp-connect-timeout on freebsd
Alex Crichton [Tue, 22 Apr 2014 20:03:54 +0000 (13:03 -0700)]
test: Ignore tcp-connect-timeout on freebsd

The BSD builders are failing with a different error that is not a timeout error
(Connection reset by peer), so this test isn't really all that useful on
freebsd. Due to a lack of a better idea of how to test a connect timeout, this
test is going to just be ignored for now.

10 years agoHide trait rc::RcBoxPtr from docs
Edward Wang [Wed, 23 Apr 2014 15:35:45 +0000 (23:35 +0800)]
Hide trait rc::RcBoxPtr from docs

It is for internal use only and should not appear in docs.

10 years agoHonor hidden doc attribute of derivable trait methods
Edward Wang [Wed, 23 Apr 2014 14:43:45 +0000 (22:43 +0800)]
Honor hidden doc attribute of derivable trait methods

Closes #13698

10 years agoauto merge of #13694 : jacob-hegna/rust/master, r=brson
bors [Wed, 23 Apr 2014 12:51:30 +0000 (05:51 -0700)]
auto merge of #13694 : jacob-hegna/rust/master, r=brson

... and uint_macros.rs

10 years agoauto merge of #13693 : thestinger/rust/mem, r=alexcrichton
bors [Wed, 23 Apr 2014 11:36:32 +0000 (04:36 -0700)]
auto merge of #13693 : thestinger/rust/mem, r=alexcrichton

This exposes volatile versions of the memset/memmove/memcpy intrinsics.

The volatile parameter must be constant, so this can't simply be a
parameter to our intrinsics.