Commit Graph

5090 Commits

Author SHA1 Message Date
Aleksey Kladov
038975b348 plug new boilerplate_gen into ra_tools 2019-08-19 12:26:34 +03:00
Aleksey Kladov
aa250ff612 rename codegen -> boilerplate_gen 2019-08-19 11:42:39 +03:00
Aleksey Kladov
5633829a16 drop tera dependency 2019-08-19 11:42:39 +03:00
Aleksey Kladov
832b40a075 use new quote-generated syntax kinds 2019-08-19 11:42:39 +03:00
bors[bot]
83413cc9ef
Merge #1696
1696: fix #1424 r=matklad a=coderfox

- resolve "~" in raLspServerPath

I think expanding simply `~/` is quite simple as node provides `homedir`, but expanding `~foo/` is difficult as there is no cross-platform approach of reading home directory of another user. So this pull request only resolves `~/` in `raLspServerPath`.

Besides, the source code is arranged in a way hard to write tests. Would anyone provide me with instructions of writing tests for this feature, or no test is required for this feature?

Co-authored-by: xfoxfu <i@xfox.me>
2019-08-19 08:05:39 +00:00
Aleksey Kladov
7d29cf1225 use quote! to generate syntax kinds 2019-08-19 11:02:04 +03:00
xfoxfu
d07a85ed7e fix #1424
resolve "~" in raLspServerPath
2019-08-19 10:48:39 +08:00
Aleksey Kladov
39f50e7bd7 use new quote-generated ast 2019-08-18 23:36:22 +03:00
Aleksey Kladov
8cefdb5527 use quote! macro to generate grammar
We already use syn&quote elsewhere (transitively), so it make sense to
cut down on the number of technologies and get rid of tera
2019-08-18 23:11:08 +03:00
Aleksey Kladov
d545a5c75c deserialize grammar 2019-08-18 21:54:51 +03:00
Aleksey Kladov
229d7943d8 switch to new codegen 2019-08-18 21:44:24 +03:00
Aleksey Kladov
839d9cce89 codegen boilerplate 2019-08-18 21:36:06 +03:00
Aleksey Kladov
14fd9e72a7 add quote dep 2019-08-18 21:33:31 +03:00
bors[bot]
2bac1bdf17
Merge #1695
1695: update lsp r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-08-17 19:23:16 +00:00
Aleksey Kladov
64ecba4f15 update lsp 2019-08-17 22:21:59 +03:00
bors[bot]
5a2a97c7e8
Merge #1694
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 <aleksey.kladov@gmail.com>
2019-08-17 15:57:02 +00:00
Aleksey Kladov
189d879659 implement initial type inference for index expressions 2019-08-17 18:05:20 +03:00
Aleksey Kladov
b082cd679a normalize ordering ops 2019-08-17 17:51:01 +03:00
Aleksey Kladov
7e5a186c1f Introduce separate hir::BinaryOp
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.
2019-08-17 17:42:41 +03:00
Aleksey Kladov
8919aa8065 implement accessors for IndexExpr 2019-08-17 17:17:01 +03:00
Aleksey Kladov
fd4c083e42 simplify 2019-08-17 17:14:22 +03:00
bors[bot]
d15cf2c960
Merge #1693
1693: Remove cpuprofile dependencies r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-08-17 12:30:33 +00:00
Aleksey Kladov
e751e4d8a3 Remove cpuprofile dependencies 2019-08-17 15:29:57 +03:00
bors[bot]
c2dcabef2a
Merge #1692
1692: ⬆️ deps r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-08-17 10:53:33 +00:00
Aleksey Kladov
42ae888629 ⬆️ deps 2019-08-17 13:53:02 +03:00
bors[bot]
cd24349997
Merge #1691
1691: Show inherent and trait impls of structs and enums r=viorina a=viorina



Co-authored-by: Ekaterina Babshukova <ekaterina.babshukova@yandex.ru>
2019-08-16 14:24:51 +00:00
Ekaterina Babshukova
35a04ec066 show inherent and trait impls of structs and enums 2019-08-16 17:07:45 +03:00
bors[bot]
af1052bb4c
Merge #1689
1689: Update deps r=kjeremy a=kjeremy



Co-authored-by: kjeremy <kjeremy@gmail.com>
2019-08-16 02:44:13 +00:00
kjeremy
e6cabc535b Update deps 2019-08-15 22:36:17 -04:00
bors[bot]
b1b6a90ab1 Merge #1686
1686: ⬆️ deps r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-08-15 12:58:33 +00:00
Aleksey Kladov
a99febd885 ⬆️ deps 2019-08-15 15:58:08 +03:00
bors[bot]
9b024b685b Merge #1445
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 <aleksey.kladov@gmail.com>
2019-08-15 12:35:12 +00:00
Aleksey Kladov
1700541e00 switch to upstream salsa 2019-08-15 15:27:00 +03:00
Aleksey Kladov
343463c824 implement durability 2019-08-15 15:27:00 +03:00
Aleksey Kladov
9266c18ce6 switch from volatile to untracked read 2019-08-15 15:24:02 +03:00
bors[bot]
5ed6a13a2c Merge #1685
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 <bmk1221@126.com>
2019-08-15 05:49:13 +00:00
bors[bot]
19e0d7d596 Merge #1676
1676: Fix for<'lifetime> for types specified by path r=matklad a=eupn

Fixes #1467.

Co-authored-by: Evgenii P <eupn@protonmail.com>
2019-08-14 15:10:31 +00:00
bravomikekilo
4f31fed362 fix test position 2019-08-14 21:20:04 +08:00
bravomikekilo
3fce56280f fix test 2019-08-14 12:42:58 +08:00
bravomikekilo
2bebdf0b37 fix error of RangeFrom in for-loop 2019-08-14 11:55:21 +08:00
Evgenii P
8222a1fddf Fix is_path_start to accept T![<], fix is_path_start usages 2019-08-13 22:36:01 +07:00
bors[bot]
978e3e384b Merge #1636
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 <bmk1221@126.com>
2019-08-13 12:46:47 +00:00
bravomikekilo
eb0e9bd981 add inline test 2019-08-13 18:17:10 +08:00
bors[bot]
2c65a05984 Merge #1677
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 <flodiebold@gmail.com>
2019-08-12 19:43:57 +00:00
Florian Diebold
5af9691dc9 Handle placeholder assoc types when Chalk produces them 2019-08-12 21:43:00 +02:00
Florian Diebold
9d72b14cfe Normalize assoc types in more places 2019-08-12 21:43:00 +02:00
Florian Diebold
11b9845afd Improve debug logging a bit 2019-08-12 21:43:00 +02:00
Florian Diebold
6265497523 Normalize associated types during inference 2019-08-12 21:43:00 +02:00
Florian Diebold
22724f37f3 Lower fully qualified associated type paths
I.e. `<T as Trait>::Foo`.
2019-08-12 21:43:00 +02:00
Florian Diebold
6cfdfdecba Add representations of associated types
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`.
2019-08-12 21:43:00 +02:00