Reformat CONTRIBUTING.md

This uses:
`prettier --prose-wrap always ./CONTRIBUTING.md --write`
This commit is contained in:
Daniel McNab 2018-10-04 21:45:39 +01:00
parent 80eefcbc05
commit fce76cc79a

View File

@ -1,57 +1,58 @@
The project is in its early stages: contributions are welcome and The project is in its early stages: contributions are welcome and would be
would be **very** helpful, but the project is not *yet* optimized for **very** helpful, but the project is not _yet_ optimized for contribution.
contribution. Moreover, it is doubly experimental, so there's no Moreover, it is doubly experimental, so there's no guarantee that any work here
guarantee that any work here would reach production. That said, here would reach production. That said, here are some areas where contributions would
are some areas where contributions would be **especially** welcome: be **especially** welcome:
- Designing internal data structures: RFC only outlines the constraints, it's an
open question how to satisfy them in the optimal way. See `ARCHITECTURE.md`
for current design questions.
* Designing internal data structures: RFC only outlines the - Porting libsyntax parser to rust-analyzer: currently rust-analyzer parses only
constraints, it's an open question how to satisfy them in the a tiny subset of Rust. This should be fixed by porting parsing functions from
optimal way. See `ARCHITECTURE.md` for current design questions. libsyntax one by one. Take a look at the [libsyntax parser] for "what to port"
and at the [Kotlin parser] for "how to port".
* Porting libsyntax parser to rust-analyzer: currently rust-analyzer parses - Writing validators: by design, rust-analyzer is very lax about the input. For
only a tiny subset of Rust. This should be fixed by porting parsing example, the lexer happily accepts unclosed strings. The idea is that there
functions from libsyntax one by one. Take a look at the should be a higher level visitor, which walks the syntax tree after parsing
[libsyntax parser] and produces all the warnings. Alas, there's no such visitor yet :( Would you
for "what to port" and at the like to write one? :)
[Kotlin parser]
for "how to port".
* Writing validators: by design, rust-analyzer is very lax about the - Creating tests: it would be tremendously helpful to read each of libsyntax and
input. For example, the lexer happily accepts unclosed strings. The rust-analyzer parser functions and crate a small separate test cases to cover
idea is that there should be a higher level visitor, which walks the each and every edge case.
syntax tree after parsing and produces all the warnings. Alas,
there's no such visitor yet :( Would you like to write one? :)
* Creating tests: it would be tremendously helpful to read each of - Building stuff with rust-analyzer: it would be really cool to compile
libsyntax and rust-analyzer parser functions and crate a small separate rust-analyzer to WASM and add _client side_ syntax validation to rust
test cases to cover each and every edge case.
* Building stuff with rust-analyzer: it would be really cool to compile
rust-analyzer to WASM and add *client side* syntax validation to rust
playground! playground!
Do take a look at the issue tracker. Do take a look at the issue tracker.
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
don't hesitate to chat at [Gitter]! hesitate to chat at [Gitter]!
# Code generation # Code generation
Some of the components of this repository are generated through automatic processes. These are outlined below: Some of the components of this repository are generated through automatic
processes. These are outlined below:
- `gen-kinds`: The kinds of tokens are reused in several places, so a generator is used. - `gen-kinds`: The kinds of tokens are reused in several places, so a generator
This process uses [tera] to generate, using data in [grammar.ron], the files: is used. This process uses [tera] to generate, using data in [grammar.ron],
- [ast/generated.rs][ast generated] in `ra_syntax` based on [ast/generated.tera.rs][ast source] the files:
- [syntax_kinds/generated.rs][syntax_kinds generated] in `ra_syntax` based on [syntax_kinds/generated.tera.rs][syntax_kinds source] - [ast/generated.rs][ast generated] in `ra_syntax` based on
[ast/generated.tera.rs][ast source]
- [syntax_kinds/generated.rs][syntax_kinds generated] in `ra_syntax` based on
[syntax_kinds/generated.tera.rs][syntax_kinds source]
[libsyntax parser]: https://github.com/rust-lang/rust/blob/6b99adeb11313197f409b4f7c4083c2ceca8a4fe/src/libsyntax/parse/parser.rs [libsyntax parser]:
[Kotlin parser]: https://github.com/JetBrains/kotlin/blob/4d951de616b20feca92f3e9cc9679b2de9e65195/compiler/frontend/src/org/jetbrains/kotlin/parsing/KotlinParsing.java https://github.com/rust-lang/rust/blob/6b99adeb11313197f409b4f7c4083c2ceca8a4fe/src/libsyntax/parse/parser.rs
[Gitter]: https://gitter.im/libsyntax2/Lobby [kotlin parser]:
https://github.com/JetBrains/kotlin/blob/4d951de616b20feca92f3e9cc9679b2de9e65195/compiler/frontend/src/org/jetbrains/kotlin/parsing/KotlinParsing.java
[gitter]: https://gitter.im/libsyntax2/Lobby
[tera]: https://tera.netlify.com/ [tera]: https://tera.netlify.com/
[grammar.ron]: ./crates/ra_syntax/src/grammar.ron [grammar.ron]: ./crates/ra_syntax/src/grammar.ron
[ast generated]: ./crates/ra_syntax/src/ast/generated.rs [ast generated]: ./crates/ra_syntax/src/ast/generated.rs
[ast source]: ./crates/ra_syntax/src/ast/generated.tera.rs [ast source]: ./crates/ra_syntax/src/ast/generated.tera.rs
[syntax_kinds generated]: ./crates/ra_syntax/src/syntax_kinds/generated.rs [syntax_kinds generated]: ./crates/ra_syntax/src/syntax_kinds/generated.rs
[syntax_kinds source]: ./crates/ra_syntax/src/syntax_kinds/generated.tera.rs [syntax_kinds source]: ./crates/ra_syntax/src/syntax_kinds/generated.tera.rs