- 13 1月, 2018 2 次提交
- 12 1月, 2018 1 次提交
-
-
由 bors 提交于
macros: improve 1.0/2.0 interaction This PR supports using unhygienic macros from hygienic macros without breaking the latter's hygiene. ```rust // crate A: #[macro_export] macro_rules! m1 { () => { f(); // unhygienic: this macro needs `f` in its environment fn g() {} // (1) unhygienic: `g` is usable outside the macro definition } } // crate B: #![feature(decl_macro)] extern crate A; use A::m1; macro m2() { fn f() {} // (2) m1!(); // After this PR, `f()` in the expansion resolves to (2), not (3) g(); // After this PR, this resolves to `fn g() {}` from the above expansion. // Today, it is a resolution error. } fn test() { fn f() {} // (3) m2!(); // Today, `m2!()` can see (3) even though it should be hygienic. fn g() {} // Today, this conflicts with `fn g() {}` from the expansion, even though it should be hygienic. } ``` Once this PR lands, you can make an existing unhygienic macro hygienic by wrapping it in a hygienic macro. There is an [example](https://github.com/rust-lang/rust/pull/46551/commits/b766fa887dc0e4b923a38751fe4d570e35a75710) of this in the tests. r? @nrc
-
- 11 1月, 2018 3 次提交
-
-
由 bors 提交于
Add iterator method specialisations to Range* Add specialised implementations of `max` for `Range`, and `last`, `min` and `max` for `RangeInclusive`, all of which lead to significant advantages in the generated assembly on x86. Note that adding specialisations of `min` and `last` for `Range` led to no benefit, and adding `sum` for `Range` and `RangeInclusive` led to type inference issues (though this is possibly still worthwhile considering the performance gain). This addresses some of the concerns in #39975.
-
由 bors 提交于
Replace uses of DepGraph.in_ignore with DepGraph.with_ignore I currently plan to track tasks in thread local storage. Ignoring things in a closure ensures that the ignore tasks do not overlap the beginning or end of any other task. The TLS API will also use a closure to change a TLS value, so having the ignore task be a closure also helps there. It also adds `assert_ignored` which is used before a `TyCtxt` is created. Instead of adding a new ignore task this simply ensures that we are in a context where reads are ignored. r? @michaelwoerister
-
由 bors 提交于
[incremental] Specialize encoding and decoding of Fingerprints This saves the storage space used by about 32 bits per `Fingerprint`. On average, this reduces the size of the `/target/{mode}/incremental` folder by roughly 5% [Full details here](https://gist.github.com/wesleywiser/264076314794fbd6a4c110d7c1adc43e). Fixes #45875 r? @michaelwoerister
-
- 10 1月, 2018 16 次提交
-
-
由 bors 提交于
Fix built-in indexing not being used where index type wasn't "obviously" usize Fixes #33903 Fixes #46095 This PR was made possible thanks to the generous help of @EddyB Following the example of binary operators, builtin checking for indexing has been moved from the typecheck stage to a writeback stage, after type constraints have been resolved.
-
由 bors 提交于
Implement `Write` for `Cursor<&mut Vec<T>>` Fixes #30132 r? @dtolnay (I'm just going through `feature-accepted` issues I swear
😛 ) -
由 bors 提交于
Rollup of 5 pull requests - Successful merges: #46762, #46777, #47262, #47285, #47301 - Failed merges:
-
由 Corey Farwell 提交于
Fix error index display Fixes #47284. r? @QuietMisdreavus
-
由 Corey Farwell 提交于
Fixed a typo in the compile_error docs Noticed a typo and fixed it.
-
由 Corey Farwell 提交于
Account for `pub` in `const` -> `static` suggestion Fix #45562.
-
由 Corey Farwell 提交于
Deprecate [T]::rotate in favor of [T]::rotate_{left,right}. Background ========== Slices currently have an **unstable** [`rotate`] method which rotates elements in the slice to the _left_ N positions. [Here][tracking] is the tracking issue for this unstable feature. ```rust let mut a = ['a', 'b' ,'c', 'd', 'e', 'f']; a.rotate(2); assert_eq!(a, ['c', 'd', 'e', 'f', 'a', 'b']); ``` Proposal ======== Deprecate the [`rotate`] method and introduce `rotate_left` and `rotate_right` methods. ```rust let mut a = ['a', 'b' ,'c', 'd', 'e', 'f']; a.rotate_left(2); assert_eq!(a, ['c', 'd', 'e', 'f', 'a', 'b']); ``` ```rust let mut a = ['a', 'b' ,'c', 'd', 'e', 'f']; a.rotate_right(2); assert_eq!(a, ['e', 'f', 'a', 'b', 'c', 'd']); ``` Justification ============= I used this method today for my first time and (probably because I’m a naive westerner who reads LTR) was surprised when the docs mentioned that elements get rotated in a left-ward direction. I was in a situation where I needed to shift elements in a right-ward direction and had to context switch from the main problem I was working on and think how much to rotate left in order to accomplish the right-ward rotation I needed. Ruby’s `Array.rotate` shifts left-ward, Python’s `deque.rotate` shifts right-ward. Both of their implementations allow passing negative numbers to shift in the opposite direction respectively. The current `rotate` implementation takes an unsigned integer argument which doesn't allow the negative number behavior. Introducing `rotate_left` and `rotate_right` would: - remove ambiguity about direction (alleviating need to read docs
😉 ) - make it easier for people who need to rotate right [`rotate`]: https://doc.rust-lang.org/std/primitive.slice.html#method.rotate [tracking]: https://github.com/rust-lang/rust/issues/41891 -
由 Corey Farwell 提交于
Stabilize the panic_col feature I've added the panic_col feature in PR #42938. Now it's time to stabilize it! Closes #42939.
-
由 est31 提交于
-
由 est31 提交于
I've added the panic_col feature in PR #42938. Now it's time to stabilize it! Closes #42939.
-
由 Wesley Wiser 提交于
This saves the storage space used by about 32 bits per `Fingerprint`. On average, this reduces the size of the `/target/{mode}/incremental` folder by roughly 5%. Fixes #45875
-
由 bors 提交于
Upgrade liblibc to upstream version 0.2.35. This version of liblibc is a prerequisite for getting libstd to build on CloudABI.
-
由 Guillaume Gomez 提交于
-
由 varkor 提交于
-
由 John Kåre Alsaker 提交于
-
由 bors 提交于
Shorten names of some compiler generated artifacts. This PR makes the compiler mangle codegen unit names by default. The name of every codegen unit name will now be a random string of 16 characters. It also makes the file extensions of some intermediate compiler products shorter. Hopefully, these changes will reduce the pressure on tools with path length restrictions like buildbot. The change should also solve problems with case-insensitive file system. cc #47186 and #47222 r? @alexcrichton
-
- 09 1月, 2018 15 次提交
-
-
由 bors 提交于
Clean emitted diagnostics when `reset_err_count` is called. When external tools like `rustfmt` calls to `reset_err_count` for handler reusing, it will set the error count on the handler to 0, but since https://github.com/rust-lang/rust/pull/47146 the handler will contain status that will prevent the error count to be bumped if this handler is reused. This caused `rustfmt` idempotency tests to fail: https://github.com/rust-lang-nursery/rustfmt/issues/2338 Fixes: https://github.com/rust-lang-nursery/rustfmt/issues/2338
-
由 bors 提交于
Rollup of 10 pull requests - Successful merges: #47210, #47233, #47246, #47254, #47256, #47258, #47259, #47263, #47270, #47272 - Failed merges: #47248
-
由 Andrew Brinker 提交于
-
由 kennytm 提交于
Add missing links r? @QuietMisdreavus (please wait for CI, I have a few doubts about the `Write` trait links...)
-
由 kennytm 提交于
rustdoc: Don't import macros from private imports Fixes #47038
-
由 kennytm 提交于
Add HashMap::remove_entry Implements #46344 r? @dtolnay
-
由 kennytm 提交于
Rename ReprExtern to ReprC … and similarily rename a few other field and locals that mentioned "extern repr".
-
由 kennytm 提交于
Replace empty array hack with repr(align) As a side effect, this fixes the warning about repr(C, simd) that has been reported during x86_64 windows builds since #47111 (see also: #47103) r? @alexcrichton
-
由 kennytm 提交于
Make wasm obey backtrace feature, like other targets E.g. https://github.com/rust-lang/rust/blob/6828cf90146c7fefc4ba4f16dffe75f763f2d910/src/libstd/sys/unix/mod.rs#L40-L41
-
由 kennytm 提交于
Remove unused LLVM related code Ticks a few more boxes on #46437
-
由 kennytm 提交于
Rollup merge of #47210 - zackmdavis:the_3rd_of_2_hardest_problems_in_computer_science, r=QuietMisdreavus fix the doc-comment-decoration-trimming edge-case rustdoc ICE This `horizontal_trim` function strips the leading whitespace from doc-comments that have a left-asterisk-margin: ``` /** * You know what I mean— * * comments like this! */ ``` The index of the column of asterisks is `i`, and if trimming is deemed possible, we slice each line from `i+1` to the end of the line. But if, in particular, `i` was 0 _and_ there was an empty line (as in the example given in the reporting issue), we ended up panicking trying to slice an empty string from 0+1 (== 1). Let's tighten our check to say that we can't trim when `i` is even the same as the length of the line, not just when it's greater. (Any such cases would panic trying to slice `line` from `line.len()+1`.) Resolves #47197.
-
由 Rafael Fernández López 提交于
When external tools like `rustfmt` calls to `reset_err_count` for handler reusing, it will set the error count on the handler to 0, but since https://github.com/rust-lang/rust/pull/47146 the handler will contain status that will prevent the error count to be bumped if this handler is reused. This caused `rustfmt` idempotency tests to fail: https://github.com/rust-lang-nursery/rustfmt/issues/2338 Fixes: https://github.com/rust-lang-nursery/rustfmt/issues/2338
-
由 Ed Schouten 提交于
-
- 08 1月, 2018 3 次提交
-
-
由 Ed Schouten 提交于
This version of liblibc is a prerequisite for getting libstd to build on CloudABI.
-
由 bors 提交于
Make double ended searchers use dependent fingers (fixes #47175) r? @burntsushi @alexcrichton needs uplift to beta
-
由 Guillaume Gomez 提交于
-