about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorLines
2016-02-11[breaking-change] don't glob export ast::Mutablity variantsOliver 'ker' Schneider-73/+87
2016-02-11[breaking-change] don't glob export ast::MetaItem_Oliver 'ker' Schneider-84/+83
2016-02-11[breaking-change] don't glob export ast::MacStmtStyleOliver 'ker' Schneider-14/+13
2016-02-11[breaking-change] don't glob export ast::KleeneOp variantsOliver 'ker' Schneider-17/+18
2016-02-11[breaking-change] don't glob export ast::Item_ variantsOliver 'ker' Schneider-233/+230
2016-02-11[breaking-change] don't glob export ast::ForeignItem_ variantsOliver 'ker' Schneider-21/+20
2016-02-11[breaking-change] don't pub export ast::Stmt_ variantsOliver Schneider-92/+87
2016-02-11[breaking-change] don't pub export ast::IntLitType variantsOliver Schneider-43/+42
2016-02-11[breaking-change] don't pub export ast::Lit_ variantsOliver Schneider-142/+142
2016-02-11[breaking-change] don't pub export ast::Ty_ variantsOliver Schneider-128/+126
2016-02-11[breaking-change] remove unused enum ast::PrimTyOliver Schneider-12/+0
2016-02-11remove unit test that can't be tested anymoreOliver Schneider-8/+0
2016-02-11[breaking-change] remove the sign from integer literals in the astOliver Schneider-82/+55
2016-02-11[breaking-change] don't glob export ast::{UintTy, IntTy} variantsOliver Schneider-407/+404
2016-02-11[breaking-change] don't glob export ast::FloatTy variantsOliver Schneider-38/+37
2016-02-11[breaking-change] don't glob export ast::Expr_ variantsOliver Schneider-428/+420
2016-02-11[breaking-change] don't glob export ast::ExplicitSelf_ variantsOliver Schneider-60/+59
2016-02-11[breaking-change] don't glob export ast::Decl_ variantsOliver Schneider-38/+37
2016-02-11[breaking-change] don't glob export ast::CaptureClause variantsOliver Schneider-17/+17
2016-02-11[breaking-change] don't glob import/export syntax::abi enum variantsOliver Schneider-189/+189
2016-02-11[breaking-change] don't glob export ast::BlockCheckMode variantsOliver Schneider-27/+24
2016-02-11[breaking-change] don't glob import ast::FunctionRetTy variantsOliver Schneider-41/+40
2016-02-11[breaking-change] don't glob export ast::BinOp_Oliver Schneider-164/+164
2016-02-11[breaking-change] don't glob export ast::UnOp variantsOliver Schneider-20/+20
2016-02-11Auto merge of #31507 - dirk:dirk/fix-rustdoc-undeclared-type-ice, r=nrcbors-4/+15
Fixes #31451.
2016-02-11Auto merge of #31357 - rthomas:hashers, r=alexcrichtonbors-0/+14
add a public hasher function for HashSet and HashMap
2016-02-11Add a public hasher function for HashSet and HashMapRyan Thomas-0/+14
2016-02-11Auto merge of #31461 - jseyfried:remove_import_resolutions, r=nrcbors-677/+377
This PR adds to `NameBinding` so it can more fully represent bindings from imports as well from items, refactors away `Target`, generalizes `ImportResolution` to a simpler type `NameResolution`, and uses a single `NameResolution`-valued map in place the existing maps `children` and `import_resolutions` (of `NameBinding`s and `ImportResolution`s, respectively), simplifying duplicate checking and name resolution. It also unifies the `resolve_name_in_module` in `lib.rs` with its namesake in `resolve_imports.rs`, clarifying and improving the core logic (fixes #31403 and fixes #31404) while maintaining clear future-comparability with shadowable globs (i.e., never reporting that a resolution is a `Success` or is `Failing` unless this would also be knowable with shadowable globs). Since it fixes #31403, this is technically a [breaking-change], but it is exceedingly unlikely to cause breakage in practice. The following is an example of code that would break: ```rust mod foo { pub mod bar {} // This defines bar in the type namespace pub use alpha::bar; // This defines bar in the value namespace // This should define baz in both namespaces, but it only defines baz in the type namespace. pub use self::bar as baz; pub fn baz() {} // This should collide with baz, but now it does not. } pub fn f() {} mod alpha { pub use self::f as bar; // Changing this to `pub fn bar() {}` causes the collision right now. pub use super::*; } ``` r? @nrc
2016-02-11Auto merge of #31479 - kamalmarhubi:fmt-pointer-unsized, r=alexcrichtonbors-8/+16
This allows printing pointers to unsized types with the {:p} formatting directive. The following impls are extended to unsized types: - impl<'a, T: ?Sized> Pointer for &'a T - impl<'a, T: ?Sized> Pointer for &'a mut T - impl<T: ?Sized> Pointer for *const T - impl<T: ?Sized> Pointer for *mut T - impl<T: ?Sized> fmt::Pointer for Box<T> - impl<T: ?Sized> fmt::Pointer for Rc<T> - impl<T: ?Sized> fmt::Pointer for Arc<T>
2016-02-10Auto merge of #31409 - alexcrichton:command-exec, r=aturonbors-562/+826
These commits are an implementation of https://github.com/rust-lang/rfcs/pull/1359 which is tracked via https://github.com/rust-lang/rust/issues/31398. The `before_exec` implementation fit easily with the current process spawning framework we have, but unfortunately the `exec` implementation required a bit of a larger refactoring. The stdio handles were all largely managed as implementation details of `std::process` and the `exec` function lived in `std::sys`, so the two didn't have access to one another. I took this as a sign that a deeper refactoring was necessary, and I personally feel that the end result is cleaner for both Windows and Unix. The commits should be separated nicely for reviewing (or all at once if you're feeling ambitious), but the changes made here were: * The process spawning on Unix was refactored in to a pre-exec and post-exec function. The post-exec function isn't allowed to do any allocations of any form, and management of transmitting errors back to the parent is managed by the pre-exec function (as it's the one that actually forks). * Some management of the exit status was pushed into platform-specific modules. On Unix we must cache the return value of `wait` as the pid is consumed after we wait on it, but on Windows we can just keep querying the system because the handle stays valid. * The `Stdio::None` variant was renamed to `Stdio::Null` to better reflect what it's doing. * The global lock on `CreateProcess` is now correctly positioned to avoid unintended inheritance of pipe handles that other threads are sending to their child processes. After a more careful reading of the article referenced the race is not in `CreateProcess` itself, but rather the property that handles are unintentionally shared. * All stdio management now happens in platform-specific modules. This provides a cleaner implementation/interpretation for `FromFraw{Fd,Handle}` for each platform as well as a cleaner transition from a configuration to what-to-do once we actually need to do the spawn. With these refactorings in place, implementing `before_exec` and `exec` ended up both being pretty trivial! (each in their own commit)
2016-02-10Auto merge of #31455 - tmiasko:expected-tokens, r=alexcrichtonbors-11/+39
Previously when breaking tokens into smaller pieces, the replace_token function have been used. It replaced current token and updated span information, but it did not clear the list of expected tokens, neither did it update remaining info about last token. This could lead to incorrect error message, like one described in the issue #24780: expected one of ... `>` ... found `>`
2016-02-10std: Move constant back to where it needs to beAlex Crichton-2/+2
Lost track of this during the std::process refactorings
2016-02-10std: Use macros from libc instead of locallyAlex Crichton-24/+3
Helps cut down on #[cfg]!
2016-02-10std: Implement CommandExt::execAlex Crichton-2/+112
This commit implements the `exec` function proposed in [RFC 1359][rfc] which is a function on the `CommandExt` trait to execute all parts of a `Command::spawn` without the `fork` on Unix. More details on the function itself can be found in the comments in the commit. [rfc]: https://github.com/rust-lang/rfcs/pull/1359 cc #31398
2016-02-10std: Push process stdio setup in std::sysAlex Crichton-367/+440
Most of this is platform-specific anyway, and we generally have to jump through fewer hoops to do the equivalent operation on Windows. One benefit for Windows today is that this new structure avoids an extra `DuplicateHandle` when creating pipes. For Unix, however, the behavior should be the same. Note that this is just a pure refactoring, no functionality was added or removed.
2016-02-10std: Lift out Windows' CreateProcess lock a bitAlex Crichton-13/+20
The function `CreateProcess` is not itself unsafe to call from many threads, the article in question is pointing out that handles can be inherited by unintended child processes. This is basically the same race as the standard Unix open-then-set-cloexec race. Since the intention of the lock is to protect children from inheriting unintended handles, the lock is now lifted out to before the creation of the child I/O handles (which will all be inheritable). This will ensure that we only have one process in Rust at least creating inheritable handles at a time, preventing unintended inheritance to children.
2016-02-10std: Rename Stdio::None to Stdio::NullAlex Crichton-18/+15
This better reflects what it's actually doing as we don't actually have an option for "leave this I/O slot as an empty hole".
2016-02-10std: Push Child's exit status to sys::processAlex Crichton-69/+30
On Unix we have to be careful to not call `waitpid` twice, but we don't have to be careful on Windows due to the way process handles work there. As a result the cached `Option<ExitStatus>` is only necessary on Unix, and it's also just an implementation detail of the Unix module. At the same time. also update some code in `kill` on Unix to avoid a wonky waitpid with WNOHANG. This was added in 0e190b9a to solve #13124, but the `signal(0)` method is not supported any more so there's no need to for this workaround. I believe that this is no longer necessary as it's not really doing anything.
2016-02-10std: Implement CommandExt::before_execAlex Crichton-4/+143
This is a Unix-specific function which adds the ability to register a closure to run pre-exec to configure the child process as required (note that these closures are run post-fork). cc #31398
2016-02-10std: Refactor process spawning on UnixAlex Crichton-168/+166
* Build up the argp/envp pointers while the `Command` is being constructed rather than only when `spawn` is called. This will allow better sharing of code between fork/exec paths. * Rename `child_after_fork` to `exec` and have it only perform the exec half of the spawning. This also means the return type has changed to `io::Error` rather than `!` to represent errors that happen.
2016-02-10Auto merge of #30686 - wesleywiser:rustdoc_display_since, r=steveklabnikbors-27/+94
Here's some screenshots after this change: ![screen shot 2016-01-03 at 11 38 30 am](https://cloud.githubusercontent.com/assets/831192/12079661/23da4e38-b20f-11e5-8c84-ba51d7a59c3f.png) ![screen shot 2016-01-03 at 11 40 39 am](https://cloud.githubusercontent.com/assets/831192/12079663/23e00012-b20f-11e5-9f01-408cc8d43687.png) ![screen shot 2016-01-03 at 11 42 17 am](https://cloud.githubusercontent.com/assets/831192/12079662/23dfe6c2-b20f-11e5-9998-53abc643e2ef.png) I tried to click through the `std` docs and make sure everything that can have stability attributes has it rendered but I'm probably missing some. I'd also appreciate any feedback on the css changes. I had difficulty getting the `since` labels aligning correctly for enum variants. If anyone has a better idea for that, I'd be glad to implement it. Fixes #27607
2016-02-10Auto merge of #31499 - kamalmarhubi:cfg-flag-invalid-cfgs, r=brsonbors-21/+86
A spec like `#[cfg(foo(bar))]` is not allowed as an attribute. This makes the same spec be rejected by the compiler if passed in as a `--cfg` argument. Fixes #31495
2016-02-10Auto merge of #31420 - bluss:deque-equality, r=Gankrobors-1/+60
collections: Use slice parts in PartialEq for VecDeque This improves == for VecDeque by using the slice representation. This will also improve further if codegen for slice comparison improves. Benchmark run of 1000 u64 elements, comparing for equality (all equal). Cpu time to compare the vecdeques is reduced to less than 50% of what it was before. ``` test test_eq_u64 ... bench: 1,885 ns/iter (+/- 163) = 4244 MB/s test test_eq_new_u64 ... bench: 802 ns/iter (+/- 100) = 9975 MB/s ```
2016-02-10Auto merge of #31494 - alexcrichton:ar-gnu-by-default, r=brsonbors-12/+1
The compiler currently vendors its own version of "llvm-ar" (not literally the binary but rather the library support) and uses it for all major targets by default (e.g. everything defined in `src/librustc_back/target`). All custom target specs, however, still search for an `ar` tool by default. This commit changes this default behavior to using the internally bundled llvm-ar with the GNU format. Currently all targets use the GNU format except for OSX which uses the BSD format (surely makes sense, right?), and custom targets can change the format via the `archive-format` key in custom target specs. I suspect that we can outright remove support for invoking an external `ar` utility, but I figure for now there may be some crazy target relying on that so we should leave support in for now.
2016-02-10Auto merge of #31465 - nagisa:mir-free-fix, r=nikomatsakisbors-14/+21
Fixes #31463
2016-02-09Rustdoc - display `since` version for stable itemsWesley Wiser-27/+94
Fixes #27607
2016-02-10Auto merge of #31438 - aturon:stab-ip-addr, r=alexcrichtonbors-22/+8
After [considerable pushback](https://github.com/rust-lang/rfcs/issues/1451), it's clear that there is a community consensus around providing `IpAddr` in the standard library, together with other APIs using it. This commit reverts from deprecated status directly to stable. The deprecation landed in 1.6, which has already been released, so the stabilization is marked for 1.7 (currently in beta; will require a backport). r? @alexcrichton
2016-02-09Auto merge of #31523 - steveklabnik:rollup, r=steveklabnikbors-115/+165
- Successful merges: #31473, #31513, #31514, #31515, #31516, #31520 - Failed merges:
2016-02-09Rollup merge of #31520 - steveklabnik:doc_num, r=alexcrichtonSteve Klabnik-4/+22
This commit does two things: * Re-works the module-level documentation. * Cleaning up wording and adding links to where error types are used. Part of #29364
2016-02-09Rollup merge of #31516 - steveklabnik:doc_tuples, r=brsonSteve Klabnik-45/+72
Fixes #29339