Commit Graph

84935 Commits

Author SHA1 Message Date
Scott McMurray
74df5ec387 Add a stub feature so we can still test E0705 2018-10-19 22:26:02 -07:00
Scott McMurray
4ab691ac2c 17905 also no longer errors, thanks to IHLE
But its test was written in an outdated way that hits a different error despite IHLE, so keep a variant around for that case.
2018-10-19 22:26:02 -07:00
Scott McMurray
ae130b0889 Move an underscore-lifetime error test to an IHLE success test 2018-10-19 22:26:01 -07:00
Scott McMurray
faf68f473f Hooray! 19982 finally works the way people wanted in December 2014 :) 2018-10-19 21:57:52 -07:00
Scott McMurray
37393576ec Stabilize impl_header_lifetime_elision in 2015
It's already stable in 2018; this finishes the stabilization.
2018-10-19 21:57:52 -07: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
Niko Matsakis
c294ec640b add more to the ERROR messages 2018-10-19 16:44:01 -04:00
Niko Matsakis
df8adb53c9 fix error messages 2018-10-19 16:41:29 -04:00
bors
78ff609d73 Auto merge of #55152 - nikomatsakis:nll-issue-54571-type-annot-in-constants, r=pnkfelix
support type annot in constants, casts

Fixes #54571
Fixes #54332
Fixes #55183

r? @pnkfelix
2018-10-19 20:20:12 +00:00
David Wood
4334aaacf1
Only suggest paths that exist.
In order to output a path that could actually be imported (valid and
visible), we need to handle re-exports correctly.

For example, take `std::os::unix::process::CommandExt`, this trait is
actually defined at `std::sys::unix::ext::process::CommandExt` (at time
of writing).

`std::os::unix` rexports the contents of `std::sys::unix::ext`.
`std::sys` is private so the "true" path to `CommandExt` isn't accessible.

In this case, the visible parent map will look something like this:

(child) -> (parent)
`std::sys::unix::ext::process::CommandExt` -> `std::sys::unix::ext::process`
`std::sys::unix::ext::process` -> `std::sys::unix::ext`
`std::sys::unix::ext` -> `std::os`

This is correct, as the visible parent of `std::sys::unix::ext` is in fact
`std::os`.

When printing the path to `CommandExt` and looking at the current
segment that corresponds to `std::sys::unix::ext`, we would normally
print `ext` and then go to the parent - resulting in a mangled path like
`std::os::ext::process::CommandExt`.

Instead, we must detect that there was a re-export and instead print `unix`
(which is the name `std::sys::unix::ext` was re-exported as in `std::os`).
2018-10-19 15:45:46 +02:00
Niko Matsakis
9a7bb0ef24 normalize the self-type that we extract from impl 2018-10-19 09:34:28 -04:00
Niko Matsakis
f5cc7dba8a even though we don't need it yet, fix the "fast path" code 2018-10-19 09:34:28 -04:00
Niko Matsakis
16b3ea1e2e add a test that we enforce 'static errors post normalization 2018-10-19 09:34:28 -04:00
Niko Matsakis
820c2657f2 add useful debug log 2018-10-19 09:34:28 -04:00
Niko Matsakis
061c9a2bed region_infer/mod.rs: rustfmt 2018-10-19 09:34:28 -04:00
Niko Matsakis
02e5a902e8 pacify the mercilous tidy 2018-10-19 09:34:28 -04:00
Niko Matsakis
a66ab2bedc skip user-type annotations if they don't have regions 2018-10-19 09:34:28 -04:00
Niko Matsakis
d5d5e8c5f5 lowering casts in constants now creates multiple uses
This can trigger more errors than before. Not sure what is the best
fix here.
2018-10-19 09:34:28 -04:00
Niko Matsakis
26fdac6224 pacify the mercilous tidy 2018-10-19 09:34:28 -04:00
Niko Matsakis
ab79cf951b save the user-provided type immediately upon return from astconv 2018-10-19 09:34:28 -04:00
Niko Matsakis
2d98e9e0aa create type ascription for any cast
Also, avoid shadowing of the `ty` variable by giving the `cast_ty` and
`var_ty` variables different names.  We want to get the user-provided
type from `cast_ty.hir_id`.
2018-10-19 09:34:28 -04:00
Keith Yeung
80ad300b89 Wrap cast expressions inside of ValueTypeAscription 2018-10-19 09:34:28 -04:00
Niko Matsakis
e20fa70bb3 suppress duplicate -- or near duplicate -- type test errors 2018-10-19 09:34:28 -04:00
Niko Matsakis
bfb1d959c3 normalize and prove predicates
Also include a test that was not working previously.
2018-10-19 09:34:27 -04:00
Niko Matsakis
121f3c8d19 normalize after substitution 2018-10-19 09:32:32 -04:00
Niko Matsakis
f99300fcbd pull relate_type_and_user_type code into type_check module
It's really layered atop the core "relate-types" code
2018-10-19 09:32:30 -04:00
Niko Matsakis
e7ab33e7a6 type_check/mod.rs: rustfmt 2018-10-19 08:31:35 -04:00
Niko Matsakis
a0a3b4c058 replace UserTypeAnnotation::AdtDef with TypeOf 2018-10-19 08:31:35 -04:00
Niko Matsakis
e94959b936 propagate user-type annotation for constants in expressions 2018-10-19 08:31:35 -04:00
Niko Matsakis
ebdfda64f8 convert FnDef to TypeOf, which is more general 2018-10-19 08:31:35 -04:00
Niko Matsakis
bd93741bd3 remove outdated assertion
This dates from the days before we instantiated user types with
inference variables.
2018-10-19 08:31:35 -04:00
bors
74ff7dcb13 Auto merge of #55194 - kennytm:rollup, r=kennytm
Rollup of 7 pull requests

Successful merges:

 - #54300 (Updated RELEASES.md for 1.30.0)
 - #55013 ([NLL] Propagate bounds from generators)
 - #55071 (Fix ICE and report a human readable error)
 - #55144 (Cleanup resolve)
 - #55166 (Don't warn about parentheses on `match (return)`)
 - #55169 (Add a `copysign` function to f32 and f64)
 - #55178 (Stabilize slice::chunks_exact(), chunks_exact_mut(), rchunks(), rchunks_mut(), rchunks_exact(), rchunks_exact_mut())
2018-10-19 09:29:48 +00:00
kennytm
0724efd9a1
Rollup merge of #55013 - matthewjasper:propagate-generator-bounds, r=nikomatsakis
[NLL] Propagate bounds from generators

This used to only be done for closures.
2018-10-19 16:48:36 +08:00
kennytm
4763c22402
Rollup merge of #55178 - sdroege:stabilize-chunks-exact, r=alexcrichton
Stabilize slice::chunks_exact(), chunks_exact_mut(), rchunks(), rchunks_mut(), rchunks_exact(), rchunks_exact_mut()

Fixes #47115, #55177
2018-10-19 16:47:55 +08:00
kennytm
399314d802
Rollup merge of #55169 - raphlinus:copysign, r=joshtriplett
Add a `copysign` function to f32 and f64

This patch adds a `copysign` function to the float primitive types. It is an exceptionally useful function for writing efficient numeric code, as it often avoids branches, is auto-vectorizable, and there are efficient intrinsics for most platforms.

I think this might work as-is, as the relevant `copysign` intrinsic is already used internally for the implementation of `signum`. It's possible that an implementation might be needed in japaric/libm for portability across all platforms, in which case I'll do that also.

Part of the work towards #55107
2018-10-19 16:47:51 +08:00
kennytm
9d2eb9b752
Rollup merge of #55166 - varkor:ret-parens, r=davidtwco
Don't warn about parentheses on `match (return)`

Fixes #55164.
2018-10-19 16:47:48 +08:00
kennytm
8d712aa1d8
Rollup merge of #55144 - ljedrz:cleanup_resolve, r=petrochenkov
Cleanup resolve

- improve/remove allocations
- `truncate` instead of `pop`ping in a loop
- improve common patterns
2018-10-19 16:47:46 +08:00
kennytm
89ebc6ce4f
Rollup merge of #55071 - oli-obk:const_cast_🍨, r=RalfJung
Fix ICE and report a human readable error

fixes #55063

r? @RalfJung
2018-10-19 16:47:42 +08:00
bors
dbab381da1 Auto merge of #55040 - scalexm:param-env, r=nikomatsakis
Replace `ParamEnv` with a new type in chalk context.

I left a few FIXMEs.

r? @nikomatsakis
2018-10-19 06:38:10 +00:00
kennytm
1419a697e3
Rollup merge of #54300 - Aaronepower:master, r=Aaronepower
Updated RELEASES.md for 1.30.0

[Rendered](https://github.com/Aaronepower/rust/blob/master/RELEASES.md)

r? @Mark-Simulacrum

cc @rust-lang/release
2018-10-19 11:03:25 +08:00
bors
cb5e1b93e3 Auto merge of #55004 - oli-obk:sized_static, r=cramertj
Check the type of statics and constants for `Sized`ness

fixes #54410
2018-10-19 00:22:25 +00:00
Matthew Jasper
ef1a40d5fe Propagate bounds from generators 2018-10-18 22:47:49 +01:00
bors
45088b11f5 Auto merge of #54979 - estebank:path-unsized, r=nikomatsakis
Custom E0277 diagnostic for `Path`

r? @nikomatsakis we have a way to target `Path` exclusively, we need to identify the correct text to show to consider #23286 fixed.
2018-10-18 21:42:21 +00:00
bors
e7f5d48059 Auto merge of #54976 - davidtwco:issue-52663-special-case-closures, r=nikomatsakis
NLL lacks various special case handling of closures

Part of #52663.

Firstly, this PR extends existing handling of closures to also support generators.

Second, this PR adds the note found in the AST when a closure is invoked twice and captures a variable by-value:

```text
note: closure cannot be invoked more than once because it moves the variable `dict` out of its environment
  --> $DIR/issue-42065.rs:16:29
   |
LL |         for (key, value) in dict {
   |                             ^^^^
```

r? @nikomatsakis
cc @pnkfelix
2018-10-18 18:14:52 +00:00
David Wood
d088edc531
Improve check to consider how value is used. 2018-10-18 18:21:15 +02:00
David Wood
375645abb8
Add by-value captured variable note on second use.
This commit adds a note that was present in the AST borrow checker when
closures are invoked more than once and have captured variables
by-value.
2018-10-18 18:21:14 +02:00
Sebastian Dröge
52cc6fde4b Stabilize slice::rchunks(), rchunks_mut(), rchunks_exact(), rchunk_exact_mut()
Fixes #55177
2018-10-18 18:51:56 +03:00
Sebastian Dröge
b08ca2958e Stabilize slice::chunks_exact() and slice::chunks_exact_mut()
Fixes #47115
2018-10-18 18:51:56 +03:00
David Wood
aa701154f0
Extend closure special-casing for generators.
This commit extends existing special-casing of closures to highlight the
use of variables within generators that are causing the generator to
borrow them.
2018-10-18 17:48:18 +02:00