bors[bot] [Tue, 23 Jun 2020 14:55:03 +0000 (14:55 +0000)]
Merge #5004
5004: Fix panic in split/merge import assists r=matklad a=lnicola
Fixes #4368 #4905
Not sure if this is the best solution here. Maybe the `make` functions should be fallible? We generally seem to be playing whack-a-mole with panics in assists, although most of them are `unwrap`s in the assist code.
bors[bot] [Tue, 23 Jun 2020 13:25:43 +0000 (13:25 +0000)]
Merge #5002
5002: Fix underflow panic when doctests are at top of file r=Nashenas88 a=Nashenas88
While debugging a comment at the top of a test string, I discovered that the offset calculations could underflow and panic. This only seemed to occur in tests, I assume because it's running a debug mode. The wrapping is quickly fixed later on in release mode, which is why this seems to have gone unnoticed. The new checks ensure the value is always positive or zero.
Co-authored-by: Paul Daniel Faria <nashenas88@users.noreply.github.com>
bors[bot] [Mon, 22 Jun 2020 17:25:03 +0000 (17:25 +0000)]
Merge #4989
4989: Hotfix skipping the first chunks of the artifacts r=matklad a=Veetaha
Quick hotfix.
fixes: #4986, #4987
The stream starts being consumed once we put a handler for `data` event.
When extracting `stream.pipeline()` under `withTempFile` in #4963 I didn't move it into the scope too, which due to preliminary awaiting for async operations with the file system allowed for the first chunks of the file to be skipped
bors[bot] [Mon, 22 Jun 2020 14:37:45 +0000 (14:37 +0000)]
Merge #4900
4900: Self variant enum res fix r=BGluth a=BGluth
Fixes #4789.
This is my first PR for this project, so it's probably worth giving it an extra close look.
A few things that I wasn't sure about:
- Is `resolve_path` really the best place to perform this check? It seemed like a natural place, but perhaps there's a better place?
- When handling the new variant `PathResolution::VariantDef`, I couldn't see an obvious variant of `TypeNs` to return in `in_type_ns` for Unions and Structs.
bors[bot] [Sun, 21 Jun 2020 12:05:16 +0000 (12:05 +0000)]
Merge #4959
4959: Syntax highlighting for documentation comments on macro definitions r=matklad a=ltentrup
Two minor changes with regards to syntax highlighting of comments attached to macro definitions.
Before
<img width="290" alt="Bildschirmfoto 2020-06-20 um 00 05 19" src="https://user-images.githubusercontent.com/201808/85182705-c561b500-b289-11ea-944e-0bdf6508a44f.png">
After
<img width="288" alt="Bildschirmfoto 2020-06-20 um 00 03 36" src="https://user-images.githubusercontent.com/201808/85182727-d90d1b80-b289-11ea-9d2d-234731f19302.png">
Fixes #4949
bors[bot] [Sun, 21 Jun 2020 09:26:47 +0000 (09:26 +0000)]
Merge #4963
4963: Download artifacts into tmp dir r=matklad a=Veetaha
This should prevent partially downloaded files in cases when the user closes vsode before the download is complete.
There is also a new more descriptive error message when the user has multiple vscode windows open and tries to download the server.
Related: https://github.com/rust-analyzer/rust-analyzer/issues/4938#issuecomment-646738360
bors[bot] [Sat, 20 Jun 2020 22:14:21 +0000 (22:14 +0000)]
Merge #4947
4947: Replace `impls_in_trait` query with smarter use of `CrateImplDefs` r=matklad a=jonas-schievink
`impls_in_trait` was allocating a whopping ~400 MB of RAM when running analysis-stats on r-a itself.
Remove it, instead adding a query that computes a summary `CrateImplDefs` map for all transitive dependencies. This can probably still be made more efficient, but this already reduces the peak memory usage by 25% without much performance impact on analysis-stats.
bors[bot] [Sat, 20 Jun 2020 15:10:35 +0000 (15:10 +0000)]
Merge #4958
4958: Infer FnSig via Fn traits r=flodiebold a=adamrk
Addresses https://github.com/rust-analyzer/rust-analyzer/issues/4481.
When inferring types check if the callee implements one of the builtin `Fn` traits. Also autoderef the callee before trying to figure out it's `FnSig`.
bors[bot] [Fri, 19 Jun 2020 19:47:30 +0000 (19:47 +0000)]
Merge #4950
4950: Use correct substs for super trait assoc types r=matklad a=flodiebold
When referring to an associated type of a super trait, we used the substs of the
subtrait. That led to the #4931 crash if the subtrait had less parameters, but
it could also lead to other incorrectness if just the order was different.
Florian Diebold [Fri, 19 Jun 2020 14:29:38 +0000 (16:29 +0200)]
Use correct substs for super trait assoc types
When referring to an associated type of a super trait, we used the substs of the
subtrait. That led to the #4931 crash if the subtrait had less parameters, but
it could also lead to other incorrectness if just the order was different.
bors[bot] [Fri, 19 Jun 2020 15:08:52 +0000 (15:08 +0000)]
Merge #4851
4851: Add quickfix to add a struct field r=TimoFreiberg a=TimoFreiberg
Related to #4563
I created a quickfix for record literals first because the NoSuchField diagnostic was already there.
To offer that quickfix for FieldExprs with unknown fields I'd need to add a new diagnostic (or create a `NoSuchField` diagnostic for those cases)
I think it'd make sense to make this a snippet completion (to select the generated type), but this would require changing the `Analysis` API and I'd like some feedback before I touch that.
Co-authored-by: Timo Freiberg <timo.freiberg@gmail.com>
bors[bot] [Fri, 19 Jun 2020 13:43:42 +0000 (13:43 +0000)]
Merge #4937
4937: Allow overriding rust-analyzer display version r=matklad a=oxalica
The build script invokes `git` for version information which is displayed when rust-analyzer is called with `--version`. But in build environment without `git` or when the source code is not a git repo, there's no way to manually specify the version information.
This patch respects environment variable ~`REV`~ `RUST_ANALYZER_REV` in compile time for overriding.
bors[bot] [Fri, 19 Jun 2020 13:10:52 +0000 (13:10 +0000)]
Merge #4948
4948: Speedup VFS::partition r=matklad a=matklad
The task of `partition` function is to bin the flat list of paths into
disjoint filesets. Ideally, it should be incremental -- each new file
should be added to a specific fileset.
However, preliminary measurnments show that it is actually fast enough
if we just optimize this to use a binary search instead of a linear
scan.
Aleksey Kladov [Fri, 19 Jun 2020 13:07:32 +0000 (15:07 +0200)]
Speedup VFS::partition
The task of `partition` function is to bin the flat list of paths into
disjoint filesets. Ideally, it should be incremental -- each new file
should be added to a specific fileset.
However, preliminary measurnments show that it is actually fast enough
if we just optimize this to use a binary search instead of a linear
scan.
bors[bot] [Thu, 18 Jun 2020 13:23:14 +0000 (13:23 +0000)]
Merge #4903
4903: Add highlighting support for doc comments r=matklad a=Nashenas88
The language server protocol includes a semantic modifier for documentation. This change exports that modifier for doc comments so users can choose to highlight them differently compared to regular comments.