aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* plug new boilerplate_gen into ra_toolsAleksey Kladov2019-08-195-24/+26
|
* rename codegen -> boilerplate_genAleksey Kladov2019-08-192-3/+3
|
* drop tera dependencyAleksey Kladov2019-08-193-152/+25
|
* use new quote-generated syntax kindsAleksey Kladov2019-08-192-577/+538
|
* use quote! to generate syntax kindsAleksey Kladov2019-08-193-1/+148
|
* use new quote-generated astAleksey Kladov2019-08-183-1290/+1410
|
* use quote! macro to generate grammarAleksey Kladov2019-08-184-40/+181
| | | | | We already use syn&quote elsewhere (transitively), so it make sense to cut down on the number of technologies and get rid of tera
* deserialize grammarAleksey Kladov2019-08-184-56/+88
|
* switch to new codegenAleksey Kladov2019-08-184-14/+32
|
* codegen boilerplateAleksey Kladov2019-08-182-0/+8
|
* add quote depAleksey Kladov2019-08-184-7/+12
|
* Merge #1695bors[bot]2019-08-175-32/+43
|\ | | | | | | | | | | | | | | 1695: update lsp r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * update lspAleksey Kladov2019-08-175-32/+43
|/
* Merge #1694bors[bot]2019-08-175-113/+186
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | 1694: Implement initial type-inference support for Index r=flodiebold a=matklad This doesn't actually infer indexing types, but at least it walks sub-expressions! Initially, I wanted to make `Index` just a new kind of `BinOp` (b/c indexing is kind of a binary op), so I've refactoring binop handing a bit. However, in the end I've decided to add a separate expr kind for Index, because `foo[0]`, `&foo[1]` and `&mut foo[1]` all seem to need slightly different handing, which is not binop-like r? @flodiebold Co-authored-by: Aleksey Kladov <[email protected]>
| * implement initial type inference for index expressionsAleksey Kladov2019-08-173-1/+33
| |
| * normalize ordering opsAleksey Kladov2019-08-172-26/+36
| |
| * Introduce separate hir::BinaryOpAleksey Kladov2019-08-174-75/+96
| | | | | | | | | | Unlike ast::BinOp, it has significantly more structure to it, so it's easier to, say, handle all assignment-like operations in the same way.
| * implement accessors for IndexExprAleksey Kladov2019-08-171-0/+9
| |
| * simplifyAleksey Kladov2019-08-171-35/+36
|/
* Merge #1693bors[bot]2019-08-175-64/+63
|\ | | | | | | | | | | | | | | 1693: Remove cpuprofile dependencies r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * Remove cpuprofile dependenciesAleksey Kladov2019-08-175-64/+63
|/
* Merge #1692bors[bot]2019-08-172-45/+44
|\ | | | | | | | | | | | | | | 1692: :arrow_up: deps r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * :arrow_up: depsAleksey Kladov2019-08-172-45/+44
|/
* Merge #1691bors[bot]2019-08-162-2/+44
|\ | | | | | | | | | | | | | | 1691: Show inherent and trait impls of structs and enums r=viorina a=viorina Co-authored-by: Ekaterina Babshukova <[email protected]>
| * show inherent and trait impls of structs and enumsEkaterina Babshukova2019-08-162-2/+44
| |
* | Merge #1689bors[bot]2019-08-161-9/+9
|\ \ | | | | | | | | | | | | | | | | | | | | | 1689: Update deps r=kjeremy a=kjeremy Co-authored-by: kjeremy <[email protected]>
| * | Update depskjeremy2019-08-161-9/+9
|/ /
* | Merge #1686bors[bot]2019-08-151-74/+116
|\ \ | | | | | | | | | | | | | | | | | | | | | 1686: :arrow_up: deps r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | :arrow_up: depsAleksey Kladov2019-08-151-74/+116
|/ /
* | Merge #1445bors[bot]2019-08-1510-68/+166
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1445: Use the new "durability" infrastructure from salsa r=matklad a=matklad Based on https://github.com/nikomatsakis/salsa/tree/durability Durability allows us to skip *validation* work for sysroot and crates.io libraries, which massively speeds up some workloads Co-authored-by: Aleksey Kladov <[email protected]>
| * | switch to upstream salsaAleksey Kladov2019-08-152-10/+8
| | |
| * | implement durabilityAleksey Kladov2019-08-1510-47/+128
| | |
| * | switch from volatile to untracked readAleksey Kladov2019-08-152-22/+41
|/ /
* | Merge #1685bors[bot]2019-08-155-1/+142
|\ \ | | | | | | | | | | | | | | | | | | | | | 1685: fix error of RangeFrom in for-loop r=DJMcNab a=bravomikekilo fix [issue-1542](https://github.com/rust-analyzer/rust-analyzer/issues/1542) @matklad Co-authored-by: bravomikekilo <[email protected]>
| * | fix test positionbravomikekilo2019-08-146-118/+130
| | |
| * | fix testbravomikekilo2019-08-141-2/+2
| | |
| * | fix error of RangeFrom in for-loopbravomikekilo2019-08-143-1/+130
| | |
* | | Merge #1676bors[bot]2019-08-1410-13/+100
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | 1676: Fix for<'lifetime> for types specified by path r=matklad a=eupn Fixes #1467. Co-authored-by: Evgenii P <[email protected]>
| * | Fix is_path_start to accept T![<], fix is_path_start usagesEvgenii P2019-08-138-13/+17
| | |
| * | Fix for<'lifetime> for types specified by pathEvgenii P2019-08-113-2/+85
| | |
* | | Merge #1636bors[bot]2019-08-133-7/+81
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | | | | 1636: fix block parse problem r=matklad a=bravomikekilo try to fix [issue-1598](https://github.com/rust-analyzer/rust-analyzer/issues/1598). Co-authored-by: bravomikekilo <[email protected]>
| * | add inline testbravomikekilo2019-08-133-0/+75
| | |
| * | fix block parse problembravomikekilo2019-08-031-7/+6
| | |
* | | Merge #1677bors[bot]2019-08-1210-38/+405
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1677: Associated types r=flodiebold a=flodiebold This implements basic support for (fully qualified) associated type projections: - handle fully qualified paths like `<T as Trait>::AssocType` (basically desugaring to something like `Trait<Self=T>::AssocType`) - lower these to a new `Ty::Projection` enum variant - also introduce `Ty::UnselectedProjection` for cases like `T::AssocType` where the trait from which the type comes isn't specified, but these aren't handled further so far - in inference, normalize these projections using Chalk: basically, when encountering a type e.g. from a type annotation or signature, we replace these `Ty::Projection`s by type variables and add obligations to normalize the associated type Co-authored-by: Florian Diebold <[email protected]>
| * | | Handle placeholder assoc types when Chalk produces themFlorian Diebold2019-08-122-3/+67
| | | |
| * | | Normalize assoc types in more placesFlorian Diebold2019-08-122-12/+27
| | | |
| * | | Improve debug logging a bitFlorian Diebold2019-08-122-4/+18
| | | |
| * | | Normalize associated types during inferenceFlorian Diebold2019-08-123-9/+25
| | | |
| * | | Lower fully qualified associated type pathsFlorian Diebold2019-08-125-23/+128
| | | | | | | | | | | | | | | | I.e. `<T as Trait>::Foo`.
| * | | Add representations of associated typesFlorian Diebold2019-08-123-0/+113
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds three different representations, copied from the Chalk model: - `Ty::Projection` is an associated type projection written somewhere in the code, like `<Foo as Trait>::Bar`. - `Ty::UnselectedProjection` is similar, but we don't know the trait yet (`Foo::Bar`). - The above representations are normalized to their actual types during type inference. When that isn't possible, for example for `T::Item` inside an `fn foo<T: Iterator>`, the type is normalized to an application type with `TypeCtor::AssociatedType`.