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
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
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
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
Florian Diebold
3a9a0bc968
Add another test for assoc type resolution
2019-08-12 21:43:00 +02:00
Aleksey Kladov
6efc79b89d
implement while let desugaring
2019-08-07 15:14:22 +02:00
Evgenii P
858736c477
do fixup: remove unused import
2019-08-03 02:46:00 +07:00
Evgenii P
291bd81e74
Relax trait solving more for completion
2019-08-03 01:56:27 +07:00
Evgenii P
30bc3b93be
rustfmt
2019-08-03 01:16:20 +07:00
Evgenii P
c417b98f02
Implement completion for the .await syntax
2019-08-03 01:15:43 +07:00
Phil Ellison
d79dc38e99
Move assist test, add literal type inference test
2019-07-29 19:02:03 +01:00
bors[bot]
443061e752
Merge #1570
...
1570: switch to upstream rowan's API r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-07-21 13:48:46 +00:00
Ekaterina Babshukova
5fe19d2fbd
provide completion in struct patterns
2019-07-21 14:41:33 +03:00
Aleksey Kladov
d52ee59a71
streamline API
2019-07-21 13:28:58 +03:00
bors[bot]
dac6adbef9
Merge #1562
...
1562: Continue support for .await r=matklad a=unrealhoang
- add await expr to ast and HIR Expr
- infer type for `.await`
Co-authored-by: Unreal Hoang <unrealhoang@gmail.com>
2019-07-20 11:27:50 +00:00
Unreal Hoang
bacf926a77
infer type for await
...
by projecting inner_ty to Future::Output alias
2019-07-20 20:12:19 +09:00
Unreal Hoang
5ac9f5cdc7
add await expr to ast
2019-07-20 19:35:49 +09:00
Aleksey Kladov
f3bdbec1b6
rename range -> text_range
2019-07-20 12:58:27 +03:00
Aleksey Kladov
e2b28f5bb8
migrate ra_hir to the new rowan
2019-07-19 13:16:25 +03:00
Florian Diebold
c8284d8424
Switch to Chalk master, without fuel
2019-07-15 08:49:55 +02:00
Florian Diebold
dcb0c02e3a
Remove blacklist, instead mark Sized
as non-enumerable
...
This seems to be enough to prevent hanging in rust-analyzer, Chalk and the rustc
repo.
2019-07-15 08:49:55 +02:00
Florian Diebold
e2bce9e7eb
Cargo update, including updating Chalk
2019-07-14 18:22:47 +02:00
Florian Diebold
1e60ba8927
Have InferenceContext contain an InferenceResult instead of duplicating all fields
2019-07-14 18:22:47 +02:00
Florian Diebold
0a20770f46
Some renamings for clarity
2019-07-14 18:22:47 +02:00
Ekaterina Babshukova
2a1e11b36f
complete fields in enum variants
2019-07-12 20:31:49 +03:00
Aleksey Kladov
61135d4d4d
fix profile name
2019-07-09 11:13:15 +03:00
bors[bot]
f59cd1a4a0
Merge #1515
...
1515: Trait environment r=matklad a=flodiebold
This adds the environment, i.e. the set of `where` clauses in scope, when solving trait goals. That means that e.g. in
```rust
fn foo<T: SomeTrait>(t: T) {}
```
, we are able to complete methods of `SomeTrait` on the `t`. This affects the trait APIs quite a bit (since every method that needs to be able to solve for some trait needs to get this environment somehow), so I thought I'd do it rather sooner than later ;)
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-07-09 07:50:18 +00:00
bors[bot]
35f28c538a
Merge #1512
...
1512: Infer ? operator r=unrealhoang a=unrealhoang
Logical continuation of https://github.com/rust-analyzer/rust-analyzer/pull/1501
cc https://github.com/rust-analyzer/rust-analyzer/issues/1426
Co-authored-by: Unreal Hoang <unrealhoang@gmail.com>
2019-07-09 00:41:03 +00:00
Unreal Hoang
9a0d4b16b7
beautify tests
2019-07-09 09:27:03 +09:00
Florian Diebold
9afbf2dff4
Unify normalize
and implements
to simplify code
2019-07-08 21:47:37 +02:00
Florian Diebold
15862fc041
Use environment for associated type normalization as well
2019-07-08 21:20:17 +02:00
Florian Diebold
b1b12072ed
Start handling environment in trait resolution
...
I.e. if we are inside a function with some where clauses, we assume these where
clauses hold.
2019-07-08 21:20:17 +02:00
Florian Diebold
638100dc8b
Refactor a bit & introduce Environment struct
2019-07-08 21:20:17 +02:00
Marco Groppo
95d78a8d8d
Look for the fXX_runtime lang items during method resolution.
2019-07-08 20:37:29 +02:00
Unreal Hoang
741fc8fbfc
use namespaced consts for KnownName
2019-07-09 01:00:47 +09:00
Unreal Hoang
944f71afc6
projection over std::ops::Try::Ok to infer try/?
2019-07-09 00:19:09 +09:00
Muhammad Mominul Huque
09b72489dd
cargo format
2019-07-08 04:09:35 +06:00
Muhammad Mominul Huque
012fec54dc
Constify KnownName's
2019-07-08 03:29:38 +06:00
bors[bot]
1b38ca3b87
Merge #1501
...
1501: Infer for loop variable r=flodiebold a=unrealhoang
My take on https://github.com/rust-analyzer/rust-analyzer/issues/1425
Co-authored-by: Unreal Hoang <unrealhoang@gmail.com>
2019-07-07 15:20:09 +00:00
bors[bot]
6c31f5b0a7
Merge #1499
...
1499: processing attribute #[path] of module r=matklad a=andreevlex
support two cases
- simple name file `foo.rs`
- declaration in mod.rs
#1211
Co-authored-by: Alexander Andreev <andreevlex.as@gmail.com>
2019-07-07 13:48:58 +00:00
Unreal Hoang
f7cd40d830
add projection to infer for loop variable
2019-07-07 22:26:51 +09:00
Alexander Andreev
1c582be63b
Moved module resolution test in mods.rs
2019-07-07 16:06:54 +03:00
Florian Diebold
f854a29c9a
Make EnumVariant a GenericDef and simplify some code
2019-07-06 17:43:13 +02:00