Commit graph

721 commits

Author SHA1 Message Date
Alex Crichton
ab5935c88d std: Convert statics to constants
This commit repurposes most statics as constants in the standard library itself,
with the exception of TLS keys which precisely have their own memory location as
an implementation detail.

This commit also rewrites the bitflags syntax to use `const` instead of
`static`. All invocations will need to replace the word `static` with `const`
when declaring flags.

Due to the modification of the `bitflags!` syntax, this is a:

[breaking-change]
2014-10-09 09:44:51 -07:00
John Gallagher
7091fe3972 Remove use of final and override (now reserved) 2014-10-07 22:18:12 -04:00
Nick Cameron
cd21e4a72c Rename slice::Slice 2014-10-07 15:49:53 +13:00
Nick Cameron
2d3823441f Put slicing syntax behind a feature gate.
[breaking-change]

If you are using slicing syntax you will need to add #![feature(slicing_syntax)] to your crate.
2014-10-07 15:49:53 +13:00
Nick Cameron
59976942ea Use slice syntax instead of slice_to, etc. 2014-10-07 15:49:53 +13:00
P1start
e3ca987f74 Rename the file permission statics in std::io to be uppercase
For example, this renames `GroupRWX` to `GROUP_RWX`, and deprecates the old
name. Code using these statics should be updated accordingly.
2014-10-06 16:43:34 +13:00
Brian Koropoff
e364584071 Fix infinite recursion in Writer impl for &mut Writer
Closes issue #17767
2014-10-04 10:24:10 -07:00
Alex Crichton
48cdb55d79 rollup merge of #17739 : eddyb/fix-process-test 2014-10-03 07:39:45 -07:00
Eduard Burtescu
ef693885a7 Fix a race condition between remove_from_env and other io::process tests. 2014-10-03 17:16:05 +03:00
P1start
94bcd3539c Set the non_uppercase_statics lint to warn by default 2014-10-03 20:39:56 +13:00
Alex Crichton
4c8d0334ee rollup merge of #17719 : alexcrichton/diagnose 2014-10-02 14:49:29 -07:00
Alex Crichton
53cdaa58d3 std: Help diagnose a flaky test
This test has recently been failing on the bots, and I'm not entirely sure why.
I haven't been able to reproduce locally or on the bots, so I'm adding some
messages to help diagnose the problem hopefully.
2014-10-02 13:14:14 -07:00
Aaron Turon
d2ea0315e0 Revert "Use slice syntax instead of slice_to, etc."
This reverts commit 40b9f5ded5.
2014-10-02 11:48:07 -07:00
Aaron Turon
7bf56df4c8 Revert "Put slicing syntax behind a feature gate."
This reverts commit 95cfc35607.
2014-10-02 11:47:51 -07:00
Nick Cameron
95cfc35607 Put slicing syntax behind a feature gate.
[breaking-change]

If you are using slicing syntax you will need to add #![feature(slicing_syntax)] to your crate.
2014-10-02 13:23:36 +13:00
Nick Cameron
40b9f5ded5 Use slice syntax instead of slice_to, etc. 2014-10-02 13:19:45 +13:00
Aaron Turon
dad59bdcbc Remove std::io::signal
The `std::io::signal` API was only implemented under `librustuv`, which
is now being removed. Rather than keep around an unimplemented API, this
commit removes it altogether.

See the [runtime removal
RFC](https://github.com/rust-lang/rfcs/pull/230) for more context.

See [green-rs](https://github.com/alexcrichton/green-rs/) for a possible
migration path for signal handling code, although in the long run we
plan to add native signal handling to `std::io`.

[breaking-change]
2014-10-01 12:42:30 -07:00
Aaron Turon
15966c3c1f Remove iotest macro
This commit removes the `iotest!` macro from `std::io`. The macro was
primarily used to ensure that all io-related tests were run on both
libnative and libgreen/librustuv. However, now that the librustuv stack
is being removed, the macro is no longer needed.

See the [runtime removal
RFC](https://github.com/rust-lang/rfcs/pull/230) for more context.

[breaking-change]
2014-10-01 10:34:39 -07:00
bors
49fcb27df6 auto merge of #17667 : wizeman/rust/fix-override-env, r=alexcrichton
In some build environments (such as chrooted Nix builds), `env` can only
be found in the explicitly-provided PATH, not in default places such as
/bin or /usr/bin. So we need to pass-through PATH when spawning the
`env` sub-process.

Fixes #17617
2014-10-01 15:32:30 +00:00
Ricardo M. Correia
5f4c2800fc libstd: Pass-through PATH in test_override_env
In some build environments (such as chrooted Nix builds), `env` can only
be found in the explicitly-provided PATH, not in default places such as
/bin or /usr/bin. So we need to pass-through PATH when spawning the
`env` sub-process.

Fixes #17617
2014-10-01 03:35:35 +02:00
Steven Fackler
d5647a8ea3 Fix libstd 2014-09-30 12:52:00 -07:00
Alex Crichton
5fae40c33a rollup merge of #17548 : cgaebel/master 2014-09-29 08:12:14 -07:00
bors
43d7d7c15e auto merge of #17506 : sfackler/rust/cfg-attr, r=alexcrichton
cc #17490 

Reopening of #16230
2014-09-27 01:37:53 +00:00
Patrick Walton
21df9c805f librustc: Give trait methods accessible via fewer autoderefs priority
over inherent methods accessible via more autoderefs.

This simplifies the trait matching algorithm. It breaks code like:

    impl Foo {
        fn foo(self) {
            // before this change, this will be called
        }
    }

    impl<'a,'b,'c> Trait for &'a &'b &'c Foo {
        fn foo(self) {
            // after this change, this will be called
        }
    }

    fn main() {
        let x = &(&(&Foo));
        x.foo();
    }

To explicitly indicate that you wish to call the inherent method, perform
explicit dereferences. For example:

    fn main() {
        let x = &(&(&Foo));
        (***x).foo();
    }

Part of #17282.

[breaking-change]
2014-09-26 13:02:47 -07:00
Brian Anderson
6f5f2be392 Ignore two I/O tests that are failing on the win32 bot 2014-09-25 20:49:15 -07:00
Clark Gaebel
c2f8db12fd Added bitflag toggling. 2014-09-25 18:08:49 -07:00
Steven Fackler
65cca7c8b1 Deprecate #[ignore(cfg(...))]
Replace `#[ignore(cfg(a, b))]` with `#[cfg_attr(all(a, b), ignore)]`
2014-09-23 23:49:20 -07:00
Alex Crichton
0169218047 Fix fallout from Vec stabilization 2014-09-21 22:15:51 -07:00
Alex Crichton
81d1feb980 Remove #[allow(deprecated)] from libstd 2014-09-21 21:05:05 -07:00
bors
482e7788c7 auto merge of #17249 : vadimcn/rust/env-keys, r=alexcrichton
Closes #16937
2014-09-18 17:05:35 +00:00
Vadim Chugunov
8b84911120 Pacify lint gods. 2014-09-17 23:40:27 -07:00
Alex Crichton
d76f51c264 rollup merge of #17297 : treeman/net-unix 2014-09-17 08:49:33 -07:00
Vadim Chugunov
ffa8b2917c Case-insensitive environment keys. 2014-09-17 00:56:13 -07:00
Aaron Turon
fc525eeb4e Fallout from renaming 2014-09-16 14:37:48 -07:00
Aaron Turon
d8dfe1957b Align with _mut conventions
As per [RFC
52](https://github.com/rust-lang/rfcs/blob/master/active/0052-ownership-variants.md),
use `_mut` suffixes to mark mutable variants, and `into_iter` for moving
iterators.

[breaking-change]
2014-09-16 11:46:52 -07:00
Jonas Hietala
04f4bb4290 Rename std::io::net::unix to std::io::net::pipe.
Renamed as we may support pipes for other platforms.

Closes #12093

[breaking-change]
2014-09-16 11:37:44 +02:00
Patrick Walton
467bea04fa librustc: Forbid inherent implementations that aren't adjacent to the
type they provide an implementation for.

This breaks code like:

    mod foo {
        struct Foo { ... }
    }

    impl foo::Foo {
        ...
    }

Change this code to:

    mod foo {
        struct Foo { ... }

        impl Foo {
            ...
        }
    }

Additionally, if you used the I/O path extension methods `stat`,
`lstat`, `exists`, `is_file`, or `is_dir`, note that these methods have
been moved to the the `std::io::fs::PathExtensions` trait. This breaks
code like:

    fn is_it_there() -> bool {
        Path::new("/foo/bar/baz").exists()
    }

Change this code to:

    use std::io::fs::PathExtensions;

    fn is_it_there() -> bool {
        Path::new("/foo/bar/baz").exists()
    }

Closes #17059.

RFC #155.

[breaking-change]
2014-09-13 02:07:39 -07:00
bors
325808a33d auto merge of #16952 : alexcrichton/rust/windows-large-console-write, r=brson
I've found that 64k is still too much and continue to see the errors as reported
in #14940. I've locally found that 32k fails, and 24k succeeds, so I've trimmed
the size down to 10000 which the included links in the added comment end up
recommending.

It sounds like the limit can still be hit with many threads in play, but I have
yet to reproduce this, so I figure we can wait until that's hit (if it's
possible) and then take action.
2014-09-08 20:51:14 +00:00
Alex Crichton
198030fadf std: Turn down the stdout chunk size
I've found that 64k is still too much and continue to see the errors as reported
in #14940. I've locally found that 32k fails, and 24k succeeds, so I've trimmed
the size down to 8192 which libuv happens to use as well.

It sounds like the limit can still be hit with many threads in play, but I have
yet to reproduce this, so I figure we can wait until that's hit (if it's
possible) and then take action.
2014-09-08 12:54:32 -07:00
Huon Wilson
524e1b20af Register snapshots.
Closes #16880.
2014-09-07 20:42:14 +10:00
bors
20c0ba1279 auto merge of #16907 : SimonSapin/rust/tempdir-result, r=huonw
This allows using `try!()`

[breaking-change]

Fixes #16875
2014-09-06 08:01:33 +00:00
bors
67b97ab6d2 auto merge of #16843 : bkoropoff/rust/reader-writer-box, r=alexcrichton
Cargo needs this to be able to instantiate `TerminfoTerminal<Box<Writer+'a>>` for 'a other than 'static.
2014-09-05 03:31:07 +00:00
bors
e024017f60 auto merge of #16986 : bjz/rust/bitflags, r=alexcrichton
Closes #16469
2014-09-04 20:21:02 +00:00
bors
d3e7922ddd auto merge of #16982 : jbcrail/rust/comment-and-string-corrections, r=alexcrichton
I corrected spelling and capitalization errors in comments and strings.
2014-09-04 18:30:59 +00:00
Brendan Zabarauskas
ef354d850e Use {} for bitflags! definition and invocations
This looks nicer because it reflects Rust's other syntactic structures.
2014-09-05 03:33:00 +10:00
bors
6d8b5c9f7d auto merge of #16976 : treeman/rust/issue-16943, r=kballard
Closes #16943.
2014-09-04 11:11:08 +00:00
Jonas Hietala
38bf999f4a Print file permissions with 4 digits. 2014-09-04 09:01:51 +02:00
Joseph Crail
b7bfe04b2d Fix spelling errors and capitalization. 2014-09-03 23:10:38 -04:00
Jonas Hietala
fca8a1d151 Print file permissions in octal form.
Closes #16943.
2014-09-03 23:59:22 +02:00
Nick Cameron
7f72884f13 Remove cross-borrowing for traits.
Closes #15349

[breaking-change]

Trait objects are no longer implicitly coerced from Box<T> to &T. You must make an explicit coercion using `&*`.
2014-09-03 08:32:35 +12:00