Daiki Ihara
db95b5ca9b
Add suggestion for impl_candidates with E0283
...
Update compiler/rustc_infer/src/infer/error_reporting/need_type_info.rs
Co-authored-by: Esteban Kuber <estebank@users.noreply.github.com>
2021-01-18 21:57:15 +09:00
bors
86e0ff47a0
Auto merge of #80995 - tmandry:instrument-method-checker, r=lcnr
...
Add tracing instrumentation to method typeck
I was recently digging into how this code works, and this instrumentation was helpful.
2021-01-18 08:39:31 +00:00
bors
4253153db2
Auto merge of #80679 - jackh726:predicate-kind-take2, r=lcnr
...
Remove PredicateKind and instead only use Binder<PredicateAtom>
Originally brought up in https://github.com/rust-lang/rust/pull/76814#discussion_r546858171
r? `@lcnr`
2021-01-17 20:49:11 +00:00
Mara Bos
34e073f44b
Rollup merge of #81084 - LingMan:map, r=oli-obk
...
Use Option::map instead of open-coding it
r? ```@oli-obk```
```@rustbot``` modify labels +C-cleanup +T-compiler
2021-01-17 12:24:58 +00:00
Mara Bos
19f97802ca
Rollup merge of #80635 - sexxi-goose:use-place-instead-of-symbol, r=nikomatsakis`
...
Improve diagnostics when closure doesn't meet trait bound
Improves the diagnostics when closure doesn't meet trait bound by modifying `TypeckResuts::closure_kind_origins` such that `hir::Place` is used instead of `Symbol`. Using `hir::Place` to describe which capture influenced the decision of selecting a trait a closure satisfies to (Fn/FnMut/FnOnce, Copy) allows us to show precise path in the diagnostics when `capture_disjoint_field` feature is enabled.
Closes rust-lang/project-rfc-2229/issues/21
r? ```@nikomatsakis```
2021-01-17 12:24:44 +00:00
Jack Huey
3dea68de1d
Review changes
2021-01-16 18:56:37 -05:00
Jack Huey
476bd53058
Cleanup
2021-01-16 18:50:34 -05:00
Jack Huey
e76476afe4
Cleanup
2021-01-16 18:40:47 -05:00
Jack Huey
4cd6f85a07
Remove PredicateKind
2021-01-16 18:40:47 -05:00
Jack Huey
4cb3d6f983
Intermediate formatting and such
2021-01-16 18:40:47 -05:00
Jack Huey
8278314a8b
Remove PredicateKind::Atom
2021-01-16 18:40:47 -05:00
LingMan
76003f31f1
Use Option::map instead of open-coding it
2021-01-16 20:05:02 +01:00
bors
492b83c697
Auto merge of #80290 - RalfJung:less-intrinsic-write, r=lcnr
...
implement ptr::write without dedicated intrinsic
This makes `ptr::write` more consistent with `ptr::write_unaligned`, `ptr::read`, `ptr::read_unaligned`, all of which are implemented in terms of `copy_nonoverlapping`.
This means we can also remove `move_val_init` implementations in codegen and Miri, and its special handling in the borrow checker.
Also see [this Zulip discussion](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/ptr.3A.3Aread.20vs.20ptr.3A.3Awrite ).
2021-01-16 17:28:32 +00:00
LingMan
ba1f036c7a
Drop a few unneeded borrows
2021-01-15 21:29:28 +01:00
Yuki Okushi
a584d87417
Rollup merge of #80944 - LingMan:map_or, r=nagisa
...
Use Option::map_or instead of `.map(..).unwrap_or(..)`
``@rustbot`` modify labels +C-cleanup +T-compiler
2021-01-15 18:26:14 +09:00
LingMan
a56bffb4f9
Use Option::map_or instead of .map(..).unwrap_or(..)
2021-01-14 19:23:59 +01:00
Mara Bos
d3b31065e3
Rollup merge of #80017 - camelid:sugg-rest-pattern, r=estebank
...
Suggest `_` and `..` if a pattern has too few fields
Fixes #80010 .
2021-01-14 17:59:55 +00:00
bors
d03fe84169
Auto merge of #79328 - c410-f3r:hir-if, r=matthewjasper
...
Reintroduce hir::ExprKind::If
Basically copied and paste #59288/https://github.com/rust-lang/rust-clippy/pull/4080 with some modifications.
The vast majority of tests were fixed and now there are only a few remaining. Since I am still unable to figure out the missing pieces, any help with the following list is welcome.
- [ ] **Unnecessary `typeck` exception**: [Cheated on this one to make CI green.](https://github.com/rust-lang/rust/pull/79328/files#diff-3faee9ba23fc54a12b7c43364ba81f8c5660045c7e1d7989a02a0cee1c5b2051 )
- [x] **Incorrect span**: [Span should reference `then` and `else` separately.](https://github.com/rust-lang/rust/pull/79328/files#diff-cf2c46e82222ee4b1037a68fff8a1af3c4f1de7a6b3fd798aacbf3c0475abe3d )
- [x] **New note regarding `assert!`**: [Modified but not "wrong". Maybe can be a good thing?](https://github.com/rust-lang/rust/pull/79328/files#diff-9e0d7c89ed0224e2b62060c957177c27db43c30dfe3c2974cb6b5091cda9cfb5 )
- [x] **Inverted report location**: [Modified but not "wrong". Locations were inverted.](https://github.com/rust-lang/rust/pull/79328/files#diff-f637ce7c1f68d523a165aa9651765df05e36c4d7d279194b1a6b28b48a323691 )
- [x] **`src/test/ui/point-to-type-err-cause-on-impl-trait-return.rs` has weird errors**: [Not sure why this is happening.](https://github.com/rust-lang/rust/pull/79328/files#diff-c823c09660f5b112f95e97e8ff71f1797b6c7f37dbb3d16f8e98bbaea8072e95 )
- [x] **Missing diagnostic**: [???](https://github.com/rust-lang/rust/pull/79328/files#diff-6b8ab09360d725ba4513933827f9796b42ff9522b0690f80b76de067143af2fc )
2021-01-14 14:41:58 +00:00
Tyler Mandry
6af831ace6
Add tracing instrumentation to method typeck
...
I was recently digging into how this code works, and this
instrumentation was helpful.
2021-01-14 01:38:02 +00:00
bors
a62a76047e
Auto merge of #77524 - Patryk27:fixes/66228, r=estebank
...
Rework diagnostics for wrong number of generic args (fixes #66228 and #71924 )
This PR reworks the `wrong number of {} arguments` message, so that it provides more details and contextual hints.
2021-01-13 20:35:58 +00:00
Camelid
e8c87935e0
Include ..
suggestion if fields are all wildcards
2021-01-12 21:20:26 -08:00
bors
fc93e4719c
Auto merge of #80960 - Dylan-DPC:rollup-89tri8x, r=Dylan-DPC
...
Rollup of 10 pull requests
Successful merges:
- #78901 (diagnostics: Note capturing closures can't be coerced to fns)
- #79588 (Provide more information for HRTB lifetime errors involving closures)
- #80232 (Remove redundant def_id lookups)
- #80662 (Added support for i386-unknown-linux-gnu and i486-unknown-linux-gnu)
- #80736 (use Once instead of Mutex to manage capture resolution)
- #80796 (Update to LLVM 11.0.1)
- #80859 (Fix --pretty=expanded with --remap-path-prefix)
- #80922 (Revert "Auto merge of #76896 - spastorino:codegen-inline-fns2)
- #80924 (Fix rustdoc --test-builder argument parsing)
- #80935 (Rename `rustc_middle::lint::LevelSource` to `LevelAndSource`)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
2021-01-13 04:29:45 +00:00
Camelid
d7307a71f5
Always show suggestions in their own subwindows
2021-01-12 19:25:51 -08:00
Camelid
9959d6deed
Only suggest ..
if more than one field is missing
2021-01-12 19:25:51 -08:00
Camelid
fe82cc38a0
Specialize ..
help message for all fields vs. the rest
2021-01-12 19:25:50 -08:00
Camelid
a5e8e6ec2d
Pluralize 'parenthesis' correctly
...
It's 'parentheses', not 'parenthesis', when you have more than one.
2021-01-12 19:25:50 -08:00
Camelid
f3d9df54ee
Suggest Variant(..)
if all of the mentioned fields are _
2021-01-12 19:25:50 -08:00
Camelid
5fe61a79cc
Simplify code
...
Co-authored-by: Esteban Kuber <estebank@users.noreply.github.com>
2021-01-12 19:25:50 -08:00
Camelid
16692ab66a
Suggest _
and ..
if a pattern has too few fields
...
For example, this code:
struct S(i32, f32);
let S(x) = S(0, 1.0);
will make the compiler suggest either:
let S(x, _) = S(0, 1.0);
or:
let S(x, ..) = S(0, 1.0);
2021-01-12 19:25:49 -08:00
Dylan DPC
45ba015357
Rollup merge of #78901 - arora-aman:fix_closure_coerce, r=estebank
...
diagnostics: Note capturing closures can't be coerced to fns
Fixes #72457 , fixes #71895
r? `@estebank`
2021-01-13 03:20:09 +01:00
bors
150d1fee04
Auto merge of #79322 - jyn514:refactor-impl, r=estebank
...
Separate out a `hir::Impl` struct
This makes it possible to pass the `Impl` directly to functions, instead
of having to pass each of the many fields one at a time. It also
simplifies matches in many cases.
See `rustc_save_analysis::dump_visitor::process_impl` or `rustdoc::clean::clean_impl` for a good example of how this makes `impl`s easier to work with.
r? `@petrochenkov` maybe?
2021-01-13 01:40:41 +00:00
Joshua Nelson
a8ff647deb
Separate out a hir::Impl
struct
...
This makes it possible to pass the `Impl` directly to functions, instead
of having to pass each of the many fields one at a time. It also
simplifies matches in many cases.
2021-01-12 20:32:33 -05:00
bors
fc9944fe84
Auto merge of #80499 - matthiaskrgr:red_clos, r=estebank
...
remove redundant closures (clippy::redundant_closure)
2021-01-12 11:20:47 +00:00
Andy Russell
b6dc03b93d
fix typo in trait method mutability mismatch help
2021-01-11 19:28:25 -05:00
Camelid
6488aecb74
Use standard formatting for "rust-call" ABI message
...
Nearly all error messages start with a lowercase letter and don't use
articles - instead they refer to the plural case.
2021-01-10 12:17:24 -08:00
Patryk Wychowaniec
d2f8e398f1
Rework diagnostics for wrong number of generic args
2021-01-10 13:07:40 +01:00
Yuki Okushi
0afd72e313
Rollup merge of #79675 - CraftSpider:79669, r=estebank
...
Make sure rust-call errors occur correctly for traits
Fixes #79669
Adds trait method resolution to the error, and adds UI tests to ensure it doesn't happen again. Opening as draft because I'm getting weird link errors from unrelated code on my machine, and want to see what CI thinks.
2021-01-08 11:11:34 +09:00
Caio
f85fc264fe
Reintroduce hir::ExprKind::If
2021-01-07 18:54:12 -03:00
bors
8fec6c7bb9
Auto merge of #80714 - jakevossen5:master, r=lcnr
...
fixed const_generics error help
Closes https://github.com/rust-lang/rust/issues/80702
2021-01-06 10:25:18 +00:00
bors
da305a2b00
Auto merge of #80711 - camelid:intrinsic-of-val-safety, r=oli-obk
...
Make `size_of_val` and `min_align_of_val` intrinsics unsafe
Fixes #80668 .
r? `@oli-obk`
2021-01-05 17:07:25 +00:00
Jake Vossen
f37e737535
fixed const_generics error help
2021-01-05 00:01:48 -07:00
Camelid
bbf175df3c
Make size_of_val
and min_align_of_val
intrinsics unsafe
2021-01-04 19:23:55 -08:00
Yuki Okushi
be2a3f8642
Rollup merge of #80538 - JulianKnodt:err_usize, r=lcnr
...
Add check for `[T;N]`/`usize` mismatch in astconv
Helps clarify the issue in #80506
by adding a specific check for mismatches between [T;N] and usize.
r? `@lcnr`
2021-01-05 09:52:37 +09:00
kadmin
54883e0a1c
Add check for array/usize mismatch in astconv
2021-01-04 10:07:15 +00:00
Matthias Krüger
e2272cdffc
remove redundant closures (clippy::redundant_closure)
2021-01-03 13:34:24 +01:00
Roxane
b498870d9c
use hir::Place instead of Symbol in closure_kind_origin
2021-01-02 17:49:05 -05:00
Matthias Krüger
8a90626a46
reduce borrowing and (de)referencing around match patterns (clippy::match_ref_pats)
2021-01-02 20:09:17 +01:00
Dániel Buga
e0300716ef
Print actual enum variant
2021-01-02 11:06:30 +01:00
Rémy Rakic
1fc3c4c16d
adjust const generics defaults FIXMEs to the new feature gate
2021-01-01 11:01:01 +01:00
Julian Knodt
61f33bfd29
first pass at default values for const generics
...
- Adds optional default values to const generic parameters in the AST
and HIR
- Parses these optional default values
- Adds a `const_generics_defaults` feature gate
2021-01-01 10:55:10 +01:00