aboutsummaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
* Avoid premature pessimizationAleksey Kladov2020-02-023-33/+34
| | | | | | The extra allocation for message should not matter here at all, but using a static string is just as ergonomic, if not more, and there's no reason to write deliberately slow code
* Merge #2982bors[bot]2020-02-026-42/+90
|\ | | | | | | | | | | | | | | 2982: Merge imports when auto importing r=flodiebold a=SomeoneToIgnore Co-authored-by: Kirill Bulatov <[email protected]>
| * Remove obsolete rustdocKirill Bulatov2020-02-021-1/+0
| |
| * Code review fixesKirill Bulatov2020-02-023-22/+19
| |
| * Require ModPath for importingKirill Bulatov2020-02-026-37/+65
| |
| * Merge imports when auto importingKirill Bulatov2020-02-021-6/+30
| |
* | Auto import functionsKirill Bulatov2020-02-012-6/+35
|/
* Prevent child cargo process from messing with our stdinAleksey Kladov2020-02-011-0/+1
| | | | | | | | By default, `spawn` inherits stderr/stdout/stderr of the parent process, and so, if child, for example does fcntl(O_NONBLOCK), weird stuff happens to us. Closes https://github.com/rust-analyzer/lsp-server/pull/10
* Merge #2965bors[bot]2020-02-011-6/+10
|\ | | | | | | | | | | | | | | 2965: Improve auto import message r=kiljacken a=lnicola Co-authored-by: Laurențiu Nicola <[email protected]>
| * Improve auto import messageLaurențiu Nicola2020-01-311-6/+10
| |
* | Fix extra parentheses warningsLaurențiu Nicola2020-01-311-2/+2
|/
* Small cleanupAleksey Kladov2020-01-311-4/+6
|
* Add a FIXME noteAleksey Kladov2020-01-301-0/+3
|
* Merge #2920bors[bot]2020-01-301-2/+18
|\ | | | | | | | | | | | | | | | | | | 2920: Better handle illformed node id from metadata r=matklad a=edwin0cheng In some rare cases, deps node-id from cargo-metadata do not match its version-id, which cause a panic in `cargo-workspace.rs`. This PR try to ignore these ill-formed node id from `cargo-metadata`. An alternative is return `Err` in these cases but I think make it resilience is a better choice here. Related #2767 Co-authored-by: Edwin Cheng <[email protected]>
| * Ignore illform node id from metadataEdwin Cheng2020-01-281-2/+18
| |
* | Simplify fixture parsingAleksey Kladov2020-01-301-21/+8
| |
* | Merge #2895bors[bot]2020-01-291-46/+71
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2895: Rewrite ra_prof's profile printing r=michalt a=michalt This changes the way we print things to first construct a mapping from events to the children and uses that mapping to actually print things. It should not change the actual output that we produce. The new approach two benefits: * It avoids a potential quadratic behavior of the previous approach. For instance, for a vector of N elements: ``` [Message{level: (N - 1)}, ..., Message{level: 1}, Message{level: 0}] ``` we would first do a linear scan to find entry with level 0, then another scan to find one with level 1, etc. * It makes it much easier to improve the output in the future, because we now pre-compute the children for each entry and can easily take that into account when printing. Signed-off-by: Michal Terepeta <[email protected]> Co-authored-by: Michal Terepeta <[email protected]>
| * | A couple of small improvements to ra_prof printingMichal Terepeta2020-01-291-3/+3
| | | | | | | | | | | | | | | | | | Based on suggestions from @matklad. Signed-off-by: Michal Terepeta <[email protected]>
| * | Rewrite ra_prof's profile printingMichal Terepeta2020-01-221-46/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes the way we print things to first construct a mapping from events to the children and uses that mapping to actually print things. It should not change the actual output that we produce. The new approach two benefits: * It avoids a potential quadratic behavior of the previous approach. For instance, for a vector of N elements: ``` [Message{level: (N - 1)}, ..., Message{level: 1}, Message{level: 0}] ``` we would first do a linear scan to find entry with level 0, then another scan to find one with level 1, etc. * It makes it much easier to improve the output in the future, because we now pre-compute the children for each entry and can easily take that into account when printing. Signed-off-by: Michal Terepeta <[email protected]>
* | | Merge #2943bors[bot]2020-01-292-20/+53
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2943: Re-sync queries for memory usage measurnment r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | | Re-sync queries for memory usage measurnmentAleksey Kladov2020-01-292-20/+53
| | | |
* | | | Properly select a target for auto importingKirill Bulatov2020-01-291-29/+17
|/ / /
* | | Simplify fixture parsingAleksey Kladov2020-01-291-20/+19
| | |
* | | Fix long loop timeoutAleksey Kladov2020-01-291-1/+1
| | |
* | | Change error output to make a bit more senseEmil Lauridsen2020-01-291-2/+6
| | |
* | | Parse cargo output a line at a time.Emil Lauridsen2020-01-292-5/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We previously used serde's stream deserializer to read json blobs from the cargo output. It has an issue though: If the deserializer encounters invalid input, it gets stuck reporting the same error again and again because it is unable to foward over the input until it reaches a new valid object. Reading a line at a time and manually deserializing fixes this issue, because cargo makes sure to only outpu one json blob per line, so should we encounter invalid input, we can just skip a line and continue. The main reason this would happen is stray printf-debugging in procedural macros, so we still report that an error occured, but we handle it gracefully now. Fixes #2935
* | | Merge #2931bors[bot]2020-01-292-24/+56
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2931: Added documentation to test_utils r=matklad a=Veetaha Added some doc comments to test_utils functions while studying this crate. They should be all stable enough to document them. Also some minor code relocation in `parse_fixture()` closer to its usage according to the advice of @matklad. Co-authored-by: Veetaha <[email protected]>
| * | | test_utils: move flush!() to its usage as per conversation with @matkladVeetaha2020-01-291-13/+13
| | | |
| * | | test_utils: updated documentation and some typosVeetaha2020-01-292-11/+43
| | | |
* | | | Complain loudly if the main loop is blockedAleksey Kladov2020-01-291-1/+21
| | | |
* | | | More uniform namingAleksey Kladov2020-01-291-7/+7
| | | |
* | | | Don't compute diagnostics on the main threadAleksey Kladov2020-01-291-28/+28
|/ / / | | | | | | | | | closes #2909
* | | Merge #2917bors[bot]2020-01-283-14/+88
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2917: Prefer imports starting with std r=matklad a=SomeoneToIgnore Closes https://github.com/rust-analyzer/rust-analyzer/issues/2915 Co-authored-by: Kirill Bulatov <[email protected]>
| * | | Add the testsKirill Bulatov2020-01-282-0/+42
| | | |
| * | | Apply the proposed refactoringKirill Bulatov2020-01-281-38/+43
| | | |
| * | | Prefer imports starting with stdKirill Bulatov2020-01-272-6/+33
| | | |
* | | | Publicize debug printing of CrateDefMapAleksey Kladov2020-01-282-41/+42
| | | |
* | | | Standard formatting for array typesAleksey Kladov2020-01-285-89/+89
| | | |
* | | | Merge #2924bors[bot]2020-01-281-2/+4
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2924: Modify ordering of drops in check watcher to only ever have one cargo r=matklad a=kiljacken Due to the way drops are ordered when assigning to a mutable variable we were launching a new cargo sub-process before letting the old one quite. By explicitly replacing the original watcher with a dummy first, we ensure it is dropped and the process is completed, before we start the new process. Co-authored-by: Emil Lauridsen <[email protected]>
| * | | | Modify ordering of drops in check watcher to only ever have one cargoEmil Lauridsen2020-01-281-2/+4
| | |_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Due to the way drops are ordered when assigning to a mutable variable we were launching a new cargo sub-process before letting the old one quite. By explicitly replacing the original watcher with a dummy first, we ensure it is dropped and the process is completed, before we start the new process.
* / | | Don't do check progress update for fresh cratesEmil Lauridsen2020-01-281-0/+8
|/ / /
* / / Buffer reads from cargo check's stdoutLaurențiu Nicola2020-01-271-1/+4
|/ /
* | Merge #2810bors[bot]2020-01-271-27/+111
|\ \ | | | | | | | | | | | | | | | | | | | | | 2810: Improves reference search by StructLiteral r=mikhail-m1 a=mikhail-m1 Hey, I've made some changes to improve search for struct literals, now it works for `struct Foo<|> {`, `struct Foo <|>{`, `struct Foo<|>(`. Unfortunately tuple creation is represented as a call expression, so for tuples it works only is search is started in a tuple declaration. It leads to incorrect classification of function calls during search phase, but from user perspective it's not visible and works as expected. May be it worth to add a comment or rename it to remove this misleading classification. Issue #2549. Co-authored-by: Mikhail Modin <[email protected]>
| * | Improves reference search by StructLiteralMikhail Modin2020-01-271-27/+111
| | |
* | | Tweak Chalk settingsFlorian Diebold2020-01-271-2/+1
| | |
* | | Ignore failing impl Trait testsFlorian Diebold2020-01-271-0/+2
| | |
* | | Upgrade ChalkFlorian Diebold2020-01-273-61/+71
|/ /
* | Merge #2883bors[bot]2020-01-274-111/+208
|\ \ | | | | | | | | | | | | | | | | | | | | | 2883: Implement Syntax Highlight inside macro call r=matklad a=edwin0cheng Co-authored-by: Edwin Cheng <[email protected]>
| * | Implement Syntax Highlight inside MacroEdwin Cheng2020-01-204-111/+208
| | |
* | | Merge #2887bors[bot]2020-01-279-18/+491
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2887: Initial auto import action implementation r=matklad a=SomeoneToIgnore Closes https://github.com/rust-analyzer/rust-analyzer/issues/2180 Adds an auto import action implementation. This implementation is not ideal and has a few limitations: * The import search functionality should be moved into a separate crate accessible from ra_assists. This requires a lot of changes and a preliminary design. Currently the functionality is provided as a trait impl, more on that here: https://github.com/rust-analyzer/rust-analyzer/issues/2180#issuecomment-575690942 * Due to the design desicion from the previous item, no doctests are run for the new aciton (look for a new FIXME in the PR) * For the same reason, I have to create the mock trait implementaion to test the assist * Ideally, I think we should have this feature as a diagnostics (that detects an absense of an import) that has a corresponding quickfix action that gets evaluated on demand. Curretly we perform the import search every time we resolve the import which looks suboptimal. This requires `classify_name_ref` to be moved from ra_ide, so not done currently. A few improvements to the imports mechanism to be considered later: * Constants like `ra_syntax::SyntaxKind::NAME` are not imported, because they are not present in the database * Method usages are not imported, they are found in the database, but `find_use_path` does not return any import paths for them * Some import paths returned by the `find_use_path` method end up in `core::` or `alloc::` instead of `std:`, for example: `core::fmt::Debug` instead of `std::fmt::Debug`. This is not an error techically, but still looks weird. * No detection of cases where a trait should be imported in order to be able to call a method * Improve `auto_import_text_edit` functionality: refactor it and move away from the place it is now, add better logic for merging the new import with already existing imports Co-authored-by: Kirill Bulatov <[email protected]>