]> git.lizzy.rs Git - rust.git/log
rust.git
7 years agoMinor Allocator doc fix
Alex Crichton [Mon, 19 Jun 2017 14:51:00 +0000 (07:51 -0700)]
Minor Allocator doc fix

7 years agoIgnore test for not-closed issue
Alex Crichton [Mon, 19 Jun 2017 14:49:50 +0000 (07:49 -0700)]
Ignore test for not-closed issue

Confirmed on IRC that the bug isn't fully fixed, and the "resurgence" here isn't
the fault of this PR.

7 years agoCorrect location of unstable book docs
Alex Crichton [Sat, 17 Jun 2017 18:48:01 +0000 (11:48 -0700)]
Correct location of unstable book docs

7 years agoimplement Error trait for error structs added in allocator API.
Felix S. Klock II [Tue, 13 Jun 2017 19:57:49 +0000 (21:57 +0200)]
implement Error trait for error structs added in allocator API.

7 years agoplaceholder for documentation of `allocator_api` library feature.
Felix S. Klock II [Tue, 30 May 2017 15:22:24 +0000 (17:22 +0200)]
placeholder for documentation of `allocator_api` library feature.

Alpha-renamed `Allocator` to `Alloc`.

7 years agoAllocator integration in `RawVec`.
Felix S. Klock II [Wed, 24 May 2017 16:06:11 +0000 (18:06 +0200)]
Allocator integration in `RawVec`.

Includes methods exposing underlying allocator and the dellocation
routine.

Includes test illustrating a tiny `Alloc` that just bounds the total
bytes allocated.

Alpha-renamed `Allocator` to `Alloc` (and `HeapAllocator` to `HeapAlloc`).

7 years agoAdd impl of `Alloc` for the global rust heap.
Felix S. Klock II [Tue, 23 May 2017 12:47:41 +0000 (14:47 +0200)]
Add impl of `Alloc` for the global rust heap.

Alpha-renamed `HeapAllocator` to `HeapAlloc`.

`<HeapAlloc as Alloc>::alloc_zeroed` is hooked up to `heap::allocate_zeroed`.

`HeapAlloc::realloc` falls back on alloc+copy+realloc on align mismatch.

7 years agoChanged `Layout::from_size_align` to return `Option`.
Felix S. Klock II [Thu, 15 Jun 2017 20:44:56 +0000 (22:44 +0200)]
Changed `Layout::from_size_align` to return `Option`.

Added `unwrap` calls in all the places where I can infer that the
conditions are met to avoid panic (or when the calling method itself
says it will panic in such a case).

7 years agoAdd API for `Alloc` trait.
Felix S. Klock II [Tue, 23 May 2017 12:47:09 +0000 (14:47 +0200)]
Add API for `Alloc` trait.

Includes `alloc_zeroed` method that `RawVec` has come to depend on.

Exposed private `Layout::from_size_align` ctor to be `pub`, and added
explicit conditions for when it will panic (namely, when `align` is
not power-of-two, or if rounding up `size` to a multiple of `align`
overflows). Normalized all `Layout` construction to go through
`Layout::from_size_align`.

Addressed review feedback regarding `struct Layout` and zero-sized
layouts.

Restrict specification for `dealloc`, adding additional constraint
that the given alignment has to match that used to allocate the block.
(This is a maximally conservative constraint on the alignment. An open
question to resolve (before stabilization) is whether we can return to
a looser constraint such as the one previously specified.)

Split `fn realloc_in_place` into separate `fn grow_in_place` and `fn
shrink_in_place` methods, which have default impls that check against
usable_size for reuse. Make `realloc` default impl try `grow_in_place`
or `shrink_in_place` as appropriate before fallback on
alloc+copy+dealloc.

Drive-by: When reviewing calls to `padding_needed_for`, discovered
what I think was an over-conservative choice for its argument
alignment.  Namely, in `fn extend`, we automatically realign the whole
resulting layout to satisfy both old (self) and new alignments. When
the old alignment exceeds the new, this means we would insert
unnecessary padding. So I changed the code to pass in `next.align`
instead of `new_align` to `padding_needed_for`.

Replaced ref to `realloc_in_place` with `grow_in_place`/`shrink_in_place`.

Revised docs replacing my idiosyncratic style of `fn foo` with just
`foo` when referring to the function or method `foo`.

(Alpha-renamed `Allocator` to `Alloc`.)

Post-rebased, added `Debug` derive for `allocator::Excess` to satisfy
`missing_debug_implementations`.

7 years agoAuto merge of #42648 - murarth:merge-alloc-collections, r=alexcrichton
bors [Thu, 15 Jun 2017 12:37:54 +0000 (12:37 +0000)]
Auto merge of #42648 - murarth:merge-alloc-collections, r=alexcrichton

Merge crate `collections` into `alloc`

This is a necessary step in order to merge #42565

7 years agoAuto merge of #42623 - VBChunguk:fix-older-urls, r=steveklabnik
bors [Thu, 15 Jun 2017 09:52:11 +0000 (09:52 +0000)]
Auto merge of #42623 - VBChunguk:fix-older-urls, r=steveklabnik

Update older URLs pointing to the first edition of the Book

Fixes #42589.

7 years agoAuto merge of #42625 - michaelwoerister:dep-node-debug, r=nikomatsakis
bors [Thu, 15 Jun 2017 06:52:42 +0000 (06:52 +0000)]
Auto merge of #42625 - michaelwoerister:dep-node-debug, r=nikomatsakis

incr.comp.: Make DepNode's std::fmt::Debug implementation useful again.

With #42537 a regular `DepNode` only contains an opaque hash as its identifier. In most cases, this hash is actually a `DefPathHash` and we can reconstruct the `DefId` it came from via a table lookup --- and then use that to print something intelligible for debug outputs. For cases where we cannot reconstruct information from the DepNode's hash, this PR will cache a string representation of the `DepNode` in a side-table. This string is later used for debug outputs.

r? @nikomatsakis

7 years agoAuto merge of #42665 - aidanhs:aphs-simplify-init-repos, r=Mark-Simulacrum
bors [Thu, 15 Jun 2017 02:17:07 +0000 (02:17 +0000)]
Auto merge of #42665 - aidanhs:aphs-simplify-init-repos, r=Mark-Simulacrum

Use --depth to speed up pristine submodule cloning

In addition, remove all the unused cache stuff

r? @Mark-Simulacrum

7 years agoUse --depth to speed up pristine submodule cloning
Aidan Hobson Sayers [Wed, 14 Jun 2017 23:19:21 +0000 (00:19 +0100)]
Use --depth to speed up pristine submodule cloning

In addition, remove all the unused cache stuff

7 years agoUpdate older URLs pointing to the first edition of the Book
Wonwoo Choi [Mon, 12 Jun 2017 16:30:08 +0000 (01:30 +0900)]
Update older URLs pointing to the first edition of the Book

`compiler-plugins.html` is moved into the Unstable Book.
Explanation is slightly modified to match the change.

7 years agoAuto merge of #42523 - clarcharr:refactor_ops, r=brson
bors [Wed, 14 Jun 2017 11:17:31 +0000 (11:17 +0000)]
Auto merge of #42523 - clarcharr:refactor_ops, r=brson

Refactor ops.rs

This refactors ops.rs into several different modules internally, as the file has gotten quite big. None of these modules are actually exported, but this should make maintaining it much easier. I've avoided the ambition of exporting the modules because they can more easily be rearranged after this commit goes through, even though it'd be cool to potentially export the modules in the future.

I've separated the creation of each file into a separate commit so that this is easier to read.

Redone version of #42269 with the movement of `RangeArgument` moved.

7 years agoAuto merge of #42433 - marco-c:profiling, r=alexcrichton
bors [Wed, 14 Jun 2017 08:46:14 +0000 (08:46 +0000)]
Auto merge of #42433 - marco-c:profiling, r=alexcrichton

Build instruction profiler runtime as part of compiler-rt

r? @alexcrichton

This is #38608 with some fixes.

Still missing:
- [x] testing with profiler enabled on some builders (on which ones? Should I add the option to some of the already existing configurations, or create a new configuration?);
- [x] enabling distribution (on which builders?);
- [x] documentation.

7 years agoMerge crate `collections` into `alloc`
Murarth [Tue, 13 Jun 2017 22:52:59 +0000 (15:52 -0700)]
Merge crate `collections` into `alloc`

7 years agoAuto merge of #42644 - frewsxcv:rollup, r=frewsxcv
bors [Wed, 14 Jun 2017 00:40:10 +0000 (00:40 +0000)]
Auto merge of #42644 - frewsxcv:rollup, r=frewsxcv

Rollup of 6 pull requests

- Successful merges: #42408, #42428, #42496, #42597, #42636, #42638
- Failed merges: #42612

7 years agoRollup merge of #42638 - arthurpaimarnold:lexer_rule_for_octal, r=petrochenkov
Corey Farwell [Tue, 13 Jun 2017 21:15:04 +0000 (17:15 -0400)]
Rollup merge of #42638 - arthurpaimarnold:lexer_rule_for_octal, r=petrochenkov

Possible mistake in lexer rule for octal integer

Original rule allowed for digits 0-8, but octal is 0-7.

The compiler correctly prevents you from placing an 8 in an octal, so I'm assuming this is caught on a later stage. Still, shouldn't the lexer already catch this?

7 years agoRollup merge of #42636 - GuillaumeGomez:new-error-codes-next2, r=eddyb
Corey Farwell [Tue, 13 Jun 2017 21:15:03 +0000 (17:15 -0400)]
Rollup merge of #42636 - GuillaumeGomez:new-error-codes-next2, r=eddyb

Add E0617

Part of #42229.

cc @Susurrus @frewsxcv @QuietMisdreavus

7 years agoRollup merge of #42597 - mark-buer:park_timeout_example_fix, r=alexcrichton
Corey Farwell [Tue, 13 Jun 2017 21:15:02 +0000 (17:15 -0400)]
Rollup merge of #42597 - mark-buer:park_timeout_example_fix, r=alexcrichton

Capture elapsed duration in Thread::park_timeout example

`beginning_park.elapsed()` might return a larger value within the loop as compared to that checked in the loop conditional.
Since `Duration` arithmetic is checked, hitting such an edge case will cause a panic.

7 years agoRollup merge of #42496 - Razaekel:feature/integer_max-min, r=BurntSushi
Corey Farwell [Tue, 13 Jun 2017 21:15:00 +0000 (17:15 -0400)]
Rollup merge of #42496 - Razaekel:feature/integer_max-min, r=BurntSushi

Add max and min to Ord

Pursuant to issue #25663, this PR adds max and min methods with default implementations to std::cmp::Ord. It also modifies std::cmp::max|min to internally alias to Ord::max|min, so that any overrides of the default implementations are automatically used by std::cmp::max|min.

Closes #25663

7 years agoRollup merge of #42428 - scottmcm:str-get-overflow, r=sfackler
Corey Farwell [Tue, 13 Jun 2017 21:14:59 +0000 (17:14 -0400)]
Rollup merge of #42428 - scottmcm:str-get-overflow, r=sfackler

Add overflow checking for `str::get` with inclusive ranges

Fixes https://github.com/rust-lang/rust/issues/42401

Two commits here:

1. The first makes `str::index` just call `SliceIndex<str>::index`.  It's intended to have no behavior change, except where the two methods were inconsistent.
2. The second actually adds the overflow checking to `get(_mut)` (and tests for it)

7 years agoRollup merge of #42408 - bjorn3:patch-2, r=michaelwoerister
Corey Farwell [Tue, 13 Jun 2017 21:14:59 +0000 (17:14 -0400)]
Rollup merge of #42408 - bjorn3:patch-2, r=michaelwoerister

Add docs to librustc/hir/check_attr.rs

Also moved `check_attribute` up to ease reading.

7 years agoAdd E0617
Guillaume Gomez [Tue, 13 Jun 2017 19:37:13 +0000 (21:37 +0200)]
Add E0617

7 years agochanged upper bound digit in octal rule to 7
Arthur Arnold [Tue, 13 Jun 2017 20:08:12 +0000 (17:08 -0300)]
changed upper bound digit in octal rule to 7

7 years agoAdd libprofiler_builtins to the list of paths for the rust-src component
Marco Castelluccio [Tue, 13 Jun 2017 19:22:43 +0000 (20:22 +0100)]
Add libprofiler_builtins to the list of paths for the rust-src component

7 years agoFix gcc version required by libprofiler_builtins
Marco Castelluccio [Tue, 13 Jun 2017 19:21:58 +0000 (20:21 +0100)]
Fix gcc version required by libprofiler_builtins

7 years agoAdd docs to librustc/hir/check_attr.rs
bjorn3 [Sat, 3 Jun 2017 16:14:29 +0000 (18:14 +0200)]
Add docs to librustc/hir/check_attr.rs

7 years agodep_node: Add comment about method specialization being just a performance optimization
Michael Woerister [Tue, 13 Jun 2017 15:11:53 +0000 (17:11 +0200)]
dep_node: Add comment about method specialization being just a performance optimization

7 years agoAuto merge of #42627 - michaelwoerister:no-ident-in-def-path, r=eddyb
bors [Tue, 13 Jun 2017 13:59:38 +0000 (13:59 +0000)]
Auto merge of #42627 - michaelwoerister:no-ident-in-def-path, r=eddyb

incr.comp.: Don't use Ident in DefPath because that's unstable across compilation sessions

Fixes https://github.com/rust-lang/rust/issues/42550.

cc @jseyfried @nikomatsakis

r? @eddyb

7 years agoincr.comp.: Don't use Ident in DefPath because that's unstable across compilation...
Michael Woerister [Tue, 13 Jun 2017 11:47:13 +0000 (13:47 +0200)]
incr.comp.: Don't use Ident in DefPath because that's unstable across compilation sessions.

7 years agoAuto merge of #42576 - nikomatsakis:incr-comp-less-tasks, r=michaelwoerister
bors [Tue, 13 Jun 2017 11:24:24 +0000 (11:24 +0000)]
Auto merge of #42576 - nikomatsakis:incr-comp-less-tasks, r=michaelwoerister

prune some tasks and depnode variants

Pick some low-hanging fruit towards the goal of removing the older tasks.

r? @michaelwoerister

7 years agoincr.comp.: Make DepNode's std::fmt::Debug implementation useful again.
Michael Woerister [Mon, 12 Jun 2017 15:00:55 +0000 (17:00 +0200)]
incr.comp.: Make DepNode's std::fmt::Debug implementation useful again.

7 years agoAuto merge of #42608 - ollie27:rustdoc_variant_reexport, r=QuietMisdreavus
bors [Tue, 13 Jun 2017 08:54:23 +0000 (08:54 +0000)]
Auto merge of #42608 - ollie27:rustdoc_variant_reexport, r=QuietMisdreavus

rustdoc: Fix missing enum variant reexports

Fixes #35488

7 years agoAuto merge of #42471 - nrc:save-sig-2, r=eddyb
bors [Tue, 13 Jun 2017 06:20:12 +0000 (06:20 +0000)]
Auto merge of #42471 - nrc:save-sig-2, r=eddyb

save-analysis: signatures for everything!

7 years agoUpdate RLS again
Nick Cameron [Mon, 12 Jun 2017 23:35:04 +0000 (11:35 +1200)]
Update RLS again

7 years agoAuto merge of #42566 - arthurprs:update-jemalloc, r=alexcrichton
bors [Tue, 13 Jun 2017 02:30:12 +0000 (02:30 +0000)]
Auto merge of #42566 - arthurprs:update-jemalloc, r=alexcrichton

Revert "Update jemalloc to 4.5.0"

This reverts commit 65d0be3b7b540145c22409b1a79f7d263422e19b due to bug https://github.com/jemalloc/jemalloc/issues/895.

CC @alexcrichton

7 years agoFill in tracking issue for the profile feature
Marco Castelluccio [Mon, 12 Jun 2017 22:10:28 +0000 (23:10 +0100)]
Fill in tracking issue for the profile feature

7 years agoRedefine strdup, open, fdopen as _strdup, _open, _fdopen to avoid linking errors...
Marco Castelluccio [Mon, 12 Jun 2017 22:08:57 +0000 (23:08 +0100)]
Redefine strdup, open, fdopen as _strdup, _open, _fdopen to avoid linking errors on MSVC

7 years agoCompile WindowsMMap too on MSVC
Marco Castelluccio [Mon, 12 Jun 2017 22:08:08 +0000 (23:08 +0100)]
Compile WindowsMMap too on MSVC

7 years agorustdoc: Fix missing enum variant reexports
Oliver Middleton [Mon, 12 Jun 2017 18:00:09 +0000 (19:00 +0100)]
rustdoc: Fix missing enum variant reexports

7 years agoconsider closures/ty-fn-defs when making trait selection keys
Niko Matsakis [Mon, 12 Jun 2017 19:56:01 +0000 (15:56 -0400)]
consider closures/ty-fn-defs when making trait selection keys

Fixes #42602.

7 years agokill dep-graph-unrelated test
Niko Matsakis [Mon, 12 Jun 2017 19:31:24 +0000 (15:31 -0400)]
kill dep-graph-unrelated test

Doesnt' seem to add much value, and since we don't track
`TransCrateItem` anymore, it's not clear what to translate it to.

7 years agokill various DepNode variants
Niko Matsakis [Sat, 10 Jun 2017 01:20:47 +0000 (21:20 -0400)]
kill various DepNode variants

7 years agokill various tasks we no longer need and remove outdated README text
Niko Matsakis [Thu, 8 Jun 2017 17:22:57 +0000 (13:22 -0400)]
kill various tasks we no longer need and remove outdated README text

In the case of `TransCrateItem`, I had to tweak the tests a bit, but
it's a concept that doesn't work well under new system.

7 years agoAuto merge of #42605 - frewsxcv:rollup, r=frewsxcv
bors [Mon, 12 Jun 2017 16:40:04 +0000 (16:40 +0000)]
Auto merge of #42605 - frewsxcv:rollup, r=frewsxcv

Rollup of 4 pull requests

- Successful merges: #42579, #42586, #42592, #42594
- Failed merges:

7 years agoRollup merge of #42594 - ollie27:rustdoc_assoc_type_links, r=steveklabnik
Corey Farwell [Mon, 12 Jun 2017 16:39:49 +0000 (12:39 -0400)]
Rollup merge of #42594 - ollie27:rustdoc_assoc_type_links, r=steveklabnik

rustdoc: Link directly to associated types

Rather than just linking to the trait.

Also simplifies the logic used to decide whether to render the full
QPath.

7 years agoRollup merge of #42592 - ollie27:rustdoc_empty_modules, r=steveklabnik
Corey Farwell [Mon, 12 Jun 2017 16:39:48 +0000 (12:39 -0400)]
Rollup merge of #42592 - ollie27:rustdoc_empty_modules, r=steveklabnik

rustdoc: Stop stripping empty modules

There is no good reason to strip empty modules with no documentation and
doing so causes subtle problems.

Fixes #42590

7 years agoRollup merge of #42586 - ideasman42:patch-1, r=steveklabnik
Corey Farwell [Mon, 12 Jun 2017 16:39:47 +0000 (12:39 -0400)]
Rollup merge of #42586 - ideasman42:patch-1, r=steveklabnik

Docstring: add missing term 'disjoint' from matches, rmatches

This follows `match_indices`

7 years agoRollup merge of #42579 - maccoda:maccoda/env_docs, r=steveklabnik
Corey Farwell [Mon, 12 Jun 2017 16:39:46 +0000 (12:39 -0400)]
Rollup merge of #42579 - maccoda:maccoda/env_docs, r=steveklabnik

env docs completion.

Should be closing #29351 with the alignment of the iterators to the template.

7 years agoAuto merge of #42570 - birkenfeld:patch-3, r=frewsxcv
bors [Mon, 12 Jun 2017 13:59:39 +0000 (13:59 +0000)]
Auto merge of #42570 - birkenfeld:patch-3, r=frewsxcv

Add dedicated docstrings to Sum/Product impl of Result

(and fix a minor grammar typo below)

7 years agoAuto merge of #42537 - michaelwoerister:tcx-for-dep-node, r=nikomatsakis
bors [Mon, 12 Jun 2017 11:39:35 +0000 (11:39 +0000)]
Auto merge of #42537 - michaelwoerister:tcx-for-dep-node, r=nikomatsakis

incr.comp.: Make DepNode `Copy` and valid across compilation sessions

This PR moves `DepNode` to a representation that does not need retracing and thus simplifies comparing dep-graphs from different compilation sessions. The code also gets a lot simpler in many places, since we don't need the generic parameter on `DepNode` anymore.  See https://github.com/rust-lang/rust/issues/42294 for details.

~~NOTE: Only the last commit of this is new, the rest is already reviewed in https://github.com/rust-lang/rust/pull/42504.~~

This PR is almost done but there are some things I still want to do:
- [x] Add some module-level documentation to `dep_node.rs`, explaining especially what the `define_dep_nodes!()` macro is about.
- [x] Do another pass over the dep-graph loading logic. I suspect that we can get rid of building the `edges` map and also use arrays instead of hash maps in some places.

cc @rust-lang/compiler
r? @nikomatsakis

7 years agoAdd dedicated docstrings to Sum/Product impl of Result
Georg Brandl [Fri, 9 Jun 2017 20:34:18 +0000 (22:34 +0200)]
Add dedicated docstrings to Sum/Product impl of Result

(and fix a minor grammar typo below)

7 years agoAuto merge of #42572 - ollie27:rustdoc_create_dir_all, r=GuillaumeGomez
bors [Mon, 12 Jun 2017 08:49:51 +0000 (08:49 +0000)]
Auto merge of #42572 - ollie27:rustdoc_create_dir_all, r=GuillaumeGomez

rustdoc: Use `create_dir_all` to create output directory

Currently rustdoc will fail if passed `-o foo/doc` if the `foo`
directory doesn't exist.

Also remove unneeded `mkdir` as `create_dir_all` can now handle
concurrent invocations since #39799.

7 years agoAdd some documentation to the dep_node module.
Michael Woerister [Fri, 9 Jun 2017 15:58:49 +0000 (17:58 +0200)]
Add some documentation to the dep_node module.

7 years agoCapture elapsed duration in Thread::park_timeout example
Mark Buer [Mon, 12 Jun 2017 04:03:25 +0000 (13:33 +0930)]
Capture elapsed duration in Thread::park_timeout example

7 years agoAuto merge of #42419 - ucarion:ucarion-explain-rc-arc-abbrev, r=frewsxcv
bors [Mon, 12 Jun 2017 04:08:14 +0000 (04:08 +0000)]
Auto merge of #42419 - ucarion:ucarion-explain-rc-arc-abbrev, r=frewsxcv

Explicate what "Rc" and "Arc" stand for.

A person on the weekly "Easy Questions" Reddit thread [was mystified by what `Arc`/`Rc` means](https://www.reddit.com/r/rust/comments/6dyud9/hey_rustaceans_got_an_easy_question_ask_here/did87ds/). Though this is explained in various places, it's not mentioned in the documentation directly.

This PR adds an explanation of the `Rc`/`Arc` acronyms to their respective documentations. There are two things I'm not sure of:

* Does "Rc" mean "Reference Count**er**" or "Reference Count**ed**"? ~~I went with the former.~~ *Edit:* I've changed this to use the latter alternative.
* Should this information be spelled out elsewhere, such as in the docs for the `rc` module?

7 years agoFix rebasing error
Nick Cameron [Mon, 12 Jun 2017 02:29:59 +0000 (14:29 +1200)]
Fix rebasing error

7 years agoFix a bug where Json API save-analysis was not labelled as such
Nick Cameron [Tue, 6 Jun 2017 04:12:11 +0000 (16:12 +1200)]
Fix a bug where Json API save-analysis was not labelled as such

7 years agoImpl and trait item sigs
Nick Cameron [Tue, 6 Jun 2017 00:19:54 +0000 (12:19 +1200)]
Impl and trait item sigs

7 years agoImplement a bunch more signature functions
Nick Cameron [Mon, 5 Jun 2017 04:42:39 +0000 (16:42 +1200)]
Implement a bunch more signature functions

7 years agoSmall refactoring + docs
Nick Cameron [Wed, 31 May 2017 04:13:27 +0000 (16:13 +1200)]
Small refactoring + docs

7 years agoUse the new signature stuff
Nick Cameron [Wed, 31 May 2017 03:59:48 +0000 (15:59 +1200)]
Use the new signature stuff

And fix a couple of bugs

7 years agoUpdate rls-data
Nick Cameron [Tue, 30 May 2017 00:01:48 +0000 (12:01 +1200)]
Update rls-data

7 years agoAdd a sig module to save-analysis
Nick Cameron [Mon, 29 May 2017 22:37:11 +0000 (10:37 +1200)]
Add a sig module to save-analysis

Generates signatures for use in Rustdoc and similar tools.

7 years agoAuto merge of #42585 - GuillaumeGomez:E0609, r=Susurrus
bors [Sun, 11 Jun 2017 23:51:04 +0000 (23:51 +0000)]
Auto merge of #42585 - GuillaumeGomez:E0609, r=Susurrus

Add E0609

Part of #42229.

cc @Susurrus

7 years agoAdd E0610
Guillaume Gomez [Sun, 11 Jun 2017 17:48:46 +0000 (19:48 +0200)]
Add E0610

7 years agoAuto merge of #42155 - seanmonstar:unimplemented, r=sfackler
bors [Sun, 11 Jun 2017 18:56:27 +0000 (18:56 +0000)]
Auto merge of #42155 - seanmonstar:unimplemented, r=sfackler

core: allow messages in unimplemented!() macro

This makes `unimplemented!()` match `unreachable!()`, allowing a message and possible formatting to be provided to better explain what and/or why something is not implemented.

I've used this myself in hyper for a while, include the type and method name, to better help while prototyping new modules, like `unimplemented!("Conn::poll_complete")`, or `unimplemented!("Conn::poll; state={:?}", state)`.

7 years agoAdd E0609
Guillaume Gomez [Sat, 10 Jun 2017 19:19:40 +0000 (21:19 +0200)]
Add E0609

7 years agorustdoc: Stop stripping empty modules
Oliver Middleton [Sun, 11 Jun 2017 12:28:45 +0000 (13:28 +0100)]
rustdoc: Stop stripping empty modules

There is no good reason to strip empty modules with no documentation and
doing so causes subtle problems.

7 years agorustdoc: Link directly to associated types
Oliver Middleton [Sun, 11 Jun 2017 17:20:48 +0000 (18:20 +0100)]
rustdoc: Link directly to associated types

Rather than just linking to the trait.

Also simplifies the logic used to decide whether to render the full
QPath.

7 years agoAuto merge of #40454 - djzin:fast-swap, r=sfackler
bors [Sun, 11 Jun 2017 16:40:52 +0000 (16:40 +0000)]
Auto merge of #40454 - djzin:fast-swap, r=sfackler

speed up mem::swap

I would have thought that the mem::swap code didn't need an intermediate variable precisely because the pointers are guaranteed never to alias. And.. it doesn't! It seems that llvm will also auto-vectorize this case for large structs, but alas it doesn't seem to have all the aliasing info it needs and so will add redundant checks (and even not bother with autovectorizing for small types). Looks like a lot of performance could still be gained here, so this might be a good test case for future optimizer improvements.

Here are the current benchmarks for the simd version of mem::swap; the timings are in cycles (code below) measured with 10 iterations. The timings for sizes > 32 which are not a multiple of 8 tend to be ever so slightly faster in the old code, but not always. For large struct sizes (> 1024) the new code shows a marked improvement.

\* = latest commit
† = subtracted from other measurements

| arr_length | noop<sup>†</sup> | rust_stdlib | simd_u64x4\* | simd_u64x8
|------------------|------------|-------------------|-------------------|-------------------
8|80|90|90|90
16|72|177|177|177
24|32|76|76|76
32|68|188|112|188
40|32|80|60|80
48|32|84|56|84
56|32|108|72|108
64|32|108|72|76
72|80|350|220|230
80|80|350|220|230
88|80|420|270|270
96|80|420|270|270
104|80|500|320|320
112|80|490|320|320
120|72|528|342|342
128|48|360|234|234
136|72|987|387|387
144|80|1070|420|420
152|64|856|376|376
160|68|804|400|400
168|80|1060|520|520
176|80|1070|520|520
184|32|464|228|228
192|32|504|228|228
200|32|440|248|248
208|72|987|573|573
216|80|1464|220|220
224|48|852|450|450
232|72|1182|666|666
240|32|428|288|288
248|32|428|308|308
256|80|860|770|770
264|80|1130|820|820
272|80|1340|820|820
280|80|1220|870|870
288|72|1227|804|804
296|72|1356|849|849

7 years agoAuto merge of #42569 - birkenfeld:patch-2, r=frewsxcv
bors [Sun, 11 Jun 2017 14:29:56 +0000 (14:29 +0000)]
Auto merge of #42569 - birkenfeld:patch-2, r=frewsxcv

Simplify FromIterator example of Result

The previous version may be clearer for newcomers, but this is how you'd write it idiomaticly.

7 years agoAuto merge of #42580 - tommyip:import-error, r=petrochenkov
bors [Sat, 10 Jun 2017 21:35:31 +0000 (21:35 +0000)]
Auto merge of #42580 - tommyip:import-error, r=petrochenkov

Only emit one error for `use foo::self;`

Currently `use foo::self;` would emit both E0429 and E0432. This commit silence the latter one (assuming `foo` is a valid module).

Fixes #42559

7 years agoAdd missing term 'disjoint' from matches, rmatches
Campbell Barton [Sat, 10 Jun 2017 20:17:12 +0000 (06:17 +1000)]
Add missing term 'disjoint' from matches, rmatches

This follows `match_indices`

7 years agoAuto merge of #42563 - eddyb:infer, r=nikomatsakis
bors [Sat, 10 Jun 2017 19:21:24 +0000 (19:21 +0000)]
Auto merge of #42563 - eddyb:infer, r=nikomatsakis

Disentangle InferCtxt, MemCategorizationContext and ExprUseVisitor.

At some point in the past, `InferCtxt` started being used to replace an old "`Typer`" abstraction, which provided access to `TypeckTables` and had optionally type inference to account for.
That didn't play so nicely with the `'gcx`/`'tcx` split and I had to introduce `borrowck_fake_infer_ctxt`.
The situation wasn't great but it wasn't too painful inside `rustc` itself.

Recently I've found that method being used in clippy, which does need EUV (before we make it plausible to run lints on HAIR or MIR), and set out to separate inference from tables, for the sake of lint authors.
Also fixes #42435 to make it trivial to compute type layout or use EUV from lints.

The remaining uses of `TypeckTables` in `InferCtxt` are for closure kinds and signatures, used in trait selection and projection normalization. The solution there is likely to add them as bounds to `ParamEnv`.

r? @nikomatsakis
cc @mcarton @llogiq @Manishearth

7 years agorustc: make the comon case of tcx.infer_ctxt(()) nicer.
Eduard-Mihai Burtescu [Fri, 9 Jun 2017 07:55:16 +0000 (10:55 +0300)]
rustc: make the comon case of tcx.infer_ctxt(()) nicer.

7 years agorustc: make InferCtxt optional in MemCategorizationContext.
Eduard-Mihai Burtescu [Thu, 8 Jun 2017 20:57:16 +0000 (23:57 +0300)]
rustc: make InferCtxt optional in MemCategorizationContext.

7 years agoOnly emit one error for `use foo::self;`
Tommy Ip [Sat, 10 Jun 2017 09:55:19 +0000 (10:55 +0100)]
Only emit one error for `use foo::self;`

Currently `use foo::self;` would emit both E0429 and E0432. This
commit silence the latter one (assuming `foo` is a valid module).

Fixes #42559

7 years agorustc: do not depend on infcx.tables in MemCategorizationContext.
Eduard-Mihai Burtescu [Thu, 8 Jun 2017 20:57:01 +0000 (23:57 +0300)]
rustc: do not depend on infcx.tables in MemCategorizationContext.

7 years agoAuto merge of #42556 - scottmcm:ctz-nz, r=BurntSushi
bors [Sat, 10 Jun 2017 09:11:36 +0000 (09:11 +0000)]
Auto merge of #42556 - scottmcm:ctz-nz, r=BurntSushi

Get LLVM to stop generating dead assembly in next_power_of_two

It turns out that LLVM can turn `@llvm.ctlz.i64(_, true)` into `@llvm.ctlz.i64(_, false)` ([`ctlz`](http://llvm.org/docs/LangRef.html#llvm-ctlz-intrinsic)) where valuable, but never does the opposite.  That leads to some silly assembly getting generated in certain cases.

A contrived-but-clear example https://is.gd/VAIKuC:
```rust
fn foo(x:u64) -> u32 {
    if x == 0 { return !0; }
    x.leading_zeros()
}
```
Generates
```asm
testq %rdi, %rdi
je .LBB0_1
je .LBB0_3    ; <-- wha?
bsrq %rdi, %rax
xorq $63, %rax
retq
.LBB0_1:
movl $-1, %eax
retq
.LBB0_3:
movl $64, %eax  ; <-- dead
retq
```

I noticed this in `next_power_of_two`, which without this PR generates the following:
```asm
cmpq $2, %rcx
jae .LBB1_2
movl $1, %eax
retq
.LBB1_2:
decq %rcx
je .LBB1_3
bsrq %rcx, %rcx
xorq $63, %rcx
jmp .LBB1_5
.LBB1_3:
movl $64, %ecx  ; <-- dead
.LBB1_5:
movq $-1, %rax
shrq %cl, %rax
incq %rax
retq
```

And with this PR becomes
```asm
cmpq $2, %rcx
jae .LBB0_2
movl $1, %eax
retq
.LBB0_2:
decq %rcx
bsrq %rcx, %rcx
xorl $63, %ecx
movq $-1, %rax
shrq %cl, %rax
incq %rax
retq
```

7 years agoAuto merge of #42533 - Mark-Simulacrum:macro-parse-speed-small, r=jseyfried
bors [Sat, 10 Jun 2017 06:50:12 +0000 (06:50 +0000)]
Auto merge of #42533 - Mark-Simulacrum:macro-parse-speed-small, r=jseyfried

Speed up expansion

This reduces duplication, thereby increasing expansion speed. Based on tests with rust-uinput, this produces a 29x performance win (440 seconds to 15 seconds). I want to land this first, since it's a minimal patch, but with more changes to the macro parsing I can get down to 12 seconds locally.

There is one FIXME added to the code that I'll keep for now since changing it will spread outward and increase the patch size, I think.

Fixes #37074.

r? @jseyfried
cc @oberien

7 years agoenv docs completion.
Dylan Maccora [Sat, 10 Jun 2017 06:19:28 +0000 (16:19 +1000)]
env docs completion.

7 years agoAuto merge of #42573 - frewsxcv:rollup, r=frewsxcv
bors [Fri, 9 Jun 2017 23:19:49 +0000 (23:19 +0000)]
Auto merge of #42573 - frewsxcv:rollup, r=frewsxcv

Rollup of 5 pull requests

- Successful merges: #42307, #42385, #42531, #42551, #42558
- Failed merges:

7 years agoMove Drop to module.
Clar Charr [Thu, 8 Jun 2017 02:16:16 +0000 (22:16 -0400)]
Move Drop to module.

7 years agoMove CoerceUnsized to module.
Clar Charr [Thu, 8 Jun 2017 02:15:05 +0000 (22:15 -0400)]
Move CoerceUnsized to module.

7 years agoMove Index to module.
Clar Charr [Thu, 8 Jun 2017 02:14:13 +0000 (22:14 -0400)]
Move Index to module.

7 years agoMove Deref to module.
Clar Charr [Thu, 8 Jun 2017 02:13:31 +0000 (22:13 -0400)]
Move Deref to module.

7 years agoMove Try to module.
Clar Charr [Thu, 8 Jun 2017 02:12:18 +0000 (22:12 -0400)]
Move Try to module.

7 years agoMove placement new operators to module.
Clar Charr [Thu, 8 Jun 2017 02:10:21 +0000 (22:10 -0400)]
Move placement new operators to module.

7 years agoMove bit ops to module.
Clar Charr [Thu, 8 Jun 2017 02:08:14 +0000 (22:08 -0400)]
Move bit ops to module.

7 years agoMove arithmetic ops to module.
Clar Charr [Thu, 8 Jun 2017 02:04:46 +0000 (22:04 -0400)]
Move arithmetic ops to module.

7 years agoMove Fn to module.
Clar Charr [Thu, 8 Jun 2017 01:59:57 +0000 (21:59 -0400)]
Move Fn to module.

7 years agoRollup merge of #42558 - xfq:patch-1, r=steveklabnik
Corey Farwell [Fri, 9 Jun 2017 22:29:29 +0000 (18:29 -0400)]
Rollup merge of #42558 - xfq:patch-1, r=steveklabnik

Update TRPL link in README.md

7 years agoRollup merge of #42551 - tshepang:better-cell-replace-docs, r=steveklabnik
Corey Farwell [Fri, 9 Jun 2017 22:29:28 +0000 (18:29 -0400)]
Rollup merge of #42551 - tshepang:better-cell-replace-docs, r=steveklabnik

doc: a more complete explanation, and a better example

7 years agoRollup merge of #42531 - mmatyas:aarch64_compile-test_fix, r=nagisa
Corey Farwell [Fri, 9 Jun 2017 22:29:27 +0000 (18:29 -0400)]
Rollup merge of #42531 - mmatyas:aarch64_compile-test_fix, r=nagisa

Ignore variadic FFI test on AArch64

I've cross compiled Rust to `aarch64-linux-gnu`, and tried to run the compile-fail tests, but `variadic-ffi.rs` fails with the following error:

```
The ABI `"stdcall"` is not supported for the current target [E0570]
```

The test seems to be ignored on (32-bit) ARM, so I turned it off for AArch64 too.

7 years agoRollup merge of #42385 - Manishearth:its-a-vec, r=steveklabnik
Corey Farwell [Fri, 9 Jun 2017 22:29:26 +0000 (18:29 -0400)]
Rollup merge of #42385 - Manishearth:its-a-vec, r=steveklabnik

Vec<T> is pronounced 'vec'

I've never heard it pronounced "vector". Is this an outdated recommendation?

(or have I been doing it wrong all this time)

r? @steveklabnik

7 years agoRollup merge of #42307 - clarcharr:js-license, r=frewsxcv
Corey Farwell [Fri, 9 Jun 2017 22:29:25 +0000 (18:29 -0400)]
Rollup merge of #42307 - clarcharr:js-license, r=frewsxcv

Make rustdoc.js use license comments.

This will ensure that JS minifiers and the like will preserve the license statement even after minimisation.