84933 Commits

Author SHA1 Message Date
csmoe
a76690f6a4 optimize unsupported literal diag message 2018-10-22 20:28:37 +08:00
csmoe
fb7c76bad5 update meta item checking test 2018-10-20 11:11:31 +08:00
csmoe
d3b018ccdb suggest to trim prefix in nested meta items 2018-10-20 11:11:31 +08:00
csmoe
30c6698193 handle errors based on parse_sess 2018-10-20 11:11:31 +08:00
csmoe
2ed2d1a7e6 suggest to remove prefix b in lint string 2018-10-20 11:11:31 +08: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
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
Raph Levien
f08db6bf1e Add must_use on copysign
Added a #[must_use] annotation on copysign, per review feedback.
2018-10-18 08:35:09 -07:00
bors
121320d523 Auto merge of #54580 - sdroege:rchunks, r=SimonSapin
Add slice::rchunks(), rchunks_mut(), rchunks_exact() and rchunks_exact_mut()

These work exactly like the normal chunks iterators but start creating
chunks from the end of the slice.

----

The new iterators were motivated by a [comment](https://github.com/rust-lang/rust/issues/47115#issuecomment-424141121) by @DutchGhost.

~~~This currently includes the commits from https://github.com/rust-lang/rust/pull/54537 to not have to rename things twice or have merge conflicts. I'll force-push a new version of the branch ones those are in master.~~~

Also the stabilization tracking issue is just some number right now. I'll create the corresponding issue once this is reviewed and otherwise mergeable.

cc @DutchGhost
2018-10-18 12:47:31 +00:00