Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Merge #1034 | bors[bot] | 2019-03-25 | 1 | -0/+6 | |
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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]> | |||||
| * | allow dyn diagnostics | Aleksey Kladov | 2019-03-25 | 1 | -0/+6 | |
| | | ||||||
* | | simplify | Aleksey Kladov | 2019-03-25 | 1 | -37/+34 | |
|/ | ||||||
* | Target only the actual operator. | Marco Groppo | 2019-03-24 | 1 | -33/+45 | |
| | | | | | Renamed `BinExpr::op()` and `PrefixExpr::op()` to `op_kind`. Now `op()` returns the `SyntaxNode`. | |||||
* | replace todo with fixme | Aleksey Kladov | 2019-03-23 | 1 | -1/+1 | |
| | ||||||
* | Fix reparsing failure when removing newline | pcpthm | 2019-03-21 | 1 | -0/+7 | |
| | ||||||
* | Fix reparsing bug on "{}{}" | pcpthm | 2019-03-21 | 1 | -1/+1 | |
| | ||||||
* | Completely ignore errors for reparse fuzz | pcpthm | 2019-03-21 | 1 | -1/+0 | |
| | ||||||
* | Use template text to improve reparse fuzzing | pcpthm | 2019-03-21 | 1 | -1/+5 | |
| | ||||||
* | Fix lexer not producing right token on "_" | pcpthm | 2019-03-21 | 1 | -0/+1 | |
| | ||||||
* | Fix reparsing bug when lex result is different | pcpthm | 2019-03-21 | 1 | -2/+9 | |
| | ||||||
* | Improve reparse fuzz test | pcpthm | 2019-03-21 | 1 | -1/+13 | |
| | ||||||
* | Fix an arithmetic overflow in reparser | pcpthm | 2019-03-21 | 2 | -5/+5 | |
| | ||||||
* | Add fuzz test for reparsing | pcpthm | 2019-03-21 | 1 | -1/+41 | |
| | ||||||
* | Refactor parser fuzz testing | pcpthm | 2019-03-21 | 2 | -7/+14 | |
| | ||||||
* | add name resolution from the old impl | Aleksey Kladov | 2019-03-17 | 3 | -7/+5 | |
| | | | | unlike the old impl, this also handles macro imports across crates | |||||
* | Add async keyword | Caio | 2019-03-09 | 1 | -0/+1 | |
| | ||||||
* | Remove `TypeRef` from item opts which implement TypeAscriptionOwner | Ville Penttinen | 2019-02-27 | 2 | -33/+14 | |
| | ||||||
* | Add new trait TypeAscriptionOwner | Ville Penttinen | 2019-02-26 | 3 | -9/+36 | |
| | | | | | This trait should be implemented for nodes which have an ascribed type, e.g. thing : Type. Such as let, const, static, param, named struct fields. | |||||
* | rename type to type_alias in the AST as well | Aleksey Kladov | 2019-02-25 | 3 | -52/+52 | |
| | ||||||
* | complete struct literals | Aleksey Kladov | 2019-02-24 | 1 | -0/+6 | |
| | ||||||
* | support upcastig in AST enum | Aleksey Kladov | 2019-02-24 | 2 | -0/+407 | |
| | ||||||
* | introduce tree builder | Aleksey Kladov | 2019-02-23 | 3 | -20/+61 | |
| | ||||||
* | rename | Aleksey Kladov | 2019-02-23 | 4 | -23/+19 | |
| | ||||||
* | Merge #876 | bors[bot] | 2019-02-21 | 1 | -1/+6 | |
|\ | | | | | | | | | | | | | | | 876: Fix join_lines not adding a comma after join_single_expr_block with match arm r=matklad a=vipentti Fixes #868 Co-authored-by: Ville Penttinen <[email protected]> | |||||
| * | Move `non_trivia_sibling` to `ra_syntax::algo` | Ville Penttinen | 2019-02-21 | 1 | -1/+6 | |
| | | ||||||
* | | add API guide to ra_syntax | Aleksey Kladov | 2019-02-21 | 1 | -0/+173 | |
|/ | ||||||
* | simplify trait bounds | Aleksey Kladov | 2019-02-21 | 1 | -12/+18 | |
| | ||||||
* | rearrange methods | Aleksey Kladov | 2019-02-21 | 1 | -67/+67 | |
| | ||||||
* | kill utils module | Aleksey Kladov | 2019-02-21 | 5 | -97/+92 | |
| | ||||||
* | docs | Aleksey Kladov | 2019-02-21 | 8 | -83/+104 | |
| | ||||||
* | fix compilation | Aleksey Kladov | 2019-02-21 | 6 | -52/+30 | |
| | ||||||
* | move parser to a separate crate | Aleksey Kladov | 2019-02-21 | 21 | -4217/+0 | |
| | ||||||
* | make grammar independent of syntax tree | Aleksey Kladov | 2019-02-21 | 2 | -14/+18 | |
| | ||||||
* | minor | Aleksey Kladov | 2019-02-21 | 1 | -1/+1 | |
| | ||||||
* | move whitespace handling to tree builder | Aleksey Kladov | 2019-02-21 | 4 | -188/+159 | |
| | ||||||
* | move syntax error to parser | Aleksey Kladov | 2019-02-20 | 6 | -25/+24 | |
| | ||||||
* | simplify | Aleksey Kladov | 2019-02-20 | 5 | -29/+4 | |
| | ||||||
* | remove TokenPos | Aleksey Kladov | 2019-02-20 | 3 | -49/+28 | |
| | ||||||
* | flattern module structure | Aleksey Kladov | 2019-02-20 | 5 | -14/+30 | |
| | ||||||
* | merge parse_impl and parser_api | Aleksey Kladov | 2019-02-20 | 2 | -171/+102 | |
| | ||||||
* | fix off by one error | Aleksey Kladov | 2019-02-20 | 1 | -1/+1 | |
| | ||||||
* | move abstract traits to top | Aleksey Kladov | 2019-02-20 | 4 | -65/+59 | |
| | ||||||
* | switch to dynamic dispatch for TokenSource | Aleksey Kladov | 2019-02-20 | 2 | -9/+7 | |
| | | | | | | | | | | | Benchmarks show no difference. This is probably because we are bottlenecked on memory allocations, and we should fix that, but we are not optimizing for performance just yet. changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # # On branch token-source # Changes to be committed: # modified: crates/ra_syntax/src/parsing/parser_api.rs # modified: crates/ra_syntax/src/parsing/parser_impl.rs # | |||||
* | route parsing via TokenSource trait | Aleksey Kladov | 2019-02-20 | 3 | -64/+59 | |
| | ||||||
* | rename Sink -> TreeSink | Aleksey Kladov | 2019-02-20 | 3 | -8/+8 | |
| | ||||||
* | fix tests | Aleksey Kladov | 2019-02-20 | 2 | -4/+7 | |
| | ||||||
* | rearrange modules in a suggestd reading order | Aleksey Kladov | 2019-02-20 | 2 | -9/+10 | |
| | ||||||
* | flatten modules | Aleksey Kladov | 2019-02-20 | 15 | -40/+37 | |
| | ||||||
* | move reparsers to grammar | Aleksey Kladov | 2019-02-20 | 2 | -33/+27 | |
| |