3611 Commits

Author SHA1 Message Date
Daniel Micay
bf7587f551 iter: fix range_inclusive when start > stop 2013-09-15 00:32:15 -04:00
Daniel Micay
1f961c74c4 fix range_step{,_inclusive} with negative step 2013-09-15 00:32:07 -04:00
bors
0dbd509e0f auto merge of #9199 : thestinger/rust/range_step, r=cmr
My focus was on getting these to be correct in all cases by handling overflow properly. I'll clean them up and work on the performance later.
2013-09-14 17:10:51 -07:00
Daniel Micay
a18038f3b2 iter: add RangeStep and RangeStepInclusive 2013-09-14 18:26:21 -04:00
bors
cf7e93ff25 auto merge of #9198 : FlaPer87/rust/shared-port, r=cmr
SharedPort implementation was missing in std::comm. Since this module
also wraps SharedChan, it makes sense to have SharedPort defined there
as well.
2013-09-14 15:20:50 -07:00
bors
5c4f65e6f5 auto merge of #9191 : huonw/rust/are-you-tired, r=cmr
Allows `std::rt::io::timer::sleep(1000)` rather than `std::rt::io::timer::Timer::new().unwrap().sleep(1000)`.
2013-09-14 14:05:51 -07:00
Daniel Micay
3aead52586 iter: move Counter impl to the proper place 2013-09-14 16:51:55 -04:00
Daniel Micay
10c8978edb iter: replace comment with a docstring 2013-09-14 16:51:33 -04:00
Flavio Percoco
9357f8f4cd Add SharedPort wrapper around rt::comm::SharedPort
SharedPort implementation was missing in std::comm. Since this module
also wraps SharedChan, it makes sense to have SharedPort defined there
as well.
2013-09-14 22:50:28 +02:00
Daniel Micay
561f1b0063 iter: fix range docstrings 2013-09-14 16:33:19 -04:00
bors
bca015d9ff auto merge of #9182 : bjz/rust/master, r=brson
Somehow this was missed!

cc #4819
2013-09-14 11:15:54 -07:00
bors
1c26513ef9 auto merge of #9180 : blake2-ppc/rust/reduce-either, r=catamorphism
Work a bit towards #9157 "Remove Either". These instances don't need to use Either and are better expressed in other ways (removing allocations and simplifying types).
2013-09-14 08:50:50 -07:00
Huon Wilson
f39ab75a78 std::rt: Add a standalone sleep function. 2013-09-15 00:20:48 +10:00
bors
55b43fa26e auto merge of #9165 : klutzy/rust/newrt-file-fix, r=sanxiyn
It was broken on win32 because of header inconsistency.
2013-09-14 05:00:56 -07:00
bors
f853f0b2d6 auto merge of #9160 : alexcrichton/rust/local-data-docs, r=huonw
Remove references to local_data::Key and only mention the macro for how to
construct new keys into local data.
2013-09-14 02:30:59 -07:00
bors
fbafb41fff auto merge of #9156 : sfackler/rust/buffered-fix, r=huonw
This is a workaround for #9155. Currently, any uses of BufferedStream
outside of libstd ICE.
2013-09-14 01:16:00 -07:00
bors
2aa578efd9 auto merge of #9115 : erickt/rust/master, r=erickt
This is a series of patches to modernize option and result. The highlights are:

* rename `.unwrap_or_default(value)` and etc to `.unwrap_or(value)`
* add `.unwrap_or_default()` that uses the `Default` trait
* add `Default` implementations for vecs, HashMap, Option
* add  `Option.and(T) -> Option<T>`, `Option.and_then(&fn() -> Option<T>) -> Option<T>`, `Option.or(T) -> Option<T>`, and `Option.or_else(&fn() -> Option<T>) -> Option<T>`
* add `option::ToOption`, `option::IntoOption`, `option::AsOption`, `result::ToResult`, `result::IntoResult`, `result::AsResult`, `either::ToEither`, and `either::IntoEither`, `either::AsEither`
* renamed `Option::chain*` and `Result::chain*` to `and_then` and `or_else` to avoid the eventual collision with `Iterator.chain`.
* Added a bunch of impls of `Default`
* Added a `#[deriving(Default)]` syntax extension
* Removed impls of `Zero` for `Option<T>` and vecs.
2013-09-14 00:01:04 -07:00
Alex Crichton
0af2bd829e Remove all usage of change_dir_locked
While usage of change_dir_locked is synchronized against itself, it's not
synchronized against other relative path usage, so I'm of the opinion that it
just really doesn't help in running tests. In order to prevent the problems that
have been cropping up, this completely removes the function.

All existing tests (except one) using it have been moved to run-pass tests where
they get their own process and don't need to be synchronized with anyone else.

There is one now-ignored rustpkg test because when I moved it to a run-pass test
apparently run-pass isn't set up to have 'extern mod rustc' (it ends up having
linkage failures).
2013-09-13 21:58:00 -07:00
Brendan Zabarauskas
ec8f88417c Add Orderable bound to num::Primitive 2013-09-14 13:31:31 +10:00
blake2-ppc
830ac37ca2 std::logging: Use a more specific enum than Either 2013-09-14 04:07:43 +02:00
Erick Tryzelaar
93683ae6da std: Fix another windows problem with the unwrap_or_default rename 2013-09-13 07:09:32 -07:00
Erick Tryzelaar
28eb49bfbf std: rename Option.chain to Option.and_then on windows 2013-09-13 06:58:46 -07:00
klutzy
3924cb031f std::rt::io: Fix file I/O on Win32
It was broken on win32 because of header inconsistency.
2013-09-13 19:23:57 +09:00
Alex Crichton
d0462f070c Improve the local_data docs slightly
Remove references to local_data::Key and only mention the macro for how to
construct new keys into local data.
2013-09-12 23:26:06 -07:00
bors
323e8f07ff auto merge of #9087 : fhahn/rust/rust_crate_map, r=brson
This patch converts the rust_crate_map.cpp to Rust as mentioned at the end of #8880.
2013-09-12 23:00:51 -07:00
Steven Fackler
ef964a162f Stop using newtypes in rt::io::buffered
This is a workaround for #9155. Currently, any uses of BufferedStream
outside of libstd ICE.
2013-09-12 21:48:47 -07:00
Erick Tryzelaar
7f9c5aae9e std: Restore Option::chain{,_mut}_ref as and_then{,_mut}_ref 2013-09-12 18:54:28 -07:00
Erick Tryzelaar
f107718a9b std: Remove Zero impl for Option
Options are not numeric types, so it doesn't make sense for them to
implement Zero.
2013-09-12 18:54:13 -07:00
Erick Tryzelaar
43aba856b4 std: Remove Zero impl from vec
Vecs are not numeric types, so it doesn't make sense for them to
implement Zero.
2013-09-12 18:54:13 -07:00
Erick Tryzelaar
ca47eebb44 std: Add a bunch of Default impls 2013-09-12 18:54:13 -07:00
Erick Tryzelaar
38f97ea103 std: Rename {Option,Result}::chain{,_err}* to {and_then,or_else} 2013-09-12 18:54:13 -07:00
Erick Tryzelaar
e03d60e9eb std: Add ToEither/IntoEither/AsEither 2013-09-12 18:54:12 -07:00
Erick Tryzelaar
12e0d7ecf0 std: Add ToResult/IntoResult/AsResult 2013-09-12 18:54:12 -07:00
Erick Tryzelaar
ff34740a29 std: Add ToOption/IntoOption/AsOption 2013-09-12 18:54:12 -07:00
Erick Tryzelaar
b8a284e873 std: fix a warning 2013-09-12 18:54:12 -07:00
Erick Tryzelaar
d625d4a598 std: Add Option.{and,and_then,or,or_else} 2013-09-12 18:54:12 -07:00
Erick Tryzelaar
7380b1ce7f std: Add Option.unwrap_or_else and a couple tests 2013-09-12 18:54:12 -07:00
Erick Tryzelaar
2bd87ad432 std: Add Default implementation for vecs 2013-09-12 18:54:12 -07:00
Erick Tryzelaar
e6c11313c8 std: Add Option.{result_or_default,or_default} that uses Default 2013-09-12 18:54:12 -07:00
Erick Tryzelaar
4a73c8eac7 std: add default implementations to Option 2013-09-12 18:54:12 -07:00
Erick Tryzelaar
653400a7f0 std: add default implementations to HashMap 2013-09-12 18:54:12 -07:00
Erick Tryzelaar
45c62c08f9 std: rename Option::unwrap_or_default() to unwrap_or() 2013-09-12 18:54:11 -07:00
Florian Hahn
2b5f4b55c0 Convert rust_crate_map.cpp to Rust
Conflicts:
	src/libstd/rt/logging.rs
2013-09-13 00:47:30 +02:00
bors
cabba6b4d3 auto merge of #9136 : thestinger/rust/ptr, r=alexcrichton
This is mostly for consistency, as you can now compare raw pointers in
constant expressions or without the standard library.

It also reduces the number of `ptrtoint` instructions in the IR, making
tracking down culprits of what's usually an anti-pattern easier.
2013-09-12 13:10:55 -07:00
bors
a6be8d353b auto merge of #9140 : alexcrichton/rust/issue-9119, r=huonw
Closes #9119
2013-09-12 11:56:00 -07:00
bors
4825db44c8 auto merge of #9012 : alexcrichton/rust/format-args, r=huonw
The purpose of this macro is to further reduce the number of allocations which
occur when dealing with formatting strings. This macro will perform all of the
static analysis necessary to validate that a format string is safe, and then it
will wrap up the "format string" into an opaque struct which can then be passed
around.

Two safe functions are added (write/format) which take this opaque argument
structure, unwrap it, and then call the unsafe version of write/format (in an
unsafe block). Other than these two functions, it is not intended for anyone to
ever look inside this opaque struct.

The macro looks a bit odd, but mostly because of rvalue lifetimes this is the
only way for it to be safe that I know of.

Example use-cases of this are:

* third-party libraries can use the default formatting syntax without any
  forced allocations
* the fail!() macro can avoid allocating the format string
* the logging macros can avoid allocation any strings

I plan on transitioning the standard logging/failing to using these macros soon. This is currently blocking on inner statics being usable in cross-crate situations (still tracking down bugs there), but this will hopefully be coming soon!

Additionally, I'd rather settle on a name now than later, so if anyone has a better suggestion other than `format_args`, I'm not attached to the name at all :)
2013-09-12 03:21:08 -07:00
bors
68125359cd auto merge of #9138 : alexcrichton/rust/dynamic-lib-not-threadsafe, r=thestinger
The library isn't thread-safe, cc #9137
2013-09-12 01:16:08 -07:00
Alex Crichton
a018a5c343 Parse underscores in identifiers for format!
Closes #9119
2013-09-12 01:07:10 -07:00
Alex Crichton
9a5f95a82c Implement a format_args!() macro
The purpose of this macro is to further reduce the number of allocations which
occur when dealing with formatting strings. This macro will perform all of the
static analysis necessary to validate that a format string is safe, and then it
will wrap up the "format string" into an opaque struct which can then be passed
around.

Two safe functions are added (write/format) which take this opaque argument
structure, unwrap it, and then call the unsafe version of write/format (in an
unsafe block). Other than these two functions, it is not intended for anyone to
ever look inside this opaque struct.

The macro looks a bit odd, but mostly because of rvalue lifetimes this is the
only way for it to be safe that I know of.

Example use-cases of this are:

* third-party libraries can use the default formatting syntax without any
  forced allocations
* the fail!() macro can avoid allocating the format string
* the logging macros can avoid allocation any strings
2013-09-12 00:36:54 -07:00
Alex Crichton
645b83d712 Flag the dynamic_lib tests as ignored
The library isn't thread-safe, cc #9137
2013-09-11 23:22:52 -07:00