libsyntax2 -> rust-analyzer

This commit is contained in:
Jeremy A. Kolb 2018-09-18 17:40:33 -04:00
parent 79293d2593
commit 8845b50438
3 changed files with 9 additions and 10 deletions

View file

@ -9,7 +9,7 @@ are some areas where contributions would be **especially** welcome:
constraints, it's an open question how to satisfy them in the constraints, it's an open question how to satisfy them in the
optimal way. See `ARCHITECTURE.md` for current design questions. optimal way. See `ARCHITECTURE.md` for current design questions.
* Porting libsyntax parser to libsyntax2: currently libsyntax2 parses * Porting libsyntax parser to rust-analyzer: currently rust-analyzer parses
only a tiny subset of Rust. This should be fixed by porting parsing only a tiny subset of Rust. This should be fixed by porting parsing
functions from libsyntax one by one. Take a look at the functions from libsyntax one by one. Take a look at the
[libsyntax parser](https://github.com/rust-lang/rust/blob/6b99adeb11313197f409b4f7c4083c2ceca8a4fe/src/libsyntax/parse/parser.rs) [libsyntax parser](https://github.com/rust-lang/rust/blob/6b99adeb11313197f409b4f7c4083c2ceca8a4fe/src/libsyntax/parse/parser.rs)
@ -17,23 +17,22 @@ are some areas where contributions would be **especially** welcome:
[Kotlin parser](https://github.com/JetBrains/kotlin/blob/4d951de616b20feca92f3e9cc9679b2de9e65195/compiler/frontend/src/org/jetbrains/kotlin/parsing/KotlinParsing.java) [Kotlin parser](https://github.com/JetBrains/kotlin/blob/4d951de616b20feca92f3e9cc9679b2de9e65195/compiler/frontend/src/org/jetbrains/kotlin/parsing/KotlinParsing.java)
for "how to port". for "how to port".
* Writing validators: by design, libsyntax2 is very lax about the * Writing validators: by design, rust-analyzer is very lax about the
input. For example, the lexer happily accepts unclosed strings. The input. For example, the lexer happily accepts unclosed strings. The
idea is that there should be a higher level visitor, which walks the idea is that there should be a higher level visitor, which walks the
syntax tree after parsing and produces all the warnings. Alas, syntax tree after parsing and produces all the warnings. Alas,
there's no such visitor yet :( Would you like to write one? :) there's no such visitor yet :( Would you like to write one? :)
* Creating tests: it would be tremendously helpful to read each of * Creating tests: it would be tremendously helpful to read each of
libsyntax and libsyntax2 parser functions and crate a small separate libsyntax and rust-analyzer parser functions and crate a small separate
test cases to cover each and every edge case. test cases to cover each and every edge case.
* Building stuff with libsyntax2: it would be really cool to compile * Building stuff with rust-analyzer: it would be really cool to compile
libsyntax2 to WASM and add *client side* syntax validation to rust rust-analyzer to WASM and add *client side* syntax validation to rust
playground! playground!
Do take a look at the issue tracker, and try to read other docs in Do take a look at the issue tracker.
the [./docs](https://github.com/matklad/libsyntax2/tree/master/docs) folder!
If you don't know where to start, or have *any* questions or suggestions, If you don't know where to start, or have *any* questions or suggestions,
don't hesitate to chat at [Gitter](https://gitter.im/libsyntax2/Lobby)! don't hesitate to chat at [Gitter](https://gitter.im/libsyntax2/Lobby)!

View file

@ -92,7 +92,7 @@ notes.
- `algo`: generic tree algorithms, including `walk` for O(1) stack - `algo`: generic tree algorithms, including `walk` for O(1) stack
space tree traversal (this is cool) and `visit` for type-driven space tree traversal (this is cool) and `visit` for type-driven
visiting the nodes (this is double plus cool, if you understand how visiting the nodes (this is double plus cool, if you understand how
`Visitor` works, you understand libsyntax2). `Visitor` works, you understand rust-analyzer).
### `crates/ra_editor` ### `crates/ra_editor`
@ -132,7 +132,7 @@ A CLI interface to libsyntax
### `crate/tools` ### `crate/tools`
Code-gen tasks, used to develop libsyntax2: Code-gen tasks, used to develop rust-analyzer:
- `cargo gen-kinds` -- generate `ast` and `syntax_kinds` - `cargo gen-kinds` -- generate `ast` and `syntax_kinds`
- `cargo gen-tests` -- collect inline tests from grammar - `cargo gen-tests` -- collect inline tests from grammar

View file

@ -407,7 +407,7 @@ pub fn publish_diagnostics(
range: d.range.conv_with(&line_index), range: d.range.conv_with(&line_index),
severity: Some(DiagnosticSeverity::Error), severity: Some(DiagnosticSeverity::Error),
code: None, code: None,
source: Some("libsyntax2".to_string()), source: Some("rust-analyzer".to_string()),
message: d.message, message: d.message,
related_information: None, related_information: None,
}).collect(); }).collect();