aboutsummaryrefslogtreecommitdiff
path: root/crates
diff options
context:
space:
mode:
Diffstat (limited to 'crates')
-rw-r--r--crates/ra_parser/src/grammar.rs4
-rw-r--r--crates/ra_parser/src/grammar/items/use_item.rs1
-rw-r--r--crates/ra_parser/src/grammar/params.rs3
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.rs1
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.txt17
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs2
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt35
7 files changed, 49 insertions, 14 deletions
diff --git a/crates/ra_parser/src/grammar.rs b/crates/ra_parser/src/grammar.rs
index f94702e97..c9941fe93 100644
--- a/crates/ra_parser/src/grammar.rs
+++ b/crates/ra_parser/src/grammar.rs
@@ -129,7 +129,9 @@ fn opt_alias(p: &mut Parser) {
129 if p.at(AS_KW) { 129 if p.at(AS_KW) {
130 let m = p.start(); 130 let m = p.start();
131 p.bump(); 131 p.bump();
132 name(p); 132 if !p.eat(UNDERSCORE) {
133 name(p);
134 }
133 m.complete(p, ALIAS); 135 m.complete(p, ALIAS);
134 } 136 }
135} 137}
diff --git a/crates/ra_parser/src/grammar/items/use_item.rs b/crates/ra_parser/src/grammar/items/use_item.rs
index 5111d37eb..b36612726 100644
--- a/crates/ra_parser/src/grammar/items/use_item.rs
+++ b/crates/ra_parser/src/grammar/items/use_item.rs
@@ -76,6 +76,7 @@ fn use_tree(p: &mut Parser) {
76 // yet::another::path, 76 // yet::another::path,
77 // running::out::of::synonyms::for_::different::* 77 // running::out::of::synonyms::for_::different::*
78 // }; 78 // };
79 // use Trait as _;
79 opt_alias(p); 80 opt_alias(p);
80 } 81 }
81 COLONCOLON => { 82 COLONCOLON => {
diff --git a/crates/ra_parser/src/grammar/params.rs b/crates/ra_parser/src/grammar/params.rs
index a70f067f9..d027578b6 100644
--- a/crates/ra_parser/src/grammar/params.rs
+++ b/crates/ra_parser/src/grammar/params.rs
@@ -83,9 +83,10 @@ fn value_parameter(p: &mut Parser, flavor: Flavor) {
83 83
84 // test trait_fn_placeholder_parameter 84 // test trait_fn_placeholder_parameter
85 // trait Foo { 85 // trait Foo {
86 // fn bar(_: u64); 86 // fn bar(_: u64, mut x: i32);
87 // } 87 // }
88 if (la0 == IDENT || la0 == UNDERSCORE) && la1 == COLON 88 if (la0 == IDENT || la0 == UNDERSCORE) && la1 == COLON
89 || la0 == MUT_KW && la1 == IDENT && la2 == COLON
89 || la0 == AMP && la1 == IDENT && la2 == COLON 90 || la0 == AMP && la1 == IDENT && la2 == COLON
90 || la0 == AMP && la1 == MUT_KW && la2 == IDENT && la3 == COLON 91 || la0 == AMP && la1 == MUT_KW && la2 == IDENT && la3 == COLON
91 { 92 {
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.rs
index 544caa020..9be50f877 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.rs
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.rs
@@ -5,3 +5,4 @@ use some::{
5 yet::another::path, 5 yet::another::path,
6 running::out::of::synonyms::for_::different::* 6 running::out::of::synonyms::for_::different::*
7}; 7};
8use Trait as _;
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.txt
index 8ef0ecbc6..0c8dec81d 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.txt
@@ -1,4 +1,4 @@
1SOURCE_FILE@[0; 182) 1SOURCE_FILE@[0; 198)
2 USE_ITEM@[0; 28) 2 USE_ITEM@[0; 28)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3)
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4)
@@ -121,3 +121,18 @@ SOURCE_FILE@[0; 182)
121 R_CURLY@[179; 180) 121 R_CURLY@[179; 180)
122 SEMI@[180; 181) 122 SEMI@[180; 181)
123 WHITESPACE@[181; 182) 123 WHITESPACE@[181; 182)
124 USE_ITEM@[182; 197)
125 USE_KW@[182; 185)
126 WHITESPACE@[185; 186)
127 USE_TREE@[186; 196)
128 PATH@[186; 191)
129 PATH_SEGMENT@[186; 191)
130 NAME_REF@[186; 191)
131 IDENT@[186; 191) "Trait"
132 WHITESPACE@[191; 192)
133 ALIAS@[192; 196)
134 AS_KW@[192; 194)
135 WHITESPACE@[194; 195)
136 UNDERSCORE@[195; 196)
137 SEMI@[196; 197)
138 WHITESPACE@[197; 198)
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs
index aede3f4fe..472cb8803 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs
@@ -1,3 +1,3 @@
1trait Foo { 1trait Foo {
2 fn bar(_: u64); 2 fn bar(_: u64, mut x: i32);
3} 3}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt
index 248d491df..00217aef1 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt
@@ -1,19 +1,19 @@
1SOURCE_FILE@[0; 34) 1SOURCE_FILE@[0; 46)
2 TRAIT_DEF@[0; 33) 2 TRAIT_DEF@[0; 45)
3 TRAIT_KW@[0; 5) 3 TRAIT_KW@[0; 5)
4 WHITESPACE@[5; 6) 4 WHITESPACE@[5; 6)
5 NAME@[6; 9) 5 NAME@[6; 9)
6 IDENT@[6; 9) "Foo" 6 IDENT@[6; 9) "Foo"
7 WHITESPACE@[9; 10) 7 WHITESPACE@[9; 10)
8 ITEM_LIST@[10; 33) 8 ITEM_LIST@[10; 45)
9 L_CURLY@[10; 11) 9 L_CURLY@[10; 11)
10 WHITESPACE@[11; 16) 10 WHITESPACE@[11; 16)
11 FN_DEF@[16; 31) 11 FN_DEF@[16; 43)
12 FN_KW@[16; 18) 12 FN_KW@[16; 18)
13 WHITESPACE@[18; 19) 13 WHITESPACE@[18; 19)
14 NAME@[19; 22) 14 NAME@[19; 22)
15 IDENT@[19; 22) "bar" 15 IDENT@[19; 22) "bar"
16 PARAM_LIST@[22; 30) 16 PARAM_LIST@[22; 42)
17 L_PAREN@[22; 23) 17 L_PAREN@[22; 23)
18 PARAM@[23; 29) 18 PARAM@[23; 29)
19 PLACEHOLDER_PAT@[23; 24) 19 PLACEHOLDER_PAT@[23; 24)
@@ -25,8 +25,23 @@ SOURCE_FILE@[0; 34)
25 PATH_SEGMENT@[26; 29) 25 PATH_SEGMENT@[26; 29)
26 NAME_REF@[26; 29) 26 NAME_REF@[26; 29)
27 IDENT@[26; 29) "u64" 27 IDENT@[26; 29) "u64"
28 R_PAREN@[29; 30) 28 COMMA@[29; 30)
29 SEMI@[30; 31) 29 WHITESPACE@[30; 31)
30 WHITESPACE@[31; 32) 30 PARAM@[31; 41)
31 R_CURLY@[32; 33) 31 BIND_PAT@[31; 36)
32 WHITESPACE@[33; 34) 32 MUT_KW@[31; 34)
33 WHITESPACE@[34; 35)
34 NAME@[35; 36)
35 IDENT@[35; 36) "x"
36 COLON@[36; 37)
37 WHITESPACE@[37; 38)
38 PATH_TYPE@[38; 41)
39 PATH@[38; 41)
40 PATH_SEGMENT@[38; 41)
41 NAME_REF@[38; 41)
42 IDENT@[38; 41) "i32"
43 R_PAREN@[41; 42)
44 SEMI@[42; 43)
45 WHITESPACE@[43; 44)
46 R_CURLY@[44; 45)
47 WHITESPACE@[45; 46)