Commit Graph

44938 Commits

Author SHA1 Message Date
Steve Klabnik
5aa76509da Rollup merge of #27355 - krumelmonster:patch-1, r=alexcrichton
Minor change in the book
2015-07-29 10:30:36 -04:00
Steve Klabnik
d3dc1e56f1 Rollup merge of #27350 - GuillaumeGomez:patch-1, r=Manishearth
cc #26970.

r? @Manishearth
2015-07-29 10:30:36 -04:00
Steve Klabnik
c0d21cfe58 Rollup merge of #27345 - killercup:patch-15, r=alexcrichton
The first paragraph of the docs of the Cursor struct ([src](ff6c6ce917/src/libstd/io/cursor.rs (L18-L21))) contains a Markdown link. In listings (like <http://doc.rust-lang.org/nightly/std/io/>), this won't get rendered:

![std__io_-_rust](https://cloud.githubusercontent.com/assets/20063/8925843/5c5281a8-350b-11e5-8c63-09a369d746b0.png)

The hotfix would be to change the link by reference:

```rust
/// A `Cursor` wraps another type and provides it with a [`Seek`][seek]
/// implementation.
///
/// [seek]: trait.Seek.html
```

to a direct link:

```rust
/// A `Cursor` wraps another type and provides it with a
/// [`Seek`](trait.Seek.html) implementation.
```

_I have not tested this as I don't have access to a machine for compiling Rust right now._

(This seems to be a more general issue, but I think I have seen this mentioned before. This PR is just to hotfix on particular occurrence. Rustdoc seems to only read the first paragraph of a doc string for the description in index pages, and _after that_ convert Markdown to HTML.)

r? @steveklabnik
2015-07-29 10:30:35 -04:00
Steve Klabnik
8b82470456 Rollup merge of #27343 - steveklabnik:fix_module, r=alexcrichton 2015-07-29 10:30:35 -04:00
Steve Klabnik
319b42821d Rollup merge of #27342 - steveklabnik:fix_links, r=alexcrichton
How embarassing 😭

r? @alexcrichton
2015-07-29 10:30:35 -04:00
Steve Klabnik
1406c196fd Rollup merge of #27341 - steveklabnik:remove_warning, r=alexcrichton
This isn't a standard header, and the other docs don't use it, so let's remove it.
2015-07-29 10:30:35 -04:00
Steve Klabnik
3c7719580c Rollup merge of #27327 - steveklabnik:fix_take, r=alexcrichton
This only reads five bytes, so don't use a ten byte buffer, that's confusing.

r? @alexcrichton
2015-07-29 10:30:34 -04:00
Steve Klabnik
a368adf8e5 Rollup merge of #27326 - steveklabnik:doc_show_use, r=Gankro
In spirit with https://internals.rust-lang.org/t/should-we-keep-including-obvious-imports-in-code-examples/2217, show the feature flags we're using in examples.

(also one instance of 'use')
2015-07-29 10:30:34 -04:00
Steve Klabnik
6fec7b7854 Rollup merge of #27325 - midinastasurazz:patch-2, r=alexcrichton 2015-07-29 10:30:33 -04:00
Steve Klabnik
033b886f8c Rollup merge of #27313 - nagisa:illegal-to-invalid, r=pnkfelix
Improves diagnostics in various locations, namely:

* A few error messages that orignally were a mix of an error message and suggestion how to fix it have been split up into two messages: an error and help/hint.
* Never report “illegal”. Fixes https://github.com/rust-lang/rust/issues/27288
2015-07-29 10:30:33 -04:00
Steve Klabnik
10387d6839 Rollup merge of #27286 - lastorset:pub, r=steveklabnik
The reader could probably infer this from the current text, but for C++ programmers it's not obvious that struct fields don't automatically become public.

Apparently I wasn't the only one to be confused:

http://stackoverflow.com/questions/29157300/field-of-struct-is-private-when-importing-module

I don't think an example is necessary, but can add one if desired.

r? @steveklabnik
2015-07-29 10:30:33 -04:00
Steve Klabnik
e6ed27bc24 Rollup merge of #27102 - tshepang:better-examples, r=aturon 2015-07-29 10:30:33 -04:00
bors
78bf4b6ff6 Auto merge of #27360 - dhuseby:fixing_freebsd_stat_structs_and_tests, r=alexcrichton
…ebsd 10.1 x86_64 and i686
2015-07-29 11:33:20 +00:00
bors
d10ff632ce Auto merge of #27358 - bluss:split-at-mut, r=aturon
Use raw pointers to avoid aliasing violation in split_at_mut

Fixes #27357
2015-07-29 09:57:50 +00:00
bors
6fcf62831e Auto merge of #27349 - arielb1:constant-at, r=alexcrichton
Fixes #27033
Fixes #27077 

r? @alexcrichton
2015-07-29 08:23:04 +00:00
bors
d576ef3d7b Auto merge of #27261 - arielb1:drop-sanity-check, r=pnkfelix
This fixes multiple bugs, and as several of these are soundness issue, is a [breaking-change].

r? @pnkfelix
2015-07-29 06:47:55 +00:00
bors
4b4119d5c0 Auto merge of #27339 - alexcrichton:remove-old-rt, r=brson
These aren't really used for anything any more, so there doesn't seem to be much
reason to leave them around in the `rt` directory. There was some limiting of
threads spawned or tests when run under valgrind, but very little is run under
valgrind nowadays so there's also no real use keeping these around.
2015-07-29 05:12:33 +00:00
bors
68fc2d98d5 Auto merge of #27260 - alexcrichton:cap-lints, r=nrc
This commit is an implementation of [RFC 1193][rfc] which adds the ability to
the compiler to cap the lint level for the entire compilation session. This flag
will ensure that no lints will go above this level, and Cargo will primarily use
this flag passing `--cap-lints allow` to all upstream dependencies.

[rfc]: https://github.com/rust-lang/rfcs/pull/1193

Closes #27259
2015-07-29 02:04:38 +00:00
Alex Crichton
b345437c3c rustc: Add a --cap-lints flag to the compiler
This commit is an implementation of [RFC 1193][rfc] which adds the ability to
the compiler to cap the lint level for the entire compilation session. This flag
will ensure that no lints will go above this level, and Cargo will primarily use
this flag passing `--cap-lints allow` to all upstream dependencies.

[rfc]: https://github.com/rust-lang/rfcs/pull/1193

Closes #27259
2015-07-28 18:23:09 -07:00
bors
8d432fbf10 Auto merge of #26846 - P1start:print-maybe-styled-macro, r=pnkfelix
`EmitterWriter::print_maybe_styled` was basically always used with `format!`, so this macro makes some code cleaner. It should also remove some unnecessary allocations (most `print_maybe_styled` invocations allocated a `String` previously, whereas the new macro uses `write_fmt` to write the formatted string directly to the terminal).

This probably could have been part of #26838, but it’s too late now. It’s also rebased on #26838’s branch because otherwise pretty much all of the changes in this PR would conflict with the other PR’s changes.
2015-07-29 00:28:55 +00:00
Simonas Kazlauskas
cca0ea718d Replace illegal with invalid in most diagnostics 2015-07-29 01:59:31 +03:00
Simonas Kazlauskas
ffcdf0881b Improve typeck diagnostic messages
Mostly by splitting error messages into proper pairs of errors and helps
2015-07-29 01:57:24 +03:00
Simonas Kazlauskas
77e9228b4a Improve invalid recursive types diagnostic 2015-07-29 01:57:24 +03:00
bors
ba324694d6 Auto merge of #27318 - soon:E0391_explanation, r=nrc
Part of #24407
2015-07-28 22:51:53 +00:00
bors
55ede7ed8e Auto merge of #27234 - oli-obk:move_get_name_get_ident_to_impl, r=eddyb
this has quite some fallout. but also made lots of stuff more readable imo

[breaking-change] for plugin authors
2015-07-28 21:14:28 +00:00
Ulrik Sverdrup
73d4330ff8 Use raw pointers to avoid aliasing violation in split_at_mut
Fixes #27357
2015-07-28 22:04:25 +02:00
bors
ba9224f354 Auto merge of #26934 - reem:boxed-slice-clone, r=Gankro
Closes #25097
2015-07-28 19:36:26 +00:00
Dave Huseby
d088b67187 Fixes #25155 and fixes #27359 by fixing the stat defines for both freebsd 10.1 x86_64 and i686 2015-07-28 11:10:23 -07:00
bors
aa6efd959e Auto merge of #27173 - mark-buer:split-android-ndks, r=alexcrichton
Allows a multi-Android-target Rust compiler to be built.
Without these (or similar) changes, only a single-Android-target Rust compiler is possible.
Please see https://internals.rust-lang.org/t/dual-target-android-rust-compiler/2382/3 for additional context.
2015-07-28 17:58:18 +00:00
krumelmonster
9699119c57 more precise for inclusive range 2015-07-28 19:22:20 +02:00
Ariel Ben-Yehuda
757b0c176f prohibit the lhs of an @-pattern being a constant
as this breaks code that worked under some conditions, this is a
[breaking-change]

Fixes #27033
Fixes #27077
2015-07-28 19:51:08 +03:00
Oliver Schneider
00a5e66f81 remove get_ident and get_name, make as_str sound 2015-07-28 18:07:20 +02:00
bors
661a5ad38e Auto merge of #26173 - pnkfelix:fsk-trans-nzmove-take3, r=nikomatsakis
Add dropflag hints (stack-local booleans) for unfragmented paths in trans.  Part of #5016.

Added code to maintain these hints at runtime, and to conditionalize drop-filling and calls to destructors.

In this early stage of my incremental implementation strategy, we are using hints, so we are always free to leave out a flag for a path -- then we just pass `None` as the dropflag hint in the corresponding schedule cleanup call. But, once a path has a hint, we must at least maintain it: i.e. if the hint exists, we must ensure it is never set to "moved" if the data in question might actually have been initialized. It remains sound to conservatively set the hint to "initialized" as long as the true drop-flag embedded in the value itself is up-to-date.

I hope the commit series has been broken up to be readable; most of the commits in the series should build (though I did not always check this).

----

Oh, I think this technically qualifies as a:
[breaking-change]
because it removes drop-filling in some cases where one could previously observe it. That should only affect `unsafe` code; no safe code should be able to inspect whether the drop-fill was present or not. For an example of code that needed to change to account for this, see commit a81c24ae0216ab47df59acd724f8a33124fb6d97 (a unit test of the `move_val_init` intrinsic).  I have not encountered actual code that needed to be updated to account for the change, since this should only be skipping the drop-filling on *moved* values, not on dropped one, and so even types that use `unsafe_no_drop_flag` should be unchanged by this particular PR. (Their time will come later.)
2015-07-28 15:15:00 +00:00
Guillaume Gomez
cf55db2ad1 Improve E0119 error explanation 2015-07-28 16:37:11 +02:00
Felix S. Klock II
b4dd765e68 comments and code-cleanup in response to reviews. 2015-07-28 16:15:56 +02:00
Felix S. Klock II
22796c8bad build fragmented map earlier to make its dependencies clearer. 2015-07-28 16:15:56 +02:00
Felix S. Klock II
494ce37ffe Reduced the Lvalue constructors to a kernel of three constructors.
Updated all call sites that used the other contructors to uniformly
call `Lvalue::new_with_hint`, passing along the appropriate kind
of hint for each context.

Placated tidy in a few other places in datum.rs.
2015-07-28 16:15:51 +02:00
Felix S. Klock II
ff14eaf054 Revise intrinsic-move-val test to not require knowledge of whether filling drop is in use. 2015-07-28 16:15:05 +02:00
Felix S. Klock II
e25427a2b2 During my own review, I convinced myself this was indeed a bug.
Testing indicates bug would have been caught, albeit later than one
might hope, during `sync::mpsc::tests::smoke_shared_port_gone2` test.
2015-07-28 16:15:05 +02:00
Felix S. Klock II
dce1c61e97 Add dropflag hints (stack-local booleans) for unfragmented paths in trans.
Added code to maintain these hints at runtime, and to conditionalize
drop-filling and calls to destructors.

In this early stage, we are using hints, so we are always free to
leave out a flag for a path -- then we just pass `None` as the
dropflag hint in the corresponding schedule cleanup call. But, once a
path has a hint, we must at least maintain it: i.e. if the hint
exists, we must ensure it is never set to "moved" if the data in
question might actually have been initialized. It remains sound to
conservatively set the hint to "initialized" as long as the true
drop-flag embedded in the value itself is up-to-date.

----

Here are some high-level details I want to point out:

 * We maintain the hint in Lvalue::post_store, marking the lvalue as
   moved. (But also continue drop-filling if necessary.)

 * We update the hint on ExprAssign.

 * We pass along the hint in once closures that capture-by-move.

 * You only call `drop_ty` for state that does not have an associated hint.
   If you have a hint, you must call `drop_ty_core` instead.
   (Originally I passed the hint into `drop_ty` as well, to make the
   connection to a hint more apparent, but the vast majority of
   current calls to `drop_ty` are in contexts where no hint is
   available, so it just seemed like noise in the resulting diff.)
2015-07-28 16:14:58 +02:00
Felix S. Klock II
d3d552b71b rustc and rustc::borrowck: pass fragment info down into trans. 2015-07-28 16:12:32 +02:00
Felix S. Klock II
a0f3f2ac53 Extend trans::datum::Lvalue so that it carrys an optional dropflag hint.
Instrumented calls sites that construct Lvalues to ease tracking down
cases that we might need to change whether or not they carry a hint.

Note that this commit does not do anything to actually *construct*
the `lldropflag_hints` map, nor does it change anything about codegen
itself. Those parts are in follow-on commits.
2015-07-28 16:12:32 +02:00
Felix S. Klock II
20aa27b7bc debugflag to turn off nonzeroing move hint optimization.
(already thumbs-upped pre-rebase by nikomatsakis)
2015-07-28 16:12:32 +02:00
Felix S. Klock II
9ef61f1ee0 Prep for dropflag hints: refactor trans:_match to pass around MatchInput rather than ValueRef.
(already thumbs-upped pre-rebase by nikomatsakis)

The refactoring here is trivial because `trans::datum::Lvalue`
currently carries no payload. However, future commits will start
adding a payload to `Lvalue`, and thus will force us either

 1. to thread the payload through the `_match` code (a long term goal), or

 2. to ensure the payload has some reasonable default value.
2015-07-28 16:12:27 +02:00
Felix S. Klock II
3eb7dd7f74 Prep for dropflag-hints: Clarify trans bindings MoveByRef and MoveIntoCopy. 2015-07-28 15:52:34 +02:00
bors
ec49d01c88 Auto merge of #27330 - alexcrichton:reenable-lto-syntax-extension, r=huonw
The functionality this was testing was removed somewhere along the line, and
this commit restores what it was testing.

Closes #20586
2015-07-28 12:53:28 +00:00
bors
4c371bb6de Auto merge of #27319 - diaphore:pr_debug_osstr_escape, r=alexcrichton
I had to modify some tests : since `wtf8buf_show` and `wtf8_show` were doing the exact same thing, I repurposed `wtf8_show` to `wtf8buf_show_str` which ensures `Wtf8Buf` `Debug`-formats the same as `str`.

`write_str_escaped` might also be shared amongst other `fmt` but I just left it there within `Wtf8::fmt` for review.
2015-07-28 10:28:45 +00:00
bors
5b72fa42d4 Auto merge of #27309 - eddyb:snapshot-infdef, r=alexcrichton
FreeBSD i386 snapshot is missing, failed tests (possibly spurious).
r? @alexcrichton
2015-07-28 08:51:21 +00:00
Jonathan Reem
e24423091f Implement Clone for Box<[T]> where T: Clone
Closes #25097
2015-07-28 01:43:17 -07:00
Pascal Hertleif
8c6ec5d72c IO Docs: Fix Link in Cursor description
The first paragraph of the docs of the Cursor struct contains a Markdown
link. In listings, this won't get rendered. (Rustdoc seems to split off the
first paragraph and after that convert Markdown to HTML.)
2015-07-28 09:39:15 +02:00