aboutsummaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
* | Merge #1034bors[bot]2019-03-2515-165/+424
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1034: HIR diagnostics API r=matklad a=matklad This PR introduces diagnostics API for HIR, so we can now start issuing errors and warnings! Here are requirements that this solution aims to fulfill: * structured diagnostics: rather than immediately rendering error to string, we provide a well-typed blob of data with error-description. These data is used by IDE to provide fixes * open set diagnostics: there's no single enum with all possible diagnostics, which hopefully should result in better modularity The `Diagnostic` trait describes "a diagnostic", which can be downcast to a specific diagnostic kind. Diagnostics are expressed in terms of macro-expanded syntax tree: they store pointers to syntax nodes. Diagnostics are self-contained: you don't need any context, besides `db`, to fully understand the meaning of a diagnostic. Because diagnostics are tied to the source, we can't store them in salsa. So subsystems like type-checking produce subsystem-local diagnostic (which is a closed `enum`), which is expressed in therms of subsystem IR. A separate step converts these proto-diagnostics into `Diagnostic`, by merging them with source-maps. Note that this PR stresses type-system quite a bit: we now type-check every function in open files to compute errors! Discussion on Zulip: https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0/topic/Diagnostics.20API Co-authored-by: Aleksey Kladov <[email protected]>
| * | move tests to where they belongAleksey Kladov2019-03-254-44/+32
| | |
| * | simplifyAleksey Kladov2019-03-251-6/+1
| | |
| * | tweak diagnostics APIAleksey Kladov2019-03-253-11/+16
| | |
| * | test diagnosticsAleksey Kladov2019-03-253-1/+61
| | |
| * | more enterprisey diagnostics setupAleksey Kladov2019-03-253-59/+75
| | |
| * | fixesAleksey Kladov2019-03-252-4/+3
| | |
| * | check impls as wellAleksey Kladov2019-03-252-1/+10
| | |
| * | cleanupAleksey Kladov2019-03-256-51/+70
| | |
| * | switch modules to new diagnosticsAleksey Kladov2019-03-258-135/+156
| | |
| * | allow dyn diagnosticsAleksey Kladov2019-03-256-33/+112
| | |
| * | diagnosticsAleksey Kladov2019-03-256-6/+74
| | |
* | | structure moved to ra_ide_apiSergey Parilin2019-03-258-48/+7
| | | | | | | | | | | | ra_ide_api_light removed completely
* | | simplifyAleksey Kladov2019-03-251-37/+34
|/ /
* | Merge #1041bors[bot]2019-03-255-63/+105
|\ \ | | | | | | | | | | | | | | | | | | | | | 1041: Add convenience functions to SourceChange for creating single edits r=matklad a=vipentti Fixes #1018 Co-authored-by: Ville Penttinen <[email protected]>
| * | Rename source_edit to source_file_edit to match file_system_editVille Penttinen2019-03-255-11/+11
| | |
| * | Further improvements to the SourceChange convenience methodsVille Penttinen2019-03-254-27/+50
| | | | | | | | | | | | | | | Rename system_edit to file_system_edit, add more documentation, add source_file_edit_from to create a SourceChange from `FileId` and `TextEdit`.
| * | Add convenience functions to SourceChange for creating single editsVille Penttinen2019-03-244-44/+63
| | |
* | | Merge #1036bors[bot]2019-03-254-35/+135
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1036: Assist to flip equality (==) and negated equality (!=) operands. r=matklad a=marcogroppo This PR adds an assist to flip the equality operands. I hope this is the right way to do this (I'm a newbie...) Fixes #1023. Co-authored-by: Marco Groppo <[email protected]>
| * | Target only the actual operator.Marco Groppo2019-03-243-47/+58
| | | | | | | | | | | | | | | Renamed `BinExpr::op()` and `PrefixExpr::op()` to `op_kind`. Now `op()` returns the `SyntaxNode`.
| * | Minor formatting changes.Marco Groppo2019-03-241-1/+1
| | |
| * | Assist to flip equality (==) and negative equality (!=) operands.Marco Groppo2019-03-242-0/+89
| | |
* | | Merge #1029bors[bot]2019-03-242-24/+100
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | 1029: Add impl members assist shold not copy docstrings, attrs and default methods r=matklad a=gfreezy 1. `add missing impl members` assist should not copy docstrings, attrs and default methods 2. Add `add impl default members` assist fixed #1022 Co-authored-by: gfreezy <[email protected]>
| * | Add assist for adding default methodsgfreezy2019-03-232-3/+59
| | |
| * | Add impl members assist shold not copy docstrings, attrs and default methods.gfreezy2019-03-231-22/+42
| | |
* | | Support references in higher-ranked trait boundsVille Penttinen2019-03-243-1/+130
| |/ |/| | | | | Fixes #1020
* | Merge #1031bors[bot]2019-03-238-236/+222
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 1031: Move most things out of ra_ide_api_light r=matklad a=detrumi This moves everything except `structure` out of `ra_ide_api_light`. So this PR and #1019 finish up #1009, whichever is merged last should probably remove the `ra_ide_api_light` crate. Also, `LocalEdit` was removed since it wasn't used any more. Co-authored-by: Wilco Kusee <[email protected]>
| * | Move highlighting and matching_braceWilco Kusee2019-03-237-164/+166
| | |
| * | Remove LocalEdit usageWilco Kusee2019-03-233-70/+55
| | |
| * | Move typing to ra_ide_apiWilco Kusee2019-03-233-7/+6
| | |
* | | Fix apply_substs assertion failureFlorian Diebold2019-03-232-2/+25
| | | | | | | | | | | | Fixes #1030.
* | | remove obsolete diagnosticAleksey Kladov2019-03-232-22/+0
| | |
* | | rename persistent hir database -> def databaseAleksey Kladov2019-03-2318-160/+106
| | |
* | | Merge #1025bors[bot]2019-03-233-3/+18
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | 1025: Disable fork feature for proptest r=matklad a=detrumi Co-authored-by: Wilco Kusee <[email protected]>
| * | Disable fork feature for proptestWilco Kusee2019-03-233-3/+18
| | |
* | | replace todo with fixmeAleksey Kladov2019-03-2329-71/+71
| | |
* | | forbid todo markersAleksey Kladov2019-03-231-1/+25
|/ /
* | Merge #1021bors[bot]2019-03-221-1/+1
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1021: Wasm dependencies r=matklad a=detrumi As a first step towards running RA on WASM (see #1007), this tweaks the dependencies somewhat so that projects built using `wasm-pack` can use `ra_ide_api` as a dependency. There were two problems: - use of undeclared type or module `MmapInner` This error occurred because of the `memmap` crate, as a dependency of `fst` Solution: specify `default-features = false` for the `fst` package (see https://github.com/BurntSushi/fst/issues/70) - use of undeclared type or module `imp` This happened in the `wait-timeout` crate ([which uses `Command` under the hood](https://github.com/alexcrichton/wait-timeout/issues/18)), a dependency of `rusty-fork` which is a dependency of `proptest`. Solution: move `proptest` to dev-dependencies and add `#[cfg(test)]` to the `test_utils` crate. **Edit:** Oh, that causes trouble with resolving the import when running the tests. Hmm... Co-authored-by: Wilco Kusee <[email protected]>
| * | Disable memmap feature in fst dependencyWilco Kusee2019-03-221-1/+1
| |/
* | Simplify changes and fix testsWilco Kusee2019-03-223-19/+15
| |
* | Remove LocalEdit usageWilco Kusee2019-03-222-16/+17
| |
* | Move join_lines to ra_ide_apiWilco Kusee2019-03-226-13/+9
|/
* Move folding_ranges to ra_ide_apiSergey Parilin2019-03-223-5/+5
|
* Merge #1017bors[bot]2019-03-225-5/+6
|\ | | | | | | | | | | | | | | 1017: line_index and line_index_utils moved to ra_ide_api r=matklad a=pasa line_index and line_index_utils for issue #1009 Co-authored-by: Sergey Parilin <[email protected]>
| * line_index and line_index_utils moved to ra_ide_apiSergey Parilin2019-03-225-5/+6
| |
* | Refactor primitive types into more orthogonal representationyanchith2019-03-224-144/+155
|/
* 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
| |