Commit Graph

557 Commits

Author SHA1 Message Date
Phil Ellison
200470692f Cast SyntaxNodePtr to AstPtr directly 2019-08-25 12:56:23 +03:00
Aleksey Kladov
5b18a4eef9 rename struct -> record, pos -> tuple 2019-08-23 16:59:50 +03:00
Aleksey Kladov
bbcca4f735 make ast object safe 2019-08-23 15:06:47 +03:00
bors[bot]
0c35d82329
Merge #1721 #1723
1721: Impl/dyn trait r=flodiebold a=flodiebold

This adds support for `impl Trait` and `dyn Trait` types as far as possible without Chalk. So we can represent them in the type system, and handle them in method resolution, but Chalk doesn't know about them yet. There's a small temporary hack here where we bypass Chalk during method resolution, so we can handle simple method calls on them and completion works.

Fixes #1608.

1723: Make sysroot use `RUST_SRC_PATH` if set r=matklad a=bkchr



Co-authored-by: Florian Diebold <flodiebold@gmail.com>
Co-authored-by: Bastian Köcher <git@kchr.de>
2019-08-22 20:06:32 +00:00
Florian Diebold
4768f5e717 Improve/fix type bound lowering 2019-08-22 21:58:29 +02:00
Dylan MacKenzie
3e14b16c4d Add test for nested box pattern 2019-08-22 12:53:54 -07:00
Florian Diebold
16a7d8cc85 Add impl Trait and dyn Trait types
- refactor bounds handling in the AST a bit
 - add HIR for bounds
 - add `Ty::Dyn` and `Ty::Opaque` variants and lower `dyn Trait` / `impl Trait`
   syntax to them
2019-08-22 19:33:00 +02:00
Aleksey Kladov
9f238930f1 Don't add ? bounds as real bounds
closes #1709
2019-08-22 15:35:42 +03:00
Aleksey Kladov
deba1fedfa ⬆️ rustc_lexer 2019-08-20 19:53:05 +03:00
Aleksey Kladov
39e444d701 remove ast::*Kind enums
With the new owned trees, we don't need an indirection here
2019-08-19 13:58:49 +03: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
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]
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
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
Florian Diebold
22724f37f3 Lower fully qualified associated type paths
I.e. `<T as Trait>::Foo`.
2019-08-12 21:43:00 +02:00
Evgenii P
f1e62501c3 Fix for<'lifetime> for types specified by path 2019-08-11 16:56:05 +07:00
Aleksey Kladov
f3ee5a1509 Move numeric names inside of NameRef 2019-08-09 12:16:47 +02:00
Evgenii P
957b5ed23a Parse tuple struct field initialization 2019-08-09 15:38:52 +07:00
Evgenii P
db4839033c Change macro to function 2019-08-09 15:04:13 +07:00
Evgenii P
073cf42391 rustfmt 2019-08-09 14:23:13 +07:00
Evgenii P
f4a6d92050 Reduce code duplication in lexer by introducing small macro 2019-08-09 14:08:34 +07:00
bors[bot]
87608904f6 Merge #1661
1661: Parse function parameters attributes r=matklad a=eupn

Fixes #1397. The [RFC-2565](https://github.com/rust-lang/rfcs/blob/master/text/2565-formal-function-parameter-attributes.md) specifies `#[attributes]` to function parameters:

```rust
fn foo(#[attr] a, #[unused] b, #[must_use] ...) {
    // ...
}
```

This PR adds those attributes into grammar and to the parser, extending corresponding inline tests.

Co-authored-by: Evgenii P <eupn@protonmail.com>
2019-08-08 13:04:28 +00:00
Evgenii P
6fa2d82147 Fix parser tests according to review 2019-08-08 09:12:07 +07:00
Aleksey Kladov
d6ab1af086 assoc types bounds 2019-08-07 21:00:02 +02:00
Evgenii P
9ea36703d2 Fix variadic arg inline test 2019-08-07 23:48:21 +07:00
Evgenii P
3fb58c620c Add function parameters attributes 2019-08-07 23:42:28 +07:00
bors[bot]
658382c1f5 Merge #1640
1640: Bump deps r=matklad a=lnicola

`insta`, `unicode-xid` and others

Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2019-08-04 08:12:12 +00:00
Laurențiu Nicola
5153001889 Bump deps 2019-08-04 10:43:51 +03:00
kjeremy
0f61aa1f09 Unconditionally trim the end of comments 2019-07-31 13:59:14 -04:00
kjeremy
d65dc40348 Removes */ in block doc comments 2019-07-31 11:43:00 -04:00
kjeremy
4fccad9b2c Add explicit newline preserving tests 2019-07-31 10:46:15 -04:00
Phil Ellison
e6113c0998 Add merge_match_arm assist, bump rowan to 0.6.1 2019-07-29 21:59:52 +01:00
bors[bot]
a5fe9f7a87 Merge #1604
1604: Fix failing type interference for floating point literal r=matklad a=theotherphil

Fixes https://github.com/rust-analyzer/rust-analyzer/issues/1592

Co-authored-by: Phil Ellison <phil.j.ellison@gmail.com>
2019-07-29 19:02:39 +00:00
Phil Ellison
fab8e9bb8a cargo format 2019-07-28 20:54:37 +01:00
Phil Ellison
4fd7ad908b Add special case for f32 and f43 suffices on Literal.kind 2019-07-28 20:47:44 +01:00
Phil Ellison
578bc05ca4 Add issue link and trailing newline 2019-07-28 20:25:06 +01:00
Phil Ellison
fe1b1dd7d9 More direct failing test 2019-07-28 19:52:30 +01:00
Aleksey Kladov
459241f272 move syntax tests to unit tests 2019-07-24 12:49:19 +03:00
bors[bot]
bf3030404e Merge #1584
1584: switch to upstream unescape r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-07-24 09:03:26 +00:00
Aleksey Kladov
2473cb6a5c switch to upstream unescape 2019-07-24 11:47:28 +03:00
bors[bot]
a971c6d32d Merge #1583
1583: ⬆️ rowan r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-07-24 08:44:40 +00:00