aboutsummaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
* Merge #1013bors[bot]2019-03-2215-24/+149
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1013: Fuzz reparsing and fix found bugs r=matklad a=pcpthm Add fuzz test for reparsing which: - Checks reparsing doesn't panic and validate result syntax tree. - Checks that incremental reparsing produces the same syntax tree as full reparse. - Check for that errors are the same as full reparsing is disabled because errors are less important than syntax tree and produce failures which I couldn't figure out how to fix immediately (FIXME comment). I guess the current input generation is inefficient but still found several bugs: - Arithmetic overflow (negative result on an unsigned type). I changed the signature of `SyntaxError::add_offset` to solve this problem. - When reparsing a leaf, the token of the leaf can be joined to the next characters. Such case was not considered. - UNDERSCORE token was not produced when text length is exactly 1 (not a reparsing bug). - When reparsing a block, *inner* curly braces should be balanced. i.e. `{}{}` is invalid. - Effects of deleting newlines were not considered. Co-authored-by: pcpthm <[email protected]>
| * Fix reparsing failure when removing newlinepcpthm2019-03-212-0/+14
| |
| * Fix reparsing bug on "{}{}"pcpthm2019-03-212-1/+5
| |
| * Completely ignore errors for reparse fuzzpcpthm2019-03-211-1/+0
| |
| * Use template text to improve reparse fuzzingpcpthm2019-03-211-1/+5
| |
| * Fix lexer not producing right token on "_"pcpthm2019-03-212-0/+1
| |
| * Fix reparsing bug when lex result is differentpcpthm2019-03-213-2/+17
| |
| * Improve reparse fuzz testpcpthm2019-03-211-1/+13
| |
| * Fix an arithmetic overflow in reparserpcpthm2019-03-213-5/+11
| |
| * Add fuzz test for reparsingpcpthm2019-03-214-1/+64
| |
| * Refactor parser fuzz testingpcpthm2019-03-215-16/+23
| |
* | Assert in apply_substs that the number of parameters doesn't changeFlorian Diebold2019-03-212-2/+7
| | | | | | | | ... and fix a small bug revealed by that.
* | Rename name field to ctor as wellFlorian Diebold2019-03-215-29/+29
| |
* | Some more doc commentsFlorian Diebold2019-03-211-2/+12
| |
* | TypeName => TypeCtorFlorian Diebold2019-03-217-98/+98
| |
* | Remove the old variants replaced by Ty::ApplyFlorian Diebold2019-03-2112-404/+266
| |
* | Add Ty::ApplyFlorian Diebold2019-03-211-1/+177
| |
* | Represent FnPtr and Tuple using SubstsFlorian Diebold2019-03-213-27/+33
|/
* cleanupAleksey Kladov2019-03-211-68/+73
|
* move diagnostics to ide_apiAleksey Kladov2019-03-213-258/+250
|
* Merge #1002bors[bot]2019-03-211-33/+122
|\ | | | | | | | | | | | | | | 1002: Fill partial fields r=matklad a=c410-f3r Fixes #992 Co-authored-by: Caio <[email protected]>
| * Improve performance and orderingCaio2019-03-201-21/+15
| |
| * Fill partial fieldsCaio2019-03-201-32/+127
| |
* | Merge #997bors[bot]2019-03-217-62/+179
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 997: Improve filtering of file roots r=matklad a=vipentti `ProjectWorkspace::to_roots` now returns a new `ProjectRoot` which contains information regarding whether or not the given path is part of the current workspace or an external dependency. This information can then be used in `ra_batch` and `ra_lsp_server` to implement more advanced filtering. This allows us to filter some unnecessary folders from external dependencies such as tests, examples and benches. Relates to discussion in #869 Co-authored-by: Ville Penttinen <[email protected]>
| * | Move actual include logic to ProjectRootVille Penttinen2019-03-214-53/+68
| | | | | | | | | | | | | | | This way the two IncludeRustFiles implementations can simply call the ProjectRoots' methods, so that the include logic is in one place.
| * | Improve filtering of file rootsVille Penttinen2019-03-206-62/+164
| |/ | | | | | | | | | | | | | | | | `ProjectWorkspace::to_roots` now returns a new `ProjectRoot` which contains information regarding whether or not the given path is part of the current workspace or an external dependency. This information can then be used in `ra_batch` and `ra_lsp_server` to implement more advanced filtering. This allows us to filter some unnecessary folders from external dependencies such as tests, examples and benches.
* | Merge #1003bors[bot]2019-03-204-20/+62
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 1003: make Name::new private r=flodiebold a=matklad This maybe is overengineering, but it seems cool to keep names completely opaque. r? @flodiebold Co-authored-by: Aleksey Kladov <[email protected]>
| * | make Name::new privateAleksey Kladov2019-03-204-20/+62
| | |
* | | move extend selection from ra_ide_api_light to ra_ide_apiAleksey Kladov2019-03-205-401/+402
| | |
* | | introduce Analysis::from_single_fileAleksey Kladov2019-03-201-0/+17
|/ /
* | Fixed typo in `Interner`’s name (`Intener`)Vincent Esche2019-03-203-23/+23
| |
* | Merge #998bors[bot]2019-03-191-1/+1
|\ \ | | | | | | | | | | | | | | | | | | | | | 998: import resolution is immutable r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | import resolution is immutableAleksey Kladov2019-03-191-1/+1
| |/
* | Merge #996bors[bot]2019-03-1910-42/+305
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 996: Allow attributes on top level expressions r=matklad a=pcpthm This PR modifies parser to allow outer attributes on top level expression. Here, top level expression means either - Expression statement e.g. `foo();` - Last expression in a block without semicolon `bar()` in `{ foo(); bar() }`. Except for binary operation expressions and `if` expressions, which are errors (feature gated) in rustc. Attributes on inner expressions like `foo(#[a] 1)` are not implemented. I first tried to implement this by passing `Maker` to expression parsers. However, this implementation couldn't parse `#[attr] foo()` correctly as `CallExpr(Attr(..), PathExpr(..), ArgList(..))` and instead parsed incorrectly as `CallExpr(PathExpr(Attr(..), ..), ArgList(..))` due to the way left recursion is handled. In the end, I introduce `undo_completion` method. Which is not the suggested approach, but it seems not very bad. Fix #759. Co-authored-by: pcpthm <[email protected]>
| * Replace `contract_child` to a less ad-hoc APIpcpthm2019-03-192-40/+37
| |
| * Mark non-code block as textpcpthm2019-03-191-1/+1
| |
| * Error about attributes onpcpthm2019-03-193-12/+82
| | | | | | | | unallowed types of expression statement
| * Allow attributes on top level expressionpcpthm2019-03-198-35/+231
| | | | | | | | | | | | A top level expression is either - a expression statement or - the last expression in a block
* | Merge #993bors[bot]2019-03-181-1/+40
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 993: Fix installing vscode extension on MacOS r=matklad a=funkill VSCode often installed in MacOS as `Visual Studio Code.app` package and `code` binary located at `Contents/Resources/app/bin` in package. This path not exists in `$PATH` variable and we can't run `code`. In previous version of `do_run` function all before space was command and all after - arguments. If path or command has spaces, extracting command breaks. To fix this i extracted command to separated argument of function. All packages can be placed in system app dir (`/Applications`) or user app dir (`~/Applications`). I created helper function for find app in this directories. Co-authored-by: funkill2 <[email protected]>
| * | set code less genericfunkill22019-03-181-50/+24
| | |
| * | added setup environmentfunkill22019-03-181-1/+12
| | |
| * | added helper module for appending vscode pathfunkill22019-03-181-0/+54
| |/
* / Upgrade ra_vfs to use new FilteringVille Penttinen2019-03-184-6/+57
|/ | | | | Currently this matches the previous filtering, meaning all roots are filtered using the same rules.
* Merge #991bors[bot]2019-03-1814-81/+149
|\ | | | | | | | | | | | | | | | | | | | | | | 991: Use Marker argument for item parsers r=matklad a=pcpthm Before doing this for expressions, I found that the pattern (Marker argument) should be applied to the item parsers because visiblity and modifiers are parsed in a separate function. Fixed some parser bugs: - Fix pub_expr: `pub 42;` was allowed. - Fix incorrect parsing of crate::path: incorrectly parsed as `crate` as a visibility. Co-authored-by: pcpthm <[email protected]>
| * Use Marker argument for item parserspcpthm2019-03-1814-81/+149
| | | | | | | | | | - Fix pub_expr - Fix incorrect parsing of crate::path
* | Merge #989bors[bot]2019-03-182-0/+153
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 989: Implement naive version of fill_struct_fields assist r=matklad a=yanchith Fixes #964 This implements the `fill_struct_fields` assist. Currently only works for named struct fields, but not for tuple structs, because we seem to be missing a `TupleStructLit` (akin to `StructLit`, but for tuple structs). I am happy to implement `TupleStructLit` parsing given some guidance (provided it's really missing) and make the assist work for tuple structs as well. Could do so either in this PR, or another one 🙂 Sorry if I missed something important, this is my first PR for Rust Analyzer. Btw is there any way to run the assists in emacs? UPDATE: I just realized that parsing `TupleStructLit` would be quite difficult as it it really similar, if not identical to a function call... Co-authored-by: yanchith <[email protected]>
| * | Only replace NamedFieldList and add test for preserving Selfyanchith2019-03-181-13/+45
| | |
| * | Remove unachievable TODOyanchith2019-03-181-1/+0
| | |
| * | Implement naive version of fill_struct_fields assistyanchith2019-03-172-0/+122
| | |
* | | Merge #987bors[bot]2019-03-182-84/+70
|\ \ \ | | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | 987: Refactor maybe_item to use Marker argument r=pcpthm a=pcpthm As suggested at <https://github.com/rust-analyzer/rust-analyzer/pull/980#issuecomment-473659745>. For expression paring functions, changing signature - from `fn(&mut Parser) -> Option<CompletedMarker>` to `fn(&mut Parser, Marker) -> Result<CompletedMarker, Marker>` - from `fn(&mut Parser) -> CompletedMarker` to `fn(&mut Parser, Marker) -> CompletedMarker` is my plan. Co-authored-by: pcpthm <[email protected]>