Add async keyword

This commit is contained in:
Caio 2019-03-09 20:40:22 -03:00
parent a9d09b7ec0
commit ad72699553
8 changed files with 40 additions and 3 deletions

View file

@ -93,6 +93,11 @@ pub(super) fn atom_expr(p: &mut Parser, r: Restrictions) -> Option<(CompletedMar
}
}
ASYNC_KW if la == L_CURLY => {
let m = p.start();
p.bump();
block_expr(p, Some(m))
}
MATCH_KW => match_expr(p),
UNSAFE_KW if la == L_CURLY => {
let m = p.start();

View file

@ -86,9 +86,14 @@ pub(super) fn maybe_item(p: &mut Parser, flavor: ItemFlavor) -> MaybeItem {
}
let mut has_mods = false;
// modifiers
has_mods |= p.eat(CONST_KW);
// modifiers
has_mods |= p.eat(CONST_KW);
if p.at(ASYNC_KW) && p.nth(1) != L_CURLY {
p.eat(ASYNC_KW);
has_mods = true;
}
// test_err unsafe_block_in_mod
// fn foo(){} unsafe { } fn bar(){}
if p.at(UNSAFE_KW) && p.nth(1) != L_CURLY {
@ -110,6 +115,9 @@ pub(super) fn maybe_item(p: &mut Parser, flavor: ItemFlavor) -> MaybeItem {
// items
let kind = match p.current() {
// test async_fn
// async fn foo() {}
// test extern_fn
// extern fn foo() {}

View file

@ -66,6 +66,7 @@ pub enum SyntaxKind {
SHR,
SHLEQ,
SHREQ,
ASYNC_KW,
USE_KW,
FN_KW,
STRUCT_KW,
@ -233,6 +234,7 @@ use self::SyntaxKind::*;
impl SyntaxKind {
pub fn is_keyword(self) -> bool {
match self {
| ASYNC_KW
| USE_KW
| FN_KW
| STRUCT_KW
@ -403,6 +405,7 @@ impl SyntaxKind {
SHR => &SyntaxInfo { name: "SHR" },
SHLEQ => &SyntaxInfo { name: "SHLEQ" },
SHREQ => &SyntaxInfo { name: "SHREQ" },
ASYNC_KW => &SyntaxInfo { name: "ASYNC_KW" },
USE_KW => &SyntaxInfo { name: "USE_KW" },
FN_KW => &SyntaxInfo { name: "FN_KW" },
STRUCT_KW => &SyntaxInfo { name: "STRUCT_KW" },
@ -570,6 +573,7 @@ impl SyntaxKind {
}
pub fn from_keyword(ident: &str) -> Option<SyntaxKind> {
let kw = match ident {
"async" => ASYNC_KW,
"use" => USE_KW,
"fn" => FN_KW,
"struct" => STRUCT_KW,