Commit Graph

85008 Commits

Author SHA1 Message Date
Niko Matsakis
0afccbb654 fix incremental test 2018-10-22 10:04:47 -04:00
Niko Matsakis
dbbdce51dc add regression test for #54124
Fixes #54124
2018-10-22 10:04:47 -04:00
Niko Matsakis
3a17880539 start enforcing closure types 2018-10-22 10:04:47 -04:00
Niko Matsakis
e0871ed318 record supplied sig of closure 2018-10-22 10:04:47 -04:00
Niko Matsakis
a8f3d6dafc convert user-provided signatures into def-id 2018-10-22 10:04:47 -04:00
Niko Matsakis
167b460961 add a table to track user-provided signatures 2018-10-22 10:00:32 -04:00
bors
a66dc8a148 Auto merge of #55224 - kryptan:master, r=matthewjasper
Use a keyword in raw identifier example

That's a very small documentation fix. The text says "you can now use keywords as identifiers" but example didn't use a keyword and would work without raw identifiers.
2018-10-22 03:41:28 +00:00
bors
5481485670 Auto merge of #55126 - GuillaumeGomez:improve-search-tabs, r=QuietMisdreavus
improve search tabs look

Fixes #55056.

![screenshot from 2018-10-16 19-06-48](https://user-images.githubusercontent.com/3050060/47034247-1e08b280-d177-11e8-9c1e-c7320af9b561.png)

![screenshot from 2018-10-16 19-09-39](https://user-images.githubusercontent.com/3050060/47034255-2365fd00-d177-11e8-8686-4765d3e56ff5.png)

With this, I think it'll be more obvious.

cc @memoryruins

r? @QuietMisdreavus
2018-10-22 01:04:52 +00:00
bors
424a749a01 Auto merge of #55179 - bjorn3:miri_public_op_field, r=RalfJung
Give OpTy access to locals for priroda

r? @oli-obk
2018-10-21 20:07:34 +00:00
bors
12a88a6b09 Auto merge of #55236 - petrochenkov:pfail, r=davidtwco
Move parse-fail tests to UI

cc https://github.com/rust-lang/rust/issues/53353

r? @davidtwco
2018-10-21 17:26:16 +00:00
Guillaume Gomez
dc5242592b improve search tabs look 2018-10-21 19:25:33 +02:00
bors
0e2f912050 Auto merge of #52984 - fabric-and-ink:remove-canonical-var, r=scalexm
Replace CanonicalVar with DebruijnIndex

Close #49887
2018-10-21 14:42:35 +00:00
bjorn3
b178553e55 Address review comments 2018-10-21 16:16:23 +02:00
bjorn3
c32cf25689 Rename read_local_of_frame to access_local 2018-10-21 15:49:20 +02:00
bjorn3
f46e3ba308 Rename alloc_map_ref to alloc_map 2018-10-21 15:49:20 +02:00
bjorn3
825b55e763 Add alloc_map accessor 2018-10-21 15:49:19 +02:00
bjorn3
3742892749 Use read_local_of_frame in eval_place_to_op
Also make `layout_of_local` accept any `Frame`
2018-10-21 15:49:19 +02:00
bjorn3
7d406c9146 Fix errors 2018-10-21 15:49:19 +02:00
bjorn3
3e62ba1af6 Add method to get OpTy for local from arbitrary frame 2018-10-21 15:49:19 +02:00
bjorn3
ea51e32043 Make OpTy field op public for priroda 2018-10-21 15:49:19 +02:00
bors
31b97f789f Auto merge of #55069 - matthewjasper:explain-free-region-liveness, r=nikomatsakis
[NLL] Use new region infer errors when explaining borrows

Use the new free region infer errors for explaining borrows

This gives at least some explanation for why a borrow is expected to
last for a certain free region. Also:

* Reports E0373: "closure may outlive the current function" with NLL.
* Special cases the case of returning a reference to (or value referencing) a local variable or temporary (E0515).
* Special case assigning a reference to a local variable in a closure to a captured variable. (E0521)

Closes #51026 - `regions-nested-fns-2.rs` isn't changed to that diagnostic, since that would not be the correct error here.
Closes #51169
cc #53882 - The error is (IMO) better now, but it could be better when we trace lifetimes in these error messages.

r? @nikomatsakis cc @pnkfelix
2018-10-21 12:04:25 +00:00
Matthew Jasper
2a3969a3f7 Use new region infer errors for explaining borrows
This gives at least some explanation for why a borrow is expected to
last for a certain free region. Also:

* Reports E0373: "closure may outlive the current function" with NLL.
* Special cases the case of returning a reference to (or value
  referencing) a local variable or temporary (E0515).
* Special case assigning a reference to a local variable in a closure
  to a captured variable.
2018-10-21 12:35:00 +01:00
Vadim Petrochenkov
21d67c45a3 Fix a few tests with target-specific output
Enable one fully ignored test
2018-10-21 14:06:29 +03:00
Vadim Petrochenkov
7977250fb4 Make sure all ui/parse tests have -Z parse-only
Except those testing parsing during macro expansion
2018-10-21 14:06:29 +03:00
Vadim Petrochenkov
64c0efab85 Make some ui/parser tests compile-pass 2018-10-21 14:06:28 +03:00
Vadim Petrochenkov
51f3b6241d Move more parsing tests to ui/parser 2018-10-21 14:06:28 +03:00
Vadim Petrochenkov
52ede63263 Remove the parse-fail test suite 2018-10-21 14:06:28 +03:00
Vadim Petrochenkov
73e1f8970f Move parse-fail tests to UI 2018-10-21 14:06:28 +03:00
bors
66910ba686 Auto merge of #55125 - RalfJung:stacked-borrows, r=oli-obk
miri engine: Hooks for basic stacked borrows

r? @oli-obk
2018-10-21 09:32:25 +00:00
bors
554b7874a9 Auto merge of #54919 - alexcrichton:update-cargo, r=Mark-Simulacrum
Update Cargo, build curl/OpenSSL statically via features

In addition to to updating Cargo's submodule and Cargo's dependencies,
this also updates Cargo's build to build OpenSSL statically into Cargo
as well as libcurl unconditionally. This removes OpenSSL build logic
from the bootstrap code, and otherwise requests that even on OSX we
build curl statically.
2018-10-21 06:48:10 +00:00
Alex Crichton
4f661c016f Update Cargo, build curl/OpenSSL statically via features
In addition to to updating Cargo's submodule and Cargo's dependencies,
this also updates Cargo's build to build OpenSSL statically into Cargo
as well as libcurl unconditionally. This removes OpenSSL build logic
from the bootstrap code, and otherwise requests that even on OSX we
build curl statically.
2018-10-20 18:47:01 -07:00
Ralf Jung
3f5b550296 update miri 2018-10-21 01:32:45 +02:00
bors
d5418764ad Auto merge of #55230 - Manishearth:rollup, r=Manishearth
Rollup of 5 pull requests

Successful merges:

 - #55156 (Fixed: Multiple errors on single typo in match pattern)
 - #55189 (update books for the next release)
 - #55193 (make asm diagnostic instruction optional)
 - #55203 (Write an initial version of the `program_clauses` callback)
 - #55213 (ignore target folders)

Failed merges:

r? @ghost
2018-10-20 22:23:36 +00:00
Matthew Jasper
275432c115 Give an error number for "borrowed data escapes outside of closure" 2018-10-20 23:11:30 +01:00
Matthew Jasper
049bee09e9 Use more accurate ConstraintCategorys
Adds UseAsConst and UseAsStatic to replace Return in consts/statics.
Don't report the arguments to an overloaded operator as CallArguments.
Also don't report "escaping data" in these items.
2018-10-20 23:11:30 +01:00
Matthew Jasper
a2c24873b1 Prefer type annotations and returns in free region errors 2018-10-20 23:11:30 +01:00
Manish Goregaokar
f2848a010a Rollup merge of #55213 - qmx:tidy-fix, r=tmandry
when you try to edit a crate inside the compiler tree using rls, it
generates it's assets under target/rls, then tidy is trying to validate
line lenghts for C headers, etc
2018-10-20 13:15:52 -07:00
Manish Goregaokar
50cc08dd94 Rollup merge of #55203 - scalexm:program-clauses, r=nikomatsakis
Sometimes I just return `ty::List::empty()` because I cannot express these \"built-in\" clauses without bound tys support.

r? @nikomatsakis
2018-10-20 13:15:48 -07:00
Manish Goregaokar
ddf33eaa67 Rollup merge of #55189 - steveklabnik:update-books, r=QuietMisdreavus
Sending this PR in today so we can see what linkchecker wants overnight; please don't r+ until travis is green!
2018-10-20 13:15:45 -07:00
Manish Goregaokar
b860765355 Rollup merge of #55073 - alexcrichton:demote-simd, r=nagisa
The issue of passing around SIMD types as values between functions has
seen [quite a lot] of [discussion], and although we thought [we fixed
it][quite a lot] it [wasn't]! This PR is a change to rustc to, again,
try to fix this issue.

The fundamental problem here remains the same, if a SIMD vector argument
is passed by-value in LLVM's function type, then if the caller and
callee disagree on target features a miscompile happens. We solve this
by never passing SIMD vectors by-value, but LLVM will still thwart us
with its argument promotion pass to promote by-ref SIMD arguments to
by-val SIMD arguments.

This commit is an attempt to thwart LLVM thwarting us. We, just before
codegen, will take yet another look at the LLVM module and demote any
by-value SIMD arguments we see. This is a very manual attempt by us to
ensure the codegen for a module keeps working, and it unfortunately is
likely producing suboptimal code, even in release mode. The saving grace
for this, in theory, is that if SIMD types are passed by-value across
a boundary in release mode it's pretty unlikely to be performance
sensitive (as it's already doing a load/store, and otherwise
perf-sensitive bits should be inlined).

The implementation here is basically a big wad of C++. It was largely
copied from LLVM's own argument promotion pass, only doing the reverse.
In local testing this...

Closes #50154
Closes #52636
Closes #54583
Closes #55059

[quite a lot]: https://github.com/rust-lang/rust/pull/47743
[discussion]: https://github.com/rust-lang/rust/issues/44367
[wasn't]: https://github.com/rust-lang/rust/issues/50154
2018-10-20 13:15:39 -07:00
bors
155510e377 Auto merge of #55156 - PramodBisht:issue/52717, r=estebank
Fixed: Multiple errors on single typo in match pattern

Here we have fixed the case where we were throwing two diagnostic messages `E0026` and `E0027` for same case.

Example
```
error[E0026]: variant `A::A` does not have a field named `fob`
  --> src/test/ui/issue-52717.rs:20:12
   |
20 |     A::A { fob } => { println!("{}", fob); }
   |            ^^^ variant `A::A` does not have this field

error[E0027]: pattern does not mention field `foo`
  --> src/test/ui/issue-52717.rs:20:5
   |
20 |     A::A { fob } => { println!("{}", fob); }
   |     ^^^^^^^^^^^^ missing field `foo`

error: aborting due to 2 previous errors
```

Here above we can see that both `E0026` and `E0027` are depicting
same thing.

So, to fix this issue, we are simply checking if for last element of `inexistent_fields` is there any value lies in `unmentioned_fields` using levenshtein algorithm, if it does then for that case we are simply deleting element from `unmentioned_fields`. More or less, now instead of showing separate message in `E0027` we are giving extra hint on `E0026`

r? @estebank
2018-10-20 19:45:53 +00:00
Fabian Drinck
2f41c0d194 Rename InferTy::CanonicalTy to BoundTy and add DebruijnIndex to variant type 2018-10-20 19:16:23 +02:00
Fabian Drinck
2581bdc143 Rename CanonicalVar to BoundTyIndex 2018-10-20 18:39:29 +02:00
bors
22cc2ae805 Auto merge of #55119 - varkor:unwarned-match-on-never, r=nikomatsakis
Allow explicit matches on ! without warning

It's now possible to explicitly match on `!` without an unreachable code warning. This seems desirable as promoting explicitness.

Fixes https://github.com/rust-lang/rust/issues/55116.
2018-10-20 15:02:26 +00:00
kryptan
e10f0cd07d
Use a keyword in raw identifier example 2018-10-20 15:24:38 +03:00
Steve Klabnik
69daa9aac1 update books for the next release 2018-10-20 07:47:32 -04:00
bors
ca2639e82e Auto merge of #55014 - ljedrz:lazyboye_unwraps, r=matthewjasper
Prefer unwrap_or_else to unwrap_or in case of function calls/allocations

The contents of `unwrap_or` are evaluated eagerly, so it's not a good pick in case of function calls and allocations. This PR also changes a few `unwrap_or`s with `unwrap_or_default`.

An added bonus is that in some cases this change also reveals if the object it's called on is an `Option` or a `Result` (based on whether the closure takes an argument).
2018-10-20 11:22:48 +00:00
bors
94273f4d8e Auto merge of #55114 - oli-obk:fx#map, r=nikomatsakis
Deprecate the `FxHashMap()` and `FxHashSet()` constructor function hack
2018-10-20 08:45:55 +00:00
bors
89be71a462 Auto merge of #55007 - davidtwco:issue-39175, r=petrochenkov
Help suggests non-existent package std::os::ext::process::CommandExt

Fixes #39175.
2018-10-20 01:31:10 +00:00
bors
42dde960f9 Auto merge of #55162 - nikomatsakis:issue-54902-underscore-bound, r=tmandry
handle underscore bounds in unexpected places

Per the discussion on #54902, I made it a hard error to use lifetime bounds in various places where they used to be permitted:

- `where Foo: Bar<'_>` for example

I also moved error reporting to HIR lowering and added `Error` variants to let us suppress downstream errors that result.

I (imo) improved the error message wording to be clearer, as well.

In the process, I fixed the ICE in #52098.

Fixes #54902
Fixes #52098
2018-10-19 22:54:14 +00:00