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"e 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
Aleksey Kladov
c79eea9fc1
⬆️ rowan
2019-07-24 11:28:53 +03:00
bors[bot]
25921f5a5f
Merge #1573
...
1573: fix: parse box syntax inside parentheses r=matklad a=csmoe
r? @matklad
Co-authored-by: csmoe <csmoe@msn.com>
2019-07-24 08:27:46 +00:00
Aleksey Kladov
700669bbd0
kill old lexer
2019-07-22 17:56:19 +03:00
Aleksey Kladov
75761c0e47
add rustc_lexer
2019-07-22 17:47:33 +03:00
csmoe
8fe58c3598
fix: parse box syntax inside parentheses
2019-07-22 20:52:10 +08:00
Aleksey Kladov
773ad2edb3
simiplify
2019-07-21 13:34:15 +03:00
Aleksey Kladov
d52ee59a71
streamline API
2019-07-21 13:28:58 +03:00
Aleksey Kladov
62be91b82d
minor, move type
2019-07-21 13:08:32 +03:00
Aleksey Kladov
c9cfd57eea
switch to upstream rowan's API
2019-07-20 20:12:06 +03:00
bors[bot]
3983ccca4a
Merge #1566
...
1566: align SyntaxText API with upstream r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-07-20 13:52:33 +00:00
Aleksey Kladov
f6bcc2d745
align SyntaxText API with upstream
2019-07-20 16:52:11 +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
5ac9f5cdc7
add await expr to ast
2019-07-20 19:35:49 +09:00
bors[bot]
6b352ffeb3
Merge #1560
...
1560: move debug_dump to fmt::Debug r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-07-20 09:59:10 +00:00
Aleksey Kladov
f3bdbec1b6
rename range -> text_range
2019-07-20 12:58:27 +03:00
Aleksey Kladov
6d5d82e412
move debug_dump to fmt::Debug
2019-07-20 12:48:24 +03:00
Unreal Hoang
3a7f07c62d
add await to syntax, parser for await_expr
2019-07-20 17:41:31 +09:00
Aleksey Kladov
d92a88bf09
remove lifetime from syntax node text
2019-07-19 21:41:36 +03:00
Aleksey Kladov
0025299370
sane indexing in text
2019-07-19 20:55:32 +03:00
Aleksey Kladov
8467ba8cdb
flip syntax text to use internal iteration
2019-07-19 20:29:59 +03:00
Aleksey Kladov
8f032d6a58
drop memory size of subtree
...
it wasn't too accurate and the new measurement method of dropping the
database completely is better anyway
2019-07-19 19:55:54 +03:00
Aleksey Kladov
191a6ba330
convenience api
2019-07-19 19:05:34 +03:00
Aleksey Kladov
5c594bcb48
cleanup casts
2019-07-19 18:22:00 +03:00
Aleksey Kladov
f9d9e0a1f7
several highlighting cleanups
...
* make stuff more type-safe by using `BindPat` instead of just `Pat`
* don't add `mut` into binding hash
* reset shadow counter when we enter a function
2019-07-19 16:09:32 +03:00
Aleksey Kladov
d4a66166c0
switch to the upstream rowan
2019-07-19 14:15:01 +03:00
Aleksey Kladov
0343c4a815
migrate ra_assists to the new AST
2019-07-19 13:16:25 +03:00
Aleksey Kladov
e2b28f5bb8
migrate ra_hir to the new rowan
2019-07-19 13:16:25 +03:00
Aleksey Kladov
d402974aa0
migrate ra_syntax to the new rowan API
2019-07-19 13:16:24 +03:00
Aleksey Kladov
df33e7685b
use Parse in mbe
2019-07-18 23:19:04 +03:00
Aleksey Kladov
a6224f3620
make Parse generic
2019-07-18 22:55:04 +03:00
Aleksey Kladov
1edec77e58
cleanup imports
2019-07-18 20:16:33 +03:00
Ekaterina Babshukova
4abe03879b
highlight mutable variables differently
2019-07-18 18:52:50 +03:00
Aleksey Kladov
0fb4b896e2
use more correct phantom types for ptrs
2019-07-18 18:13:32 +03:00
Aleksey Kladov
deab4caa7b
make Parse fields private
...
this is in preparation for the new rowan API
2019-07-12 19:41:13 +03:00
Pascal Hertleif
6e87065968
Make clippy a bit happier
...
Random drive-by fix. I honestly blame rust-analyzer itself on this,
because I set its watch mode to use `cargo clippy` 🤷
2019-07-10 17:05:39 +02:00
Pascal Hertleif
d0ff53de2d
Resolve a FIXME
...
Now that we are using a newer smol_str release this can be simplified :)
2019-07-10 17:04:38 +02:00
Shotaro Yamada
a426de60ad
Remove unused dependencies
2019-07-09 00:28:00 +09:00
Muhammad Mominul Huque
012fec54dc
Constify KnownName's
2019-07-08 03:29:38 +06:00
Jeremy Kolb
6b4ec73b7e
Clippy changes
2019-07-04 23:00:00 -04:00
Jeremy Kolb
4ad9e986ad
Some clippy fixes for 1.36
2019-07-04 17:43:00 -04:00
Aleksey Kladov
1834bae5b8
allow rustfmt to reorder imports
...
This wasn't a right decision in the first place, the feature flag was
broken in the last rustfmt release, and syntax highlighting of imports
is more important anyway
2019-07-04 23:09:09 +03:00
Ryan Cumming
2959aa446e
Remove parse error on array initializer attributes
...
This is actually allowed by the `rustc` parser but most attributes will
fail later due to attributes on expressions being experimental.
2019-06-30 19:55:50 +10:00
Ryan Cumming
b01496538c
Support attributes on array members
...
Array members are allow to have attributes such as `#[cfg]`.
This is a bit tricky as we don't know if the first expression is an
initializer or a member until we encounter a `;`. This reuses a trick
from `stmt` where we remember if we saw an attribute and then raise an
error if the first expression ends up being an initializer.
This isn't perfect as the error isn't correctly located on the attribute
or initializer; it ends up immediately after the `;`.
2019-06-30 18:36:54 +10:00
zjy
de930237ff
fixed #1384
2019-06-28 15:22:17 +08:00
bors[bot]
67ecc88f66
Merge #1415
...
1415: fix: specialization r=matklad a=csmoe
Closes #1402
r? @matklad
Co-authored-by: csmoe <csmoe@msn.com>
2019-06-24 10:10:05 +00:00
csmoe
d04473accb
fix: specialization(with blindly parsing)
...
Change-Id: Ic5d2767e8781568d76d4d0013cd6081e95ae8a95
2019-06-19 18:37:38 +08:00
csmoe
d6533994e4
fix: box_pattern
...
Change-Id: I45a856d74fb616d3bce33050f9e69d327186bd59
2019-06-19 14:28:50 +08:00
csmoe
5999733ca6
fix: box_syntax( #1412 )
...
Change-Id: I6e20e0163fa545de37226c1561b3b7103615626c
2019-06-18 21:46:47 +08:00
Shotaro Yamada
774537fb01
Fix formatting
2019-06-16 01:45:38 +09:00
Shotaro Yamada
474a04615c
Skip attrs in Literal::token
2019-06-15 23:36:12 +09:00
Muhammad Mominul Huque
f032eeb05f
Get rid of failure: ra_batch ra_cli
2019-06-15 13:24:02 +06:00
csmoe
2ca9f71897
fix: support existential type
2019-06-12 14:32:39 +00:00
csmoe
205a8278a9
fix: never type with binding
...
Change-Id: I14e1bc628b9d2dfdb1f40de3d3707f4e872767f2
2019-06-07 19:49:49 +08:00
Andrey Tkachenko
505b8d873f
[ #1083 ] Try block syntax: fix tests
2019-06-06 16:26:54 +04:00
Andrey Tkachenko
281c9eeaff
[ #1083 ] Try block syntax
2019-06-06 15:43:26 +04:00
csmoe
44363cd5d2
fix: clean up warnings
...
Change-Id: I91a468f6e846ac28574825b8ee7aa02fbff68f63
2019-06-06 10:06:46 +08:00
Alan Du
b28ca32db2
Fix clippy::or_fun_call
2019-06-04 18:05:07 -04:00
Alan Du
ed3d93b875
Fix clippy::single_char_pattern
2019-06-04 18:05:07 -04:00
Aleksey Kladov
18ed351747
⬆️ parking_lot
2019-05-30 12:02:30 +03:00
Aleksey Kladov
38cb88307e
flip Into to From
2019-05-29 10:31:07 +03:00
Aleksey Kladov
2e722ec54b
show error offsets in tests
2019-05-29 10:31:07 +03:00
Aleksey Kladov
0efbcdf435
remove old parsing methods
2019-05-28 17:34:28 +03:00
Aleksey Kladov
310bfe57bd
update test data
2019-05-28 17:09:45 +03:00
Aleksey Kladov
bc2550b196
update tests
2019-05-28 16:59:22 +03:00
Aleksey Kladov
afeaea7051
drop error from SOurceFile constructor
2019-05-28 16:34:23 +03:00
Aleksey Kladov
1cece9f219
return errors from tree builder
2019-05-28 16:26:14 +03:00
Aleksey Kladov
90926b9479
drop errors from SyntaxNode
2019-05-28 16:15:17 +03:00
Aleksey Kladov
f52eda675e
add Parse
2019-05-28 16:15:17 +03:00
Pascal Hertleif
1e6ba19015
Make rainbows optional
2019-05-27 11:44:46 +02:00
Pascal Hertleif
43d5a49653
More clever highlighting, incl draft for structs
2019-05-27 11:26:35 +02:00
Pascal Hertleif
ed89b0638b
Hash based on binding name and shadow counter
2019-05-27 11:26:35 +02:00
Pascal Hertleif
5bf3e949e8
Semantic highlighting spike
...
Very simple approach: For each identifier, set the hash of the range
where it's defined as its 'id' and use it in the VSCode extension to
generate unique colors.
Thus, the generated colors are per-file. They are also quite fragile,
and I'm not entirely sure why. Looks like we need to make sure the
same ranges aren't overwritten by a later request?
2019-05-27 11:26:33 +02:00
Edwin Cheng
fcb1eef323
Change TokenSource to iteration based
2019-05-25 20:41:03 +08:00
Aleksey Kladov
0efb5364c3
sort hash maps for tests
2019-05-21 14:14:31 +03:00
Aleksey Kladov
765f93b8d8
add is_union to structs AST
2019-05-21 01:15:56 +03:00
Aleksey Kladov
e29a58995b
⬆️ text_unit
2019-05-15 19:19:05 +03:00
Sergey Parilin
993abedd77
apply T! macro where it is possible
2019-05-15 15:35:47 +03:00
Aleksey Kladov
549728bba8
make AstId untyped
2019-05-13 19:39:06 +03:00
bors[bot]
033a32f349
Merge #1257
...
1257: Implemented tkn! macro for syntax kinds r=matklad a=pasa
Implementation of #1248
Co-authored-by: Sergey Parilin <sergey.parilin@fxdd.com>
2019-05-13 13:49:14 +00:00
Sergey Parilin
57bb618fd3
Implemented T! macro for syntax kinds
2019-05-13 15:19:57 +03:00
Florian Diebold
d6dc75f9f2
Handle auto traits & negative impls
...
We don't pass field types to Chalk yet though, so the auto trait inference won't
be correct.
2019-05-11 16:21:20 +02:00
Aleksey Kladov
313314e14b
share literal validation logic with compiler
2019-05-07 19:41:59 +03:00
Sergey Parilin
26ed925685
fill struct fields diagnostic
2019-05-06 17:16:11 +03:00
bors[bot]
aa7bdfd37f
Merge #1208
...
1208: [WIP] Goto for Macro's r=matklad a=Lapz
Adds goto definition for macros. Currently only works for macros in the current crate ~~otherwise it panics~~. Proper macro resolution needs to be added for it to resolve macros in other crates.
Todo
- [X] Allow goto from macro calls
- [X] Fix panics
- [x] Add tests
![Screen Recording 2019-04-25 at 18 00 24](https://user-images.githubusercontent.com/19998186/56754499-1dd01c00-6785-11e9-9e9a-1e36de70cfa3.gif )
Co-authored-by: Lenard Pratt <l3np27@gmail.com>
2019-05-04 18:38:10 +00:00
Lenard Pratt
8198e13c26
Added local macro goto
2019-05-04 17:39:51 +01:00
Aleksey Kladov
8876f44054
Revert "eagarly clean astd maps"
...
This reverts commit 6c63a59425
.
This causes massive slowdowns: looks like we accidentally have some source-depndent
2019-05-04 16:04:34 +03:00
Aleksey Kladov
6c63a59425
eagarly clean astd maps
2019-05-04 11:53:44 +03:00
Edwin Cheng
9e4fee8b41
Add default type param in TypeParam Node
2019-05-03 12:18:35 +08:00
Edwin Cheng
b454eb5a60
Add macro pat parsing
2019-04-30 23:22:48 +08:00
bors[bot]
6618d1edc3
Merge #1213
...
1213: Make lexer produce only single character puncts r=matklad a=edwin0cheng
As discussed in Zulip, this PR change `lexer` to produce only single char punct.
* Remove producing `DOTDOTDOT, DOTDOTEQ, DOTDOT, COLONCOLON, EQEQ, FAT_ARROW, NEQ, THIN_ARROW` in lexer.
* Add required code in parser to make sure everythings works fine.
* Change some tests (Mainly because the `ast::token_tree` is different)
Note: i think the use of `COLON` in rust is too overloaded :)
Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2019-04-28 16:51:02 +00:00
Edwin Cheng
d436ab0581
Refactor parser handle mult-char punct internally
2019-04-28 23:46:03 +08:00
Florian Diebold
85633656df
Fix hover on the beginning of a nested expression
...
E.g. in
```
let foo = 1u32;
if true {
<|>foo;
}
```
the hover shows `()`, the type of the whole if expression, instead of the more
sensible `u32`. The reason for this was that the search for an expression was
slightly left-biased: When on the edge between two tokens, it first looked at
all ancestors of the left token and then of the right token. Instead merge the
ancestors in ascending order, so that we get the smaller of the two possible
expressions.
2019-04-28 16:03:49 +02:00
Edwin Cheng
6c913d8fa7
Add ...
parsing for fn pointer type
2019-04-23 11:10:41 +08:00
Aleksey Kladov
268e739c94
move add_missing_members to structured editing API
...
Currently, this is more code, and we also loose auto-indenting of
bodies, but, long-term, this is the right approach
2019-04-22 13:01:33 +03:00
Aleksey Kladov
97f41d7343
test short structs
2019-04-22 00:52:21 +03:00
Aleksey Kladov
7cc845e88d
start structured editing API
2019-04-21 20:51:20 +03:00
bors[bot]
4ad2e4ce4e
Merge #1154
...
1154: Initial support for lang items (and str completion) r=flodiebold a=marcogroppo
This PR adds partial support for lang items.
For now, the only supported lang items are the ones that target an impl block.
Lang items are now resolved during type inference - this means that `str` completion now works.
Fixes #1139 .
(thanks Florian Diebold for the help!)
Co-authored-by: Marco Groppo <marco.groppo@gmail.com>
2019-04-20 16:13:50 +00:00
Marco Groppo
e85ee60c42
Initial support for lang items.
2019-04-20 00:10:19 +02:00
Edwin Cheng
3ff5440a50
Add MacroItems and MacroStmts in grammer.ron
2019-04-19 02:47:29 +08:00
bors[bot]
5d35f284f5
Merge #1138
...
1138: Add L_DOLLAR and R_DOLLAR r=matklad a=edwin0cheng
As discussion in issue https://github.com/rust-analyzer/rust-analyzer/issues/1132 and PR #1125 , this PR add 2 `Syntax::Kind` : `L_DOLLAR` and `R_DOLLAR` for representing `Delimiter::None` in mbe and proc_marco. By design, It should not affect the final syntax tree, and will be discard in `TreeSink`.
My original idea is handling these 2 tokens case by case, but i found that they will appear in every place in the parser (imagine `tt` matcher). So this PR only handle it in `Parser::do_bump` and `Parser::start`, although It will not fix the `expr` matcher executing order problem in original idea.
Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2019-04-14 14:16:42 +00:00
Robin Freyler
6aae0cf7fa
replace usages of algo::generate
with iter::successors
from std
2019-04-13 16:43:49 +02:00
Aleksey Kladov
20013de2ab
fix typo
2019-04-11 17:15:20 +03:00
Edwin Cheng
74e846b9ec
Add L_DOLLAR and R_DOLLAR
2019-04-11 11:02:41 +08:00
Aleksey Kladov
faf526e021
migrate to untyped rowan
2019-04-09 10:26:51 +03:00
Lenard Pratt
b27fa33a9f
updated snapshots
2019-04-07 13:23:18 +01:00
Lenard Pratt
e175921932
Added ArrayExprKind,
...
changed the display for fixed array types,
Added Array Enum to ra_hir/expr
2019-04-07 13:23:14 +01:00