Commit graph

65099 commits

Author SHA1 Message Date
Mark Simulacrum 9b4c4d001f Rollup merge of #42714 - alexbool:master, r=alexcrichton
Inline StrSearcher::haystack()
2017-06-18 10:34:09 -06:00
Mark Simulacrum 7eff974454 Rollup merge of #42695 - Mark-Simulacrum:fix-verbose, r=alexcrichton
Use custom cargo/rustc paths when parsing flags.

Fixes https://github.com/rust-lang/rust/issues/41779, probably also https://github.com/rust-lang/rust/issues/42543 (I think they're duplicates).

I'm not entirely happy with the implementation, since it means we parse the configuration twice, but it's the minimal solution. I think the other choice is to move both calls to Config::parse inside Flags::parse and merge them, but I don't know if that's a good idea.

r? @alexcrichton
2017-06-18 10:34:08 -06:00
Malo Jaffré 5fe89e8eb1 Add tests for various issues
Fixes #11740.
Fixes #19601.
Fixes #22603
Fixes #22789.
Fixes #26614.

r? @Mark-Simulacrum.
2017-06-18 18:18:08 +02:00
Florian Hahn 8723f28772 rustc: Check if def_path_hash_to_def_id is populated before accessing it.
Without this patch, there is an ICE when running rustc with
RUST_LOG=debug. This patch updates extract_def_id to check if the map
has been populated before accessing it. This fixes the problem, but
maybe we do not need to compute the incremental hashes maps in the first
place when we are not in incremental mode?
2017-06-18 17:01:25 +01:00
Ariel Ben-Yehuda 09219d6a49 collector: apply param substs to closures cast to fn items
Fixes #42718.
2017-06-18 18:57:39 +03:00
Malo Jaffré a5403d09f5 Add test for #24889
Fixes #24889.
r? @Mark-Simulacrum.
2017-06-18 14:30:33 +02:00
bors 28cc0c5a7b Auto merge of #42593 - ibabushkin:on-demand-external-source, r=eddyb
Implement lazy loading of external crates' sources. Fixes #38875

Fixes #38875. This is a follow-up to #42507. When a (now correctly translated) span from an external crate is referenced in a error, warning or info message, we still don't have the source code being referenced.
Since stuffing the source in the serialized metadata of an rlib is extremely wasteful, the following scheme has been implemented:

* File maps now contain a source hash that gets serialized as well.
* When a span is rendered in a message, the source hash in the corresponding file map(s) is used to try and load the source from the corresponding file on disk. If the file is not found or the hashes don't match, the failed attempt is recorded (and not retried).
* The machinery fetching source lines from file maps is augmented to use the lazily loaded external source as a secondary fallback for file maps belonging to external crates.

This required a small change to the expected stderr of one UI test (it now renders a span, where previously was none).

Further work can be done based on this - some of the machinery previously used to hide external spans is possibly obsolete and the hashing code can be reused in different places as well.

r? @eddyb
2017-06-18 10:41:05 +00:00
Wonwoo Choi abebe8afde Use T as the subpattern type of Box<T>
The subpattern type of boxes being nil does not make sense because of
box patterns. They should have their inner type as the subpattern type.
2017-06-18 16:07:26 +09:00
Murarth 6484258f17 Reintroduce deprecated collections crate 2017-06-17 13:18:18 -07:00
ubsan 723772fc55 Add _ to the list of keywords
also, make sure the keyword table is correctly spaced
2017-06-17 13:14:26 -07:00
Oliver Middleton 222a328f5c Convert Into<Box<[T]>> for Vec<T> into From<Vec<T>> for Box<[T]> 2017-06-17 20:49:21 +01:00
Alex Crichton 1cede109d8 Update cargo/rls submodules and dependencies
Brings in a few regression fixes on the Cargo side, updates the rls to work
with the newer Cargo, and also updates other crates.io dependencies to pull in
various bug fixes and such.
2017-06-17 12:00:49 -07:00
Alex Crichton 5354b91ce5 Correct location of unstable book docs 2017-06-17 11:48:01 -07:00
bors 78d8416caf Auto merge of #42649 - estebank:if-cond, r=nikomatsakis
Report error for assignment in `if` condition

For code like `if x = 3 {}`, output:

```
error[E0308]: mismatched types
  --> $DIR/issue-17283.rs:25:8
   |
25 |     if x = x {
   |        ^^^^^
   |        |
   |        help: did you mean to compare equality? `x == x`
   |        expected bool, found ()
   |
   = note: expected type `bool`
              found type `()`
```

Fix #40926.
2017-06-17 16:54:07 +00:00
bors dfb8c80e11 Auto merge of #42659 - nikomatsakis:issue-42545-type-inference-regression, r=eddyb
Issue 42545 type inference regression

Fix an ICE that results from type inference obligations being dropped on the floor. Specifically, when computing the implied bounds, we would sometimes do normalizations that get stored in the cache, but we would *not* try to solve the resulting obligations. This can sometimes leave type variables uninferred. Occurs only rarely because implied bounds are processed in regionck which happens very late, so usually the cache is populated already from somewhere else.

I think that the *proper* fix here is probably lazy normalization. This fix is intentionally very narrow both because this code is on the chopping block and because this needs a beta backport.

r? @eddyb
cc @arielb1
2017-06-17 11:22:08 +00:00
Alexander Bulaev ca52d80338 Inline StrSearcher::haystack() 2017-06-17 13:51:36 +03:00
Niko Matsakis 9fec4093df register the obligations from wf::implied_bounds
Fixes #42552.
Fixes #42545.
2017-06-17 05:40:39 -04:00
Niko Matsakis a65d8d3d71 move implied_bounds into regionck 2017-06-17 05:39:48 -04:00
bors ff9f2d2ae9 Auto merge of #42712 - frewsxcv:rollup, r=frewsxcv
Rollup of 3 pull requests

- Successful merges: #42660, #42662, #42705
- Failed merges:
2017-06-17 06:47:54 +00:00
Corey Farwell 6062bf7aca Rollup merge of #42705 - est31:master, r=alexcrichton
Introduce tidy lint to check for inconsistent tracking issues

This PR
* Refactors the collect_lib_features function to work in a
      non-checking mode (no bad pointer needed, and list of
      lang features).
* Introduces checking whether unstable/stable tags for a
      given feature have inconsistent tracking issues, as in,
      multiple tracking issues per feature.
* Fixes such inconsistencies throughout the codebase.
2017-06-16 23:10:50 -07:00
Corey Farwell 881ea1ef04 Rollup merge of #42662 - Mark-Simulacrum:doc-fix, r=estebank
Correct note as to location of section.

Fixes #37226.
2017-06-16 23:10:49 -07:00
Corey Farwell adc5e8f811 Rollup merge of #42660 - steveklabnik:gh42632, r=frewsxcv
update book with redirect fixes

Fixes #42632
2017-06-16 23:10:48 -07:00
bors 08d920cd4d Auto merge of #42650 - nrc:save-slim, r=eddyb
save-analysis: remove a lot of stuff

This commits us to the JSON format and the more general def/ref style of output, rather than also supporting different data formats for different data structures. This does not affect the RLS at all, but will break any clients of the CSV form - AFAIK there are none (beyond a few of my own toy projects) - DXR stopped working long ago.

r? @eddyb
2017-06-17 04:36:02 +00:00
bors 3438c0fa8c Auto merge of #42613 - stepancheg:lossy, r=alexcrichton
Avoid allocations in Display for OsStr and Path

#38879
2017-06-17 02:21:38 +00:00
bors 1169a1fb13 Auto merge of #42604 - stepancheg:timedwait, r=alexcrichton
Fix condvar.wait(distant future) return immediately on OSX

Fixes issue #37440: `pthread_cond_timedwait` on macOS Sierra seems
to overflow `ts_sec` parameter and returns immediately. To work
around this problem patch rounds timeout down to year 3000.

Patch also fixes overflow when converting `u64` to `time_t`.
2017-06-17 00:05:50 +00:00
Thomas Lively a1981a64a2 Add target to use LLVM wasm backend
The new target is wasm32-experimental-emscripten. Adds a new
configuration option to opt in to building experimental LLVM backends
such as the WebAssembly backend. The target name was chosen to be
similar to the existing wasm32-unknown-emscripten target so that the
build and tests would work with minimal other code changes. When/if the
new target replaces the old target, simply renaming it should just work.
2017-06-16 15:43:43 -07:00
bors 3cb803460b Auto merge of #42598 - cramertj:track-more-metadata, r=nikomatsakis
Track more crate metadata

Part of https://github.com/rust-lang/rust/issues/41417
r? @nikomatsakis
2017-06-16 21:42:17 +00:00
Esteban Küber da78b4d88e Review comments
- exhaustive match
- rename method to `check_expr_meets_expectation_or_error`
- formatting
- add `delay_span_bug`
- add test
2017-06-16 12:15:06 -07:00
est31 c6afde6c46 Introduce tidy lint to check for inconsistent tracking issues
This commit
    * Refactors the collect_lib_features function to work in a
      non-checking mode (no bad pointer needed, and list of
      lang features).
    * Introduces checking whether unstable/stable tags for a
      given feature have inconsistent tracking issues.
    * Fixes such inconsistencies throughout the codebase.
2017-06-16 20:40:40 +02:00
bors fe7227f6c8 Auto merge of #42430 - nagisa:core-float, r=alexcrichton
Re-implement float min/max in rust

This also adds the relevant implementations into libcore.

See #42423
2017-06-16 17:52:11 +00:00
bors b40be00a0c Auto merge of #42612 - est31:master, r=nagisa
Autogenerate stubs and SUMMARY.md in the unstable book

Removes a speed bump in compiler development by autogenerating stubs for features in the unstable book. See #42454 for discussion.

The PR contains three commits, separated in order to make review easy:

* The first commit converts the tidy tool from a binary crate to a crate that contains both a library and a binary. In the second commit, we'll use the tidy library
* The second and main commit introduces autogeneration of SUMMARY.md and feature stub files
* The third commit turns off the tidy lint that checks for features without a stub, and removes the stub files. A separate commit due to the large number of files touched

Members of the doc team who wish to document some features can either do this (where `$rustsrc` is the root of the rust repo git checkout):

1. cd to `$rustsrc/src/tools/unstable-book-gen` and then do `cargo run $rustsrc/src $rustsrc/src/doc/unstable-book` to put the stubs into the unstable book
2. cd to `$rustsrc` and run `git ls-files --others --exclude-standard` to list the newly added stubs
3. choose a file to edit, then `git add` it and `git commit`
4. afterwards, remove all changes by the tool by doing `git --reset hard` and `git clean -f`

Or they can do this:

1. remove the comment marker in `src/tools/tidy/src/unstable_book.rs` line 122
2. run `./x.py test src/tools/tidy` to list the unstable features which only have stubs
3. revert the change in 1
3. document one of the chosen unstable features

The changes done by this PR also allow for further development:

* tidy obtains information about tracking issues. We can now forbid differing tracking issues between differing `#![unstable]` annotations. I haven't done this but plan to in a future PR
* we now have a general framework for generating stuff for the unstable book at build time. Further changes can autogenerate a list of the API a given library feature exposes.

The old way to simply click through the documentation after it has been uploaded to rust-lang.org works as well.

r? @nagisa

Fixes #42454
2017-06-16 14:41:15 +00:00
Mark Simulacrum 73267374d4 Use custom cargo/rustc paths when parsing flags. 2017-06-16 07:44:09 -06:00
est31 b34ac5dbda Fix cross compilation 2017-06-16 15:07:55 +02:00
bors ebbc9ea914 Auto merge of #42410 - nagisa:llvmup, r=sanxiyn
Upgrade LLVM

Includes https://github.com/rust-lang/llvm/pull/80
2017-06-16 12:18:45 +00:00
bors 787d9da125 Auto merge of #41840 - arielb1:deduplicate-selection-errors, r=nikomatsakis
Suppress trait errors that are implied by other errors

this is currently a hack and should be cleaned up somewhat. Posting this to get some feedback.

r? @nikomatsakis
cc @estebank
2017-06-16 10:07:58 +00:00
bors c3627e25ee Auto merge of #42631 - malbarbo:wasm32, r=alexcrichton
Add a travis builder for wasm32-unknown-emscripten

This commits add an entry to travis matrix that will execute wasm32-unknown-emscripten tests suites.

- Emscripten for asmjs was updated to sdk-1.37.13-64bit
- The tests are run with node 8.0.0 (it can execute wasm)
- A wrapper script is used to run each test from the directory where it is (workaround for https://github.com/kripken/emscripten/issues/4542)
- Some tests are ignore, see #42629 and #42630
2017-06-16 07:54:59 +00:00
bors 4581e89a49 Auto merge of #42690 - frewsxcv:rollup, r=frewsxcv
Rollup of 5 pull requests

- Successful merges: #42616, #42651, #42654, #42656, #42685
- Failed merges:
2017-06-16 05:43:38 +00:00
Taylor Cramer e6dd869260 Divide up metadata into separate DepNodes 2017-06-15 22:25:41 -07:00
Corey Farwell f5f74a22c9 Rollup merge of #42685 - Havvy:doc-remove-sometimes, r=steveklabnik
Remove sometimes in std::io::Read doc

We use it immediately in the next sentence, and the word is filler.

A different conversation to make is whether we want to call them Readers in the documentation at all. And whether it's actually called "Readers" elsewhere.
2017-06-16 00:32:46 -04:00
Corey Farwell 999f3ad60d Rollup merge of #42656 - VBChunguk:struct-field-attributes, r=nikomatsakis
Remove struct_field_attributes feature gate

Part of #41681. ~This PR only removes the feature gate; this *does not* update any documentations.~ This PR removes the feature gate and the corresponding chapter of the Unstable Book.

I'm not very sure about the changes I made though... Just followed the stabilization guideline.

r? @nikomatsakis
2017-06-16 00:32:45 -04:00
Corey Farwell f05afa09a8 Rollup merge of #42654 - GuillaumeGomez:error-codes-new, r=QuietMisdreavus
Error codes new

Part of #42229.

cc @Susurrus @frewsxcv @QuietMisdreavus
2017-06-16 00:32:44 -04:00
Corey Farwell a5926115b4 Rollup merge of #42651 - infinity0:master, r=alexcrichton
Only run check-linkchecker when actually building docs

Otherwise the build fails, when running tests but not building docs, e.g.:
https://buildd.debian.org/status/fetch.php?pkg=rustc&arch=ppc64el&ver=1.17.0%2Bdfsg2-3&stamp=1497403375&raw=0
2017-06-16 00:32:43 -04:00
Corey Farwell f784e5f136 Rollup merge of #42616 - estebank:span-fix, r=nikomatsakis
Position span label correctly when it isn't last

Fix #42595.

Before:

```
15 |     map.entry("e").or_insert(0) += 1;
   |     ---------------------------^^^^^ot use `+=` on type `&mut {integer}`
```

After:

```
15 |     map.entry("e").or_insert(0) += 1;
   |     ---------------------------^^^^^
   |     |
   |     cannot use `+=` on type `&mut {integer}`
```
2017-06-16 00:32:42 -04:00
bors 44eeb2109b Auto merge of #42578 - estebank:recover-binop, r=nikomatsakis
Learn to parse `a as usize < b`

Parsing `a as usize > b` always works, but `a as usize < b` was a
parsing error because the parser would think the `<` started a generic
type argument for `usize`. The parser now attempts to parse as before,
and if a DiagnosticError is returned, try to parse again as a type with
no generic arguments. If this fails, return the original
`DiagnosticError`.

Fix #22644.
2017-06-16 03:31:09 +00:00
Nick Cameron 8a2857e644 Remove intermediate forms and some other refactoring 2017-06-16 12:52:37 +12:00
bors a3114961a1 Auto merge of #42568 - GuillaumeGomez:E0608, r=QuietMisdreavus
E0608

Part of #42229.

cc @Susurrus
2017-06-16 00:40:05 +00:00
Felix S. Klock II 12d4d12fef implement Error trait for error structs added in allocator API. 2017-06-15 23:48:31 +02:00
Felix S. Klock II 57ab9e7e7c placeholder for documentation of allocator_api library feature.
Alpha-renamed `Allocator` to `Alloc`.
2017-06-15 23:48:31 +02:00
Felix S. Klock II 23ab50455f 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`).
2017-06-15 23:48:30 +02:00
Felix S. Klock II 65d02b26c5 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.
2017-06-15 23:48:30 +02:00