Commit Graph

47944 Commits

Author SHA1 Message Date
Niko Matsakis
0471b3247d Reorganize match construction to be O(n) instead of O(n^2). Whereas
before we iterated over the test and each outcome thereof, and then
checked processed every candidate against this outcome, we now organize
the walk differently. Instead, we visit each candidate and say "Here is
the test being performed. Figure out the resulting candidates for each
possible outcome and add yourself into the appropriate places."
2015-11-10 22:18:06 -05:00
Niko Matsakis
61884e5543 Clone the candidates and match-pairs lazilly, instead of eagerly. 2015-11-10 22:18:06 -05:00
Niko Matsakis
87358728a4 Remove the mirroring for patterns and just convert them eagerly; then,
pass around references instead of boxed values to save on clone costs.
2015-11-10 22:18:06 -05:00
bors
ad3bd1b46d Auto merge of #29726 - petrochenkov:privsan, r=alexcrichton
- Check privacy sanity in all blocks, not only function bodies
- Check all fields, not only named
- Check all impl items, not only methods
- Check default impls
- Move the sanity check in the beginning of privacy checking, so others could rely on it

Technically it's a [breaking-change], but I expect no breakage because, well, it's *sane* privacy visitor, if code is broken it must be insane by definition!
2015-11-11 00:25:08 +00:00
bors
5f64201ee4 Auto merge of #29725 - aturon:lang-features, r=huonw
This commit adds issue numbers to the vast majority of active feature
gates. The few that are left without issues are rustc/runtime-internal
features that are essentially private APIs.

Closes #28244

r? @huonw
2015-11-10 22:41:49 +00:00
bors
3519effc6e Auto merge of #29724 - alexcrichton:ip-endian, r=aturon
The comparison of IP addresses should happen not always in network endianness
but rather in the host endianness format, so be sure to convert to that before
comparing addresses.

There are still locations where the endianness will factor into visible
properties, such as the hash, but these are not important to be independent of
the endianness in play (as hash values are pretty undefined anyway.

Closes #29691
2015-11-10 20:58:51 +00:00
bors
d668fab0ef Auto merge of #29714 - petrochenkov:strparse, r=nrc
In particular, attributes are now parsed on fields of tuple variants
2015-11-10 19:15:08 +00:00
bors
ea422eb4de Auto merge of #29749 - steveklabnik:rollup, r=steveklabnik
- Successful merges: #29420, #29688, #29708, #29715, #29729, #29731
- Failed merges: #29544
2015-11-10 17:30:50 +00:00
Steve Klabnik
4b0503f10f Rollup merge of #29731 - steveklabnik:smallfix, r=alexcrichton
* wrap to 80 cols
* small grammar fix, missing 'the'
2015-11-10 10:51:48 -05:00
Steve Klabnik
af1cb3090d Rollup merge of #29729 - brson:readme2, r=steveklabnik
r? @steveklabnik

This completely abdicates any responsibility to explain what Rust is, instead linking to the website.

My main motivation is that I am still not happy with it, and every time I try to fix it I just write a slightly longer sales pitch than what's on the website.

One thing this paragraph could do is direct people to more information about what is in the repo, or more technical information about the implementation.
2015-11-10 10:51:48 -05:00
Steve Klabnik
d64195f365 Rollup merge of #29715 - defuz:patch-3, r=alexcrichton
r? @steveklabnik

See #27305
2015-11-10 10:51:48 -05:00
Steve Klabnik
a39daf95f3 Rollup merge of #29708 - Ryman:pathdoc, r=steveklabnik
r? @steveklabnik
2015-11-10 10:51:48 -05:00
Steve Klabnik
0d04a51517 Rollup merge of #29688 - stepancheg:vec-outdated, r=nikomatsakis
Since commit 46068c9da, call to `reserve()` on empty vec allocates
exactly requested capacity, so unroll of first iteration may help only
with branch prediction.
2015-11-10 10:51:47 -05:00
Steve Klabnik
fb2ae896bb Rollup merge of #29420 - efindlay:master, r=steveklabnik
r? @steveklabnik
2015-11-10 10:51:47 -05:00
bors
05b66b8a1c Auto merge of #29705 - Ryman:mismatched_typaram_counts, r=alexcrichton
…type-params for methods
2015-11-10 15:48:00 +00:00
bors
e9aa32ac72 Auto merge of #29697 - dotdash:mir_trans_switchint, r=nikomatsakis 2015-11-10 13:17:15 +00:00
bors
4afa9d9003 Auto merge of #29699 - tamird:valgrind-supp, r=alexcrichton
Quite a bit of cruft in the valgrind suppressions. I started from a clean slate and found a few unique failures; this commit also moves the tests "fixed" by these suppressions into run-pass-valgrind.
2015-11-10 11:34:13 +00:00
Vadim Petrochenkov
41ccd44f76 Use exhaustive matching 2015-11-10 12:51:56 +03:00
bors
4b23a0962d Auto merge of #29647 - goyox86:goyox86/rustfmting-librustc_frontII, r=nrc
Hi Rustaceans!

This is the second take  on running latest rustfmt on librustc_front!

This is the same in https://github.com/rust-lang/rust/pull/29075 but cleaned. All fixups have been applied.

//cc @nrc
2015-11-10 08:38:52 +00:00
bors
6aee7c5d2c Auto merge of #29546 - alexcrichton:new-libc, r=brson
This commit replaces the in-tree liblibc with the [external clone](https://github.com/rust-lang-nursery/libc) which has no evolved beyond the in-tree version in light of its [recent redesign](https://github.com/rust-lang/rfcs/pull/1291).

The primary changes here are:

* `src/liblibc/lib.rs` was deleted
* `src/liblibc` is now a submodule pointing at the external repository
* `src/libstd/sys/unix/{c.rs,sync.rs}` were both deleted having all bindings folded into the external liblibc.
* Many ad-hoc `extern` blocks in the standard library were removed in favor of bindings now being in the external liblibc.
* Many functions/types were added to `src/libstd/sys/windows/c.rs`, and the scattered definitions throughout the standard library were consolidated here.

At the API level this commit is **not a breaking change**, although it is only very lightly tested on the *BSD variants and is probably going to break almost all of their builds! Follow-up commits to liblibc should in theory be all that's necessary to get the build working on the *BSDs again.
2015-11-10 06:56:30 +00:00
Alex Crichton
3d28b8b98e std: Migrate to the new libc
* Delete `sys::unix::{c, sync}` as these are now all folded into libc itself
* Update all references to use `libc` as a result.
* Update all references to the new flat namespace.
* Moves all windows bindings into sys::c
2015-11-09 22:55:50 -08:00
Alex Crichton
c8a29c2092 libc: Replace liblibc with crates.io libc 2015-11-09 17:36:13 -08:00
Steve Klabnik
abb9c9008f Some cleanup on after #29684
* wrap to 80 cols
* small grammar fix, missing 'the'
2015-11-10 01:39:23 +01:00
Jose Narvaez
cbd2ef8185 Rustfmting librustc_front (again). 2015-11-09 21:55:51 +00:00
Brian Anderson
7793829877 Redo the README intro again 2015-11-09 13:32:30 -08:00
Vadim Petrochenkov
649fc3895c Use enum ParsePub instead of bool in field parsing + typo 2015-11-09 22:34:15 +03:00
Vadim Petrochenkov
2a01e263bc Improve error message 2015-11-09 22:16:30 +03:00
Vadim Petrochenkov
ef6850643e rustc_privacy: Fix bugs in SanePrivacyVisitor 2015-11-09 21:15:53 +03:00
Alex Crichton
f16e7b4a41 std: Fix endianness in Ord for IP addresses
The comparison of IP addresses should happen not always in network endianness
but rather in the host endianness format, so be sure to convert to that before
comparing addresses.

There are still locations where the endianness will factor into visible
properties, such as the hash, but these are not important to be independent of
the endianness in play (as hash values are pretty undefined anyway.

Closes #29691
2015-11-09 09:11:16 -08:00
Aaron Turon
dacab06b4a Tag feature gates with issues
This commit adds issue numbers to the vast majority of active feature
gates. The few that are left without issues are rustc/runtime-internal
features that are essentially private APIs.

Closes #28244
2015-11-09 09:09:25 -08:00
Björn Steinbrink
b0d7338d6d [MIR trans] Add support for SwitchInt 2015-11-09 16:54:58 +01:00
Ivan Ivaschenko
c618c5f36a Doc: Fix broken link on for-loop.html 2015-11-09 17:49:30 +02:00
Vadim Petrochenkov
e6b14aab05 syntax: Merge parsing code for structures and variants 2015-11-09 18:43:32 +03:00
bors
2968dfa285 Auto merge of #29713 - apasel422:executable, r=dotdash 2015-11-09 15:04:24 +00:00
Andrew Paseltiner
269b59fe69 Remove executable permission from .rs files 2015-11-09 09:28:51 -05:00
bors
00aa3cbecc Auto merge of #29695 - dtrebbien:remove-mention-of-struct_variant-feature, r=sanxiyn
The struct_variant feature was accepted and is no longer feature gated.
See #19122, #19124

§6.1.6 Enumerations shows an example of a struct-like enum variant.
2015-11-09 11:14:26 +00:00
bors
36f211b353 Auto merge of #29682 - Ryman:dead_spam, r=sanxiyn
This standardises the current behavior to match `enum` variants, hopefully leading to less warning spam for users!

For example the code below will have 2 warnings (for `Foo` and `Bar`) rather than 7:
```rust
enum Foo {
    A,
    B { a: String, b: isize },
    C
}

struct Bar {
    a: i32,
    b: String,
    c: ()
}

fn main() {
    println!("Hi")
}
```
http://is.gd/zAztKW
2015-11-09 08:28:35 +00:00
Kevin Butler
621e259b78 libstd: add example for PathBuf::push 2015-11-09 03:42:22 +00:00
Kevin Butler
8bad031190 librustc_typeck: give more information when supplied wrong number of type-params for methods 2015-11-09 01:01:51 +00:00
bors
5b4986fa57 Auto merge of #29684 - stepancheg:size-hint, r=Gankro
* `size_hint()` cannot be relied upon to perform memory unsafe operations

Same applies to `len()` function of `ExactSizeIterator` trait.
2015-11-08 22:01:44 +00:00
bors
9eb099daa4 Auto merge of #29686 - jrburke:docs-error-handling-search-case, r=BurntSushi
In src/doc/trpl/error-handling.md, in this section:

It mentions three steps, to "convert this to proper error handling", the last one being:

3. Handle the error in main.

However, it is not shown. This pull request adds a code example showing how `main`'s call to `search` should use case analysis. I am still very much new to learning Rust, so this may not be idiomatic. Happy to make changes with guidance.
2015-11-08 20:20:16 +00:00
bors
e543815c85 Auto merge of #29690 - tbu-:pr_doc_env_home_dir, r=Manishearth 2015-11-08 18:37:18 +00:00
Tamir Duberstein
269a811192 valgrind: update suppressions and move interesting tests 2015-11-08 13:36:36 -05:00
Tamir Duberstein
c21ffc27b1 print the unexpected character 2015-11-08 13:36:36 -05:00
Stepan Koltsov
f6f99ce7a3 Explain that size_hint cannot be trusted
Same applies to `len()` function of `ExactSizeIterator` trait.
2015-11-08 21:27:12 +03:00
jrburke
0dd2c1c07d doc: error-handling.md: main case analysis for search 2015-11-08 09:53:21 -08:00
Daniel Trebbien
9f7afd060b reference: Remove struct_variant from Compiler Features
The struct_variant feature was accepted and is no longer feature gated.
See #19122, #19124

§6.1.6 Enumerations shows an example of a struct-like enum variant.
2015-11-08 11:27:40 -05:00
bors
f5633df913 Auto merge of #29692 - jwworth:pull-request/fix-typo, r=apasel422
Fixes the double word 'be'.
2015-11-08 15:56:03 +00:00
Jake Worth
8a41d1292f Fix double word 'be' 2015-11-08 09:39:01 -06:00
Tobias Bucher
e5100a5802 Spell out the fallback of std::env::home_dir on POSIX 2015-11-08 15:34:16 +00:00