aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Cleanup parameter_hint_heuristics inlay hints testLukas Wirth2021-06-041-87/+68
|
* Reorganize inlay_hints testsLukas Wirth2021-06-041-522/+493
|
* Merge #9128bors[bot]2021-06-0317-35/+234
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9128: feat: expand procedural attribute macros r=jonas-schievink a=jonas-schievink This adds experimental support for attribute macros. They can be enabled by setting `rust-analyzer.experimental.procAttrMacros` to `true`. Known issues: * Tokens aren't remapped, presumably because we edit the input syntax tree (this causes IDE features to not work inside items with attribute macros on them) * Macro errors aren't reported correctly Closes https://github.com/rust-analyzer/rust-analyzer/issues/8971 Fixes https://github.com/rust-analyzer/rust-analyzer/issues/8964 / https://github.com/la10736/rstest/issues/120 Fixes https://github.com/rust-analyzer/rust-analyzer/issues/2984 Fixes https://github.com/rust-analyzer/rust-analyzer/issues/5412 Fixes https://github.com/rust-analyzer/rust-analyzer/issues/6029 Fixes https://github.com/rust-analyzer/rust-analyzer/issues/6687 https://github.com/rust-analyzer/rust-analyzer/issues/6740 is still not fixed – we now expand `#[proc_macro_hack]`, but fail to expand the resulting `proc_macro_call!()` macro. Co-authored-by: Jonas Schievink <[email protected]>
| * Set enable_proc_attr_macros in hir_ty TestDBJonas Schievink2021-06-031-1/+9
| |
| * Update list of built-in attributesJonas Schievink2021-06-031-16/+22
| |
| * Make it opt-inJonas Schievink2021-06-039-4/+44
| |
| * Expand procedural attribute macrosJonas Schievink2021-06-037-14/+159
|/
* Merge #9130bors[bot]2021-06-031-70/+57
|\ | | | | | | | | | | | | | | | | | | | | 9130: Prefix/suffix parameter inlay hint hiding heuristic is more strict r=Veykril a=Veykril Instead of just plainly checking prefix/suffix of the argument string to the parameter name we only check for prefixes and suffixes if they are split apart via an underscore meaning, with the argument `foo`, it will be hidden for the parameter name `foo_bar` but not for `foobar`. bors r+ Closes https://github.com/rust-analyzer/rust-analyzer/issues/8878 Co-authored-by: Lukas Wirth <[email protected]>
| * Prefix/suffix parameter inlay hint hiding heuristic is more strictLukas Wirth2021-06-031-70/+57
| |
* | Merge #9129bors[bot]2021-06-035-5/+5
|\ \ | | | | | | | | | | | | | | | | | | | | | 9129: NFC: remove redundant clones (clippy::perf) r=Veykril a=matthiaskrgr Co-authored-by: Matthias Krüger <[email protected]>
| * | NFC: remove redundant clones (clippy::perf)Matthias Krüger2021-06-035-5/+5
|/ /
* | Merge #9127bors[bot]2021-06-032-4/+43
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 9127: internal: make variant fields inherit the enum's visibility in the ItemTree r=jonas-schievink a=jonas-schievink No observable changes from what I can tell, but this is "more correct". bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | ItemTree: make variant fields inherit the enum's visibilityJonas Schievink2021-06-032-4/+43
| | |
* | | Merge #9124bors[bot]2021-06-0313-60/+43
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | 9124: Apply a few clippy suggestions r=lnicola a=clemenswasser Co-authored-by: Clemens Wasser <[email protected]>
| * | Use push_strClemens Wasser2021-06-031-2/+2
| | |
| * | Apply more clippy suggestions and update generatedClemens Wasser2021-06-0311-142/+51
| | |
| * | Apply a few clippy suggestionsClemens Wasser2021-06-034-47/+121
| | |
* | | Merge #9104bors[bot]2021-06-033-2/+80
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9104: Implement `#[rustc_skip_array_during_method_dispatch]` r=flodiebold a=jonas-schievink haxx run the world Closes https://github.com/rust-analyzer/rust-analyzer/issues/8552 Part of https://github.com/rust-analyzer/rust-analyzer/issues/9056 Co-authored-by: Jonas Schievink <[email protected]>
| * | | Add commentJonas Schievink2021-06-031-0/+3
| | | |
| * | | Implement `#[rustc_skip_array_during_method_dispatch]`Jonas Schievink2021-06-013-2/+77
| | | |
* | | | Merge #9105bors[bot]2021-06-035-15/+50
|\ \ \ \ | |_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9105: internal: calculate pattern adjustments r=flodiebold a=iDawer This extends `InferenceResult` with `pub pat_adjustments: FxHashMap<PatId, Vec<Ty>>`. Fixes #9095 Co-authored-by: Dawer <[email protected]>
| * | | internal: implement pattern adjustments.Dawer2021-06-013-2/+35
| | | |
| * | | minor: Avoid eprintln on panicDawer2021-06-012-13/+15
| | | |
* | | | Merge #9123bors[bot]2021-06-031-0/+14
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9123: manual.adoc: add Gentoo Linux installation method r=lnicola a=mjkalyan Added installation instructions for the binary ebuild of the "latest" `rust-analyzer` in Gentoo's GURU repository. Co-authored-by: mjkalyan <[email protected]>
| * | | | manual.adoc: add Gentoo Linux installation methodmjkalyan2021-06-031-0/+14
|/ / / / | | | | | | | | Added installation instructions for the binary ebuild of the "latest" `rust-analyzer` in Gentoo's GURU repository.
* | | | Merge #9119bors[bot]2021-06-021-12/+56
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9119: fix: some minor "extract type alias" fixes r=jonas-schievink a=jonas-schievink It now correctly works inside traits, and no longer messes up the indentation of the original node bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | | | Preserve indentationJonas Schievink2021-06-021-5/+30
| | | | |
| * | | | Account for traitsJonas Schievink2021-06-021-10/+29
| | | | |
* | | | | Merge #9118bors[bot]2021-06-023-1/+3
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9118: Document that `addCallArgumentSnippets` requires `addCallParenthesis r=Veykril a=Veykril bors r+ Co-authored-by: Lukas Wirth <[email protected]>
| * | | | Document that `addCallArgumentSnippets` requires `addCallParenthesisLukas Wirth2021-06-023-1/+3
| | |_|/ | |/| |
* | | | Merge #9117bors[bot]2021-06-021-3/+3
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9117: Allow expand-macro to be invoked anywhere inside a macro call r=Veykril a=Veykril I don't really see a reason to only limit this to the name-ref of a macro. bors r+ Closes #4606 Co-authored-by: Lukas Wirth <[email protected]>
| * | | | Allow expand-macro to be invoked anywhere inside a macro callLukas Wirth2021-06-021-3/+3
| |/ / /
* | | | Merge #9114bors[bot]2021-06-022-19/+32
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | 9114: Fix bind patterns always being treated as ref taking patterns r=Veykril a=Veykril Fixes #9107 bors r+ Co-authored-by: Lukas Wirth <[email protected]>
| * | | Fix bind patterns always being treated as ref taking patternsLukas Wirth2021-06-022-19/+32
|/ / /
* | | Merge #9108bors[bot]2021-06-021-2/+31
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9108: Don't show extract into variable assist for unit expressions r=jonas-schievink a=brandondong **Reproduction:** ```rust fn main() { let mut i = 3; $0if i >= 0 { i += 1; } else { i -= 1; }$0 } ``` 1. Select the snippet of code between the $0's. 2. The extract into variable assist shows up, pushing down the more useful extract into function assist. 3. The resulting output of selecting the extract into variable assist is valid but with the extracted variable having the unit type: ```rust fn main() { let mut i = 3; let var_name = if i >= 0 { i += 1; } else { i -= 1; }; var_name } ``` **Fix:** - Don't show the extract into variable assist for unit expressions. I could not think of any scenarios where such a variable extraction would be desired. Co-authored-by: Brandon <[email protected]>
| * | | Don't show extract into variable assist for unit expressionsBrandon2021-06-021-2/+31
| |/ /
* | | Merge #9112bors[bot]2021-06-022-47/+127
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9112: Fix some bugs in `extract_struct_from_enum_variant` assist r=Veykril a=Veykril bors r+ Fixes #9100 Fixes #9099 Kind of fixes #9109, it now copies all the generics might be incorrect if the variant doesn't use all of them) Co-authored-by: Lukas Wirth <[email protected]>
| * | | Fix references to patterns in extract_struct_from_enum_variant assistLukas Wirth2021-06-021-26/+51
| | | |
| * | | Carry over attributes in extract_struct_from_enum_variantLukas Wirth2021-06-021-5/+32
| | | |
| * | | Account for generics in extract_struct_from_enum_variantLukas Wirth2021-06-022-20/+48
| | |/ | |/|
* | | Merge #9111bors[bot]2021-06-021-1/+27
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9111: fix: make "extract type alias" place extracted type alias outside of impl r=jonas-schievink a=jonas-schievink bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | | Place extracted type alias outside of implJonas Schievink2021-06-021-1/+27
| |/ /
* | | Merge #9110bors[bot]2021-06-029-66/+86
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | 9110: internal: simplify r=Veykril a=Veykril bors r+ Co-authored-by: Lukas Wirth <[email protected]>
| * | Remove obsolete is_new_item field on CompletionContextLukas Wirth2021-06-024-17/+5
| | |
| * | Add MethodCall and FieldAccess variants to ImmediateLocationLukas Wirth2021-06-027-49/+81
|/ /
* | Merge #9102bors[bot]2021-06-012-14/+28
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 9102: minor: Fall back to legacy prelude r=jonas-schievink a=jonas-schievink should fix https://github.com/rust-analyzer/rust-analyzer/issues/9101 bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | Fall back to legacy preludeJonas Schievink2021-06-012-14/+28
|/ /
* | Merge #9097bors[bot]2021-06-0112-141/+318
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | 9097: feat: Implement per-edition preludes r=jonas-schievink a=jonas-schievink Part of https://github.com/rust-analyzer/rust-analyzer/issues/9056 Our previous implementation was incorrect (presumably because of the misleading comment in libstd [here](https://github.com/rust-lang/rust/blob/a7890c7952bdc9445eb6c63dc671fa7a1ab0260d/library/std/src/lib.rs#L339-L343)). `#[prelude_import]` does not define the prelude, it can only override the implicit prelude for the current crate. This PR fixes that, which also makes the prelude imports in `rustc_span` work. Closes https://github.com/rust-analyzer/rust-analyzer/issues/8815. bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * Implement per-edition preludesJonas Schievink2021-06-0112-141/+318
|/
* Merge #8717bors[bot]2021-05-317-806/+2769
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8717: Update match checking algorithm r=iDawer a=iDawer I've recently got interest in the match checking to extend the current algo to support reporting witnesses of non-exhaustiveness. It appears the algo is outdated from rustc's implementation. I decided to rewrite it based on the latest rustc's version. It is a diff-based port to ra codebase. That means you can diff-compare these files to rustc. I'm striving to keep minimal ra-related changes in the algo to make it easier to backport future changes from the upstream. Based on upstream algorithm of version rust-lang/rust 1.52.0-nightly (25c15cdbe 2021-04-22) https://github.com/rust-lang/rust/blob/25c15cdbe/compiler/rustc_mir_build/src/thir/pattern/usefulness.rs The goal of this PR is to cover the current `missing-match-arm` diagnostic. What is remaining to do: - [x] Error handling. The errors that are unrelated to match checking will be handled before the check. Just like how it made in rustc. - [x] Lowering `hir_def::expr::Pat` to `hir_ty::diagnostics::match_check::Pat`. rustc's match checking works on top of `rustc_mir_build::thir::Pat`, which is lowered from `hir::Pat` and carries some extra semantics used by the check. All unrelated checks are done there. RA could use this to rule out running the check on unimplemented cases (`Pat::ConstBlock`, etc). - [x] ~~Proper~~Loose typecheck of match arm patterns (https://github.com/rust-analyzer/rust-analyzer/pull/8840, https://github.com/rust-analyzer/rust-analyzer/pull/8875). - [x] Tests from `hir_ty::diagnostics::match_check::tests`. - [x] Clean up `todo`s - [x] Test run on real repos https://github.com/rust-analyzer/rust-analyzer/pull/8717#issuecomment-847120265. Co-authored-by: Dawer <[email protected]>