361: fix the cancellation bug r=matklad a=matklad
See https://github.com/salsa-rs/salsa/pull/103 for the upstream fix
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
360: Improve comments and code in ra_vfs r=DJMcNab a=DJMcNab
Some random code/comment improvements I saw whilst trying to understand `ra_vfs`.
Let's see if this works:
bors r+
Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
Attempting to format a document when rustfmt isn't installed will result
in an error being returned to the frontend. An alternative
implementation would be returning zero replacements.
359: Add more docs in ty.rs r=matklad a=flodiebold
Also get rid of the indirection through query_definitions for the type-related
queries.
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
356: Fix a bug in char literal validation discovered through fuzzing r=matklad a=DJMcNab
We also add a Cargo.lock to the fuzzing directory, as that isn't gitignored automatically, so I imagine it should be committed.
Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
355: Type variables / unification r=matklad a=flodiebold
This will really become necessary when we implement generics, but even now, it allows us to reason 'backwards' to infer types of expressions that we didn't understand for some reason.
This uses [ena](https://crates.io/crates/ena) to keep track of type variables.
Also turn `Ty::Tuple` from a `Vec` into an `Arc<[Ty]>` to keep `Ty` easily cloneable. Though to be honest I'm not sure how often we actually share data here, with all the make_muts and modifying...
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
This will really become necessary when we implement generics, but even now, it
allows us to reason 'backwards' to infer types of expressions that we didn't
understand for some reason.
We use ena, the union-find implementation extracted from rustc, to keep track of
type variables.
TODO: Check this on CI. Maybe we should change the prettier script
in `editors/code`, or move it to somewhere else
(`tests/format` maybe)
Editing the script in editors/code would be easiest as
that means we don't have to double install some shared `node_modules`
353: update README with Rust 1.31 r=matklad a=yerke
Update README with Rust 1.31, since Rust 2018 edition is already on stable
Co-authored-by: Yerkebulan Tulibergenov <yerkebulan@gmail.com>
350: Super simple macro support r=matklad a=matklad
Super simple support for macros, mostly for figuring out how to fit them into the current architecture. Expansion is hard-coded and string based (mid-term, we should try to copy-paste macro-by-example expander from rustc).
Ideally, we should handle
* highlighting inside the macro (done)
* extend selection inside the macro
* completion inside the macro
* indexing structs, produced by the macro
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>