Edwin Cheng
b454eb5a60
Add macro pat parsing
2019-04-30 23:22:48 +08:00
Edwin Cheng
d436ab0581
Refactor parser handle mult-char punct internally
2019-04-28 23:46:03 +08:00
Edwin Cheng
6c913d8fa7
Add ...
parsing for fn pointer type
2019-04-23 11:10:41 +08:00
robojumper
ca40ca93a5
Parse and infer tuple indices
2019-04-06 01:07:35 +02:00
robojumper
636270f4a4
Parse unsafe async / const unsafe fns properly
2019-04-03 17:11:56 +02:00
Aleksey Kladov
7d6bd5d137
always show token text
2019-04-02 14:49:46 +03:00
robojumper
d43dff43b4
Async closure syntax
2019-03-31 16:35:22 +02:00
Ville Penttinen
3f62ab8f51
Add WherePred to allow predicate access in WhereClause
...
This also unifies parsing of WHERE_PRED bounds, now Lifetime bounds will also be
parsed using TYPE_BOUND_LIST
2019-03-31 13:20:56 +03:00
Ville Penttinen
245c0d8584
Update tests
2019-03-31 10:39:23 +03:00
Ville Penttinen
bfc2ac90c8
Update tests
2019-03-30 17:11:46 +02:00
Ville Penttinen
444a119220
Fix parsing <= in type_args
2019-03-30 13:52:47 +02:00
Ville Penttinen
95505e80fc
Support references in higher-ranked trait bounds
...
Fixes #1020
2019-03-24 20:51:55 +02:00
pcpthm
2fb110e1fa
Error about attributes on
...
unallowed types of expression statement
2019-03-19 17:37:08 +09:00
pcpthm
ffed132e52
Allow attributes on top level expression
...
A top level expression is either
- a expression statement or
- the last expression in a block
2019-03-19 17:24:02 +09:00
bors[bot]
1cd18f9237
Merge #991
...
991: Use Marker argument for item parsers r=matklad a=pcpthm
Before doing this for expressions, I found that the pattern (Marker argument) should be applied to the item parsers because visiblity and modifiers are parsed in a separate function.
Fixed some parser bugs:
- Fix pub_expr: `pub 42;` was allowed.
- Fix incorrect parsing of crate::path: incorrectly parsed as `crate` as a visibility.
Co-authored-by: pcpthm <pcpthm@gmail.com>
2019-03-18 09:32:28 +00:00
pcpthm
76075c7410
Use Marker argument for item parsers
...
- Fix pub_expr
- Fix incorrect parsing of crate::path
2019-03-18 14:34:08 +09:00
pcpthm
a67fe4ea7e
Fix parse tree of attribute on match arm
2019-03-17 20:57:27 +09:00
pcpthm
a1d84f5fb0
Allow attribute on struct literal field
2019-03-17 19:08:35 +09:00
Caio
cc9721996c
Add test for async block
2019-03-10 14:35:25 -03:00
Caio
ad72699553
Add async keyword
2019-03-09 20:40:22 -03:00
Ville Penttinen
1f4468a8da
Add support for parsing multiple if and while-let patterns
2019-03-04 19:10:14 +02:00
Aleksey Kladov
90122542b2
allow mut ident
patterns in trait methods
...
closes #928
2019-03-04 17:47:02 +03:00
Aleksey Kladov
0a19f4f1b4
allow aliases in underscores
...
this helps with
use foo::Trait as _;
syntax
2019-03-04 16:40:08 +03:00
Aleksey Kladov
a99b1db49f
allow vararg functions
2019-03-04 14:34:59 +03:00
Aleksey Kladov
78f10fcdc4
rename type to type_alias in the AST as well
2019-02-25 13:49:32 +03:00
Ville Penttinen
58d14bcaf7
Enable parsing attributes for generic lifetimes and type parameters
2019-02-17 23:32:10 +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
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
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
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
73b075c556
Correctly parse inner attributes of impl blocks
2019-01-27 14:55:03 +00: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
DJMcNab
4899e7be76
Support universal function call syntax in function calls
2019-01-24 21:19:16 +00:00
Erlend Tobiassen
c550c6759d
Add test for placeholder parameters in trait fn defs
2019-01-22 18:46:15 +01:00
Erlend Tobiassen
8198cde13b
Update tests after allowing where predicate to accept types
2019-01-22 14:32:23 +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
bcbfa2cc11
Finish move of StructField for pattern type inference
2019-01-19 15:37:26 +03:00
DJMcNab
0b9e462ab0
Fix handling of attributes in positional field lists
2019-01-12 15:42:12 +00:00
DJMcNab
afdb569902
Fix handling of where clauses in tuple structs
2019-01-10 18:21:01 +00: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
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
53c94e3ad8
parse minus before number literal
2018-12-30 23:25:07 +08:00
DJMcNab
bd5a358910
Fix where clauses using fully qualified path syntax
2018-12-21 17:20:38 +00:00
DJMcNab
a349db7178
Run gen-tests
2018-12-20 19:10:37 +00:00
DJMcNab
134fe4f566
Fix the tests and fix the precommit hook
2018-12-20 16:45:54 +00:00
DJMcNab
5205c016e9
Fix ambiguity with if break
...
Brought up by #290
2018-12-20 11:35:02 +00:00