aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | Merge #4689bors[bot]2020-06-0512-81/+442
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4689: Implement return position impl trait / opaque type support r=matklad a=flodiebold This is working, but I'm not that happy with how the lowering works. We might need an additional representation between `TypeRef` and `Ty` where names are resolved and `impl Trait` bounds are separated out, but things like inference variables don't exist and `impl Trait` is always represented the same way. Also note that this doesn't implement correct handling of RPIT *inside* the function (which involves turning the `impl Trait`s into variables and creating obligations for them). That intermediate representation might help there as well. Co-authored-by: Florian Diebold <[email protected]> Co-authored-by: Florian Diebold <[email protected]>
| * | | | Review fixesFlorian Diebold2020-06-055-25/+68
| | | | |
| * | | | Implement return position impl trait / opaque type supportFlorian Diebold2020-06-0510-77/+395
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is working, but I'm not that happy with how the lowering works. We might need an additional representation between `TypeRef` and `Ty` where names are resolved and `impl Trait` bounds are separated out, but things like inference variables don't exist and `impl Trait` is always represented the same way. Also note that this doesn't implement correct handling of RPIT *inside* the function (which involves turning the `impl Trait`s into variables and creating obligations for them). That intermediate representation might help there as well.
* | | | Merge #4760bors[bot]2020-06-056-79/+35
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4760: Minimize FileLoader interface r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | Minimize FileLoader interfaceAleksey Kladov2020-06-056-79/+35
| |/ / /
| | | |
| \ \ \
*-. \ \ \ Merge #4729 #4748bors[bot]2020-06-0522-169/+899
|\ \ \ \ \ | |_|/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4729: Hover actions r=matklad a=vsrs This PR adds a `hoverActions` LSP extension and a `Go to Implementations` action as an example: ![hover_actions_impl](https://user-images.githubusercontent.com/62505555/83335732-6d9de280-a2b7-11ea-8cc3-75253d062fe0.gif) 4748: Add an `ImportMap` and use it to resolve item paths in `find_path` r=matklad a=jonas-schievink Removes the "go faster" queries I added in https://github.com/rust-analyzer/rust-analyzer/pull/4501 and https://github.com/rust-analyzer/rust-analyzer/pull/4506. I've checked this PR on the rustc code base and the assists are still fast. This should fix https://github.com/rust-analyzer/rust-analyzer/issues/4515. Note that this does introduce a change in behavior: We now always refer to items defined in external crates using paths through the external crate. Previously we could also use a local path (if for example the extern crate was reexported locally), as seen in the changed test. If that is undesired I can fix that, but the test didn't say why the previous behavior would be preferable. Co-authored-by: vsrs <[email protected]> Co-authored-by: Jonas Schievink <[email protected]> Co-authored-by: Jonas Schievink <[email protected]>
| | * | | Clarify when we visit modules multiple timesJonas Schievink2020-06-051-1/+3
| | | | |
| | * | | impl Debug for ImportMapJonas Schievink2020-06-051-19/+23
| | | | |
| | * | | Reorder importsJonas Schievink2020-06-053-5/+7
| | | | |
| | * | | Make `find_path_inner` private againJonas Schievink2020-06-051-1/+1
| | | | |
| | * | | Measure memory usage of ImportMapJonas Schievink2020-06-052-5/+6
| | | | |
| | * | | defining_crate -> krateJonas Schievink2020-06-052-2/+3
| | | | |
| | * | | Fix wrong commentJonas Schievink2020-06-051-1/+1
| | | | |
| | * | | Use `ImportMap` in `find_path`, remove old queriesJonas Schievink2020-06-043-97/+140
| | | | |
| | * | | Add an ImportMapJonas Schievink2020-06-047-14/+360
| | | | |
| * | | | Remove hover actions heavy tests.vsrs2020-06-051-180/+0
| | | | |
| * | | | Remove hover contents marking as trusted.vsrs2020-06-052-16/+3
| | | | | | | | | | | | | | | | | | | | | | | | | Hover contents might be extracted from raw doc comments and need some validation.
| * | | | Add capabilities tests.vsrs2020-06-053-7/+184
| | | | |
| * | | | Apply suggestions from @kjeremy reviewvsrs2020-06-052-19/+18
| | | | |
| * | | | Add enum hover action test.vsrs2020-06-051-0/+15
| | | | |
| * | | | Rebase on the latest master.vsrs2020-06-052-13/+13
| | | | |
| * | | | Code formattingvsrs2020-06-053-6/+6
| | | | |
| * | | | Add hover actions LSP extension documentation.vsrs2020-06-052-1/+39
| | | | |
| * | | | Add hover actions as LSP extensionvsrs2020-06-0511-56/+351
| | | | |
* | | | | Merge #4758bors[bot]2020-06-051-22/+23
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4758: Actually test include!(concant!(env!())); r=matklad a=matklad It triggered index-based goto definition before :-( bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | | Actually test include!(concant!(env!()));Aleksey Kladov2020-06-051-22/+23
| | | | | | | | | | | | | | | | | | | | | | | | It triggered index-based goto definition before :-(
* | | | | | Merge #4757bors[bot]2020-06-051-2/+2
|\ \ \ \ \ \ | |/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4757: Update inotify r=matklad a=matklad https://github.com/rust-analyzer/rust-analyzer/issues/4224#issuecomment-639328191 bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | | Update inotifyAleksey Kladov2020-06-051-2/+2
|/ / / / / | | | | | | | | | | | | | | | https://github.com/rust-analyzer/rust-analyzer/issues/4224#issuecomment-639328191
* | | | | Merge #4756bors[bot]2020-06-058-90/+36
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4756: Cleanup resolution of file paths r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | | Cleanup testAleksey Kladov2020-06-051-50/+12
| | | | | |
| * | | | | More direct signature for resolve_pathAleksey Kladov2020-06-057-19/+24
| | | | | |
| * | | | | Rename resolve_relative_path -> resolve_pathAleksey Kladov2020-06-057-33/+12
|/ / / / / | | | | | | | | | | | | | | | For things like `concant!(env!("OUT_DIR"))`, we need to support abs paths
* | | | | Merge #4755bors[bot]2020-06-051-2/+1
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4755: Inlay Hints: more directly account for self param r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | Inlay Hints: more directly account for self paramAleksey Kladov2020-06-051-2/+1
|/ / / /
* | | | Merge #4750bors[bot]2020-06-051-2/+17
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4750: introduce_named_lifetime assist wasn't applicable when type parameter r=matklad a=jbalint followed anonymous lifetime token (fixes #4684) Co-authored-by: Jess Balint <[email protected]>
| * | | | introduce_named_lifetime assist wasn't applicable when type parameterJess Balint2020-06-041-2/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | followed anonymous lifetime token (fixes #4684)
* | | | | Merge #4737bors[bot]2020-06-048-15/+143
|\ \ \ \ \ | |_|/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4737: Parse default unsafe & default const r=matklad a=Avi-D-coder Closes: #4718 #4264 Co-authored-by: Avi Dessauer <[email protected]>
| * | | | Move default const test out of lineAvi Dessauer2020-06-045-10/+0
| | | | |
| * | | | Address reviewAvi Dessauer2020-06-041-5/+4
| | | | |
| * | | | Update testsAvi Dessauer2020-06-046-0/+109
| | | | |
| * | | | Parse default unsafe & default constAvi Dessauer2020-06-042-15/+45
| |/ / /
* | | | Merge #4740bors[bot]2020-06-041-1/+1
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4740: Remove unneeded "./" prefix affecting error messages r=kjeremy a=dtolnay I noticed this in the error in the commit message of https://github.com/rust-analyzer/rust-analyzer/pull/4739. Before: ```console error[E0599]: no method named `initialize_finish` found for struct `lsp_server::Connection` in the current scope --> crates/rust-analyzer/./src/bin/main.rs:99:16 | 99 | connection.initialize_finish(initialize_id, initialize_result)?; | ^^^^^^^^^^^^^^^^^ method not found in `lsp_server::Connection` ``` After: ```console error[E0599]: no method named `initialize_finish` found for struct `lsp_server::Connection` in the current scope --> crates/rust-analyzer/src/bin/main.rs:99:16 | 99 | connection.initialize_finish(initialize_id, initialize_result)?; | ^^^^^^^^^^^^^^^^^ method not found in `lsp_server::Connection` ``` ```diff - --> crates/rust-analyzer/./src/bin/main.rs:99:16 + --> crates/rust-analyzer/src/bin/main.rs:99:16 ``` Co-authored-by: David Tolnay <[email protected]>
| * | | | Remove unneeded "./" prefix affecting error messagesDavid Tolnay2020-06-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before: error[E0599]: no method named `initialize_finish` found for struct `lsp_server::Connection` in the current scope --> crates/rust-analyzer/./src/bin/main.rs:99:16 | 99 | connection.initialize_finish(initialize_id, initialize_result)?; | ^^^^^^^^^^^^^^^^^ method not found in `lsp_server::Connection` After: error[E0599]: no method named `initialize_finish` found for struct `lsp_server::Connection` in the current scope --> crates/rust-analyzer/src/bin/main.rs:99:16 | 99 | connection.initialize_finish(initialize_id, initialize_result)?; | ^^^^^^^^^^^^^^^^^ method not found in `lsp_server::Connection`
* | | | | Merge #4739bors[bot]2020-06-041-1/+1
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4739: Declare required lsp-server dependency of rust-analyzer crate r=jonas-schievink a=dtolnay My codebase already depended on lsp-server and introducing a dependency on rust-analyzer failed at first because it assumes some functions that were first present in lsp-server 0.3.2. Without this change: ```console error[E0599]: no method named `initialize_start` found for struct `lsp_server::Connection` in the current scope --> crates/rust-analyzer/./src/bin/main.rs:83:57 | 83 | let (initialize_id, initialize_params) = connection.initialize_start()?; | ^^^^^^^^^^^^^^^^ method not found in `lsp_server::Connection` error[E0599]: no method named `initialize_finish` found for struct `lsp_server::Connection` in the current scope --> crates/rust-analyzer/./src/bin/main.rs:99:16 | 99 | connection.initialize_finish(initialize_id, initialize_result)?; | ^^^^^^^^^^^^^^^^^ method not found in `lsp_server::Connection` ``` Co-authored-by: David Tolnay <[email protected]>
| * | | | | Declare required lsp-server dependency of rust-analyzer crateDavid Tolnay2020-06-041-1/+1
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | My codebase already depended on lsp-server and introducing a dependency on rust-analyzer failed at first because it assumes some functions that were first present in lsp-server 0.3.2. Without this change: error[E0599]: no method named `initialize_start` found for struct `lsp_server::Connection` in the current scope --> crates/rust-analyzer/./src/bin/main.rs:83:57 | 83 | let (initialize_id, initialize_params) = connection.initialize_start()?; | ^^^^^^^^^^^^^^^^ method not found in `lsp_server::Connection` error[E0599]: no method named `initialize_finish` found for struct `lsp_server::Connection` in the current scope --> crates/rust-analyzer/./src/bin/main.rs:99:16 | 99 | connection.initialize_finish(initialize_id, initialize_result)?; | ^^^^^^^^^^^^^^^^^ method not found in `lsp_server::Connection`
* | | | | Merge #4741bors[bot]2020-06-041-1/+1
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4741: Fix type inference failure when built with log/kv_unstable r=flodiebold a=dtolnay This code is broken by an `impl From<kv::Error> for fmt::Error` in the log crate when building in a codebase that has the log/kv_unstable feature enabled. ```console $ cargo check --manifest-path crates/ra_hir_def/Cargo.toml Checking ra_hir_def v0.1.0 Finished dev [unoptimized] target(s) in 0.75s $ cargo check --manifest-path crates/ra_hir_def/Cargo.toml --features log/kv_unstable Checking ra_hir_def v0.1.0 error[E0282]: type annotations needed for the closure `fn(&str) -> std::result::Result<(), _>` --> crates/ra_hir_def/src/path.rs:278:17 | 278 | f.write_str("::")?; | ^^^^^^^^^^^^^^^^^^ cannot infer type | help: give this closure an explicit return type without `_` placeholders | 276 | let mut add_segment = |s| -> std::result::Result<(), _> { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``` https://github.com/rust-lang/log/issues/397 Co-authored-by: David Tolnay <[email protected]>
| * | | | Fix type inference failure when built with log/kv_unstableDavid Tolnay2020-06-041-1/+1
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This code is broken by an `impl From<kv::Error> for fmt::Error` in the log crate when building in a codebase that has the log/kv_unstable feature enabled. $ cargo check --manifest-path crates/ra_hir_def/Cargo.toml Checking ra_hir_def v0.1.0 Finished dev [unoptimized] target(s) in 0.75s $ cargo check --manifest-path crates/ra_hir_def/Cargo.toml --features log/kv_unstable Checking ra_hir_def v0.1.0 error[E0282]: type annotations needed for the closure `fn(&str) -> std::result::Result<(), _>` --> crates/ra_hir_def/src/path.rs:278:17 | 278 | f.write_str("::")?; | ^^^^^^^^^^^^^^^^^^ cannot infer type | help: give this closure an explicit return type without `_` placeholders | 276 | let mut add_segment = |s| -> std::result::Result<(), _> { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* | | | Merge #4736bors[bot]2020-06-041-3/+3
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | | | | | 4736: Bugfix r=kjeremy a=Veetaha Co-authored-by: Veetaha <[email protected]>
| * | | BufgixVeetaha2020-06-031-3/+3
|/ / /
* | | Merge #4717bors[bot]2020-06-0314-85/+210
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | | | | 4717: Implementation of lazy assits r=matklad a=mcrakhman Co-authored-by: Mikhail Rakhmanov <[email protected]>