Commit Graph

49343 Commits

Author SHA1 Message Date
bors
b62289153c Auto merge of #30553 - luqmana:mir-match-arm-guards, r=nikomatsakis
Fixes #30527.

```Rust

fn main() {
    let _abc = match Some(101i8) {
        Some(xyz) if xyz > 100 => xyz,
        Some(_) => -1,
        None => -2
    };
}
```

Resulting MIR now includes the `Some(xyz)` arm, guard and all:
![match.dot](https://cloud.githubusercontent.com/assets/287063/11999413/066f7610-aa8b-11e5-927b-24215af57fc4.png)

~~Not quite sure how to write a test for this.~~ Thinking too hard, just tested the end result.

r? @nikomatsakis
2016-01-04 16:54:11 +00:00
Andrea Canciani
aa77f39ccf Improve the range comparison
As mentioned in #29734, the range comparison closure can be improved.

The LLVM IR and the assembly from the new version are much simpler and
unfortunately we cannot rely on the compiler to optimise this much, as
it would need to know that `lo <= hi`.

Besides from simpler code, there might also be a performance
advantage, although it is unlikely to appear on benchmarks, as we are
doing a binary search, which should always involve few comparisons.

The code is available on the playpen for ease of comparison:
http://is.gd/4raMmH
2016-01-04 17:51:12 +01:00
Andrea Canciani
cf3fcf7758 Reuse standard methods
Do not hand-code `Result::ok` or `cmp` in tables.rs.
2016-01-04 17:51:12 +01:00
Andrea Canciani
b081436ca4 Improve formatting of tables.rs
Make unicode.py generate a tables.rs which is more conformant to usual
Rust formatting (as per `rustfmt`).
2016-01-04 17:51:05 +01:00
Andrea Canciani
eab351ef3e Cleanup unicode.py
The methods related to char width are dead code since
464cdff102993ff1900eebbf65209e0a3c0be0d5; remove them.
2016-01-04 17:31:41 +01:00
bors
543bb03d3e Auto merge of #30690 - LawrenceWoodman:patch-2, r=steveklabnik
`fs::File` was being referenced without either calling via `std::fs::File` or by using `File` after having used `std::fs::File`.  Also `Path` was being referenced without first having used `std::path::Path`.
2016-01-04 14:09:15 +00:00
Niko Matsakis
15d32ffbb2 Feature-gate defaulted type parameters outside of types. 2016-01-04 05:18:56 -05:00
Lawrence Woodman
0c3d6b46ac Add missing use statements
fs::File was being referenced without either calling via std::fs::File or by using File after having used fs::File.  Also Path was being referenced without first having used std::path::Path.
2016-01-04 07:21:48 +00:00
bors
191ff2d8fd Auto merge of #30651 - nagisa:mir-fix-equality-checks, r=eddyb
This is not a fix to checks themselves per se (though we still use `Eq` MIR test instead of calling `PartialEq::eq`), but rather how we handle items we encounter in pattern position.

Previously we would just call `PartialEq` with the constant and the matchee, but now we essentially inline the constant instead. E.g. these two snippets are functionally equivalent at MIR level:

```
match val { Some(42) => true, _ => false }
```
and
```
const SECRET: Option<u8> = Some(42);
match val { SECRET => true, _ => false }
```

This approach also allows for more optimizations of matches. I.e. It can now exploit `SwitchInt` to switch on number inside a `Some` regardless of whether the value being an item or not.

This is based on @tsion’s already approved PR so I could reuse the file for more tests.

r? @eddyb
cc @nikomatsakis @tsion
2016-01-04 03:07:59 +00:00
Michael McConville
810c035450 Undo whitespace tweaks pending libbacktrace merge
These should probably be submitted upstream. They're inevitably going to
complicate merges, and because they're non-functional changes this just
isn't worth our time.
2016-01-03 20:53:31 -05:00
bors
99e59dec5a Auto merge of #29732 - nathansizemore:master, r=steveklabnik 2016-01-04 00:27:40 +00:00
Guillaume Gomez
6e68cdfcc2 Add test for "malformed macro lhs" and change back span_bug to span_fatal 2016-01-04 01:13:57 +01:00
bors
8f11a9ef4e Auto merge of #30677 - diwic:master, r=bluss
Obviously we can't remove the character one past the end of the String. And we can't today either - we'll just panic at char_at() instead - but if we're going to keep that assertion, we should at least have a correct assertion.
2016-01-03 21:00:46 +00:00
bors
cae9267d47 Auto merge of #29949 - fhahn:issue-21659-show-relevant-trait-impls, r=arielb1
This PR for #21659 uses `DefId.for_each_relevant_impl()` to show other possible implementations in the "trait not implemented" message.
2016-01-03 19:14:20 +00:00
Tshepang Lekhonkhobe
4a1062873e fix "make tidy" failure 2016-01-03 11:20:06 +02:00
Tshepang Lekhonkhobe
f20a139981 run rustfmt on syntax::parse::lexer 2016-01-03 11:14:09 +02:00
Lawrence Woodman
e5a846e90e Correct formatting use of tab instead of spaces 2016-01-03 08:15:24 +00:00
Wesley Wiser
4dee31c119 Rustdoc - Specify max-image size
Fixes #24861
2016-01-02 21:38:36 -05:00
Nicholas Mazzuca
402259da38 Take out Op<T>/OpAssign<T> for Wrapping<T> 2016-01-02 15:34:55 -08:00
Florian Hahn
a8d60708ec Refactor candidate selection 2016-01-03 00:11:48 +01:00
Nicholas Mazzuca
cd3aa31e6d Finish test implementation 2016-01-02 14:36:28 -08:00
diwic
8b398ed823 Fix off-by-one in String::remove
Obviously we can't remove the character one past the end of the String. And we can't today either - we'll just panic at char_at() instead - but if we're going to keep that assertion, we should at least have a correct assertion.
2016-01-02 22:36:50 +01:00
Florian Hahn
25e4389866 Use for_each_impl 2016-01-02 19:47:41 +01:00
Florian Hahn
ba24fbd404 Manually check trait implementations 2016-01-02 19:47:02 +01:00
Florian Hahn
6093ea8039 Add more tests 2016-01-02 19:46:31 +01:00
Florian Hahn
2c52cb424a Limit displaying relevant trait impls to 4 2016-01-02 19:46:31 +01:00
bors
4744472fe0 Auto merge of #30264 - GuillaumeGomez:patch-5, r=Manishearth
r? @Manishearth

Also: should I merged both commits? Not sure if it's really useful to keep the first one.
2016-01-02 16:56:15 +00:00
bors
44f020883e Auto merge of #30675 - jimmantooth:master, r=apasel422 2016-01-02 13:58:57 +00:00
Scott Olson
56343cd653 Add 'mut' to temporary vars in MIR graphviz output. 2016-01-02 07:12:35 -06:00
James Mantooth
877d55c1e0 Grammar fixes 2016-01-02 01:26:22 -06:00
Nathan
3e9d5fea48 Adjusted heading and created dedicated section in std::io docs 2016-01-02 00:27:16 -05:00
Nathan
66e842b6de Links and punctionaction fixes. 2016-01-02 00:25:42 -05:00
Nathan
7f36a18df8 Added platform notes to std::fs public functions. 2016-01-02 00:25:42 -05:00
Guillaume Gomez
55955f5a45 Add E0463 error explanation 2016-01-02 02:39:45 +01:00
bors
d4b67cd7cc Auto merge of #30672 - nagisa:to-degrad-stab, r=sfackler
f64 methods have been stable since rust 1.0, but f32 never got stabilised.

I suggest backporting this to beta as well (needs changing stablilisation version then).

r? @aturon

Fixes https://github.com/rust-lang/rfcs/issues/1438
2016-01-01 22:42:04 +00:00
Simonas Kazlauskas
c921abf9c0 Stabilise f32::to_{degrees,radians} to match f64
f64 methods have been stable since rust 1.0, but f32 never got stabilised.
2016-01-02 00:07:16 +02:00
Florian Hahn
335298e7b6 Show similar trait implementations if no matching impl is found
closes #21659
2016-01-01 17:50:43 +01:00
bors
5446139387 Auto merge of #30670 - emoon:fs-copy-comment, r=steveklabnik
When looking in the documentation I often scan the examples the first thing I do. In these 3 cases it's not obvious which direction the operation happens by adding this comment it makes it more obvious.

r? @steveklabnik
2016-01-01 16:38:40 +00:00
bors
88e819f478 Auto merge of #30663 - apasel422:ll, r=bluss
CC #30642

r? @Gankro
2016-01-01 13:51:38 +00:00
Simonas Kazlauskas
add7410af6 Fix equality checks in matches 2016-01-01 14:55:57 +02:00
Nicholas Mazzuca
f96243295a In the middle of the implementation 2016-01-01 04:28:26 -08:00
Daniel Collin
9a7e2329f2 Added comment in which direction operation happens 2016-01-01 10:09:24 +01:00
bors
bfb4212ee2 Auto merge of #30648 - tshepang:missing-graves, r=steveklabnik 2016-01-01 00:38:43 +00:00
Zach Panzarino
d5c8f626a8 Update copyright date 2016-01-01 00:32:31 +00:00
bors
9c53c9234b Auto merge of #30645 - tshepang:grammar, r=steveklabnik 2015-12-31 22:44:02 +00:00
Wesley Wiser
8c897ee0ab Avoid adding drops for types w/ no dtor in MIR construction
Fixes #28159
2015-12-31 17:05:08 -05:00
bors
b9075d6f53 Auto merge of #30616 - arcnmx:cstr-asref, r=aturon
Are trait impls still insta-stable? Considering that this design has been around for a long time on `String` and `OsString` it probably doesn't matter much...

The `From` impl is a bit strange to me. It's stolen from `OsString` but I'm not really sure about it... `String` just impls `From<&str>` instead, would that make more sense?
2015-12-31 20:52:17 +00:00
Andrew Paseltiner
c9fd3d4f91 Make LinkedList and its read-only iterators covariant
CC #30642
2015-12-31 15:22:22 -05:00
arcnmx
53878e7546 CStr impl stability 2015-12-31 14:21:40 -05:00
arcnmx
965556d162 impl From<&CStr> for CString 2015-12-31 14:15:27 -05:00