about summary refs log tree commit diff
path: root/compiler/rustc_resolve
AgeCommit message (Collapse)AuthorLines
2022-04-29Use the correct lifetime binder for elided lifetimes in path.Camille GILLOT-11/+14
2022-04-29errors: `span_suggestion` takes `impl ToString`David Wood-1/+1
Change `span_suggestion` (and variants) to take `impl ToString` rather than `String` for the suggested code, as this simplifies the requirements on the diagnostic derive. Signed-off-by: David Wood <david.wood@huawei.com>
2022-04-29Ban non-static in const generics in AST.Camille GILLOT-33/+34
2022-04-28Auto merge of #96495 - Dylan-DPC:rollup-9lm4tpp, r=Dylan-DPCbors-3/+1
Rollup of 7 pull requests Successful merges: - #96377 (make `fn() -> _ { .. }` suggestion MachineApplicable) - #96397 (Make EncodeWide implement FusedIterator) - #96421 (Less `NoDelim`) - #96432 (not need `Option` for `dbg_scope`) - #96466 (Better error messages when collecting into `[T; n]`) - #96471 (replace let else with `?`) - #96483 (Add missing `target_feature` to the list of well known cfg names) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2022-04-28Rollup merge of #96471 - BoxyUwU:let_else_considered_harmful, r=lcnrDylan DPC-3/+1
replace let else with `?` r? `@oli-obk`
2022-04-27Auto merge of #91557 - cjgillot:ast-lifetimes-named, r=petrochenkovbors-50/+202
Perform lifetime resolution on the AST for lowering Lifetime resolution is currently implemented several times. Once during lowering in order to introduce in-band lifetimes, and once in the resolve_lifetimes query. However, due to the global nature of lifetime resolution and how it interferes with hygiene, it is better suited on the AST. This PR implements a first draft of lifetime resolution on the AST. For now, we specifically target named lifetimes and everything we need to remove lifetime resolution from lowering. Some diagnostics have already been ported, and sometimes made more precise using available hygiene information. Follow-up PRs will address in particular the resolution of anonymous lifetimes on the AST. We reuse the rib design of the current resolution framework. Specific `LifetimeRib` and `LifetimeRibKind` types are introduced. The most important variant is `LifetimeRibKind::Generics`, which happens each time we encounter something which may introduce generic lifetime parameters. It can be an item or a `for<...>` binder. The `LifetimeBinderKind` specifies how this rib behaves with respect to in-band lifetimes. r? `@petrochenkov`
2022-04-27Collect extra lifetime parameters during late resolution.Camille GILLOT-9/+44
2022-04-27Use LifetimeRes during lowering.Camille GILLOT-48/+165
2022-04-27Do not resolve elided lifetimes in path twice.Camille GILLOT-1/+1
2022-04-27tut tut tutEllen-3/+1
2022-04-25Auto merge of #96246 - SparrowLii:bound_contxet, r=compiler-errorsbors-6/+6
Add `BoundKind` in `visit_param_bounds` to check questions in bounds From the FIXME in the impl of `AstValidator`. Better bound checks by adding `BoundCtxt` type parameter to `visit_param_bound` cc `@ecstatic-morse`
2022-04-23Compute has_pub_restricted in the resolver.Camille GILLOT-0/+7
2022-04-23Fix lints.Camille GILLOT-1/+8
2022-04-23Drop vis in Item.Camille GILLOT-0/+2
2022-04-23Stop visiting visibility.Camille GILLOT-2/+2
2022-04-21Remove redundant `format!`sNixon Enraght-Moony-2/+2
2022-04-21rename to `BoundKind` and add commentsSparrowLii-6/+6
2022-04-20Add `BoundCtxt` in `visit_param_bounds` to check questions in boundsSparrowLii-6/+6
2022-04-19Rollup merge of #96142 - cjgillot:no-crate-def-index, r=petrochenkovDylan DPC-24/+21
Stop using CRATE_DEF_INDEX outside of metadata encoding. `CRATE_DEF_ID` and `CrateNum::as_def_id` are almost always what we want. We should not manipulate raw `DefIndex` outside of metadata encoding.
2022-04-17Stop using CRATE_DEF_INDEX.Camille GILLOT-24/+21
`CRATE_DEF_ID` and `CrateNum::as_def_id` are almost always what we want.
2022-04-17Lint elided lifetimes in path on the AST.Camille GILLOT-61/+188
2022-04-17Report undeclared lifetimes on AST.Camille GILLOT-381/+831
2022-04-17Remove is_in_fn_syntax.Camille GILLOT-11/+0
2022-04-17Visit generics inside visit_fn.Camille GILLOT-2/+10
2022-04-17Count number of lifetime parameters in a separate pass.Camille GILLOT-13/+39
2022-04-16Rollup merge of #95887 - petrochenkov:doclink5, r=cjgillotDylan DPC-30/+28
resolve: Create dummy bindings for all unresolved imports Apparently such bindings weren't previously created for all unresolved imports, causing issues like https://github.com/rust-lang/rust/issues/95879. In this PR I'm trying to create such dummy bindings in a more centralized way by calling `import_dummy_binding` once for all imports in `finalize_imports`. Fixes https://github.com/rust-lang/rust/issues/95879.
2022-04-14Reimplement lowering of sym operands for asm! so that it also works with ↵Amanieu d'Antras-2/+71
global_asm!
2022-04-12Rollup merge of #95918 - compiler-errors:issue-95878, r=cjgillotDylan DPC-0/+9
Delay a bug when we see SelfCtor in ref pattern Fixes #95878
2022-04-12Rollup merge of #95405 - cjgillot:probe, r=petrochenkovDylan DPC-2191/+2337
Move name resolution logic to a dedicated file The code resolution logic from an Ident is scattered between several files. The first commits creates `rustc_resolve::probe` module to hold the different mutually recursive functions together. Just a move, no code change. The following commits attempt to make the logic a bit more readable. The two fields `last_import_segment` and `unusable_binding` are replaced by function parameters. In order to manage the fallout, `maybe_` variants of the function are added, dedicated to speculative resolution. r? `@petrochenkov`
2022-04-12Handle `unusable_binding` more compactly.Vadim Petrochenkov-17/+14
2022-04-12Fix imports.Camille GILLOT-8/+3
2022-04-12Move diagnostic methods to the dedicated module.Camille GILLOT-477/+472
2022-04-12Simplify error reporting.Camille GILLOT-85/+76
2022-04-12Move path resolution error to rustc_resolve::diagnostics.Camille GILLOT-164/+207
2022-04-12Make the logic more explicit with let chains.Camille GILLOT-18/+16
2022-04-12Do not record Res when builing a suggestion.Camille GILLOT-6/+9
2022-04-12Insert error after checking for binding usability.Camille GILLOT-6/+6
2022-04-12Pass last_import_segment and unusable_binding as parameters.Camille GILLOT-79/+177
2022-04-12Simplify binding finalization.Camille GILLOT-53/+54
2022-04-12Move ident resolution to a dedicated module.Camille GILLOT-1643/+1668
2022-04-12Rollup merge of #95936 - TaKO8Ki:fix-relative-paths-error-message, r=Dylan-DPCMatthias Krüger-1/+1
Fix a bad error message for `relative paths are not supported in visibilities` error closes #95638
2022-04-11fix a bad error message for `relative paths are not supported in ↵Takayuki Maeda-1/+1
visibilities` error
2022-04-11Rollup merge of #95907 - compiler-errors:diag, r=Dylan-DPCMatthias Krüger-7/+6
address fixme for diagnostic variable name quick rename
2022-04-10Delay a bug when we see SelfCtor in ref patternMichael Goulet-0/+9
2022-04-10resolve: Create dummy bindings for all unresolved importsVadim Petrochenkov-30/+28
2022-04-10FIXME for diagnostic variable nameMichael Goulet-7/+6
2022-04-10Store LocalDefId in is_late_bound_map.Camille GILLOT-7/+10
This allows to avoid looking at HIR from borrowck.
2022-04-09Auto merge of #95697 - klensy:no-strings, r=petrochenkovbors-1/+1
refactor: simplify few string related interactions Few small optimizations: check_doc_keyword: don't alloc string for emptiness check check_doc_alias_value: get argument as Symbol to prevent needless string convertions check_doc_attrs: don't alloc vec, iterate over slice. replace as_str() check with symbol check get_single_str_from_tts: don't prealloc string trivial string to str replace LifetimeScopeForPath::NonElided use Vec<Symbol> instead of Vec<String> AssertModuleSource use FxHashSet<Symbol> instead of BTreeSet<String> CrateInfo.crate_name replace FxHashMap<CrateNum, String> with FxHashMap<CrateNum, Symbol>
2022-04-08check_doc_keyword: don't alloc string for emptiness checkklensy-1/+1
check_doc_alias_value: get argument as Symbol to prevent needless string convertions check_doc_attrs: don't alloc vec, iterate over slice. Vec introduced in #83149, but no perf run posted on merge replace as_str() check with symbol check get_single_str_from_tts: don't prealloc string trivial string to str replace LifetimeScopeForPath::NonElided use Vec<Symbol> instead of Vec<String> AssertModuleSource use BTreeSet<Symbol> instead of BTreeSet<String> CrateInfo.crate_name replace FxHashMap<CrateNum, String> with FxHashMap<CrateNum, Symbol>
2022-04-06Fix unit struct/enum variant in destructuring assignmentMichael Goulet-7/+4