Commit Graph

32694 Commits

Author SHA1 Message Date
Kasey Carrothers
3e8ad53939 Cleanup the check_null function. 2014-09-23 12:54:16 -07:00
bors
321785927c auto merge of #17413 : jakub-/rust/issue-17385, r=pcwalton
This is to make sure it hadn't been moved if there are no bindings
in any of the arms.

Fixes #17385.
2014-09-23 17:05:39 +00:00
Valerii Hiora
cef86613db Fixed: iOS build was broken because of deprecated APIs 2014-09-23 18:04:50 +03:00
bors
d80cd3d9bc auto merge of #17028 : pcwalton/rust/higher-rank-trait-lifetimes, r=pnkfelix
They will ICE during typechecking if used, because they depend on trait
reform.

This is part of unboxed closures.

r? @nikomatsakis
2014-09-23 14:30:40 +00:00
bors
2f9669c748 auto merge of #17456 : alfie/rust/master, r=steveklabnik
While reading the intro, I was confused as to why there were two variables named "numbers". Unless I'm mistaken and it's not necessary, let's get rid of it to make it clearer.
2014-09-23 12:45:45 +00:00
bors
0a4c136d6a auto merge of #17446 : steveklabnik/rust/gh17445, r=alexcrichton
Fixes #17445.
2014-09-23 09:00:40 +00:00
Kasey Carrothers
80014b2856 Check for null bytes before calling with_c_str on link_section and export_name value strings. 2014-09-23 00:54:10 -07:00
bors
f351e676cb auto merge of #17443 : alexcrichton/rust/issue-17442, r=brson
...des a full path via -Clinker=..."

This reverts commit 94f05324fe.
2014-09-23 07:15:40 +00:00
bors
3941d3c394 auto merge of #17401 : pcwalton/rust/private-items-in-public-apis, r=alexcrichton
This breaks code like:

    struct Foo {
        ...
    }

    pub fn make_foo() -> Foo {
        ...
    }

Change this code to:

    pub struct Foo {    // note `pub`
        ...
    }

    pub fn make_foo() -> Foo {
        ...
    }

The `visible_private_types` lint has been removed, since it is now an
error to attempt to expose a private type in a public API.

Closes #16463.

RFC #48.

[breaking-change]

r? @alexcrichton
2014-09-23 04:15:37 +00:00
Patrick Walton
5376b1c798 librustc: Parse and resolve higher-rank lifetimes in traits.
They will ICE during typechecking if used, because they depend on trait
reform.

This is part of unboxed closures.
2014-09-22 21:14:58 -07:00
Patrick Walton
e9ad12c0ca librustc: Forbid private types in public APIs.
This breaks code like:

    struct Foo {
        ...
    }

    pub fn make_foo() -> Foo {
        ...
    }

Change this code to:

    pub struct Foo {    // note `pub`
        ...
    }

    pub fn make_foo() -> Foo {
        ...
    }

The `visible_private_types` lint has been removed, since it is now an
error to attempt to expose a private type in a public API. In its place
a `#[feature(visible_private_types)]` gate has been added.

Closes #16463.

RFC #48.

[breaking-change]
2014-09-22 20:05:45 -07:00
bors
3f299ff19d auto merge of #17432 : nick29581/rust/contrib, r=brson
r? @brson
2014-09-23 02:30:36 +00:00
O S K Chaitanya
2443dd0dcc collapse setting and exporting RUST_BENCH into one line 2014-09-23 03:12:37 +02:00
O S K Chaitanya
23ba9072e1 Use locale 'C' for running tests. Closes #17423 2014-09-23 03:07:39 +02:00
bors
43fd619819 auto merge of #17286 : vberger/rust/deprecated_in_macros, r=aturon
Closes #17185.

The stability lint will now check code generated by macro expansion. It will allow to detect :
- arguments passed to macros using deprecated (and others) items
- macro expansion generating code using deprecated items due to its arguments (hence the second commit, fixing such issue found in libcollections)

Checking is still done at expansion, but it will also detect a macro explicitly using a deprecated item in its definition.
2014-09-22 23:50:30 +00:00
Vadim Chugunov
a46865981e Link libgcc statically on Win64.
Allow linking it statically on Win32 with an override.
2014-09-22 16:33:18 -07:00
Damien Radtke
59e750f198 Add cargo.vim compiler file. 2014-09-22 17:24:26 -05:00
bors
4b5f4563bf auto merge of #17408 : bkoropoff/rust/bot-ice, r=alexcrichton
- Don't attempt to autoderef `!`.  The `Deref`/`DerefMut` trait lookup would generate a bunch of unhelpful error spew.
- Don't allow explicit deref of `!`, since later passes just ICE.  This closes issue #17373 
- Don't allow explicit index of `!`, since later passes just ICE.  There does not seem to be an issue associated with this
2014-09-22 22:05:33 +00:00
Steve Klabnik
c765178bf6 clean up some references to 'owned' 2014-09-22 17:54:10 -04:00
Steve Klabnik
64813d33d8 vectors are not in the language 2014-09-22 17:54:10 -04:00
Steve Klabnik
c94d479a90 die 'managed' 2014-09-22 17:54:10 -04:00
Steve Klabnik
84bd6bba45 logging is an external crate 2014-09-22 17:54:10 -04:00
Steve Klabnik
68b8901fff no it won't 2014-09-22 17:54:10 -04:00
Steve Klabnik
7866f515a5 runtime has no C++ 2014-09-22 17:54:10 -04:00
Steve Klabnik
667276040f Remove lies about task scheduling
it's 1:1 by default now, and N:M is on its way out
2014-09-22 17:54:10 -04:00
Steve Klabnik
fdd511d124 Fix terminology around boxes
it's just 'box' not 'owned box'
2014-09-22 17:54:10 -04:00
Steve Klabnik
72c27aba9c fix example 2014-09-22 17:54:10 -04:00
Steve Klabnik
f95958b526 glob imports are an external crate 2014-09-22 17:54:10 -04:00
Steve Klabnik
6c348dfe72 rust -> Rust 2014-09-22 17:54:09 -04:00
Steve Klabnik
19e814ed98 uhhh weird triple backticks 2014-09-22 17:54:09 -04:00
Steve Klabnik
96180d7e6b 'merican English 2014-09-22 17:54:09 -04:00
Steve Klabnik
64a77b1ff5 move keywords to table 2014-09-22 17:54:09 -04:00
Steve Klabnik
68227d01f9 '. ' -> '. ' 2014-09-22 17:54:09 -04:00
Steve Klabnik
bfb5fb3b45 Remove disclaimer
This is just true of all of Rust, and doesn't make a lot of sense now.
Especially as we move towards finalizing things, I think it's time for
this to go.
2014-09-22 17:54:09 -04:00
Steve Klabnik
eaa7b8eb4c make note of language vs libraries 2014-09-22 17:54:09 -04:00
Steve Klabnik
1f2b5061d3 modernize code blocks 2014-09-22 17:54:09 -04:00
Steve Klabnik
47682f96de manual -> reference & formatting
'reference' sounds better than 'manual' to me here, and rust.html is
certainly wrong.

I also wrapped everything to 80 cols.
2014-09-22 17:54:09 -04:00
Alfie John
9d95729af4 doc: Removing repeated variable name to make it less ambiguious 2014-09-22 20:48:10 +00:00
Matt Coffin
bcc4ee0dbc Copy GYP environment variables on iOS 2014-09-22 12:40:08 -06:00
Matt Coffin
650683f926 Ensure that compiler environment is passed to gyp
this only affects libuv
2014-09-22 12:34:00 -06:00
bors
437179ed8b auto merge of #17440 : alexcrichton/rust/fix-snapshot, r=brson
The test in question does not pass when cross compiling because the syntax
extension must always be compiled for the host, not the target.
2014-09-22 18:25:26 +00:00
Steve Klabnik
bd322f4c1f remove references to owned and managed pointers in clone docs
Fixes #17445.
2014-09-22 13:51:21 -04:00
Victor Berger
d845857fd9 Fix deprecation warnings in check-docs.
Fallout of closing #17185.
2014-09-22 19:31:31 +02:00
Victor Berger
52ea83dddc Update calls of deprecated functions in macros.
Fallout of #17185.
2014-09-22 19:30:06 +02:00
Victor Berger
eb58ac126e Lint stability now checks macro arguments.
Closes #17185.
2014-09-22 19:28:07 +02:00
Alex Crichton
92cc12b01c Revert "Prefer bundled gcc. External gcc can still be used if one provides a full path via -Clinker=..."
This reverts commit 94f05324fe.
2014-09-22 10:14:05 -07:00
Alex Crichton
c111db166f Fix snapshot builders
The test in question does not pass when cross compiling because the syntax
extension must always be compiled for the host, not the target.
2014-09-22 09:09:15 -07:00
Alex Crichton
31be3319bf collections: Deprecate shift_char for insert/remove
This commit deprecates the String::shift_char() function in favor of the
addition of an insert()/remove() pair of functions. This aligns the API with Vec
in that characters can be inserted at arbitrary positions.  Additionaly, there
is no `_char` suffix due to the rationaled laid out in the previous commit.

These functions are both introduced as unstable as their failure semantics,
while in line with slices/vectors, are uncertain about whether they should
remain the same.
2014-09-22 08:24:14 -07:00
Alex Crichton
79b4ce06ae collections: Stabilize String
# Rationale

When dealing with strings, many functions deal with either a `char` (unicode
codepoint) or a byte (utf-8 encoding related). There is often an inconsistent
way in which methods are referred to as to whether they contain "byte", "char",
or nothing in their name.  There are also issues open to rename *all* methods to
reflect that they operate on utf8 encodings or bytes (e.g. utf8_len() or
byte_len()).

The current state of String seems to largely be what is desired, so this PR
proposes the following rationale for methods dealing with bytes or characters:

> When constructing a string, the input encoding *must* be mentioned (e.g.
> from_utf8). This makes it clear what exactly the input type is expected to be
> in terms of encoding.
>
> When a method operates on anything related to an *index* within the string
> such as length, capacity, position, etc, the method *implicitly* operates on
> bytes. It is an understood fact that String is a utf-8 encoded string, and
> burdening all methods with "bytes" would be redundant.
>
> When a method operates on the *contents* of a string, such as push() or pop(),
> then "char" is the default type. A String can loosely be thought of as being a
> collection of unicode codepoints, but not all collection-related operations
> make sense because some can be woefully inefficient.

# Method stabilization

The following methods have been marked #[stable]

* The String type itself
* String::new
* String::with_capacity
* String::from_utf16_lossy
* String::into_bytes
* String::as_bytes
* String::len
* String::clear
* String::as_slice

The following methods have been marked #[unstable]

* String::from_utf8 - The error type in the returned `Result` may change to
                      provide a nicer message when it's `unwrap()`'d
* String::from_utf8_lossy - The returned `MaybeOwned` type still needs
                            stabilization
* String::from_utf16 - The return type may change to become a `Result` which
                       includes more contextual information like where the error
                       occurred.
* String::from_chars - This is equivalent to iter().collect(), but currently not
                       as ergonomic.
* String::from_char - This method is the equivalent of Vec::from_elem, and has
                      been marked #[unstable] becuase it can be seen as a
                      duplicate of iterator-based functionality as well as
                      possibly being renamed.
* String::push_str - This *can* be emulated with .extend(foo.chars()), but is
                     less efficient because of decoding/encoding. Due to the
                     desire to minimize API surface this may be able to be
                     removed in the future for something possibly generic with
                     no loss in performance.
* String::grow - This is a duplicate of iterator-based functionality, which may
                 become more ergonomic in the future.
* String::capacity - This function was just added.
* String::push - This function was just added.
* String::pop - This function was just added.
* String::truncate - The failure conventions around String methods and byte
                     indices isn't totally clear at this time, so the failure
                     semantics and return value of this method are subject to
                     change.
* String::as_mut_vec - the naming of this method may change.
* string::raw::* - these functions are all waiting on [an RFC][2]

[2]: https://github.com/rust-lang/rfcs/pull/240

The following method have been marked #[experimental]

* String::from_str - This function only exists as it's more efficient than
                     to_string(), but having a less ergonomic function for
                     performance reasons isn't the greatest reason to keep it
                     around. Like Vec::push_all, this has been marked
                     experimental for now.

The following methods have been #[deprecated]

* String::append - This method has been deprecated to remain consistent with the
                   deprecation of Vec::append. While convenient, it is one of
                   the only functional-style apis on String, and requires more
                   though as to whether it belongs as a first-class method or
                   now (and how it relates to other collections).
* String::from_byte - This is fairly rare functionality and can be emulated with
                      str::from_utf8 plus an assert plus a call to to_string().
                      Additionally, String::from_char could possibly be used.
* String::byte_capacity - Renamed to String::capacity due to the rationale
                          above.
* String::push_char - Renamed to String::push due to the rationale above.
* String::pop_char - Renamed to String::pop due to the rationale above.
* String::push_bytes - There are a number of `unsafe` functions on the `String`
                       type which allow bypassing utf-8 checks. These have all
                       been deprecated in favor of calling `.as_mut_vec()` and
                       then operating directly on the vector returned. These
                       methods were deprecated because naming them with relation
                       to other methods was difficult to rationalize and it's
                       arguably more composable to call .as_mut_vec().
* String::as_mut_bytes - See push_bytes
* String::push_byte - See push_bytes
* String::pop_byte - See push_bytes
* String::shift_byte - See push_bytes

# Reservation methods

This commit does not yet touch the methods for reserving bytes. The methods on
Vec have also not yet been modified. These methods are discussed in the upcoming
[Collections reform RFC][1]

[1]: https://github.com/aturon/rfcs/blob/collections-conventions/active/0000-collections-conventions.md#implicit-growth
2014-09-22 07:46:40 -07:00
bors
3907a13f69 auto merge of #17425 : klutzy/rust/win-backtrace, r=alexcrichton
Fixes #17372
2014-09-22 10:55:26 +00:00