diff options
author | Aleksey Kladov <[email protected]> | 2019-09-20 14:23:24 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-09-20 14:23:24 +0100 |
commit | 0f70290b6ee4cd0c8dbca90f78c9c121ef71c126 (patch) | |
tree | 4ae08d7c9e1036eb154147b854bd001a1a8247e5 /crates | |
parent | 44bab3621d74f1aec922300a3b3f4476907ba2ac (diff) |
don't confuse macro with !=
closes #1871
Diffstat (limited to 'crates')
-rw-r--r-- | crates/ra_parser/src/grammar/types.rs | 2 | ||||
-rw-r--r-- | crates/ra_syntax/test_data/parser/ok/0056_neq_in_type.rs | 3 | ||||
-rw-r--r-- | crates/ra_syntax/test_data/parser/ok/0056_neq_in_type.txt | 66 |
3 files changed, 70 insertions, 1 deletions
diff --git a/crates/ra_parser/src/grammar/types.rs b/crates/ra_parser/src/grammar/types.rs index 0eb28ef09..a5a5b6d73 100644 --- a/crates/ra_parser/src/grammar/types.rs +++ b/crates/ra_parser/src/grammar/types.rs | |||
@@ -256,7 +256,7 @@ fn path_or_macro_type_(p: &mut Parser, allow_bounds: bool) { | |||
256 | let m = p.start(); | 256 | let m = p.start(); |
257 | paths::type_path(p); | 257 | paths::type_path(p); |
258 | 258 | ||
259 | let kind = if p.at(T![!]) { | 259 | let kind = if p.at(T![!]) && !p.at(T![!=]) { |
260 | items::macro_call_after_excl(p); | 260 | items::macro_call_after_excl(p); |
261 | MACRO_CALL | 261 | MACRO_CALL |
262 | } else { | 262 | } else { |
diff --git a/crates/ra_syntax/test_data/parser/ok/0056_neq_in_type.rs b/crates/ra_syntax/test_data/parser/ok/0056_neq_in_type.rs new file mode 100644 index 000000000..6210683ce --- /dev/null +++ b/crates/ra_syntax/test_data/parser/ok/0056_neq_in_type.rs | |||
@@ -0,0 +1,3 @@ | |||
1 | fn main() { | ||
2 | if 1.0f32.floor() as i64 != 1.0f32.floor() as i64 {} | ||
3 | } | ||
diff --git a/crates/ra_syntax/test_data/parser/ok/0056_neq_in_type.txt b/crates/ra_syntax/test_data/parser/ok/0056_neq_in_type.txt new file mode 100644 index 000000000..4a4ad84ca --- /dev/null +++ b/crates/ra_syntax/test_data/parser/ok/0056_neq_in_type.txt | |||
@@ -0,0 +1,66 @@ | |||
1 | SOURCE_FILE@[0; 71) | ||
2 | FN_DEF@[0; 70) | ||
3 | FN_KW@[0; 2) "fn" | ||
4 | WHITESPACE@[2; 3) " " | ||
5 | NAME@[3; 7) | ||
6 | IDENT@[3; 7) "main" | ||
7 | PARAM_LIST@[7; 9) | ||
8 | L_PAREN@[7; 8) "(" | ||
9 | R_PAREN@[8; 9) ")" | ||
10 | WHITESPACE@[9; 10) " " | ||
11 | BLOCK_EXPR@[10; 70) | ||
12 | BLOCK@[10; 70) | ||
13 | L_CURLY@[10; 11) "{" | ||
14 | WHITESPACE@[11; 16) "\n " | ||
15 | IF_EXPR@[16; 68) | ||
16 | IF_KW@[16; 18) "if" | ||
17 | WHITESPACE@[18; 19) " " | ||
18 | CONDITION@[19; 65) | ||
19 | BIN_EXPR@[19; 65) | ||
20 | CAST_EXPR@[19; 40) | ||
21 | METHOD_CALL_EXPR@[19; 33) | ||
22 | LITERAL@[19; 25) | ||
23 | FLOAT_NUMBER@[19; 25) "1.0f32" | ||
24 | DOT@[25; 26) "." | ||
25 | NAME_REF@[26; 31) | ||
26 | IDENT@[26; 31) "floor" | ||
27 | ARG_LIST@[31; 33) | ||
28 | L_PAREN@[31; 32) "(" | ||
29 | R_PAREN@[32; 33) ")" | ||
30 | WHITESPACE@[33; 34) " " | ||
31 | AS_KW@[34; 36) "as" | ||
32 | WHITESPACE@[36; 37) " " | ||
33 | PATH_TYPE@[37; 40) | ||
34 | PATH@[37; 40) | ||
35 | PATH_SEGMENT@[37; 40) | ||
36 | NAME_REF@[37; 40) | ||
37 | IDENT@[37; 40) "i64" | ||
38 | WHITESPACE@[40; 41) " " | ||
39 | NEQ@[41; 43) "!=" | ||
40 | WHITESPACE@[43; 44) " " | ||
41 | CAST_EXPR@[44; 65) | ||
42 | METHOD_CALL_EXPR@[44; 58) | ||
43 | LITERAL@[44; 50) | ||
44 | FLOAT_NUMBER@[44; 50) "1.0f32" | ||
45 | DOT@[50; 51) "." | ||
46 | NAME_REF@[51; 56) | ||
47 | IDENT@[51; 56) "floor" | ||
48 | ARG_LIST@[56; 58) | ||
49 | L_PAREN@[56; 57) "(" | ||
50 | R_PAREN@[57; 58) ")" | ||
51 | WHITESPACE@[58; 59) " " | ||
52 | AS_KW@[59; 61) "as" | ||
53 | WHITESPACE@[61; 62) " " | ||
54 | PATH_TYPE@[62; 65) | ||
55 | PATH@[62; 65) | ||
56 | PATH_SEGMENT@[62; 65) | ||
57 | NAME_REF@[62; 65) | ||
58 | IDENT@[62; 65) "i64" | ||
59 | WHITESPACE@[65; 66) " " | ||
60 | BLOCK_EXPR@[66; 68) | ||
61 | BLOCK@[66; 68) | ||
62 | L_CURLY@[66; 67) "{" | ||
63 | R_CURLY@[67; 68) "}" | ||
64 | WHITESPACE@[68; 69) "\n" | ||
65 | R_CURLY@[69; 70) "}" | ||
66 | WHITESPACE@[70; 71) "\n" | ||