aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* | Merge #6745bors[bot]2020-12-0712-99/+84
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6745: Some more proc macro cleanups r=jonas-schievink a=jonas-schievink * Remove `ProcMacroClient::dummy` and just use `Option<ProcMacroClient>` instead * Remember the type of proc macros (later allows us to reject using an incorrect macro type) * Prepare a few internals for procedural attribute macros bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | Remove resolved FIXMEJonas Schievink2020-12-071-1/+0
| | |
| * | Remove dummy ProcMacroClient in favor of OptionJonas Schievink2020-12-075-71/+59
| | |
| * | Retain types of proc macros and allow attr. macrosJonas Schievink2020-12-076-22/+30
| | |
| * | Make `ProcMacroProcessExpander` privateJonas Schievink2020-12-071-1/+1
| | |
| * | ProcMacroProcessExpander: support attribute macrosJonas Schievink2020-12-072-21/+11
| | |
* | | Merge #6743bors[bot]2020-12-072-13/+11
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6743: Don't insert blank lines between doc attributes r=Veykril a=Veykril Fixes #6742. Doc attributes should be concatenated via a single linebreak as written in the [rustdoc book](https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html). Also changed the loop to use an iterator to get rid of the `docs.trim_end_matches("\n\n").to_owned()` part using `Itertools::intersperse`. Co-authored-by: Lukas Wirth <[email protected]>
| * | | Don't insert blank lines between doc attributesLukas Wirth2020-12-072-13/+11
| | | |
* | | | Merge #6731bors[bot]2020-12-077-5/+319
|\ \ \ \ | |_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6731: Add replace_match_with_if_let assist r=matklad a=Veykril Basically the counterpart to `replace_if_let_with_match`, I personally sometimes want to replace matches like ```rust match foo { pat => expr, _ => (), } ``` into the corresponding ```rust if let pat = foo { expr } ``` which is the main reasoning behind this. I put this into the same file as `replace_if_let_with_match` because the are complementing each other and I would probably rename the file to something like `replace_if_let_match` but I didn't do that for now because I was unsure whether git would still view this as a rename or not due to the amount of changes in the file so that the diff is still properly visible for now. Co-authored-by: Lukas Wirth <[email protected]>
| * | | Add replace_match_with_if_let assistLukas Wirth2020-12-057-5/+319
| | |/ | |/|
* | | Merge #6597bors[bot]2020-12-078-25/+137
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6597: Upgrade Chalk r=flodiebold a=flodiebold Also make overflow depth and max type size configurable through env variables. This can be helpful at least for debugging. Tests currently fail because of rust-lang/chalk#656, so we'll need to wait for the next update to merge this. Co-authored-by: Florian Diebold <[email protected]>
| * | | Upgrade ChalkFlorian Diebold2020-12-078-25/+137
|/ / / | | | | | | | | | | | | | | | | | | Also make overflow depth and max type size configurable through env variables. This can be helpful at least for debugging. Fixes #6628.
* | | Merge #6733bors[bot]2020-12-061-3/+39
|\ \ \ | | |/ | |/| | | | | | | | | | | | | | | | 6733: Update attributes completion list r=jonas-schievink a=Veykril Might be nice to have them grouped for readability/maintainability similar to how the [reference](https://doc.rust-lang.org/reference/attributes.html#built-in-attributes-index) does it but that would require the use of a `OnceCell` for sorting the entries back after construction. Co-authored-by: Lukas Wirth <[email protected]>
| * | Update attributes completion listLukas Wirth2020-12-061-3/+39
| | |
* | | Merge #6734bors[bot]2020-12-068-119/+1093
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6734: Emit additional diagnostics for hints/help/etc r=lnicola a=jonas-schievink This makes rust-analyzer diagnostics match native rustc diagnostics in the terminal more closely. Unfortunately all of this is a bodge, since we already provide this information to the client in the form of `DiagnosticRelatedInformation`, but at least VS Code chooses such a poor UI for these that they don't help much, as evidenced [here](https://twitter.com/yaahc_/status/1335297260444250112) and in https://github.com/rust-lang/rust/issues/79741. This PR papers over these client UI problems by taking the `DiagnosticRelatedInformation` and turning each one into its own hint-level diagnostic, which makes it show up in the source code. Quick fixes are attached to all resulting diagnostics, which makes them more discoverable. ### Example: "Consider removing this semicolon" ![screenshot-2020-12-06-01:27:29](https://user-images.githubusercontent.com/1786438/101268366-46423980-3762-11eb-9a69-1ff0b1806c2f.png) ![screenshot-2020-12-06-01:27:39](https://user-images.githubusercontent.com/1786438/101268367-46dad000-3762-11eb-81fa-afd234d44f17.png) ![screenshot-2020-12-06-01:27:46](https://user-images.githubusercontent.com/1786438/101268368-46dad000-3762-11eb-9205-4b9bd9f4406d.png) ### Example: "Value used after move" ![screenshot-2020-12-06-01:33:00](https://user-images.githubusercontent.com/1786438/101268447-22332800-3763-11eb-85ce-8c742927a2c8.png) ![screenshot-2020-12-06-01:33:07](https://user-images.githubusercontent.com/1786438/101268448-22cbbe80-3763-11eb-8f16-0590895d8bc6.png) Co-authored-by: Jonas Schievink <[email protected]>
| * | Apply suggestions from code reviewJonas Schievink2020-12-062-2/+2
| | | | | | | | | Co-authored-by: Laurențiu Nicola <[email protected]>
| * | Update expect testsJonas Schievink2020-12-067-46/+977
| | |
| * | Emit additional diagnostics for hints/help/etcJonas Schievink2020-12-061-73/+116
|/ /
* | Merge #6726bors[bot]2020-12-042-2/+4
|\ \ | | | | | | | | | | | | | | | | | | | | | 6726: Add slightly more profiling details r=jonas-schievink a=jonas-schievink bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | Add slightly more profiling detailsJonas Schievink2020-12-042-2/+4
|/ /
* | Merge #6725bors[bot]2020-12-041-26/+15
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6725: Don't respawn proc macro server on crash r=jonas-schievink a=jonas-schievink Now the thread managing IPC will exit when the server process crashes instead of respawning it. Closes https://github.com/rust-analyzer/rust-analyzer/issues/6707 bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | Don't respawn proc macro server on crashJonas Schievink2020-12-041-26/+15
| | |
* | | Merge #6721bors[bot]2020-12-048-37/+45
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | 6721: Use METHOD semantic token type r=kjeremy a=lnicola Closes #6685 Co-authored-by: Laurențiu Nicola <[email protected]>
| * | Use METHOD semantic token typeLaurențiu Nicola2020-12-048-37/+45
| | |
* | | Merge #6724bors[bot]2020-12-041-11/+18
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6724: Fix `diagnostics` subcommand, look at all modules r=jonas-schievink a=jonas-schievink The `diagnostics` subcommand used to only compute diagnostics for `lib.rs` / the root module of all workspace crates. This fixed it and makes it look at every module. bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | | Fix `diagnostics` subcommand, look at all modulesJonas Schievink2020-12-041-11/+18
| | | |
* | | | Merge #6723bors[bot]2020-12-042-1/+26
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6723: Use correct, full substs for self type in impl r=flodiebold a=flodiebold Without arbitrary self types, the self type could never refer to the method type parameters, so this wasn't a problem; but with arbitrary self types, it can. This fixes the crash from #6668; but it doesn't make method resolution work for these methods. Co-authored-by: Florian Diebold <[email protected]>
| * | | Use correct, full substs for self type in implFlorian Diebold2020-12-042-1/+26
|/ / / | | | | | | | | | | | | | | | | | | | | | Without arbitrary self types, the self type could never refer to the method type parameters, so this wasn't a problem; but with arbitrary self types, it can. This fixes the crash from #6668; but it doesn't make method resolution work for these methods.
* | | Merge #6722bors[bot]2020-12-041-15/+5
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6722: Minor proc macro cleanups r=jonas-schievink a=jonas-schievink bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | | Unwrap `process.stdio()` resultJonas Schievink2020-12-041-4/+1
| | | | | | | | | | | | | | | | If this is ever `None` here, that's a bug
| * | | Destructure in for loopJonas Schievink2020-12-041-3/+1
| | | |
| * | | Remove unnecessary `Option`Jonas Schievink2020-12-041-8/+3
|/ / /
* | | Merge #6715bors[bot]2020-12-031-0/+5
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | | | | 6715: Don't diagnose `#[cfg]` in macros r=jonas-schievink a=jonas-schievink Fixes https://github.com/rust-analyzer/rust-analyzer/issues/6363 bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | Don't diagnose `#[cfg]` in macrosJonas Schievink2020-12-031-0/+5
|/ /
* | Merge #6713bors[bot]2020-12-032-5/+2
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 6713: Make `compile_error!` message match upstream rustc r=jonas-schievink a=jonas-schievink It only consists of the argument passed to it. bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | Make `compile_error!` message match upstream rustcJonas Schievink2020-12-032-5/+2
|/ / | | | | | | It only consists of the argument passed to it
* | Merge #6712bors[bot]2020-12-032-8/+18
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 6712: Fix proc macro token mapping r=jonas-schievink a=jonas-schievink Diagnostics inside proc macros are currently incorrectly placed at their original offset, but inside the containing file. This fixes that, by allowing the creation of `ExpansionInfo` from non-`macro_rules!` macro invocations. bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | Fix proc macro token mappingJonas Schievink2020-12-032-8/+18
|/ /
* | Merge #6700bors[bot]2020-12-036-67/+223
|\ \ | | | | | | | | | | | | | | | | | | | | | 6700: More macro diagnostics improvements r=jonas-schievink a=jonas-schievink This threads macro expansion errors through `eager.rs` and the `AsMacroCall` trait, improving macro diagnostics emitted during body lowering. Co-authored-by: Jonas Schievink <[email protected]>
| * | Rename `error_sink` to `diagnostic_sink`Jonas Schievink2020-12-031-11/+12
| | |
| * | Make `compile_error!` lazy and emit a diagnosticJonas Schievink2020-12-033-21/+34
| | |
| * | Give better diagnostic if `OUT_DIR` is unsetJonas Schievink2020-12-032-9/+20
| | |
| * | Update/Fix testsJonas Schievink2020-12-031-4/+15
| | |
| * | Propagate eager expansion errorsJonas Schievink2020-12-033-33/+153
| | |
* | | Merge #6711bors[bot]2020-12-031-4/+4
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6711: cargo update: bump libloading to fix a double-free r=kjeremy a=kjeremy Co-authored-by: kjeremy <[email protected]>
| * | | cargo update: bump libloading to fix a double-freekjeremy2020-12-031-4/+4
|/ / /
* | | Merge #6710bors[bot]2020-12-038-1441/+1419
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6710: Extract tests module to file in ide_db crate r=matklad a=sasurau4 Helps with #6522 - pass `cargo test` Co-authored-by: Daiki Ihara <[email protected]>
| * | | Extract tests module to file in ide_db crateDaiki Ihara2020-12-038-1441/+1419
| |/ /
* / / Document statelessness invariantAleksey Kladov2020-12-031-0/+16
|/ /
* | Merge #6702bors[bot]2020-12-021-2/+2
|\ \ | | | | | | | | | | | | | | | | | | | | | 6702: Bump mio for safety goodness r=kjeremy a=kjeremy Co-authored-by: kjeremy <[email protected]>