- 13 2月, 2017 9 次提交
-
-
由 bors 提交于
macros: fix inert attributes from `proc_macro_derives` with `#![feature(proc_macro)]` This PR refactors collection of `proc_macro_derive` invocations to fix #39347. After this PR, the input to a `#[proc_macro_derive]` function no longer sees `#[derive]`s on the underlying item. For example, consider: ```rust extern crate my_derives; use my_derives::{Trait, Trait2}; #[derive(Copy, Clone)] #[derive(Trait)] #[derive(Trait2)] struct S; ``` Today, the input to the `Trait` derive is `#[derive(Copy, Clone, Trait2)] struct S;`, and the input to the `Trait2` derive is `#[derive(Copy, Clone)] struct S;`. More generally, a `proc_macro_derive` sees all builtin derives, as well as all `proc_macro_derive`s listed *after* the one being invoked. After this PR, both `Trait` and `Trait2` will see `struct S;`. This is a [breaking-change], but I believe it is highly unlikely to cause breakage in practice. r? @nrc
-
由 bors 提交于
Rollup of 7 pull requests - Successful merges: #39654, #39662, #39697, #39740, #39743, #39756, #39760 - Failed merges:
-
由 Guillaume Gomez 提交于
Improve grammar on field init docs
-
由 Guillaume Gomez 提交于
Sustitutes try! for ? in the Result documentation Hopefully newcomers will go strait to use `?`
-
由 Guillaume Gomez 提交于
Add tested item in the rustdoc --test output r? @alexcrichton cc @SergioBenitez
-
由 Guillaume Gomez 提交于
rustdoc: Only include a stability span if needed. This patch gets rid of the empty stability boxes in docs by only including the span that creates it when the item actually has a stability class. Here are images of the issue on `std::process::Output`: Before: <img width="340" alt="before" src="https://cloud.githubusercontent.com/assets/122457/22853638/ff88d1b2-f010-11e6-90d6-bf3d10e2fffa.png"> After: <img width="333" alt="after" src="https://cloud.githubusercontent.com/assets/122457/22853639/06bfe7cc-f011-11e6-9892-f0ea2cc6ec90.png"> This is my first non-trivial patch to Rust, so I'm sure some of my approach is not idiomatic. Let me know how you'd like me to adjust!
-
由 Guillaume Gomez 提交于
Add the item type to the tooltip See: https://users.rust-lang.org/t/seeking-opinions-from-colorblind-rustaceans-coloring-in-rustdoc-code-blocks
-
由 Guillaume Gomez 提交于
Fixes #39661 Clarifies the potential ambiguity.
-
由 Guillaume Gomez 提交于
rustdoc: Show attributes on all item types Currently attributes are only shown for structs, unions and enums but they should be shown for all items. For example it is useful to know if a function is `#[no_mangle]`.
-
- 12 2月, 2017 12 次提交
-
-
由 bors 提交于
Add recursion limit to inhabitedness check Fixes #39489. Add test aswell.
-
由 Jeffrey Seyfried 提交于
-
由 Jake Goulding 提交于
-
由 bors 提交于
Auto merge of #39554 - zackmdavis:assert_eq_has_a_terrible_error_message_when_given_a_trailing_comma, r=BurntSushi improve error message when two-arg assert_eq! receives a trailing comma Previously, `assert_eq!(left, right,)` (respectively, `assert_ne!(left, right,)`; note the trailing comma) would result in a confusing "requires at least a format string argument" error. In reality, a format string is optional, but the trailing comma puts us into the "match a token tree of zero or more tokens" branch of the macro (in order to support the optional format string), and passing the empty token tree into `format_args!` results in the confusing error. If instead we match a token tree of one or more tokens, we get a much more sensible "unexpected end of macro invocation" error. While we're here, fix up a stray space before a comma in the match guards. Resolves #39369. ----- **Before:** ``` $ rustc scratch.rs error: requires at least a format string argument --> scratch.rs:2:5 | 2 | assert_eq!(1, 2,); | ^^^^^^^^^^^^^^^^^^ | = note: this error originates in a macro outside of the current crate error: aborting due to previous error ``` **After:** ``` $ ./build/x86_64-unknown-linux-gnu/stage1/bin/rustc scratch.rs error: unexpected end of macro invocation --> scratch.rs:2:20 | 2 | assert_eq!(1, 2,); | ^ ```
-
由 Jeffrey Seyfried 提交于
-
由 Jordi Polo 提交于
-
由 bors 提交于
treat setting the number of test-threads to 0 as an error It is currently possible to call `cargo test -- --test-threads=0` which will cause cargo to hang until aborted. This change will fix that and will report an appropriate error to the user.
-
由 bors 提交于
[LLVM 4.0] Fix CreateCompileUnit This is largely identical to @dylanmckay's [patch](https://github.com/dylanmckay), except that it doesn't try to use `file_metadata()`. I don't think that is necessary because we don't want the compile unit to be added to `debug_context.created_files`, though I'd like confirmation from someone who knows for sure. If that is needed, I can modify `file_metadata_()` so that it can be used from `compile_unit_metadata()`.
-
由 Matt Ickstadt 提交于
-
由 Matt Ickstadt 提交于
-
由 Alexander Battisti 提交于
-
由 Jimmy Cuadra 提交于
-
- 11 2月, 2017 19 次提交
-
-
由 Guillaume Gomez 提交于
-
由 Jimmy Cuadra 提交于
-
由 Jimmy Cuadra 提交于
-
由 bors 提交于
Rollup of 9 pull requests - Successful merges: #39174, #39660, #39676, #39692, #39701, #39710, #39721, #39724, #39725 - Failed merges:
-
由 Corey Farwell 提交于
Updated nightly book with installing nightly instructions
-
由 Corey Farwell 提交于
Allow rustc data structures compile to android flock structure is defined in asm*/fcntl.h. This file on android is generated from the linux kernel source, so they are the same.
-
由 Corey Farwell 提交于
Change std::panicking::try::Data into a union No longer potentially call `mem::uninitialized::<!>()` Fixes #39432
-
由 Corey Farwell 提交于
Update 1.15.1 relnotes Matching what is on stable.
-
由 Corey Farwell 提交于
Explicitly mention that `Vec::reserve` is based on len not capacity I spent a good chunk of time tracking down a buffer overrun bug that resulted from me mistakenly thinking that `reserve` was based on the current capacity not the current length. It would be helpful if this were called out explicitly in the docs.
-
由 Corey Farwell 提交于
remove wrong packed struct test This UB was found by running the test under [Miri](https://github.com/solson/miri) which rejects these unsafe unaligned loads.
😄 -
由 Corey Farwell 提交于
Actually fix manifest generation The previous fix contained an error where `toml::encode` returned a runtime error, so this version just constructs a literal `toml::Value`.
-
由 Corey Farwell 提交于
Don't include directory names in shasums Right now we just run `shasum` on an absolute path but right now the shasum files only include filenames, so let's use `current_dir` and just the file name to only have the file name emitted.
-
由 Corey Farwell 提交于
Fix a misleading statement in `Iterator.nth()` The `Iterator.nth()` documentation says "Note that all preceding elements will be consumed". I assumed from that that the preceding elements would be the *only* ones that were consumed, but in fact the returned element is consumed as well. The way I read the documentation, I assumed that `nth(0)` would not discard anything (there are 0 preceding elements, and maybe it just peeks at the start of the iterator somehow), so I added a sentence clarifying that it does. I also rephrased it to avoid the stunted "i.e." phrasing.
-
由 bors 提交于
Specialize `PartialOrd<A> for [A] where A: Ord` This way we can call `cmp` instead of `partial_cmp` in the loop, removing some burden of optimizing `Option`s away from the compiler. PR #39538 introduced a regression where sorting slices suddenly became slower, since `slice1.lt(slice2)` was much slower than `slice1.cmp(slice2) == Less`. This problem is now fixed. To verify, I benchmarked this simple program: ```rust fn main() { let mut v = (0..2_000_000).map(|x| x * x * x * 18913515181).map(|x| vec![x, x ^ 3137831591]).collect::<Vec<_>>(); v.sort(); } ``` Before this PR, it would take 0.95 sec, and now it takes 0.58 sec. I also tried changing the `is_less` lambda to use `cmp` and `partial_cmp`. Now all three versions (`lt`, `cmp`, `partial_cmp`) are equally performant for sorting slices - all of them take 0.58 sec on the benchmark. Tangentially, as soon as we get `default impl`, it might be a good idea to implement a blanket default impl for `lt`, `gt`, `le`, `ge` in terms of `cmp` whenever possible. Today, those four functions by default are only implemented in terms of `partial_cmp`. r? @alexcrichton
-
由 bors 提交于
Add Emscripten-specific linker Emscripten claims to accept most GNU linker options, but in fact most of `-Wl,...` are useless for it and instead it requires some additional special options which are easier to handle in a separate trait. Currently added: - `export_symbols`: works on executables as special Emscripten case since staticlibs/dylibs aren't compiled to JS, while exports are required to be accessible from JS. Fixes #39171. - `optimize` - translates Rust's optimization level to Emscripten optimization level (whether passed via `-C opt-level=...` or `-O...`). Fixes #36899. - `debuginfo` - translates debug info; Emscripten has 5 debug levels while Rust has 3, so chose to translate `-C debuginfo=1` to `-g3` (preserves whitespace, variable and function names for easy debugging). Fixes #36901. - `no_default_libraries` - tells Emscripten to exclude `memcpy` and co. TODO (in future PR): dynamic linking via `SIDE_MODULE` / `MAIN_MODULE` mechanism.
-
由 bors 提交于
Conversions between slices and boxes This allows conversion for `Copy` slices, `str`, and `CStr` into their boxed counterparts. This also adds the method `CString::into_boxed_c_str`. I would like to add similar implementations for `OsStr` as well, but I have not figured out how.
-
由 whataloadofwhat 提交于
No longer potentially call `mem::uninitialized::<!>()` Fixes #39432
-
由 Aaron Power 提交于
-
由 Marco A L Barbosa 提交于
flock structure is defined in asm*/fcntl.h. This file on android is generated from the linux kernel source, so they are the same.
-