aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Fill code action capabilities with a functionkjeremy2020-05-191-29/+27
|
* LSP: Two stage initializationkjeremy2020-05-193-26/+57
| | | | | | | | | | Fills in server information. Derives CodeAction capabilities from the client. If code action literals are unsupported we fall back to the "simple support" which just sends back commands (this is already supported in our config). The difference being that we did not adjust our server capabilities so that if the client was checking for `CodeActionProvider: "true"` in the response that would have failed.
* Merge #4513bors[bot]2020-05-191-22/+22
|\ | | | | | | | | | | | | | | 4513: Update crates r=kjeremy a=kjeremy Co-authored-by: kjeremy <[email protected]>
| * Update crateskjeremy2020-05-191-22/+22
|/
* Merge #4501bors[bot]2020-05-182-5/+18
|\ | | | | | | | | | | | | | | | | | | 4501: Querify `importable_locations_in_crate` r=jonas-schievink a=jonas-schievink This brings the time needed to compute the `add_missing_impl_members` assist down from ~5 minutes to 20 seconds on my test workload (which is editing within an impl of a MIR [`MutVisitor`](https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/mir/visit/trait.MutVisitor.html)) cc #4498 Co-authored-by: Jonas Schievink <[email protected]>
| * Querify `importable_locations_in_crate`Jonas Schievink2020-05-182-5/+18
| | | | | | | | | | This brings the time needed to compute the `add_missing_impl_members` assist down from ~5 minutes to 20 seconds
* | Merge #4497bors[bot]2020-05-182-9/+41
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4497: Create LowerCtx on the fly r=matklad a=edwin0cheng Previously we create `LowerCtx` at the beginning of lowering, however, the hygiene content is in fact changing between macro expression expanding. This PR change it to create the `LowerCtx` on the fly to fix above bug. However, #4465 is not fixed by this PR, the goto-def is still not work yet. It only fixed the infer part. Co-authored-by: Edwin Cheng <[email protected]>
| * | Create LowerCtx on the flyEdwin Cheng2020-05-172-9/+41
| | |
* | | Merge #4493bors[bot]2020-05-181-0/+132
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4493: Provide builtin impls of Fn traits for fn-pointers r=flodiebold a=hban Meant to be, but isn't actually a fix for #2880. Consider this snippet: ```rust use std::marker::PhantomData; use std::ops::Deref; struct Lazy<T, F/* = fn() -> T*/>(F, PhantomData<T>); impl<T, F> Lazy<T, F> { pub fn new(f: F) -> Lazy<T, F> { Lazy(f, PhantomData) } } impl<T, F: FnOnce() -> T> Deref for Lazy<T, F> { type Target = T; fn deref(&self) -> &T { todo!() } } fn test() { let lazy1: Lazy<u32, _> = Lazy::new(|| 0u32); let r1 = lazy1.to_string(); fn make_u32_fn() -> u32 { todo!() } let make_u32_fn_ptr: fn() -> u32 = make_u32_fn; let lazy2: Lazy<u32, _> = Lazy::new(make_u32_fn_ptr); let r2 = lazy2.to_string(); } ``` * On current master: * When type default is commented-out, `r1` is correctly inferred, `r2` in _{unknown}_. * When type default is not commented-out, both `r1` and `r2` are _{unknown}_. * With this PR: * When type default is commented-out, both `r1` and `r2` are correctly inferred. * When type default is not commented-out, both `r1` and `r2` are _{unknown}_. Well, it's a improvement at least. I guess this thing with type defaults is a different problem. I also tried add Fn impls for fn items, but wasn't successful. So this PR only adds those impls for fn pointers. Co-authored-by: Hrvoje Ban <[email protected]>
| * | | Add more tests for Fn traitsHrvoje Ban2020-05-181-0/+132
| | | |
* | | | Merge #4499bors[bot]2020-05-185-76/+181
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4499: CodeLens configuration options r=vsrs a=vsrs This PR - adds an option to granularly enable\disable all CodeLens, just like the TypeScript extension. - fixes a minor bug for doctests. It makes no sense to show `Debug` lens for them as cargo `Can't skip running doc tests with --no-run`. Co-authored-by: vsrs <[email protected]>
| * | | | Add "rust-analyzer.lens.enable"vsrs2020-05-183-6/+22
| | | | |
| * | | | code formattingvsrs2020-05-173-20/+22
| | | | |
| * | | | Runnable QuickPick with debuggees onlyvsrs2020-05-171-3/+14
| | | | |
| * | | | CodeLens configuration options.vsrs2020-05-174-88/+164
| | |_|/ | |/| |
* | | | Merge #4496bors[bot]2020-05-172-3/+3
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4496: Relax VS Code version requirement r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | Relax VS Code version requirementAleksey Kladov2020-05-172-3/+3
|/ / /
* | | Merge #4473bors[bot]2020-05-171-0/+3
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4473: Color macros r=matklad a=georgewfraser Adds a fallback scope for macros. Before: <img width="359" alt="Screen Shot 2020-05-15 at 7 31 03 PM" src="https://user-images.githubusercontent.com/1369240/82108339-a304d680-96e2-11ea-9521-e95d5d330c32.png"> After: <img width="373" alt="Screen Shot 2020-05-15 at 7 29 58 PM" src="https://user-images.githubusercontent.com/1369240/82108308-81a3ea80-96e2-11ea-8660-7f6979df59bf.png"> Note how `hashset` in `maplit::hashset` is now yellow. Fixes #4462 Co-authored-by: George Fraser <[email protected]>
| * | Color macros (fixes #4462)George Fraser2020-05-161-0/+3
| | |
* | | Merge #4489bors[bot]2020-05-175-16/+27
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4489: Memory allocation optimization r=matklad a=simonvandel I did some profiling using DHAT, and this was what I could easily optimize without much knowledge of the codebase. This speeds up analysis-stats on rust-analyser by ~4% on my local machine. **Benchmark** âžœ rust-analyzer-base git:(master) hyperfine --min-runs=2 '/home/simon/Documents/rust-analyzer/target/release/rust-analyzer analysis-stats .' '/home/simon/Documents/rust-analyzer-base/target/release/rust-analyzer analysis-stats .' Benchmark #1: /home/simon/Documents/rust-analyzer/target/release/rust-analyzer analysis-stats . Time (mean ± σ): 49.621 s ± 0.317 s [User: 48.725 s, System: 0.792 s] Range (min … max): 49.397 s … 49.846 s 2 runs Benchmark #2: /home/simon/Documents/rust-analyzer-base/target/release/rust-analyzer analysis-stats . Time (mean ± σ): 51.764 s ± 0.045 s [User: 50.882 s, System: 0.756 s] Range (min … max): 51.733 s … 51.796 s 2 runs Summary '/home/simon/Documents/rust-analyzer/target/release/rust-analyzer analysis-stats .' ran 1.04 ± 0.01 times faster than '/home/simon/Documents/rust-analyzer-base/target/release/rust-analyzer analysis-stats .' Co-authored-by: Simon Vandel Sillesen <[email protected]>
| * | | Reuse Vec allocationsSimon Vandel Sillesen2020-05-161-12/+21
| | | |
| * | | Reduce reallocations in ra_tt::buffer::TokenBuffer::new_innerSimon Vandel Sillesen2020-05-161-1/+3
| | | |
| * | | Shrink ra_parser::Event from 32 bytes to 16 bytesSimon Vandel Sillesen2020-05-163-3/+3
| | |/ | |/| | | | | | | This boxes the Error variant with the assumption that it is rarely constructed
* | | Merge #4484bors[bot]2020-05-163-15/+40
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | 4484: Allow calling dyn trait super trait methods without the super trait in scope r=flodiebold a=flodiebold This also removes some vestiges of the old impl trait support which I think aren't currently in use. Co-authored-by: Florian Diebold <[email protected]>
| * | Allow calling dyn trait super trait methods without the super trait in scopeFlorian Diebold2020-05-163-15/+40
| | | | | | | | | | | | | | | This also removes some vestiges of the old impl trait support which I think aren't currently in use.
* | | Merge #4472bors[bot]2020-05-164-2/+115
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | 4472: Fix path resolution for module and function with same name r=hasali19 a=hasali19 This fixes #3970 and also fixes completion for the same issue. Co-authored-by: Hasan Ali <[email protected]>
| * | Add doc comment for resolve_hir_path_qualifierHasan Ali2020-05-161-0/+13
| | |
| * | Fix completion and hover for module and function of same nameHasan Ali2020-05-164-2/+102
| |/
* | Merge #4479bors[bot]2020-05-163-34/+53
|\ \ | | | | | | | | | | | | | | | | | | | | | 4479: Chalk upgrade r=matklad a=flodiebold This includes the fix for `dyn Trait` super traits, but I noticed that still a lot of `db.super_trait_method()` calls don't work because the super trait isn't in scope (because it doesn't actually need to be). Somehow, I thought we handled that already, but I'll fix it in a separate PR. Also I'll see what happens if we use more of Chalk's new built-in types and traits in a separate PR. Co-authored-by: Florian Diebold <[email protected]>
| * | Chalk upgradeFlorian Diebold2020-05-163-34/+53
|/ /
* | Merge #4288bors[bot]2020-05-161-5/+206
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | 4288: Add rename self to parameter and back. r=zbsz a=zbsz This is a first stab at #3439 I liked the idea to do this as a rename instead of separate assist, so I tried implementing that. It mostly works, but I'm sure there are some cases that I missed, especially in regards to parameter type. Note: I'm playing with this this as a way to learn Rust and this project. So I'm sure it could be cleaner and put in better places`. Any suggestions? Co-authored-by: zbsz <[email protected]>
| * Add 'self to parameter' renaming.zbsz2020-05-161-5/+206
|/
* Merge #4470bors[bot]2020-05-156-19/+197
|\ | | | | | | | | | | | | | | | | | | | | | | | | 4470: Handle `Self` in values and patterns r=matklad a=flodiebold I.e. - `Self(x)` or `Self` in tuple/unit struct impls - `Self::Variant(x)` or `Self::Variant` in enum impls - the same in patterns Fixes #4454. Co-authored-by: Florian Diebold <[email protected]>
| * Handle `Self` in values and patternsFlorian Diebold2020-05-156-19/+197
|/ | | | | | | | | I.e. - `Self(x)` or `Self` in tuple/unit struct impls - `Self::Variant(x)` or `Self::Variant` in enum impls - the same in patterns Fixes #4454.
* Merge #4448bors[bot]2020-05-157-101/+258
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4448: Generate configuration for launch.json r=vsrs a=vsrs This PR adds two new commands: `"rust-analyzer.debug"` and `"rust-analyzer.newDebugConfig"`. The former is a supplement to the existing `"rust-analyzer.run"` command and works the same way: asks for a runnable and starts new debug session. The latter allows adding a new configuration to **launch.json** (or to update an existing one). If the new option `"rust-analyzer.debug.useLaunchJson"` is set to true then `"rust-analyzer.debug"` and Debug Lens will first look for existing debug configuration in **launch.json**. That is, it has become possible to specify startup arguments, env variables, etc. `"rust-analyzer.debug.useLaunchJson"` is false by default, but it might be worth making true the default value. Personally I prefer true, but I'm not sure if it is good for all value. ---- I think that this PR also solves https://github.com/rust-analyzer/rust-analyzer/issues/3441. Both methods to update launch.json mentioned in the issue do not work: 1. Menu. It is only possible to add a launch.json configuration template via a debug adapter. And anyway it's only a template and it is impossible to specify arguments from an extension. 2. DebugConfigurationProvider. The exact opposite situation: it is possible to specify all debug session settings, but it is impossible to export these settings to launch.json. Separate `"rust-analyzer.newDebugConfig"` command looks better for me. ---- Fixes #4450 Fixes #3441 Co-authored-by: vsrs <[email protected]> Co-authored-by: vsrs <[email protected]>
| * Fix occasional test run during debug configurationvsrs2020-05-151-1/+5
| |
| * Fix runnable naming in the client side fallback.vsrs2020-05-141-1/+1
| |
| * Better label for a runnable.vsrs2020-05-141-1/+1
| | | | | | Co-authored-by: Aleksey Kladov <[email protected]>
| * Multiple binaries support for launch.json.vsrs2020-05-142-3/+7
| | | | | | | | Generate unique names on the LSP side.
| * Mixed "bin" and "test" artifacts workaround.vsrs2020-05-141-2/+7
| |
| * Multiple binaries support for launch.json.vsrs2020-05-141-0/+5
| |
| * Fix "rust-analyzer.debug" for QuickPick binaries.vsrs2020-05-141-0/+4
| |
| * Runnable quick pick with buttonsvsrs2020-05-141-21/+61
| |
| * Remove "rust-analyzer.debug.useLaunchJson" optionvsrs2020-05-143-19/+10
| |
| * Use launch.json in Debug Lens sessions.vsrs2020-05-133-2/+25
| | | | | | | | Add the possibility to use existing configurations via Debug Lens
| * DebugConfiguration simplification.vsrs2020-05-111-1/+11
| | | | | | | | ${workspaceRoot} substitution in generated DebugConfiguration.
| * "rust-analyzer.newDebugConfig" commandvsrs2020-05-114-3/+36
| |
| * "rust-analyzer.debug" commandvsrs2020-05-114-106/+144
| |
* | Merge #4431bors[bot]2020-05-153-3/+37
|\ \ | | | | | | | | | | | | | | | | | | | | | 4431: Store proc-macro result in salsa db r=matklad a=edwin0cheng Fixed #4315 Co-authored-by: Edwin Cheng <[email protected]>
| * | Store proc-macro result in salsa dbEdwin Cheng2020-05-143-3/+37
| | |