Commit Graph

47114 Commits

Author SHA1 Message Date
bors
e3376d8a13 Auto merge of #28929 - pnkfelix:expand-legal-cycles-test, r=alexcrichton
Major revision to the dropck_legal_cycles test.

1. Added big comment block explaining the test framework.

2. Added tests exericising Rc and Arc. This was inspired by a comment
   from eefriedman on PR #28861.

3. Made the cycle-detection not issue false-positives on acyclic dags.

   Doing this efficiently required revising the framework; instead of
   visiting all children (i.e. doing a traversal), now each test is
   responsible for supplying the path that will act as a witness to
   the cycle.

   Luckily for me, all of the pre-existing tests worked with a trivial
   path built from "always tke your first left", but new tests I added
   did require other input paths (i.e., "first turn right, then left".

   (The path representation is a bit-string and its branches are
    n-ary, not word phrases and binary branches as you might think
    from the outline above.)

cc PR #27185
2015-10-09 17:07:48 +00:00
Felix S. Klock II
098a7a07ee Major revision to the dropck_legal_cycles test.
1. Added big comment block explaining the test framework.

2. Added tests exericising Rc and Arc. This was inspired by a comment
   from eefriedman on PR #28861.

3. Made the cycle-detection not issue false-positives on acyclic dags.

   Doing this efficiently required revising the framework; instead of
   visiting all children (i.e. doing a traversal), now each test is
   responsible for supplying the path that will act as a witness to
   the cycle.

   Luckily for me, all of the pre-existing tests worked with a trivial
   path built from "always tke your first left", but new tests I added
   did require other input paths (i.e., "first turn right, then left".

   (The path representation is a bit-string and its branches are
    n-ary, not word phrases and binary branches as you might think
    from the outline above.)
2015-10-09 18:04:18 +02:00
bors
3034541129 Auto merge of #27897 - sfackler:cursor-box-slice, r=alexcrichton 2015-10-09 13:07:07 +00:00
Steven Fackler
6b244d54e6 Implement Read, BufRead, Write and Seek for Cursor<Box<[u8]>> 2015-10-09 14:06:36 +01:00
bors
c14609035d Auto merge of #28857 - nrc:lowering, r=nikomatsakis
r? @nikomatsakis
2015-10-09 08:53:45 +00:00
Nick Cameron
a62a529eea review comments 2015-10-09 21:44:44 +13:00
bors
7cea9a7141 Auto merge of #28869 - alexcrichton:allocator-dox, r=steveklabnik
This adds a chapter to the nightly section of the book on leveraging and
implementing the `#![allocator]` attribute to write custom allocators as well as
explaining the current situation with allocators.
2015-10-09 06:29:30 +00:00
bors
a03e0ee657 Auto merge of #28817 - dcarral:installing_rust_v130, r=brson
Update "Installing Rust" section @ TRPL so it references the last stable version, v1.3.0.
2015-10-09 04:43:31 +00:00
bors
9f37fbc743 Auto merge of #28919 - huonw:placement-tracking-issue, r=alexcrichton
cc #28244
2015-10-09 02:57:38 +00:00
bors
0f536431f5 Auto merge of #28888 - arielb1:variant-ctor, r=eddyb
this makes the code cleaner, and is a complement to the cleanup on the
HIR side.

r? @eddyb
2015-10-09 01:11:45 +00:00
Huon Wilson
eacf78d8d4 Point placement_in_syntax/box_syntax lang features at tracking issue #27779.
cc #28244.
2015-10-09 10:11:04 +11:00
Nick Cameron
87b0cf4541 rustfmt'ing 2015-10-09 11:53:42 +13:00
Nick Cameron
2b4f28e531 Misc fixups 2015-10-09 11:53:42 +13:00
Nick Cameron
3d81f78544 Add a comment 2015-10-09 11:53:42 +13:00
Nick Cameron
ba43c228b5 Some cleanup of no longer used AST things 2015-10-09 11:53:42 +13:00
Nick Cameron
21205f4f9e Cache ids between lowering runs
So that lowering is reproducible
2015-10-09 11:53:42 +13:00
Nick Cameron
ce80094632 Make save-analysis work for if let etc. 2015-10-09 11:53:42 +13:00
Nick Cameron
08f3752270 hygiene for for loops, if let, while let
and some unrelated test cleanups
2015-10-09 11:53:41 +13:00
Nick Cameron
e0c74868c3 Fix stability 2015-10-09 11:53:41 +13:00
Nick Cameron
bfffa9ecfc Fixes to rustdoc, etc. 2015-10-09 11:53:41 +13:00
Nick Cameron
7f469ba6c5 Move placement in desugaring to lowering 2015-10-09 11:53:41 +13:00
Nick Cameron
bc364b4a0d if let and while let 2015-10-09 11:53:41 +13:00
Nick Cameron
04a7675d22 For loops in save-analysis 2015-10-09 11:53:41 +13:00
Nick Cameron
20083c1e1f Move for loop desugaring to lowering 2015-10-09 11:53:41 +13:00
Nick Cameron
56713a1684 Add a lowering context 2015-10-09 11:53:41 +13:00
bors
d0cae14f66 Auto merge of #28900 - cristicbz:typos, r=alexcrichton
I found these automatically, but fixed them manually to ensure the semantics are correct. I know things like these are hardly important, since they only marginally improve clarity. But at least for me typos and simple grammatical errors trigger an---unjustified---sense of unprofessionalism, despite the fact that I make them all the time and I understand that they're the sort of thing that is bound to slip through review.  

Anyway, to find most of these I used:

  * `ag '.*//.*(\b[A-Za-z]{2,}\b) \1\b'` for repeated words

  * `ag '\b(the|this|those|these|a|it) (a|the|this|those|these|it)\b'` to find constructs like 'the this' etc. many false positives, but not too hard to scroll through them to actually find the mistakes.

  * `cat ../../typos.txt | paste -d'|' - - - - - - - - - - - - - - - - - - - - - - | tr '\n' '\0' | xargs -0 -P4 -n1 ag`. Hacky way to find misspellings, but it works ok. I got `typos.txt` from [Wikipedia](https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines)

* `ag '.*//.* a ([ae][a-z]|(o[^n])|(i[a-rt-z]))'` to find places where 'a' was followed by a vowel (requiring 'an' instead).

I also used a handful more one off regexes that are too boring to reproduce here.
2015-10-08 22:40:50 +00:00
bors
11eda66df8 Auto merge of #27197 - nwin:generic-cursor-impl, r=alexcrichton
This is a revival of #23364. Github didn’t recognize my updated branch there.

The cursor implementation now uses `AsRef` which means that fixed-sized array can now be used with `Cursor`. Besides that, the generic implementation simplifies the code as the macro can be avoided.

The only drawback is, that specialized implementation for fixed-sized arrays are now ruled out unless [RFC#1210](https://github.com/rust-lang/rfcs/pull/1210) is accepted & implemented.

`Box<[u8]>` cannot be used yet, but that should be mitigated by [implementing `AsRef` for `Box` and friends](https://internals.rust-lang.org/t/forward-implement-traits-on-smart-pointers-make-smart-pointers-more-transparent/2380/3). I will submit a separate PR for that later as it is an orthogonal issue.
2015-10-08 20:53:23 +00:00
Alex Crichton
abe7874b35 book: Add documentation on custom allocators
This adds a chapter to the nightly section of the book on leveraging and
implementing the `#![allocator]` attribute to write custom allocators as well as
explaining the current situation with allocators.
2015-10-08 12:49:52 -07:00
bors
e38210b195 Auto merge of #28913 - steveklabnik:rollup, r=steveklabnik
- Successful merges: #28621, #28872, #28893, #28904, #28905, #28908, #28910
- Failed merges: #28906
2015-10-08 19:05:54 +00:00
Cristi Cobzarenco
4b308b44e1 typos: fix a grabbag of typos all over the place 2015-10-08 19:49:31 +01:00
Steve Klabnik
1625c133de Rollup merge of #28910 - frewsxcv:patch-26, r=steveklabnik 2015-10-08 13:54:05 -04:00
Steve Klabnik
17819aa8f3 Rollup merge of #28908 - GuillaumeGomez:patch-2, r=Manishearth
r? @Manishearth
2015-10-08 13:54:05 -04:00
Steve Klabnik
8ca14251c9 Rollup merge of #28905 - tshepang:typo, r=steveklabnik 2015-10-08 13:54:04 -04:00
Steve Klabnik
8600610197 Rollup merge of #28904 - panicbit:trpl-derive, r=steveklabnik 2015-10-08 13:54:04 -04:00
Steve Klabnik
ac541d3206 Rollup merge of #28893 - steveklabnik:gh28687, r=nikomatsakis
Fixes #28687
2015-10-08 13:54:03 -04:00
Steve Klabnik
252c3838df Rollup merge of #28872 - iwillspeak:master, r=Manishearth
Currently the explain command line flag requires full error codes, complete with
the leading zeros and the E at the beginning. This commit changes that,
if you don't supply a full error code then the error number is padded
out to the required size and the E is added to the beginning.

This means that where previously you would need to write E0001, you can
now write 0001, 001, 01 or just 1 to refer to the same error.
2015-10-08 13:54:03 -04:00
Guillaume Gomez
e4cc54ed06 Fix typo in E0101 2015-10-08 19:49:37 +02:00
bors
64c4b51dd6 Auto merge of #28826 - arthurprs:leading_plus, r=alexcrichton
Closes #27580
2015-10-08 17:19:59 +00:00
bors
95285c496f Auto merge of #28621 - tshepang:move-safety, r=steveklabnik 2015-10-08 14:04:41 +00:00
bors
b75fe81055 Auto merge of #28897 - steveklabnik:rollup, r=steveklabnik
- Successful merges: #28836, #28856, #28874, #28876, #28878, #28880, #28882, #28885, #28889, #28896
- Failed merges:
2015-10-08 12:15:47 +00:00
Corey Farwell
f18d1ad324 Format code-like text in Iterator::cloned doc-comment 2015-10-08 08:00:02 -04:00
bors
bcd27eb7d5 Auto merge of #28891 - cristicbz:new-nbody, r=alexcrichton
This new version takes inspiration from the C implementation of the benchmark, but instead of explicitly using SIMD operations which can't be done on stable, it instead arranges everything the same way and leaves the actual vectorization up to LLVM.

In addition to the ~20% speed gains (see below), this PR also adds some general niceties which showcase the language a little bit: a `Vec3` type to cut down on `(x, y, z)` repetition,  using `while let` instead of `loop-if-break`, iterator adapters instead of for loops etc.

Here are the times in seconds of 10 runs each on my workstation:

```
before: 6.254, 6.260, 6.263, 6.264, 6.265, 6.267, 6.334, 6.341, 6.441, 6.509
before-min: 6.254
before-median: 6.266
before-max: 6.509

after: 4.823, 4.824, 4.826, 4.827, 4.837, 4.839, 4.881, 4.959, 4.990, 5.377
after-min: 4.823
after-median: 4.838
after-max: 5.377

gcc: 4.674, 4.676, 4.680, 4.682, 4.695, 4.696, 4.701, 4.708, 4.794, 5.297
gcc-min: 4.674
gcc-median: 4.696
gcc-max: 5.297
```

On my i7 laptop the speed up is less impressive, from ~5.4s to ~4.7s, but still significant. On my Vultr VPS the numbers look closer to the workstation results. Surprisingly my laptop beats both office workstation and VPS...
2015-10-08 10:04:12 +00:00
bors
88898e6ca7 Auto merge of #28892 - cristicbz:default-wrapping, r=alexcrichton
It's not very common to store `Wrapping` values, but I kept wrapping and unwrapping a hash value when I taking it out of a struct to do operations on it. I couldn't store the hash as `Wrapping<u64>` because I wanted to be able to `#[derive(Default)]` for the struct.

At any rate, it feels to me that `Wrapping<T>` should implement pretty much everything `T` does. I left out `#[derive(Hash)]` since I'd be hard pressed to find a use case and wanted to avoid the extra generated code, but maybe I should add that too?
2015-10-08 07:39:06 +00:00
Tshepang Lekhonkhobe
88506c2261 reference: fix typos 2015-10-08 07:34:58 +02:00
panicbit
7515514fdc trpl: link to derivable trait's docs 2015-10-08 07:27:26 +02:00
panicbit
4d7eee1817 trpl: mention deriving in traits section 2015-10-08 07:15:39 +02:00
bors
2d405afeb0 Auto merge of #28863 - nagisa:test-16403, r=alexcrichton
Closes #16403
2015-10-08 02:31:46 +00:00
bors
e362679bb6 Auto merge of #28811 - alexcrichton:as-ref-ptrs, r=aturon
These common traits were left off originally by accident from these smart
pointers, and a past attempt (#26008) to add them was later reverted (#26160)
due to unexpected breakge (#26096) occurring. The specific breakage in worry is
the meaning of this return value changed:

    let a: Box<Option<T>> = ...;
    a.as_ref()

Currently this returns `Option<&T>` but after this change it will return
`&Option<T>` because the `AsRef::as_ref` method shares the same name as
`Option::as_ref`. A [crater report][crater] of this change, however, has shown
that the fallout of this change is quite minimal. These trait implementations
are "the right impls to add" to these smart pointers and would enable various
generalizations such as those in #27197.

[crater]: https://gist.github.com/anonymous/0ba4c3512b07641c0f99

This commit is a breaking change for the above reasons mentioned, and the
mitigation strategies look like any of:

    Option::as_ref(&a)
    a.as_ref().as_ref()
    (*a).as_ref()
2015-10-08 00:46:01 +00:00
Steve Klabnik
0fbf7eaf81 Rollup merge of #28896 - mkpankov:core-fmt, r=nrc
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/rust-lang/rust/28896)
<!-- Reviewable:end -->
2015-10-07 18:18:38 -04:00
Steve Klabnik
fb09639d92 Rollup merge of #28889 - JIghtuse:str_doc, r=steveklabnik 2015-10-07 18:18:38 -04:00