pcpthm
7669113e7c
Completely ignore errors for reparse fuzz
2019-03-22 08:09:11 +09:00
pcpthm
c60ec02d75
Use template text to improve reparse fuzzing
2019-03-22 08:09:11 +09:00
pcpthm
ec59d9bda5
Fix lexer not producing right token on "_"
2019-03-22 08:09:11 +09:00
pcpthm
9623e77d9f
Fix reparsing bug when lex result is different
2019-03-22 08:09:11 +09:00
pcpthm
c622000413
Improve reparse fuzz test
2019-03-22 08:09:11 +09:00
pcpthm
0acb61a911
Fix an arithmetic overflow in reparser
2019-03-22 08:09:11 +09:00
pcpthm
4c7142d0c9
Add fuzz test for reparsing
2019-03-22 08:04:48 +09:00
pcpthm
e734190c24
Refactor parser fuzz testing
2019-03-22 08:04:48 +09:00
Aleksey Kladov
182c05a96c
add name resolution from the old impl
...
unlike the old impl, this also handles macro imports across crates
2019-03-17 12:46:13 +03:00
Caio
ad72699553
Add async keyword
2019-03-09 20:40:22 -03:00
Ville Penttinen
d3ce69aee3
Remove TypeRef
from item opts which implement TypeAscriptionOwner
2019-02-27 14:08:09 +02:00
Ville Penttinen
6eb070d661
Add new trait TypeAscriptionOwner
...
This trait should be implemented for nodes which have an ascribed type,
e.g. thing : Type. Such as let, const, static, param, named struct fields.
2019-02-26 11:35:57 +02:00
Aleksey Kladov
78f10fcdc4
rename type to type_alias in the AST as well
2019-02-25 13:49:32 +03:00
Aleksey Kladov
65a2be4953
complete struct literals
2019-02-24 17:01:56 +03:00
Aleksey Kladov
666303faf3
support upcastig in AST enum
2019-02-24 16:57:05 +03:00
Aleksey Kladov
f078f7adc8
introduce tree builder
2019-02-23 16:55:01 +03:00
Aleksey Kladov
0c1cb98182
rename
2019-02-23 16:07:29 +03:00
bors[bot]
5100aeac42
Merge #876
...
876: Fix join_lines not adding a comma after join_single_expr_block with match arm r=matklad a=vipentti
Fixes #868
Co-authored-by: Ville Penttinen <villem.penttinen@gmail.com>
2019-02-21 16:55:26 +00:00
Ville Penttinen
82173c8de4
Move non_trivia_sibling
to ra_syntax::algo
2019-02-21 18:49:03 +02:00
Aleksey Kladov
4fe07a2b61
add API guide to ra_syntax
2019-02-21 17:35:45 +03:00
Aleksey Kladov
7060a39d5c
simplify trait bounds
2019-02-21 16:12:15 +03:00
Aleksey Kladov
b51b71bf25
rearrange methods
2019-02-21 16:04:03 +03:00
Aleksey Kladov
f7f99af0a6
kill utils module
2019-02-21 15:57:40 +03:00
Aleksey Kladov
412ac63ff5
docs
2019-02-21 15:24:42 +03:00
Aleksey Kladov
c47f9e2d37
fix compilation
2019-02-21 13:37:32 +03:00
Aleksey Kladov
d334b5a1db
move parser to a separate crate
2019-02-21 13:27:45 +03:00
Aleksey Kladov
cd0d2866fc
make grammar independent of syntax tree
2019-02-21 12:12:04 +03:00
Aleksey Kladov
1b2e70df99
minor
2019-02-21 12:05:52 +03:00
Aleksey Kladov
79ce0fa8d7
move whitespace handling to tree builder
2019-02-21 12:03:42 +03:00
Aleksey Kladov
882c47f187
move syntax error to parser
2019-02-20 23:17:07 +03:00
Aleksey Kladov
61992dc1cd
simplify
2019-02-20 23:05:59 +03:00
Aleksey Kladov
4c1f9b8d4e
remove TokenPos
2019-02-20 23:02:24 +03:00
Aleksey Kladov
cce23fddba
flattern module structure
2019-02-20 22:52:32 +03:00
Aleksey Kladov
2acb21e8f7
merge parse_impl and parser_api
2019-02-20 22:44:06 +03:00
Aleksey Kladov
e72ad0a2fa
fix off by one error
2019-02-20 22:27:49 +03:00
Aleksey Kladov
2b5e336ce7
move abstract traits to top
2019-02-20 22:19:12 +03:00
Aleksey Kladov
d2bce118ae
switch to dynamic dispatch for TokenSource
...
Benchmarks show no difference. This is probably because we are
bottlenecked on memory allocations, and we should fix that, but we are
not optimizing for performance just yet.
changes. Lines starting # with '#' will be ignored, and an empty
message aborts the commit. # # On branch token-source # Changes to be
committed: # modified: crates/ra_syntax/src/parsing/parser_api.rs #
modified: crates/ra_syntax/src/parsing/parser_impl.rs #
2019-02-20 22:02:03 +03:00
Aleksey Kladov
0c81b9deee
route parsing via TokenSource trait
2019-02-20 21:50:07 +03:00
Aleksey Kladov
3517c175ac
rename Sink -> TreeSink
2019-02-20 21:08:59 +03:00
Aleksey Kladov
86a67dce25
fix tests
2019-02-20 16:48:06 +03:00
Aleksey Kladov
45fc91cc47
rearrange modules in a suggestd reading order
2019-02-20 16:24:39 +03:00
Aleksey Kladov
a4a1e08ab8
flatten modules
2019-02-20 16:16:14 +03:00
Aleksey Kladov
9f6883fbf1
move reparsers to grammar
2019-02-20 16:02:06 +03:00
Aleksey Kladov
5a6eda528c
tighten visibility
2019-02-20 15:57:26 +03:00
Aleksey Kladov
5222b8aba3
move all parsing related bits to a separate module
2019-02-20 15:47:32 +03:00
Aleksey Kladov
9d0cda4bc8
slightly better name
2019-02-20 15:03:31 +03:00
Aleksey Kladov
df6efe62c5
make stuff private
2019-02-20 14:53:19 +03:00
Aleksey Kladov
4e8a3f565b
handle != operator
2019-02-18 10:09:44 +03:00
Ville Penttinen
58d14bcaf7
Enable parsing attributes for generic lifetimes and type parameters
2019-02-17 23:32:10 +02:00
Ville Penttinen
bb25958705
Remove match_armlist validator
2019-02-17 20:32:10 +02:00
Ville Penttinen
96e3ac389f
Parse only outer_attributes for match arms for now
2019-02-17 19:48:08 +02:00
Ville Penttinen
1c97c1ac11
Enable parsing of attributes inside a match block
...
We allow invalid inner attributes to be parsed, e.g. inner attributes that are
not directly after the opening brace of the match block.
Instead we run validation on `MatchArmList` to allow better reporting of errors.
2019-02-17 19:26:57 +02:00
Florian Diebold
a1bda3fc08
Handle generic args for method calls
2019-02-16 23:06:41 +01:00
Florian Diebold
da7056245d
Add generic params to impl blocks
2019-02-16 23:06:41 +01:00
Florian Diebold
1526eb25c9
Import the prelude
2019-02-13 20:10:09 +01:00
Aleksey Kladov
4e91c23c79
rename yellow -> syntax_node
...
why yellow in the first place? Its red + green.
2019-02-12 19:02:30 +03:00
Aleksey Kladov
2efdf41bdb
make macro a NameOwner
2019-02-11 19:24:13 +03:00
Florian Diebold
f1afc93353
Fix handling of literal patterns
...
Wrap them in a LiteralPat node so they can be distinguished from literal
expressions.
2019-02-09 21:37:30 +01:00
Aleksey Kladov
12e3b4c70b
reformat the world
2019-02-08 14:49:43 +03:00
kjeremy
852b083794
Fill deprecation for LSP
2019-02-05 17:05:46 -05:00
Florian Diebold
e163c908ac
Add AST for extern crate
...
Also change it to parse the crate name as a NAME_REF, not a NAME.
2019-02-04 21:49:34 +01:00
Florian Diebold
5a7fce4e4c
Pass aliases to ImportData
2019-02-02 00:23:53 +01:00
Aleksey Kladov
3bd4560d6e
convert punts and literals
2019-01-31 22:23:30 +02:00
bors[bot]
97ade89993
Merge #692
...
692: [WIP] Correctly parse attributes r=matklad a=DJMcNab
Reference - https://doc.rust-lang.org/reference/attributes.html
This fixes/investigates inner attributes for:
- [x] `impl` blocks
- [x] `extern` blocks
- [x] `fn`s (fixes #689 )
- [x] `mod`s (already supported)
- [x] 'block expressions' (the long text just describes all 'blocks' used as statements)
This also investigates/fixes outer attributes for:
- [ ] 'most statements' (see also: #685 , https://doc.rust-lang.org/reference/expressions.html#expression-attributes )
- [x] Enum variants, Struct and Union fields (Fixed in #507 )
- [ ] 'Match expression arms' (@matklad can you provide a test case which explains what this means?)
- [ ] 'Generic lifetime or type parameters'
- [ ] 'Elements of array expressions, tuple expressions, call expressions, tuple-style struct and enum variant expressions'
- [ ] 'The tail expression of block expressions'
Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2019-01-31 07:06:31 +00:00
Marcus Klaas de Vries
3daca3eb4d
Infer type of match guard
2019-01-28 23:09:14 +01:00
DJMcNab
00e6b5d26c
Parse and validate attributes in blocks
2019-01-28 20:03:56 +00:00
DJMcNab
73b075c556
Correctly parse inner attributes of impl blocks
2019-01-27 14:55:03 +00:00
Erlend Tobiassen
e2e1f4ceca
Typos
2019-01-27 15:19:42 +01:00
bors[bot]
964086e0d4
Merge #685
...
685: Support attributes on let statements r=matklad a=DJMcNab
Fix #677 .
Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2019-01-27 09:04:02 +00:00
DJMcNab
4d35cc3875
Stop using let_stmt twice
2019-01-27 09:00:57 +00:00
bors[bot]
ffcf618842
Merge #662
...
662: Preserve indentation in doc comments r=matklad a=kjeremy
Fixes #502
Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
2019-01-27 08:21:04 +00:00
Aleksey Kladov
7177fffd7b
fix verification on CI
...
remove `--verify` flag from the binaries: we have tests for this!
2019-01-27 02:30:54 +03:00
DJMcNab
7055d43c3a
Make attrs be a child of the let statement
2019-01-26 22:02:23 +00:00
Aleksey Kladov
619af1e22c
fix AST for if expressions
...
then is not always a block...
2019-01-27 00:37:11 +03:00
DJMcNab
55a3e21ac4
Support attributes on let statements
2019-01-26 21:35:03 +00:00
DJMcNab
7a76433c45
Struct literals should not be a BlockLike::Block
2019-01-26 18:45:29 +00:00
Jeremy Kolb
a892067951
Make doc comments optional
2019-01-26 10:35:23 -05:00
Jeremy Kolb
e9e0ea0398
Do not unconditionally trim comments
2019-01-26 09:55:30 -05:00
Jeremy Kolb
8c08b6825e
Preserve indentation in doc comments
2019-01-26 09:50:17 -05:00
bors[bot]
2acaa92c93
Merge #660
...
660: Support macro calls in type position r=matklad a=regiontog
A [playground](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=fdc6dd4ddaece92a72fa2a292b75e27c ) demonstrating the syntax in question.
Co-authored-by: Erlend Tobiassen <erlend.tobiassen@gmail.com>
2019-01-26 10:23:28 +00:00
Erlend Tobiassen
e28bd099d6
Support macro calls in type position
2019-01-25 23:56:31 +01:00
Aleksey Kladov
23172a116c
rename POS_FIELD -> POS_FIELD_DEF
...
to match NAMED_FIELD_DEF
2019-01-26 00:24:12 +03:00
Jeremy A. Kolb
7a0bc2dd64
Add docs to struct fields
2019-01-25 14:29:56 -05:00
bors[bot]
675943712c
Merge #630
...
630: Fill in DocumentSymbol::detail r=matklad a=hban
Closes : #516
I just pulled type text from the syntax node and "formatted" is bit. VS Code can't really handle multi-line symbol detail (it's will crop it when rendering), so that formatting will just collapse all white-space to singe space. It isn't pretty, but maybe there's a better way.
Issue also mentions "need to be done for `NavigationTarget` to `SymbolInformation`", but `SymbolInformation` doesn't have detail field on it?
Co-authored-by: Hrvoje Ban <hban@users.noreply.github.com>
2019-01-25 07:13:16 +00:00
bors[bot]
1d4b421aad
Merge #633
...
633: use ToOwned trait instead of inherent method r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-24 23:10:09 +00:00
Aleksey Kladov
2e354f480b
use ToOwned trait instead of inherent method
2019-01-25 02:09:31 +03:00
bors[bot]
c42db0bbd7
Merge #623
...
623: WIP: module id is not def id r=matklad a=matklad
This achieves two things:
* makes module_tree & item_map per crate, not per source_root
* begins the refactoring to remove universal `DefId` in favor of having separate ids for each kind of `Def`. Currently, only modules get a differnt ID though.
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-24 22:56:13 +00:00
Aleksey Kladov
0f2f3a21e7
Migrate trait & type to new ids
2019-01-25 01:31:32 +03:00
DJMcNab
107d6a0a16
Reformat
2019-01-24 22:01:49 +00:00
Daniel McNab
82dfb00157
Apply suggestions from code review
...
Co-Authored-By: DJMcNab <36049421+DJMcNab@users.noreply.github.com>
2019-01-24 21:41:02 +00:00
DJMcNab
f0e5a314b0
Dedupe PATH_FIRST in ATOM_EXPR_FIRST
2019-01-24 21:31:43 +00:00
DJMcNab
4899e7be76
Support universal function call syntax in function calls
2019-01-24 21:19:16 +00:00
Hrvoje Ban
4eff8ddb8b
Fill in DocumentSymbol::detail
2019-01-24 19:05:26 +01:00
Aleksey Kladov
566c8e321e
migrate enums to new id
2019-01-24 18:56:38 +03:00
Aleksey Kladov
a00570d7a3
minor rename
2019-01-24 13:40:36 +03:00
Jeremy A. Kolb
6a6ce2bc95
Make EnumVariant a DocCommentsOwner
2019-01-23 16:23:21 -05:00
Josh Robson Chase
2ffea72f74
More correct raw ident handling
2019-01-23 13:57:17 -05:00
Josh Robson Chase
3b70acad01
Use IDENT for both raw and normal idents
2019-01-23 13:19:49 -05:00
Josh Robson Chase
1cd6d6539a
Add raw idents to lexer and parser
2019-01-23 13:17:41 -05:00
Aleksey Kladov
d4ed25d86f
introduced better typed AstPtr
2019-01-23 18:26:02 +03:00
Aleksey Kladov
7b901f86cd
move SyntaxPtr to ra_syntax
2019-01-23 17:37:10 +03:00
gfreezy
13d2fd32ab
fix completion bugs
2019-01-23 15:43:47 +08:00
Aleksey Kladov
7b28a15202
⬆️ rowan
2019-01-22 23:37:03 +03:00
Erlend Tobiassen
c550c6759d
Add test for placeholder parameters in trait fn defs
2019-01-22 18:46:15 +01:00
Erlend Tobiassen
234b65fd61
Allow placeholder parameters in trait fn defs
2019-01-22 18:33:53 +01:00
Erlend Tobiassen
84f888e93d
No need for is_type_start
2019-01-22 14:46:06 +01:00
Erlend Tobiassen
9f3d133813
Prefer TYPE_FIRST
2019-01-22 14:36:57 +01:00
Erlend Tobiassen
8198cde13b
Update tests after allowing where predicate to accept types
2019-01-22 14:32:23 +01:00
Erlend Tobiassen
2b22f5fb43
Optimistically bail out of where clause loop if not at start of a type or lifetime
2019-01-22 13:17:10 +01:00
Erlend Tobiassen
1aba42128f
Don't leave a marker hanging without completing it.
2019-01-22 01:25:00 +01:00
Erlend Tobiassen
1059ec74e2
Allow types to the left of : in where predicates.
2019-01-22 01:11:35 +01:00
Florian Diebold
5862542ded
Add AST/HIR for type args in path segments
2019-01-19 16:02:06 +01:00
Marcus Klaas de Vries
fa43ef30f4
Change parsing of struct field patterns
2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
f9a6050034
Move parsing of field pattern lists to the parser (where it belongs)
2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
d48d5b8b6c
Add initial (flawed) implementation of binding annotations
2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
ac216880f5
Implement unlabeled struct field pattern inference
2019-01-19 15:37:25 +03:00
Marcus Klaas de Vries
ab5deb7811
Create struct patterns up to the hir level
2019-01-19 15:37:25 +03:00
Marcus Klaas de Vries
afaa26636e
Add additional pattern variants
2019-01-19 15:37:25 +03:00
Aleksey Kladov
b82fe73d1a
make token set a const-fn
2019-01-19 15:36:58 +03:00
Hirokazu Hata
4729a1b054
Update ARRAY_EXPR grammar
2019-01-16 23:22:14 +09:00
bors[bot]
d75a0368f5
Merge #536
...
536: Introduce variable semicolon block expr r=matklad a=yerke
Fix for https://github.com/rust-analyzer/rust-analyzer/issues/504
Feels a bit hacky...
Co-authored-by: Yerkebulan Tulibergenov <yerkebulan@gmail.com>
2019-01-16 06:20:09 +00:00
Yerkebulan Tulibergenov
5e35f191fc
add has_semi to ExprStmt
2019-01-15 20:26:46 -08:00
Marcus Klaas de Vries
d67eabb512
Fix type inference for raw (byte) strings
2019-01-14 20:56:14 +01:00
Marcus Klaas de Vries
a9a6a50c75
Fixup tests
2019-01-14 19:30:21 +01:00
Marcus Klaas de Vries
606d66a714
Start moving literal interpretation to the AST (WIP)
2019-01-14 13:56:43 +01:00
Marcus Klaas de Vries
5f5dc20d85
Try implementing integer type inference (WIP)
2019-01-14 13:52:57 +01:00
Marcus Klaas de Vries
a6146d35b1
Implement type inference for literals (WIP)
2019-01-14 13:52:55 +01:00
Hirokazu Hata
6efda8f6ce
Update TUPLE_EXPR grammar
2019-01-13 21:04:03 +09:00
Aleksey Kladov
8e554ea5fa
support ref-patterns
2019-01-13 13:36:06 +03:00
DJMcNab
0b9e462ab0
Fix handling of attributes in positional field lists
2019-01-12 15:42:12 +00:00
Aleksey Kladov
2d3940d0ab
rename TreePtr -> TreeArc
...
This is much clearer about the semantics
2019-01-11 19:59:06 +03:00
DJMcNab
afdb569902
Fix handling of where clauses in tuple structs
2019-01-10 18:21:01 +00:00
Aleksey Kladov
921689b70d
kill text utils
2019-01-08 22:03:13 +03:00
Aleksey Kladov
f553837c1c
upstream text-utils to text_unit
2019-01-08 21:50:04 +03:00
Aleksey Kladov
0c88360eb4
add comment
2019-01-08 21:01:41 +03:00
Aleksey Kladov
702bdacb03
move node at offset to aglo already
2019-01-08 21:01:41 +03:00
Aleksey Kladov
96236a9be5
assist to convert if-let to match
2019-01-08 14:21:29 +03:00
Aleksey Kladov
fa6e0b0d38
itroduce trait for ast tokens
2019-01-08 12:23:10 +03:00
Aleksey Kladov
da0b348ae9
migrate ra_hir to rowan 2.0
2019-01-08 11:28:42 +03:00
Aleksey Kladov
fe53b28250
migrate ra_db to new rowan
2019-01-08 11:20:15 +03:00
Aleksey Kladov
b73c51ff9b
wrap TreePtr
2019-01-08 11:20:15 +03:00
Aleksey Kladov
5618c8ade1
regenerate
2019-01-08 11:20:15 +03:00
Aleksey Kladov
d91a98ec84
switch ra_syntax to new rowan API
2019-01-08 11:20:15 +03:00
Marcus Klaas de Vries
7b0eaef580
Implement type inference for more binary operators
...
Mostly just for primitive numeric types such as u32 and f64. Not
yet a general solution using trait resolution.
2019-01-07 20:11:31 +01:00
Marcus Klaas de Vries
3238c06a5a
Add remaining binary operations to AST
2019-01-07 19:04:25 +01:00
bors[bot]
31c1999505
Merge #440
...
440: Implement type inference for boolean operators r=flodiebold a=marcusklaas
Tried implementing the easiest part of https://github.com/rust-analyzer/rust-analyzer/issues/390 . Hope this is somewhat close to what the intent of the issue was. Found it surprisingly easy to find my way around the repository - it's well organized!
Very grateful for any pointers.
Co-authored-by: Marcus Klaas de Vries <mail@marcusklaas.nl>
2019-01-06 21:28:36 +00:00
Marcus Klaas de Vries
82d9a77dad
Touch up type inference for boolean operators
...
Also try to infer its subexpressions and set type expectations
whenever possible.
2019-01-06 22:17:54 +01:00
Florian Diebold
8e3e5ab2c8
Make FnScopes use hir::Expr
...
This was a bit complicated. I've added a wrapper type for now that does the
LocalSyntaxPtr <-> ExprId translation; we might want to get rid of that or give
it a nicer interface.
2019-01-06 00:29:36 +01:00
Florian Diebold
136aba1cf3
Add HIR Expr machinery
2019-01-05 22:41:12 +01:00
Marcus Klaas de Vries
4fc233a02e
Implement type inference for boolean operators
2019-01-05 21:28:30 +01:00
Aleksey Kladov
79fd6b5c88
change visibility can change pub to pub(crate)
2019-01-05 15:28:07 +03:00
Aleksey Kladov
ea3504057e
split import assist
2019-01-05 13:56:33 +03:00
Florian Diebold
bb029cd29b
Rename traits::impl_item -> impl_block as well, as well as the tests
2019-01-04 19:15:15 +01:00
Florian Diebold
111126ed3c
Type the self parameter
2019-01-04 19:10:50 +01:00
Florian Diebold
ae9530addc
Add HIR for impl blocks
...
Since we need to be able to go from def to containing impl block, as well as the
other direction, and to find all impls for a certain type, a design similar to
the one for modules, where we collect all impls for the whole crate and keep
them in an arena, seemed fitting. The ImplBlock type, which provides the public
interface, then consists only of an Arc to the arena containing all impls, and
the index into it.
2019-01-04 19:10:47 +01:00
Florian Diebold
fe6c4115f6
Rename ImplItem to ImplBlock
...
rustc uses the name ImplItem for items in impls, not the impl {} block itself,
which could lead to confusion.
2019-01-04 18:28:36 +01:00
csmoe
a0ef196d04
add mod doc comments test in ast
2019-01-04 21:51:45 +08:00
csmoe
f604ff5b2f
parse doc comment for items
2019-01-04 21:29:00 +08:00
bors[bot]
6295bbe6ec
Merge #391
...
391: docing parser methods r=csmoe a=csmoe
Co-authored-by: csmoe <csmoe@msn.com>
2019-01-04 04:36:40 +00:00
csmoe
58139c558a
consume trivias for type/const def
2019-01-04 12:22:57 +08:00
csmoe
df591a1e48
doc parsing events
2019-01-04 12:21:47 +08:00
Aleksey Kladov
a4635a199b
more enterprisey assists API
2019-01-03 18:59:17 +03:00
Aleksey Kladov
0a80d9685a
visibility owner
2019-01-03 15:21:31 +03:00
Aleksey Kladov
756e878158
add items from macros to modules
2019-01-01 22:15:35 +03:00
Aleksey Kladov
7dc45745a3
save top-level macros in module items
2019-01-01 22:15:35 +03:00
DJMcNab
0ddeb3b824
Fix the same bug as #396 but for bytes too
2019-01-01 12:10:21 +00:00
DJMcNab
0fd87cbc47
Use an else if
2019-01-01 11:10:08 +00:00
csmoe
b01e707dba
doc parser input
2019-01-01 16:09:32 +08:00
DJMcNab
72ab6f7727
Fix the panic
found whilst fuzzing
2018-12-31 23:02:04 +00:00
csmoe
ea7b569e1b
docing parser methods
2018-12-31 21:00:05 +08:00
bors[bot]
c0d1b17a4e
Merge #366
...
366: parse minus before number literal pattern r=matklad a=csmoe
r?@matklad
![unknown](https://user-images.githubusercontent.com/35686186/50547871-d5449e00-0c7d-11e9-9ff5-1031e78019de.png )
Co-authored-by: csmoe <csmoe@msn.com>
2018-12-30 16:40:16 +00:00
csmoe
53c94e3ad8
parse minus before number literal
2018-12-30 23:25:07 +08:00
DJMcNab
054f22f231
Fix a fuzzing bug and add Cargo.lock to the fuzzing directory
2018-12-29 12:40:08 +00:00
Aleksey Kladov
406505e096
super simplistic macro expansion
2018-12-28 16:59:58 +03:00
Aleksey Kladov
072028e679
add macro-call node
2018-12-28 13:27:30 +03:00
Aleksey Kladov
49b0fe20ab
fix suffix ranges
2018-12-27 15:10:30 +03:00
Aleksey Kladov
a912b261d3
dump validation errors
2018-12-27 15:07:51 +03:00
Aleksey Kladov
359e70d1b2
support literal suffixes
2018-12-27 15:03:18 +03:00
Aleksey Kladov
73ded3c63c
dedupe literal parsers
2018-12-27 14:42:46 +03:00
Florian Diebold
cdca397061
Add a hir::TypeRef as an intermediate between ast::TypeRef and ty::Ty
2018-12-25 21:14:13 +01:00
Florian Diebold
2870effd5c
Implement reference / pointer types
...
- parse them
- infer types of & and * expressions
2018-12-25 20:36:06 +01:00
Florian Diebold
ab0b63992b
Implement basic completion for fields
2018-12-25 15:27:15 +01:00
Florian Diebold
0d724ea572
Improve parsing of incomplete field accesses in preparation for field completion
...
We need to be able to get the receiver even if there is no field name yet, and
currently "a." wouldn't get parsed as a field name at all. This seems to help.
2018-12-25 15:16:42 +01:00
Florian Diebold
55c941cd9f
Type field accesses
2018-12-25 15:16:42 +01:00
Florian Diebold
4cb7b0f2af
Add AST definitions for struct/variant fields etc.
...
Fixes #117
2018-12-25 15:16:42 +01:00
Florian Diebold
6fcd38cc81
Infer result of struct literals, and recurse into their child expressions
2018-12-25 15:16:42 +01:00
Florian Diebold
ef67581104
Resolve paths to defs (functions currently) during type inference
2018-12-23 17:13:11 +01:00
Florian Diebold
93ffbf80c6
Make let statements kind of work
2018-12-23 14:01:50 +01:00
Florian Diebold
3899898d75
Parse integer / float types
2018-12-23 13:48:04 +01:00
Florian Diebold
3ac605e687
Add beginnings of type infrastructure
2018-12-23 13:48:04 +01:00
bors[bot]
e4d0930d9c
Merge #316
...
316: Fix handling of nested self in paths r=matklad a=DJMcNab
See https://github.com/rust-analyzer/rust-analyzer/issues/231#issuecomment-442449505 .
Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-21 23:19:14 +00:00
DJMcNab
4dbf71d332
Remove uneeded todo in lexer
2018-12-21 22:41:09 +00:00
DJMcNab
d8d60215da
Fix handling of nested self in paths
2018-12-21 22:29:59 +00:00
DJMcNab
bd5a358910
Fix where clauses using fully qualified path syntax
2018-12-21 17:20:38 +00:00
Aleksey Kladov
a5987bd715
show debug repr of literals
2018-12-21 18:49:52 +03:00
DJMcNab
55ebe449c9
Fix parsing of contextual_keyword union
2018-12-20 19:46:03 +00:00
DJMcNab
1d1950336f
Use a better way of skipping SEMIs
2018-12-20 19:07:11 +00:00
DJMcNab
dc1c64f5b9
Support a blank expression before a semicolon
2018-12-20 19:07:11 +00:00
DJMcNab
134fe4f566
Fix the tests and fix the precommit hook
2018-12-20 16:45:54 +00:00
DJMcNab
466885aa5b
Fix missing DOTDOTEQs
2018-12-20 16:22:13 +00:00
DJMcNab
f35151afed
Don't require a command before EQ in a where clause
2018-12-20 15:50:42 +00:00
DJMcNab
27e814e182
Simplify NO_BLOCK testing
2018-12-20 12:28:59 +00:00
DJMcNab
5205c016e9
Fix ambiguity with if break
...
Brought up by #290
2018-12-20 11:35:02 +00:00
DJMcNab
a3b842fb8b
Add tests and only traverse in the crates directory
2018-12-19 21:19:32 +00:00
DJMcNab
db67741430
Move is_block to lower in the call tree
2018-12-19 20:55:24 +00:00
DJMcNab
def0a95d35
Revert "Revert to f6f7c5"
...
This approach is correct, but it needs an addition to Restrictions too
This reverts commit ad00d0c8a5f64142e6636e8b048204c8f8982f4a.
2018-12-19 20:12:18 +00:00
DJMcNab
4dce66ad31
Fix handling of structs in match arms
2018-12-19 20:12:18 +00:00
DJMcNab
cd8e33fb7e
Revert to f6f7c5
2018-12-19 20:12:18 +00:00
DJMcNab
7a8560ba38
Fix expression parsing by bailing out upon a macro block being found
...
TODO: Fix this when the block like macro is in expression position
E.g. `test(test!{})` currently parses
2018-12-19 20:12:18 +00:00
DJMcNab
97e70bf50f
Possibly fix #225
2018-12-19 20:12:18 +00:00
DJMcNab
29bf389034
Actually fix at_ts doc comment (committed wrong file :P)
2018-12-19 20:12:18 +00:00
DJMcNab
012537bd6c
Fix at_ts doc comment
2018-12-19 20:12:18 +00:00
DJMcNab
20bbe0127c
Fix parsing of inclusive ranges ( #214 )
...
I'm not certain that this is correct, so extra eyes would be good
2018-12-19 20:12:18 +00:00
Roland Ruckerbauer
d0f1334226
Fixed cast expression parsing in ra_syntax.
...
The cast expression expected any type via types::type_() function,
but the language spec does only allow TypeNoBounds (types without direct extra bounds
via `+`).
**Example:**
```rust
fn test() {
6i8 as i32 + 5;
}
```
This fails, because the types::type_() function which should parse the type after the
as keyword is greedy, and takes all plus sign after path types as extra.
My proposed fix is to replace the not implemented `type_no_plus()` just calls (`type_()`)
function, which is used at several places. The replacement is `type_with_bounds_cond(p: &mut Parser, allow_bounds: bool)`, which passes the condition to relevant sub-parsers.
This function is then called by `type_()` and the new public `type_no_bounds()`.
2018-12-17 17:26:24 +01:00
Bernardo
0527e3b283
rename Edit to TextEdit and AtomEdit to AtomTextEdit
2018-12-11 19:07:17 +01:00
Bernardo
7344d28768
extract AtomEdit and Edit into new ra_text_edit crate
2018-12-10 22:09:12 +01:00
Aleksey Kladov
4cbc902fcc
grand module rename
2018-12-08 19:30:35 +03:00
DJMcNab
f88e0700e6
Add a better text for hover and stop duplicating work done in approximatelly_resolve_symbol
2018-12-08 19:28:10 +03:00
DJMcNab
89cf7d8743
Clarify and correct comment about multi_byte_tokens
2018-12-08 19:28:10 +03:00
Florian Diebold
1dfd06fc8a
Use json comparison code from cargo for heavy tests
2018-12-06 21:32:15 +01:00
Aleksey Kladov
28ddecf6c9
modernize even more
2018-12-06 21:16:37 +03:00
Aleksey Kladov
1761a7d213
modernize some files
2018-12-06 20:49:36 +03:00
bors[bot]
25cf2349ab
Merge #256
...
256: Improve/add use_item documentation r=matklad a=DJMcNab
Adds some documentation to use_item explaining all code paths (use imports are hard, especially with the ongoing discussion of anchored v. uniform paths - see https://github.com/rust-lang/rust/issues/55618 for what appears to be the latest developments)
Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-06 17:30:36 +00:00
DJMcNab
5da245ec33
Fix a copy and pasting typo
2018-12-05 21:46:43 +00:00
DJMcNab
0a82d768c4
Improve/add the use_item documentation
2018-12-05 21:43:40 +00:00
Aleksey Kladov
ebc4e75253
switch back to the latest beta
2018-11-24 21:52:49 +03:00
Aleksey Kladov
edeec6a414
Complete paths after ::
2018-11-21 18:34:20 +03:00
Aleksey Kladov
bcdcfa9df2
Some import resolution boilerplate
2018-11-20 19:24:58 +03:00
Adolfo Ochagavía
c96bfe7e2d
Split string lexing and run rustfmt
2018-11-11 21:00:31 +01:00
Adolfo Ochagavía
30cd4d5acb
Validate byte string literals
2018-11-11 20:41:43 +01:00
Adolfo Ochagavía
c258b4fdb0
Add validator for byte
2018-11-11 20:27:00 +01:00
Adolfo Ochagavía
3b4c02c19e
Validate string literals
2018-11-09 14:52:17 +01:00
Aleksey Kladov
6d253b58da
Complete paths in use trees
2018-11-07 21:38:41 +03:00
Aleksey Kladov
2ed1514df3
rename ROOT -> SOURCE_FILE
2018-11-07 18:42:36 +03:00
Aleksey Kladov
f8b36bbc3b
Rename File -> SourceFileNode
2018-11-07 18:42:36 +03:00
Jeremy A. Kolb
6df71da81f
Add some more DocCommentsOwner
2018-11-07 18:24:55 +03:00
bors[bot]
2e2445444a
Merge #207
...
207: Finish implementing char validation r=aochagavia a=aochagavia
The only thing missing right now are good integration tests (and maybe more descriptive error messages)
Co-authored-by: Adolfo Ochagavía <github@adolfo.ochagavia.xyz>
2018-11-07 11:09:40 +00:00
Adolfo Ochagavía
433a806191
Fix backslash escape
2018-11-07 12:04:26 +01:00
Adolfo Ochagavía
3b2ba59526
Use ArrayString instead of hand rolled data structure
2018-11-07 11:58:34 +01:00
Adolfo Ochagavía
e37ba706cc
cargo format
2018-11-07 11:41:42 +01:00
Adolfo Ochagavía
94796e6447
Add lots of tests
2018-11-07 11:35:33 +01:00
Adolfo Ochagavía
fdb9f06880
Store hex digits in a stack-allocated buffer
2018-11-07 10:40:58 +01:00
Aleksey Kladov
8eaf7952ae
ra_syntax::File is just RootNode
2018-11-06 23:26:26 +03:00
Aleksey Kladov
7f88fe8790
Add a pinch of comments
2018-11-06 22:06:58 +03:00
Aleksey Kladov
a5301e94d5
Generalize Owned nodes
2018-11-06 21:52:00 +03:00
Aleksey Kladov
ec131b6c7b
grammar: fix where clause parsing
...
closes #205
2018-11-06 21:19:32 +03:00
Aleksey Kladov
dafe747dcc
upstream basic tree algorithms to rowan
2018-11-06 20:56:32 +03:00
Adolfo Ochagavía
c56db92d1f
Finish implementing char validation
2018-11-06 17:07:27 +01:00
bors[bot]
f605f6e70a
Merge #188
...
188: Introduce `SyntaxErrorKind` and `TextRange` to `SyntaxError` r=matklad a=aochagavia
Co-authored-by: Adolfo Ochagavía <aochagavia92@gmail.com>
Co-authored-by: Adolfo Ochagavía <github@adolfo.ochagavia.xyz>
2018-11-05 21:32:25 +00:00
Adolfo Ochagavía
59405bfe4a
cargo format
2018-11-05 22:29:33 +01:00