aboutsummaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
* Fix bug in lexer for format specifier where the `type` and `width` were not ↵Leander Tentrup2020-06-072-15/+24
| | | | correctly distinguished
* Fix type parameter defaultsFlorian Diebold2020-06-0510-115/+192
| | | | | They should not be applied in expression or pattern contexts, unless there are other explicitly given type args.
* Merge #4761bors[bot]2020-06-052-2/+7
|\ | | | | | | | | | | | | | | 4761: Upgrade Chalk to published version r=matklad a=flodiebold CC @pksunkara Co-authored-by: Florian Diebold <[email protected]>
| * Upgrade Chalk to published versionFlorian Diebold2020-06-052-2/+7
| |
* | 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-0517-162/+795
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-051-1/+1
| | | | | | | | | | | | | | | 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 as LSP extensionvsrs2020-06-057-49/+272
| | |
* | | Actually test include!(concant!(env!()));Aleksey Kladov2020-06-051-22/+23
| | | | | | | | | | | | It triggered index-based goto definition before :-(
* | | 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
* | | 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`
* / 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<(), _> { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Fix more commentsMikhail Rakhmanov2020-06-031-5/+4
|
* Merge branch 'master' into compute-lazy-assitsMikhail Rakhmanov2020-06-0338-477/+979
|\ | | | | | | | | | | # Conflicts: # crates/rust-analyzer/src/main_loop/handlers.rs # crates/rust-analyzer/src/to_proto.rs
| * Merge #4502bors[bot]2020-06-032-2/+9
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4502: Mark fixes from diagnostics as quick fixes r=kjeremy a=kjeremy Populates the diagnostic UI with fixes: Before: ![quickfix-before](https://user-images.githubusercontent.com/4325700/82165183-0e38df00-9882-11ea-96cf-7dab5faec4d4.PNG) After: ![image](https://user-images.githubusercontent.com/4325700/82165193-1a24a100-9882-11ea-97d7-be1b64b135e0.png) Co-authored-by: Jeremy Kolb <[email protected]>
| | * Mark fixes from diagnostics as quick fixesJeremy Kolb2020-06-032-2/+9
| | |
| * | Merge #4730bors[bot]2020-06-033-20/+48
| |\ \ | | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | 4730: Document rust-project.json r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| | * Document rust-project.jsonAleksey Kladov2020-06-033-20/+48
| | |