Michael Goulet
5be30f9d79
Make async fn in traits work
2022-09-09 01:31:45 +00:00
Cameron Steffen
02ba216e3c
Refactor and re-use BindingAnnotation
2022-09-02 12:55:05 -05:00
Oli Scherer
ee3c835018
Always import all tracing macros for the entire crate instead of piecemeal by module
2022-09-01 14:54:27 +00:00
Oli Scherer
d3b22c7267
Directly use the instrument macro instead of its full path
2022-09-01 14:53:46 +00:00
Camille GILLOT
da9ccc2c98
Remove FnItemRibKind.
2022-08-23 00:08:42 +02:00
Camille GILLOT
613dc2204d
Improve local generic parameter suggestions.
2022-08-23 00:08:42 +02:00
Camille GILLOT
d7d701a9dc
Create specific ConstantHasGenerics for ConstantItemRibKind.
2022-08-23 00:08:42 +02:00
Matthias Krüger
8237efc52d
Rollup merge of #100392 - nnethercote:simplify-visitors, r=cjgillot
...
Simplify visitors
By removing some unused arguments.
r? `@cjgillot`
2022-08-11 22:53:08 +02:00
Nicholas Nethercote
232bd80130
Simplify rustc_ast::visit::Visitor::visit_poly_trait_ref.
...
It is passed an argument that is never used.
2022-08-11 11:10:01 +10:00
Camille GILLOT
9701845287
Do not consider method call receiver as an argument in AST.
2022-08-10 18:34:54 +02:00
Camille GILLOT
f6af4efec5
Use start_point instead of next_point to point to elided lifetime ampersand.
2022-08-07 14:35:11 +02:00
Camille GILLOT
ec3f3074a1
Always create elided lifetimes, even if inferred.
2022-07-30 17:58:26 +02:00
Camille GILLOT
267d3620a5
Move fn parameter ribs outwards.
2022-07-26 19:00:31 +02:00
Camille GILLOT
10be0dd8df
Replace LifetimeRes::Anonymous by LifetimeRes::Infer.
2022-07-26 19:00:31 +02:00
Camille GILLOT
ab63591f00
Remove the distinction between LifetimeName::Implicit and LifetimeName::Underscore.
2022-07-26 19:00:31 +02:00
Camille GILLOT
a2254d5d7c
Do not produce extra lifetime parameters when not needed.
2022-07-26 19:00:30 +02:00
bors
6dbae3ad19
Auto merge of #97313 - cjgillot:ast-lifetimes-anon, r=petrochenkov
...
Resolve function lifetime elision on the AST
~Based on https://github.com/rust-lang/rust/pull/97720~
Lifetime elision for functions is purely syntactic in nature, so can be resolved on the AST.
This PR replicates the elision logic and diagnostics on the AST, and replaces HIR-based resolution by a `delay_span_bug`.
This refactor allows for more consistent diagnostics, which don't have to guess the original code from HIR.
r? `@petrochenkov`
2022-07-25 20:02:55 +00:00
Camille GILLOT
3c5048d2ec
Report elision failures on the AST.
2022-07-25 19:19:23 +02:00
Jordan McQueen
e0c9be539a
Use span_bug in case of unexpected rib kind
...
Extremely minor QOL change to improve the ICE output in case this
default match case is encountered (an unexpected rib kind).
2022-07-23 13:26:45 +09:00
Camille GILLOT
bfd0435fd7
Introduce AnonymousLifetimeRib::Elided and use it for implied 'static.
2022-07-20 22:12:12 +02:00
bors
96c2df810b
Auto merge of #98120 - TaKO8Ki:box-diagnostic-metadata-field, r=estebank
...
[Experiment] Box `diagnostic_metadata` field
closes #97954
r? `@estebank`
2022-07-19 03:02:30 +00:00
Dylan DPC
e5a86d7358
Rollup merge of #98705 - WaffleLapkin:closure_binder, r=cjgillot
...
Implement `for<>` lifetime binder for closures
This PR implements RFC 3216 ([TI](https://github.com/rust-lang/rust/issues/97362 )) and allows code like the following:
```rust
let _f = for<'a, 'b> |a: &'a A, b: &'b B| -> &'b C { b.c(a) };
// ^^^^^^^^^^^--- new!
```
cc ``@Aaron1011`` ``@cjgillot``
2022-07-14 14:14:21 +05:30
Camille GILLOT
031b2c53cd
Always use CreateParameter mode for function definitions.
2022-07-13 14:14:37 +02:00
Maybe Waffle
3ebb852956
Add LifetimeBinderKind::Closure
2022-07-12 21:00:13 +04:00
Maybe Waffle
c2dbd62c7c
Lower closure binders to hir & properly check them
2022-07-12 21:00:03 +04:00
Maybe Waffle
40ae7b5b8e
Parse closure binders
...
This is first step in implementing RFC 3216.
- Parse `for<'a>` before closures in ast
- Error in lowering
- Add `closure_lifetime_binder` feature
2022-07-12 16:25:16 +04:00
bors
38b72154de
Auto merge of #98637 - cjgillot:bare-trait-anon-lt, r=petrochenkov
...
Create fresh lifetime parameters for bare fn trait too
The current code fails to account for the equivalence between `dyn FnMut(&mut u8)` and bare `FnMut(&mut u8)`, and treated them differently.
This PR introduces a special case for `Fn` traits, which are always fully resolved.
Fixes #98616
Fixes #98726
This will require a beta-backport, as beta contains that bug.
r? `@petrochenkov`
2022-07-11 17:09:37 +00:00
Obei Sideg
c2436d54d0
Check if E0530 is rustc_resolve::late::PatternSource::Match to emit suggestion
2022-07-08 14:06:50 +03:00
Obei Sideg
ea46e7a47e
Check if E0530 is tuple variant or tuple struct to emit suggestion
2022-07-08 13:20:05 +03:00
Camille GILLOT
21a12e8ab7
Handle fresh lifetimes on bare trait objects.
2022-07-02 09:21:55 +02:00
Maybe Waffle
9730221b9d
Remove excess rib while resolving closures
2022-06-23 12:21:23 +04:00
Camille GILLOT
7437136f0e
Use CreateParameter mode for closures too.
2022-06-21 21:13:43 +02:00
Camille GILLOT
32af719b07
Always create parameters for functions-like types.
2022-06-21 21:13:41 +02:00
Camille GILLOT
bc6a2c11ee
Leave the responsibility to create Fresh lifetimes to lowering.
2022-06-19 22:32:43 +02:00
Camille GILLOT
dc614b90ca
Make matches exhaustive.
2022-06-19 22:30:30 +02:00
Camille GILLOT
87c841e190
Remove the region terminology.
2022-06-19 22:28:53 +02:00
Camille GILLOT
bf38ba260d
Separate AnonymousCreateParameter and ReportElidedInPath.
2022-06-18 16:59:27 +02:00
Camille GILLOT
237e267b80
Refactor visit_fn.
2022-06-18 16:59:19 +02:00
Camille GILLOT
80c6a1f275
Rustfmt resolve_implementation.
2022-06-18 16:58:18 +02:00
Camille GILLOT
228def7e20
Extract AssocItem handling.
2022-06-18 16:56:30 +02:00
Takayuki Maeda
5ece481162
box diagnostic_metadata field
2022-06-15 11:23:19 +09:00
Camille GILLOT
603746a35e
Make ResolverAstLowering a struct.
2022-06-14 22:44:27 +02:00
Dylan DPC
640019ba6e
Rollup merge of #97812 - TaKO8Ki:suggest-to-swap-struct-and-trait, r=estebank
...
Suggest to swap a struct and a trait in trait impls
closes #89590
2022-06-11 07:42:14 +02:00
Camille GILLOT
4d871a25bf
Do not introduce bindings for types and consts in HRTB.
2022-06-09 21:49:14 +02:00
Takayuki Maeda
9db03b9bc8
suggest swapping a struct and a trait
...
fmt
2022-06-07 09:52:52 +09:00
Maybe Waffle
cae3c78664
Rename visit_generic_param{_slice => s}
2022-06-05 13:12:31 +04:00
Maybe Waffle
afaa9854fa
Replace &Vec<_>s with &[_]s
2022-06-03 20:42:42 +04:00
Camille GILLOT
2aa9c703ce
Use the same message as type & const generics.
2022-06-03 08:26:10 +02:00
Camille GILLOT
86bd99060c
Reuse resolve_label to check lifetime shadowing.
2022-06-03 08:26:10 +02:00
Camille GILLOT
c75409d5e4
Do not lower generic lifetime params when AST resolution emitted an error.
2022-06-03 08:26:10 +02:00