aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/src
Commit message (Collapse)AuthorAgeFilesLines
* Merge #1034bors[bot]2019-03-251-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 diagnosticsAleksey Kladov2019-03-251-0/+6
| |
* | simplifyAleksey Kladov2019-03-251-37/+34
|/
* Target only the actual operator.Marco Groppo2019-03-241-33/+45
| | | | | Renamed `BinExpr::op()` and `PrefixExpr::op()` to `op_kind`. Now `op()` returns the `SyntaxNode`.
* replace todo with fixmeAleksey Kladov2019-03-231-1/+1
|
* Fix reparsing failure when removing newlinepcpthm2019-03-211-0/+7
|
* Fix reparsing bug on "{}{}"pcpthm2019-03-211-1/+1
|
* 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-211-0/+1
|
* Fix reparsing bug when lex result is differentpcpthm2019-03-211-2/+9
|
* Improve reparse fuzz testpcpthm2019-03-211-1/+13
|
* Fix an arithmetic overflow in reparserpcpthm2019-03-212-5/+5
|
* Add fuzz test for reparsingpcpthm2019-03-211-1/+41
|
* Refactor parser fuzz testingpcpthm2019-03-212-7/+14
|
* add name resolution from the old implAleksey Kladov2019-03-173-7/+5
| | | | unlike the old impl, this also handles macro imports across crates
* Add async keywordCaio2019-03-091-0/+1
|
* Remove `TypeRef` from item opts which implement TypeAscriptionOwnerVille Penttinen2019-02-272-33/+14
|
* Add new trait TypeAscriptionOwnerVille Penttinen2019-02-263-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 wellAleksey Kladov2019-02-253-52/+52
|
* complete struct literalsAleksey Kladov2019-02-241-0/+6
|
* support upcastig in AST enumAleksey Kladov2019-02-242-0/+407
|
* introduce tree builderAleksey Kladov2019-02-233-20/+61
|
* renameAleksey Kladov2019-02-234-23/+19
|
* Merge #876bors[bot]2019-02-211-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 Penttinen2019-02-211-1/+6
| |
* | add API guide to ra_syntaxAleksey Kladov2019-02-211-0/+173
|/
* simplify trait boundsAleksey Kladov2019-02-211-12/+18
|
* rearrange methodsAleksey Kladov2019-02-211-67/+67
|
* kill utils moduleAleksey Kladov2019-02-215-97/+92
|
* docsAleksey Kladov2019-02-218-83/+104
|
* fix compilationAleksey Kladov2019-02-216-52/+30
|
* move parser to a separate crateAleksey Kladov2019-02-2121-4217/+0
|
* make grammar independent of syntax treeAleksey Kladov2019-02-212-14/+18
|
* minorAleksey Kladov2019-02-211-1/+1
|
* move whitespace handling to tree builderAleksey Kladov2019-02-214-188/+159
|
* move syntax error to parserAleksey Kladov2019-02-206-25/+24
|
* simplifyAleksey Kladov2019-02-205-29/+4
|
* remove TokenPosAleksey Kladov2019-02-203-49/+28
|
* flattern module structureAleksey Kladov2019-02-205-14/+30
|
* merge parse_impl and parser_apiAleksey Kladov2019-02-202-171/+102
|
* fix off by one errorAleksey Kladov2019-02-201-1/+1
|
* move abstract traits to topAleksey Kladov2019-02-204-65/+59
|
* switch to dynamic dispatch for TokenSourceAleksey Kladov2019-02-202-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 traitAleksey Kladov2019-02-203-64/+59
|
* rename Sink -> TreeSinkAleksey Kladov2019-02-203-8/+8
|
* fix testsAleksey Kladov2019-02-202-4/+7
|
* rearrange modules in a suggestd reading orderAleksey Kladov2019-02-202-9/+10
|
* flatten modulesAleksey Kladov2019-02-2015-40/+37
|
* move reparsers to grammarAleksey Kladov2019-02-202-33/+27
|