aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* 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
| | |
* | | Merge #4460bors[bot]2020-05-1518-1506/+1490
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4460: Remove flycheck -> LSP dependency r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | CleanupsAleksey Kladov2020-05-152-85/+75
| | | |
| * | | Better structureAleksey Kladov2020-05-154-20/+15
| | | |
| * | | Move LSP bits from flycheck to rust-analyzerAleksey Kladov2020-05-1518-1506/+1505
|/ / / | | | | | | | | | | | | There should be only one place that knows about LSP, and that place is right before we spit JSON on stdout.
* | | Merge #4273bors[bot]2020-05-142-4/+532
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4273: Trigger add_vis assist on paths/record fields as well r=flodiebold a=TimoFreiberg Resolves #4037. - [x] Function defs - [x] ADT defs - [x] Enum variants - [x] Consts - [x] Statics - [x] Traits - [x] Type aliases - [x] Modules - [x] Record fields (using different implementation) - [x] struct fields - [x] enum variant fields - :x: union fields (`Semantics::resolve_record_field` seems to not work for union fields, so I think this can be handled in a future PR) - [x] More tests? - [x] Improve test fixture code and documentation a bit (see [Zulip](https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0/topic/resolve_path.20between.20fixture.20files)) Co-authored-by: Timo Freiberg <[email protected]>
| * | | Expand fixture documentation a littleTimo Freiberg2020-05-101-3/+17
| | | |
| * | | Trigger change_visibility assist when on an invisible struct fieldTimo Freiberg2020-05-101-61/+248
| | | | | | | | | | | | | | | | Union fields apparently don't work :(
| * | | Trigger change_visibility assist when on a path to an invisible defTimo Freiberg2020-05-101-1/+328
| | | |