diff options
author | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-02-20 13:50:29 +0000 |
---|---|---|
committer | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-02-20 13:50:29 +0000 |
commit | 96899f8278b787280bd07d9ac9dce29a610ce40d (patch) | |
tree | d02a22f02908fd3c89e50845a06a89b997220fc2 | |
parent | 5b617e3bf8252887a3eb1ce76d4b62cbee74e551 (diff) | |
parent | 86a67dce25f11ba9803a5727f77c02fd1f49e2c0 (diff) |
Merge #861
861: Move parsing to a separate module r=matklad a=matklad
Co-authored-by: Aleksey Kladov <[email protected]>
-rw-r--r-- | crates/ra_syntax/src/lib.rs | 33 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing.rs | 25 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/builder.rs (renamed from crates/ra_syntax/src/syntax_node/builder.rs) | 7 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/grammar.rs (renamed from crates/ra_syntax/src/grammar.rs) | 40 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/grammar/attributes.rs (renamed from crates/ra_syntax/src/grammar/attributes.rs) | 0 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/grammar/expressions.rs (renamed from crates/ra_syntax/src/grammar/expressions.rs) | 4 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/grammar/expressions/atom.rs (renamed from crates/ra_syntax/src/grammar/expressions/atom.rs) | 0 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/grammar/items.rs (renamed from crates/ra_syntax/src/grammar/items.rs) | 0 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/grammar/items/consts.rs (renamed from crates/ra_syntax/src/grammar/items/consts.rs) | 0 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/grammar/items/nominal.rs (renamed from crates/ra_syntax/src/grammar/items/nominal.rs) | 0 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/grammar/items/traits.rs (renamed from crates/ra_syntax/src/grammar/items/traits.rs) | 0 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/grammar/items/use_item.rs (renamed from crates/ra_syntax/src/grammar/items/use_item.rs) | 0 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/grammar/params.rs (renamed from crates/ra_syntax/src/grammar/params.rs) | 0 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/grammar/paths.rs (renamed from crates/ra_syntax/src/grammar/paths.rs) | 0 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/grammar/patterns.rs (renamed from crates/ra_syntax/src/grammar/patterns.rs) | 0 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/grammar/type_args.rs (renamed from crates/ra_syntax/src/grammar/type_args.rs) | 0 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/grammar/type_params.rs (renamed from crates/ra_syntax/src/grammar/type_params.rs) | 0 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/grammar/types.rs (renamed from crates/ra_syntax/src/grammar/types.rs) | 0 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/lexer.rs (renamed from crates/ra_syntax/src/lexer.rs) | 0 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/lexer/classes.rs (renamed from crates/ra_syntax/src/lexer/classes.rs) | 0 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/lexer/comments.rs (renamed from crates/ra_syntax/src/lexer/comments.rs) | 2 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/lexer/numbers.rs (renamed from crates/ra_syntax/src/lexer/numbers.rs) | 6 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/lexer/ptr.rs (renamed from crates/ra_syntax/src/lexer/ptr.rs) | 0 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/lexer/strings.rs (renamed from crates/ra_syntax/src/lexer/strings.rs) | 7 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/parser_api.rs (renamed from crates/ra_syntax/src/parser_api.rs) | 30 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/parser_impl.rs (renamed from crates/ra_syntax/src/parser_impl.rs) | 31 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/parser_impl/event.rs (renamed from crates/ra_syntax/src/parser_impl/event.rs) | 11 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/parser_impl/input.rs (renamed from crates/ra_syntax/src/parser_impl/input.rs) | 5 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/reparsing.rs (renamed from crates/ra_syntax/src/reparsing.rs) | 55 | ||||
-rw-r--r-- | crates/ra_syntax/src/parsing/token_set.rs (renamed from crates/ra_syntax/src/token_set.rs) | 8 | ||||
-rw-r--r-- | crates/ra_syntax/src/syntax_error.rs (renamed from crates/ra_syntax/src/syntax_node/syntax_error.rs) | 0 | ||||
-rw-r--r-- | crates/ra_syntax/src/syntax_kinds.rs | 3 | ||||
-rw-r--r-- | crates/ra_syntax/src/syntax_node.rs | 13 | ||||
-rw-r--r-- | crates/ra_syntax/src/syntax_text.rs (renamed from crates/ra_syntax/src/syntax_node/syntax_text.rs) | 0 | ||||
-rw-r--r-- | crates/ra_syntax/src/validation.rs | 2 | ||||
-rw-r--r-- | crates/ra_syntax/src/validation/block.rs | 6 | ||||
-rw-r--r-- | crates/ra_syntax/src/validation/byte.rs | 6 | ||||
-rw-r--r-- | crates/ra_syntax/src/validation/byte_string.rs | 6 | ||||
-rw-r--r-- | crates/ra_syntax/src/validation/char.rs | 6 | ||||
-rw-r--r-- | crates/ra_syntax/src/validation/string.rs | 6 | ||||
-rw-r--r-- | crates/tools/src/lib.rs | 2 |
41 files changed, 174 insertions, 140 deletions
diff --git a/crates/ra_syntax/src/lib.rs b/crates/ra_syntax/src/lib.rs index cbba1d4ae..b12282b39 100644 --- a/crates/ra_syntax/src/lib.rs +++ b/crates/ra_syntax/src/lib.rs | |||
@@ -16,30 +16,29 @@ | |||
16 | #![allow(missing_docs)] | 16 | #![allow(missing_docs)] |
17 | //#![warn(unreachable_pub)] // rust-lang/rust#47816 | 17 | //#![warn(unreachable_pub)] // rust-lang/rust#47816 |
18 | 18 | ||
19 | mod syntax_kinds; | ||
20 | mod syntax_node; | ||
21 | mod syntax_text; | ||
22 | mod syntax_error; | ||
23 | mod parsing; | ||
24 | mod string_lexing; | ||
25 | mod validation; | ||
26 | mod ptr; | ||
27 | |||
19 | pub mod algo; | 28 | pub mod algo; |
20 | pub mod ast; | 29 | pub mod ast; |
21 | mod lexer; | ||
22 | #[macro_use] | ||
23 | mod token_set; | ||
24 | mod grammar; | ||
25 | mod parser_api; | ||
26 | mod parser_impl; | ||
27 | mod reparsing; | ||
28 | mod string_lexing; | ||
29 | mod syntax_kinds; | ||
30 | /// Utilities for simple uses of the parser. | 30 | /// Utilities for simple uses of the parser. |
31 | pub mod utils; | 31 | pub mod utils; |
32 | mod validation; | ||
33 | mod syntax_node; | ||
34 | mod ptr; | ||
35 | 32 | ||
36 | pub use rowan::{SmolStr, TextRange, TextUnit}; | 33 | pub use rowan::{SmolStr, TextRange, TextUnit}; |
37 | pub use crate::{ | 34 | pub use crate::{ |
38 | ast::AstNode, | 35 | ast::AstNode, |
39 | lexer::{tokenize, Token}, | ||
40 | syntax_kinds::SyntaxKind, | 36 | syntax_kinds::SyntaxKind, |
41 | syntax_node::{Direction, SyntaxError, SyntaxNode, WalkEvent, Location, TreeArc}, | 37 | syntax_error::{SyntaxError, SyntaxErrorKind, Location}, |
38 | syntax_text::SyntaxText, | ||
39 | syntax_node::{Direction, SyntaxNode, WalkEvent, TreeArc}, | ||
42 | ptr::{SyntaxNodePtr, AstPtr}, | 40 | ptr::{SyntaxNodePtr, AstPtr}, |
41 | parsing::{tokenize, Token}, | ||
43 | }; | 42 | }; |
44 | 43 | ||
45 | use ra_text_edit::AtomTextEdit; | 44 | use ra_text_edit::AtomTextEdit; |
@@ -59,9 +58,7 @@ impl SourceFile { | |||
59 | } | 58 | } |
60 | 59 | ||
61 | pub fn parse(text: &str) -> TreeArc<SourceFile> { | 60 | pub fn parse(text: &str) -> TreeArc<SourceFile> { |
62 | let tokens = tokenize(&text); | 61 | let (green, errors) = parsing::parse_text(text); |
63 | let (green, errors) = | ||
64 | parser_impl::parse_with(syntax_node::GreenBuilder::new(), text, &tokens, grammar::root); | ||
65 | SourceFile::new(green, errors) | 62 | SourceFile::new(green, errors) |
66 | } | 63 | } |
67 | 64 | ||
@@ -70,7 +67,7 @@ impl SourceFile { | |||
70 | } | 67 | } |
71 | 68 | ||
72 | pub fn incremental_reparse(&self, edit: &AtomTextEdit) -> Option<TreeArc<SourceFile>> { | 69 | pub fn incremental_reparse(&self, edit: &AtomTextEdit) -> Option<TreeArc<SourceFile>> { |
73 | reparsing::incremental_reparse(self.syntax(), edit, self.errors()) | 70 | parsing::incremental_reparse(self.syntax(), edit, self.errors()) |
74 | .map(|(green_node, errors)| SourceFile::new(green_node, errors)) | 71 | .map(|(green_node, errors)| SourceFile::new(green_node, errors)) |
75 | } | 72 | } |
76 | 73 | ||
diff --git a/crates/ra_syntax/src/parsing.rs b/crates/ra_syntax/src/parsing.rs new file mode 100644 index 000000000..761accd7b --- /dev/null +++ b/crates/ra_syntax/src/parsing.rs | |||
@@ -0,0 +1,25 @@ | |||
1 | #[macro_use] | ||
2 | mod token_set; | ||
3 | mod builder; | ||
4 | mod lexer; | ||
5 | mod parser_impl; | ||
6 | mod parser_api; | ||
7 | mod grammar; | ||
8 | mod reparsing; | ||
9 | |||
10 | use crate::{ | ||
11 | SyntaxError, | ||
12 | parsing::builder::GreenBuilder, | ||
13 | syntax_node::GreenNode, | ||
14 | }; | ||
15 | |||
16 | pub use self::lexer::{tokenize, Token}; | ||
17 | |||
18 | pub(crate) use self::reparsing::incremental_reparse; | ||
19 | |||
20 | pub(crate) fn parse_text(text: &str) -> (GreenNode, Vec<SyntaxError>) { | ||
21 | let tokens = tokenize(&text); | ||
22 | let (green, errors) = | ||
23 | parser_impl::parse_with(GreenBuilder::new(), text, &tokens, grammar::root); | ||
24 | (green, errors) | ||
25 | } | ||
diff --git a/crates/ra_syntax/src/syntax_node/builder.rs b/crates/ra_syntax/src/parsing/builder.rs index 8abd0f051..9090c60c2 100644 --- a/crates/ra_syntax/src/syntax_node/builder.rs +++ b/crates/ra_syntax/src/parsing/builder.rs | |||
@@ -1,8 +1,9 @@ | |||
1 | use crate::{ | 1 | use crate::{ |
2 | parser_impl::Sink, | 2 | parsing::parser_impl::Sink, |
3 | syntax_node::{GreenNode, RaTypes, SyntaxError}, | 3 | syntax_node::{GreenNode, RaTypes}, |
4 | SmolStr, SyntaxKind, | 4 | SmolStr, SyntaxKind, SyntaxError, |
5 | }; | 5 | }; |
6 | |||
6 | use rowan::GreenNodeBuilder; | 7 | use rowan::GreenNodeBuilder; |
7 | 8 | ||
8 | pub(crate) struct GreenBuilder { | 9 | pub(crate) struct GreenBuilder { |
diff --git a/crates/ra_syntax/src/grammar.rs b/crates/ra_syntax/src/parsing/grammar.rs index 060c0ccdf..bcdcd9f57 100644 --- a/crates/ra_syntax/src/grammar.rs +++ b/crates/ra_syntax/src/parsing/grammar.rs | |||
@@ -36,26 +36,46 @@ mod type_args; | |||
36 | mod type_params; | 36 | mod type_params; |
37 | mod types; | 37 | mod types; |
38 | 38 | ||
39 | pub(crate) use self::{ | ||
40 | expressions::block, | ||
41 | items::{ | ||
42 | enum_variant_list, extern_item_list, impl_item_list, match_arm_list, mod_item_list, | ||
43 | named_field_def_list, named_field_list, token_tree, trait_item_list, use_tree_list, | ||
44 | }, | ||
45 | }; | ||
46 | use crate::{ | 39 | use crate::{ |
47 | parser_api::{CompletedMarker, Marker, Parser}, | 40 | SyntaxNode, |
48 | token_set::TokenSet, | ||
49 | SyntaxKind::{self, *}, | 41 | SyntaxKind::{self, *}, |
42 | parsing::{ | ||
43 | token_set::TokenSet, | ||
44 | parser_api::{CompletedMarker, Marker, Parser} | ||
45 | }, | ||
50 | }; | 46 | }; |
51 | 47 | ||
52 | pub(crate) fn root(p: &mut Parser) { | 48 | pub(super) fn root(p: &mut Parser) { |
53 | let m = p.start(); | 49 | let m = p.start(); |
54 | p.eat(SHEBANG); | 50 | p.eat(SHEBANG); |
55 | items::mod_contents(p, false); | 51 | items::mod_contents(p, false); |
56 | m.complete(p, SOURCE_FILE); | 52 | m.complete(p, SOURCE_FILE); |
57 | } | 53 | } |
58 | 54 | ||
55 | pub(super) fn reparser(node: &SyntaxNode) -> Option<fn(&mut Parser)> { | ||
56 | let res = match node.kind() { | ||
57 | BLOCK => expressions::block, | ||
58 | NAMED_FIELD_DEF_LIST => items::named_field_def_list, | ||
59 | NAMED_FIELD_LIST => items::named_field_list, | ||
60 | ENUM_VARIANT_LIST => items::enum_variant_list, | ||
61 | MATCH_ARM_LIST => items::match_arm_list, | ||
62 | USE_TREE_LIST => items::use_tree_list, | ||
63 | EXTERN_ITEM_LIST => items::extern_item_list, | ||
64 | TOKEN_TREE if node.first_child().unwrap().kind() == L_CURLY => items::token_tree, | ||
65 | ITEM_LIST => { | ||
66 | let parent = node.parent().unwrap(); | ||
67 | match parent.kind() { | ||
68 | IMPL_BLOCK => items::impl_item_list, | ||
69 | TRAIT_DEF => items::trait_item_list, | ||
70 | MODULE => items::mod_item_list, | ||
71 | _ => return None, | ||
72 | } | ||
73 | } | ||
74 | _ => return None, | ||
75 | }; | ||
76 | Some(res) | ||
77 | } | ||
78 | |||
59 | #[derive(Clone, Copy, PartialEq, Eq)] | 79 | #[derive(Clone, Copy, PartialEq, Eq)] |
60 | enum BlockLike { | 80 | enum BlockLike { |
61 | Block, | 81 | Block, |
diff --git a/crates/ra_syntax/src/grammar/attributes.rs b/crates/ra_syntax/src/parsing/grammar/attributes.rs index cd30e8a45..cd30e8a45 100644 --- a/crates/ra_syntax/src/grammar/attributes.rs +++ b/crates/ra_syntax/src/parsing/grammar/attributes.rs | |||
diff --git a/crates/ra_syntax/src/grammar/expressions.rs b/crates/ra_syntax/src/parsing/grammar/expressions.rs index 28fcb1f7d..d5a4f4d7b 100644 --- a/crates/ra_syntax/src/grammar/expressions.rs +++ b/crates/ra_syntax/src/parsing/grammar/expressions.rs | |||
@@ -138,7 +138,7 @@ enum Op { | |||
138 | } | 138 | } |
139 | 139 | ||
140 | fn current_op(p: &Parser) -> (u8, Op) { | 140 | fn current_op(p: &Parser) -> (u8, Op) { |
141 | if let Some(t) = p.next3() { | 141 | if let Some(t) = p.current3() { |
142 | match t { | 142 | match t { |
143 | (L_ANGLE, L_ANGLE, EQ) => return (1, Op::Composite(SHLEQ, 3)), | 143 | (L_ANGLE, L_ANGLE, EQ) => return (1, Op::Composite(SHLEQ, 3)), |
144 | (R_ANGLE, R_ANGLE, EQ) => return (1, Op::Composite(SHREQ, 3)), | 144 | (R_ANGLE, R_ANGLE, EQ) => return (1, Op::Composite(SHREQ, 3)), |
@@ -146,7 +146,7 @@ fn current_op(p: &Parser) -> (u8, Op) { | |||
146 | } | 146 | } |
147 | } | 147 | } |
148 | 148 | ||
149 | if let Some(t) = p.next2() { | 149 | if let Some(t) = p.current2() { |
150 | match t { | 150 | match t { |
151 | (PLUS, EQ) => return (1, Op::Composite(PLUSEQ, 2)), | 151 | (PLUS, EQ) => return (1, Op::Composite(PLUSEQ, 2)), |
152 | (MINUS, EQ) => return (1, Op::Composite(MINUSEQ, 2)), | 152 | (MINUS, EQ) => return (1, Op::Composite(MINUSEQ, 2)), |
diff --git a/crates/ra_syntax/src/grammar/expressions/atom.rs b/crates/ra_syntax/src/parsing/grammar/expressions/atom.rs index e74305b6a..e74305b6a 100644 --- a/crates/ra_syntax/src/grammar/expressions/atom.rs +++ b/crates/ra_syntax/src/parsing/grammar/expressions/atom.rs | |||
diff --git a/crates/ra_syntax/src/grammar/items.rs b/crates/ra_syntax/src/parsing/grammar/items.rs index 4b962c1f3..4b962c1f3 100644 --- a/crates/ra_syntax/src/grammar/items.rs +++ b/crates/ra_syntax/src/parsing/grammar/items.rs | |||
diff --git a/crates/ra_syntax/src/grammar/items/consts.rs b/crates/ra_syntax/src/parsing/grammar/items/consts.rs index 5a5852f83..5a5852f83 100644 --- a/crates/ra_syntax/src/grammar/items/consts.rs +++ b/crates/ra_syntax/src/parsing/grammar/items/consts.rs | |||
diff --git a/crates/ra_syntax/src/grammar/items/nominal.rs b/crates/ra_syntax/src/parsing/grammar/items/nominal.rs index ff9b38f9c..ff9b38f9c 100644 --- a/crates/ra_syntax/src/grammar/items/nominal.rs +++ b/crates/ra_syntax/src/parsing/grammar/items/nominal.rs | |||
diff --git a/crates/ra_syntax/src/grammar/items/traits.rs b/crates/ra_syntax/src/parsing/grammar/items/traits.rs index d5a8ccd98..d5a8ccd98 100644 --- a/crates/ra_syntax/src/grammar/items/traits.rs +++ b/crates/ra_syntax/src/parsing/grammar/items/traits.rs | |||
diff --git a/crates/ra_syntax/src/grammar/items/use_item.rs b/crates/ra_syntax/src/parsing/grammar/items/use_item.rs index 5111d37eb..5111d37eb 100644 --- a/crates/ra_syntax/src/grammar/items/use_item.rs +++ b/crates/ra_syntax/src/parsing/grammar/items/use_item.rs | |||
diff --git a/crates/ra_syntax/src/grammar/params.rs b/crates/ra_syntax/src/parsing/grammar/params.rs index 185386569..185386569 100644 --- a/crates/ra_syntax/src/grammar/params.rs +++ b/crates/ra_syntax/src/parsing/grammar/params.rs | |||
diff --git a/crates/ra_syntax/src/grammar/paths.rs b/crates/ra_syntax/src/parsing/grammar/paths.rs index 33a11886c..33a11886c 100644 --- a/crates/ra_syntax/src/grammar/paths.rs +++ b/crates/ra_syntax/src/parsing/grammar/paths.rs | |||
diff --git a/crates/ra_syntax/src/grammar/patterns.rs b/crates/ra_syntax/src/parsing/grammar/patterns.rs index 9d7da639d..9d7da639d 100644 --- a/crates/ra_syntax/src/grammar/patterns.rs +++ b/crates/ra_syntax/src/parsing/grammar/patterns.rs | |||
diff --git a/crates/ra_syntax/src/grammar/type_args.rs b/crates/ra_syntax/src/parsing/grammar/type_args.rs index f889419c5..f889419c5 100644 --- a/crates/ra_syntax/src/grammar/type_args.rs +++ b/crates/ra_syntax/src/parsing/grammar/type_args.rs | |||
diff --git a/crates/ra_syntax/src/grammar/type_params.rs b/crates/ra_syntax/src/parsing/grammar/type_params.rs index 40f998682..40f998682 100644 --- a/crates/ra_syntax/src/grammar/type_params.rs +++ b/crates/ra_syntax/src/parsing/grammar/type_params.rs | |||
diff --git a/crates/ra_syntax/src/grammar/types.rs b/crates/ra_syntax/src/parsing/grammar/types.rs index adc189a29..adc189a29 100644 --- a/crates/ra_syntax/src/grammar/types.rs +++ b/crates/ra_syntax/src/parsing/grammar/types.rs | |||
diff --git a/crates/ra_syntax/src/lexer.rs b/crates/ra_syntax/src/parsing/lexer.rs index f9362120e..f9362120e 100644 --- a/crates/ra_syntax/src/lexer.rs +++ b/crates/ra_syntax/src/parsing/lexer.rs | |||
diff --git a/crates/ra_syntax/src/lexer/classes.rs b/crates/ra_syntax/src/parsing/lexer/classes.rs index 4235d2648..4235d2648 100644 --- a/crates/ra_syntax/src/lexer/classes.rs +++ b/crates/ra_syntax/src/parsing/lexer/classes.rs | |||
diff --git a/crates/ra_syntax/src/lexer/comments.rs b/crates/ra_syntax/src/parsing/lexer/comments.rs index afe6886a1..8bbbe659b 100644 --- a/crates/ra_syntax/src/lexer/comments.rs +++ b/crates/ra_syntax/src/parsing/lexer/comments.rs | |||
@@ -1,4 +1,4 @@ | |||
1 | use crate::lexer::ptr::Ptr; | 1 | use crate::parsing::lexer::ptr::Ptr; |
2 | 2 | ||
3 | use crate::SyntaxKind::{self, *}; | 3 | use crate::SyntaxKind::{self, *}; |
4 | 4 | ||
diff --git a/crates/ra_syntax/src/lexer/numbers.rs b/crates/ra_syntax/src/parsing/lexer/numbers.rs index 46daf5e52..7f6abe1d5 100644 --- a/crates/ra_syntax/src/lexer/numbers.rs +++ b/crates/ra_syntax/src/parsing/lexer/numbers.rs | |||
@@ -1,5 +1,7 @@ | |||
1 | use crate::lexer::classes::*; | 1 | use crate::parsing::lexer::{ |
2 | use crate::lexer::ptr::Ptr; | 2 | ptr::Ptr, |
3 | classes::*, | ||
4 | }; | ||
3 | 5 | ||
4 | use crate::SyntaxKind::{self, *}; | 6 | use crate::SyntaxKind::{self, *}; |
5 | 7 | ||
diff --git a/crates/ra_syntax/src/lexer/ptr.rs b/crates/ra_syntax/src/parsing/lexer/ptr.rs index c341c4176..c341c4176 100644 --- a/crates/ra_syntax/src/lexer/ptr.rs +++ b/crates/ra_syntax/src/parsing/lexer/ptr.rs | |||
diff --git a/crates/ra_syntax/src/lexer/strings.rs b/crates/ra_syntax/src/parsing/lexer/strings.rs index 5c1cf3e9c..f74acff9e 100644 --- a/crates/ra_syntax/src/lexer/strings.rs +++ b/crates/ra_syntax/src/parsing/lexer/strings.rs | |||
@@ -1,6 +1,7 @@ | |||
1 | use crate::SyntaxKind::{self, *}; | 1 | use crate::{ |
2 | 2 | parsing::lexer::ptr::Ptr, | |
3 | use crate::lexer::ptr::Ptr; | 3 | SyntaxKind::{self, *}, |
4 | }; | ||
4 | 5 | ||
5 | pub(crate) fn is_string_literal_start(c: char, c1: Option<char>, c2: Option<char>) -> bool { | 6 | pub(crate) fn is_string_literal_start(c: char, c1: Option<char>, c2: Option<char>) -> bool { |
6 | match (c, c1, c2) { | 7 | match (c, c1, c2) { |
diff --git a/crates/ra_syntax/src/parser_api.rs b/crates/ra_syntax/src/parsing/parser_api.rs index 504df753e..781c407de 100644 --- a/crates/ra_syntax/src/parser_api.rs +++ b/crates/ra_syntax/src/parsing/parser_api.rs | |||
@@ -1,9 +1,11 @@ | |||
1 | use drop_bomb::DropBomb; | 1 | use drop_bomb::DropBomb; |
2 | 2 | ||
3 | use crate::{ | 3 | use crate::{ |
4 | parser_impl::ParserImpl, | ||
5 | token_set::TokenSet, | ||
6 | SyntaxKind::{self, ERROR}, | 4 | SyntaxKind::{self, ERROR}, |
5 | parsing::{ | ||
6 | token_set::TokenSet, | ||
7 | parser_impl::ParserImpl | ||
8 | }, | ||
7 | }; | 9 | }; |
8 | 10 | ||
9 | /// `Parser` struct provides the low-level API for | 11 | /// `Parser` struct provides the low-level API for |
@@ -25,6 +27,22 @@ impl<'t> Parser<'t> { | |||
25 | self.nth(0) | 27 | self.nth(0) |
26 | } | 28 | } |
27 | 29 | ||
30 | /// Returns the kinds of the current two tokens, if they are not separated | ||
31 | /// by trivia. | ||
32 | /// | ||
33 | /// Useful for parsing things like `>>`. | ||
34 | pub(crate) fn current2(&self) -> Option<(SyntaxKind, SyntaxKind)> { | ||
35 | self.0.current2() | ||
36 | } | ||
37 | |||
38 | /// Returns the kinds of the current three tokens, if they are not separated | ||
39 | /// by trivia. | ||
40 | /// | ||
41 | /// Useful for parsing things like `=>>`. | ||
42 | pub(crate) fn current3(&self) -> Option<(SyntaxKind, SyntaxKind, SyntaxKind)> { | ||
43 | self.0.current3() | ||
44 | } | ||
45 | |||
28 | /// Lookahead operation: returns the kind of the next nth | 46 | /// Lookahead operation: returns the kind of the next nth |
29 | /// token. | 47 | /// token. |
30 | pub(crate) fn nth(&self, n: u32) -> SyntaxKind { | 48 | pub(crate) fn nth(&self, n: u32) -> SyntaxKind { |
@@ -41,14 +59,6 @@ impl<'t> Parser<'t> { | |||
41 | kinds.contains(self.current()) | 59 | kinds.contains(self.current()) |
42 | } | 60 | } |
43 | 61 | ||
44 | pub(crate) fn next2(&self) -> Option<(SyntaxKind, SyntaxKind)> { | ||
45 | self.0.next2() | ||
46 | } | ||
47 | |||
48 | pub(crate) fn next3(&self) -> Option<(SyntaxKind, SyntaxKind, SyntaxKind)> { | ||
49 | self.0.next3() | ||
50 | } | ||
51 | |||
52 | /// Checks if the current token is contextual keyword with text `t`. | 62 | /// Checks if the current token is contextual keyword with text `t`. |
53 | pub(crate) fn at_contextual_kw(&self, t: &str) -> bool { | 63 | pub(crate) fn at_contextual_kw(&self, t: &str) -> bool { |
54 | self.0.at_kw(t) | 64 | self.0.at_kw(t) |
diff --git a/crates/ra_syntax/src/parser_impl.rs b/crates/ra_syntax/src/parsing/parser_impl.rs index d99615d72..8cce1ab01 100644 --- a/crates/ra_syntax/src/parser_impl.rs +++ b/crates/ra_syntax/src/parsing/parser_impl.rs | |||
@@ -4,22 +4,21 @@ mod input; | |||
4 | use std::cell::Cell; | 4 | use std::cell::Cell; |
5 | 5 | ||
6 | use crate::{ | 6 | use crate::{ |
7 | lexer::Token, | ||
8 | parser_api::Parser, | ||
9 | parser_impl::{ | ||
10 | event::{Event, EventProcessor}, | ||
11 | input::{InputPosition, ParserInput}, | ||
12 | }, | ||
13 | SmolStr, | 7 | SmolStr, |
14 | syntax_node::syntax_error::{ | 8 | syntax_error::{ParseError, SyntaxError}, |
15 | ParseError, | 9 | parsing::{ |
16 | SyntaxError, | 10 | lexer::Token, |
11 | parser_api::Parser, | ||
12 | parser_impl::{ | ||
13 | event::{Event, EventProcessor}, | ||
14 | input::{InputPosition, ParserInput}, | ||
15 | }, | ||
17 | }, | 16 | }, |
18 | }; | 17 | }; |
19 | 18 | ||
20 | use crate::SyntaxKind::{self, EOF, TOMBSTONE}; | 19 | use crate::SyntaxKind::{self, EOF, TOMBSTONE}; |
21 | 20 | ||
22 | pub(crate) trait Sink { | 21 | pub(super) trait Sink { |
23 | type Tree; | 22 | type Tree; |
24 | 23 | ||
25 | /// Adds new leaf to the current branch. | 24 | /// Adds new leaf to the current branch. |
@@ -41,7 +40,7 @@ pub(crate) trait Sink { | |||
41 | } | 40 | } |
42 | 41 | ||
43 | /// Parse a sequence of tokens into the representative node tree | 42 | /// Parse a sequence of tokens into the representative node tree |
44 | pub(crate) fn parse_with<S: Sink>( | 43 | pub(super) fn parse_with<S: Sink>( |
45 | sink: S, | 44 | sink: S, |
46 | text: &str, | 45 | text: &str, |
47 | tokens: &[Token], | 46 | tokens: &[Token], |
@@ -60,7 +59,7 @@ pub(crate) fn parse_with<S: Sink>( | |||
60 | /// Implementation details of `Parser`, extracted | 59 | /// Implementation details of `Parser`, extracted |
61 | /// to a separate struct in order not to pollute | 60 | /// to a separate struct in order not to pollute |
62 | /// the public API of the `Parser`. | 61 | /// the public API of the `Parser`. |
63 | pub(crate) struct ParserImpl<'t> { | 62 | pub(super) struct ParserImpl<'t> { |
64 | parser_input: &'t ParserInput<'t>, | 63 | parser_input: &'t ParserInput<'t>, |
65 | pos: InputPosition, | 64 | pos: InputPosition, |
66 | events: Vec<Event>, | 65 | events: Vec<Event>, |
@@ -68,7 +67,7 @@ pub(crate) struct ParserImpl<'t> { | |||
68 | } | 67 | } |
69 | 68 | ||
70 | impl<'t> ParserImpl<'t> { | 69 | impl<'t> ParserImpl<'t> { |
71 | pub(crate) fn new(inp: &'t ParserInput<'t>) -> ParserImpl<'t> { | 70 | fn new(inp: &'t ParserInput<'t>) -> ParserImpl<'t> { |
72 | ParserImpl { | 71 | ParserImpl { |
73 | parser_input: inp, | 72 | parser_input: inp, |
74 | pos: InputPosition::new(), | 73 | pos: InputPosition::new(), |
@@ -77,12 +76,12 @@ impl<'t> ParserImpl<'t> { | |||
77 | } | 76 | } |
78 | } | 77 | } |
79 | 78 | ||
80 | pub(crate) fn into_events(self) -> Vec<Event> { | 79 | fn into_events(self) -> Vec<Event> { |
81 | assert_eq!(self.nth(0), EOF); | 80 | assert_eq!(self.nth(0), EOF); |
82 | self.events | 81 | self.events |
83 | } | 82 | } |
84 | 83 | ||
85 | pub(super) fn next2(&self) -> Option<(SyntaxKind, SyntaxKind)> { | 84 | pub(super) fn current2(&self) -> Option<(SyntaxKind, SyntaxKind)> { |
86 | let c1 = self.parser_input.kind(self.pos); | 85 | let c1 = self.parser_input.kind(self.pos); |
87 | let c2 = self.parser_input.kind(self.pos + 1); | 86 | let c2 = self.parser_input.kind(self.pos + 1); |
88 | if self.parser_input.token_start_at(self.pos + 1) | 87 | if self.parser_input.token_start_at(self.pos + 1) |
@@ -94,7 +93,7 @@ impl<'t> ParserImpl<'t> { | |||
94 | } | 93 | } |
95 | } | 94 | } |
96 | 95 | ||
97 | pub(super) fn next3(&self) -> Option<(SyntaxKind, SyntaxKind, SyntaxKind)> { | 96 | pub(super) fn current3(&self) -> Option<(SyntaxKind, SyntaxKind, SyntaxKind)> { |
98 | let c1 = self.parser_input.kind(self.pos); | 97 | let c1 = self.parser_input.kind(self.pos); |
99 | let c2 = self.parser_input.kind(self.pos + 1); | 98 | let c2 = self.parser_input.kind(self.pos + 1); |
100 | let c3 = self.parser_input.kind(self.pos + 2); | 99 | let c3 = self.parser_input.kind(self.pos + 2); |
diff --git a/crates/ra_syntax/src/parser_impl/event.rs b/crates/ra_syntax/src/parsing/parser_impl/event.rs index b45830c61..2ddbdd34d 100644 --- a/crates/ra_syntax/src/parser_impl/event.rs +++ b/crates/ra_syntax/src/parsing/parser_impl/event.rs | |||
@@ -7,19 +7,22 @@ | |||
7 | //! tree builder: the parser produces a stream of events like | 7 | //! tree builder: the parser produces a stream of events like |
8 | //! `start node`, `finish node`, and `FileBuilder` converts | 8 | //! `start node`, `finish node`, and `FileBuilder` converts |
9 | //! this stream to a real tree. | 9 | //! this stream to a real tree. |
10 | use std::mem; | ||
11 | |||
10 | use crate::{ | 12 | use crate::{ |
11 | lexer::Token, | ||
12 | parser_impl::Sink, | ||
13 | SmolStr, | 13 | SmolStr, |
14 | SyntaxKind::{self, *}, | 14 | SyntaxKind::{self, *}, |
15 | TextRange, TextUnit, | 15 | TextRange, TextUnit, |
16 | syntax_node::syntax_error::{ | 16 | syntax_error::{ |
17 | ParseError, | 17 | ParseError, |
18 | SyntaxError, | 18 | SyntaxError, |
19 | SyntaxErrorKind, | 19 | SyntaxErrorKind, |
20 | }, | 20 | }, |
21 | parsing::{ | ||
22 | lexer::Token, | ||
23 | parser_impl::Sink, | ||
24 | }, | ||
21 | }; | 25 | }; |
22 | use std::mem; | ||
23 | 26 | ||
24 | /// `Parser` produces a flat list of `Event`s. | 27 | /// `Parser` produces a flat list of `Event`s. |
25 | /// They are converted to a tree-structure in | 28 | /// They are converted to a tree-structure in |
diff --git a/crates/ra_syntax/src/parser_impl/input.rs b/crates/ra_syntax/src/parsing/parser_impl/input.rs index 616a26fdc..275d94918 100644 --- a/crates/ra_syntax/src/parser_impl/input.rs +++ b/crates/ra_syntax/src/parsing/parser_impl/input.rs | |||
@@ -1,4 +1,7 @@ | |||
1 | use crate::{lexer::Token, SyntaxKind, SyntaxKind::EOF, TextRange, TextUnit}; | 1 | use crate::{ |
2 | SyntaxKind, SyntaxKind::EOF, TextRange, TextUnit, | ||
3 | parsing::lexer::Token, | ||
4 | }; | ||
2 | 5 | ||
3 | use std::ops::{Add, AddAssign}; | 6 | use std::ops::{Add, AddAssign}; |
4 | 7 | ||
diff --git a/crates/ra_syntax/src/reparsing.rs b/crates/ra_syntax/src/parsing/reparsing.rs index dd751465c..edf3fa291 100644 --- a/crates/ra_syntax/src/reparsing.rs +++ b/crates/ra_syntax/src/parsing/reparsing.rs | |||
@@ -1,10 +1,17 @@ | |||
1 | use crate::algo; | 1 | use crate::{ |
2 | use crate::grammar; | 2 | SyntaxKind::*, TextRange, TextUnit, |
3 | use crate::lexer::{tokenize, Token}; | 3 | algo, |
4 | use crate::parser_api::Parser; | 4 | syntax_node::{GreenNode, SyntaxNode}, |
5 | use crate::parser_impl; | 5 | syntax_error::SyntaxError, |
6 | use crate::syntax_node::{self, GreenNode, SyntaxError, SyntaxNode}; | 6 | parsing::{ |
7 | use crate::{SyntaxKind::*, TextRange, TextUnit}; | 7 | grammar, |
8 | parser_impl, | ||
9 | builder::GreenBuilder, | ||
10 | parser_api::Parser, | ||
11 | lexer::{tokenize, Token}, | ||
12 | } | ||
13 | }; | ||
14 | |||
8 | use ra_text_edit::AtomTextEdit; | 15 | use ra_text_edit::AtomTextEdit; |
9 | 16 | ||
10 | pub(crate) fn incremental_reparse( | 17 | pub(crate) fn incremental_reparse( |
@@ -56,7 +63,7 @@ fn reparse_block<'node>( | |||
56 | return None; | 63 | return None; |
57 | } | 64 | } |
58 | let (green, new_errors) = | 65 | let (green, new_errors) = |
59 | parser_impl::parse_with(syntax_node::GreenBuilder::new(), &text, &tokens, reparser); | 66 | parser_impl::parse_with(GreenBuilder::new(), &text, &tokens, reparser); |
60 | Some((node, green, new_errors)) | 67 | Some((node, green, new_errors)) |
61 | } | 68 | } |
62 | 69 | ||
@@ -72,34 +79,12 @@ fn is_contextual_kw(text: &str) -> bool { | |||
72 | } | 79 | } |
73 | } | 80 | } |
74 | 81 | ||
75 | type ParseFn = fn(&mut Parser); | 82 | fn find_reparsable_node( |
76 | fn find_reparsable_node(node: &SyntaxNode, range: TextRange) -> Option<(&SyntaxNode, ParseFn)> { | 83 | node: &SyntaxNode, |
84 | range: TextRange, | ||
85 | ) -> Option<(&SyntaxNode, fn(&mut Parser))> { | ||
77 | let node = algo::find_covering_node(node, range); | 86 | let node = algo::find_covering_node(node, range); |
78 | return node.ancestors().filter_map(|node| reparser(node).map(|r| (node, r))).next(); | 87 | node.ancestors().find_map(|node| grammar::reparser(node).map(|r| (node, r))) |
79 | |||
80 | fn reparser(node: &SyntaxNode) -> Option<ParseFn> { | ||
81 | let res = match node.kind() { | ||
82 | BLOCK => grammar::block, | ||
83 | NAMED_FIELD_DEF_LIST => grammar::named_field_def_list, | ||
84 | NAMED_FIELD_LIST => grammar::named_field_list, | ||
85 | ENUM_VARIANT_LIST => grammar::enum_variant_list, | ||
86 | MATCH_ARM_LIST => grammar::match_arm_list, | ||
87 | USE_TREE_LIST => grammar::use_tree_list, | ||
88 | EXTERN_ITEM_LIST => grammar::extern_item_list, | ||
89 | TOKEN_TREE if node.first_child().unwrap().kind() == L_CURLY => grammar::token_tree, | ||
90 | ITEM_LIST => { | ||
91 | let parent = node.parent().unwrap(); | ||
92 | match parent.kind() { | ||
93 | IMPL_BLOCK => grammar::impl_item_list, | ||
94 | TRAIT_DEF => grammar::trait_item_list, | ||
95 | MODULE => grammar::mod_item_list, | ||
96 | _ => return None, | ||
97 | } | ||
98 | } | ||
99 | _ => return None, | ||
100 | }; | ||
101 | Some(res) | ||
102 | } | ||
103 | } | 88 | } |
104 | 89 | ||
105 | fn is_balanced(tokens: &[Token]) -> bool { | 90 | fn is_balanced(tokens: &[Token]) -> bool { |
diff --git a/crates/ra_syntax/src/token_set.rs b/crates/ra_syntax/src/parsing/token_set.rs index b3fe633e0..5719fe5a2 100644 --- a/crates/ra_syntax/src/token_set.rs +++ b/crates/ra_syntax/src/parsing/token_set.rs | |||
@@ -4,19 +4,19 @@ use crate::SyntaxKind; | |||
4 | pub(crate) struct TokenSet(u128); | 4 | pub(crate) struct TokenSet(u128); |
5 | 5 | ||
6 | impl TokenSet { | 6 | impl TokenSet { |
7 | pub const fn empty() -> TokenSet { | 7 | pub(crate) const fn empty() -> TokenSet { |
8 | TokenSet(0) | 8 | TokenSet(0) |
9 | } | 9 | } |
10 | 10 | ||
11 | pub const fn singleton(kind: SyntaxKind) -> TokenSet { | 11 | pub(crate) const fn singleton(kind: SyntaxKind) -> TokenSet { |
12 | TokenSet(mask(kind)) | 12 | TokenSet(mask(kind)) |
13 | } | 13 | } |
14 | 14 | ||
15 | pub const fn union(self, other: TokenSet) -> TokenSet { | 15 | pub(crate) const fn union(self, other: TokenSet) -> TokenSet { |
16 | TokenSet(self.0 | other.0) | 16 | TokenSet(self.0 | other.0) |
17 | } | 17 | } |
18 | 18 | ||
19 | pub fn contains(&self, kind: SyntaxKind) -> bool { | 19 | pub(crate) fn contains(&self, kind: SyntaxKind) -> bool { |
20 | self.0 & mask(kind) != 0 | 20 | self.0 & mask(kind) != 0 |
21 | } | 21 | } |
22 | } | 22 | } |
diff --git a/crates/ra_syntax/src/syntax_node/syntax_error.rs b/crates/ra_syntax/src/syntax_error.rs index 4ff998090..4ff998090 100644 --- a/crates/ra_syntax/src/syntax_node/syntax_error.rs +++ b/crates/ra_syntax/src/syntax_error.rs | |||
diff --git a/crates/ra_syntax/src/syntax_kinds.rs b/crates/ra_syntax/src/syntax_kinds.rs index d53886676..c1118c5ab 100644 --- a/crates/ra_syntax/src/syntax_kinds.rs +++ b/crates/ra_syntax/src/syntax_kinds.rs | |||
@@ -1,8 +1,9 @@ | |||
1 | mod generated; | 1 | mod generated; |
2 | 2 | ||
3 | use crate::SyntaxKind::*; | ||
4 | use std::fmt; | 3 | use std::fmt; |
5 | 4 | ||
5 | use crate::SyntaxKind::*; | ||
6 | |||
6 | pub use self::generated::SyntaxKind; | 7 | pub use self::generated::SyntaxKind; |
7 | 8 | ||
8 | impl fmt::Debug for SyntaxKind { | 9 | impl fmt::Debug for SyntaxKind { |
diff --git a/crates/ra_syntax/src/syntax_node.rs b/crates/ra_syntax/src/syntax_node.rs index ed48739f8..aa627398d 100644 --- a/crates/ra_syntax/src/syntax_node.rs +++ b/crates/ra_syntax/src/syntax_node.rs | |||
@@ -1,15 +1,12 @@ | |||
1 | mod builder; | ||
2 | pub mod syntax_error; | ||
3 | mod syntax_text; | ||
4 | |||
5 | use std::{fmt, borrow::Borrow}; | 1 | use std::{fmt, borrow::Borrow}; |
6 | 2 | ||
7 | use self::syntax_text::SyntaxText; | ||
8 | use crate::{SmolStr, SyntaxKind, TextRange}; | ||
9 | use rowan::{Types, TransparentNewType}; | 3 | use rowan::{Types, TransparentNewType}; |
10 | 4 | ||
11 | pub(crate) use self::builder::GreenBuilder; | 5 | use crate::{ |
12 | pub use self::syntax_error::{SyntaxError, SyntaxErrorKind, Location}; | 6 | SmolStr, SyntaxKind, TextRange, SyntaxText, |
7 | syntax_error::SyntaxError, | ||
8 | }; | ||
9 | |||
13 | pub use rowan::WalkEvent; | 10 | pub use rowan::WalkEvent; |
14 | 11 | ||
15 | #[derive(Debug, Clone, Copy)] | 12 | #[derive(Debug, Clone, Copy)] |
diff --git a/crates/ra_syntax/src/syntax_node/syntax_text.rs b/crates/ra_syntax/src/syntax_text.rs index 84e5b231a..84e5b231a 100644 --- a/crates/ra_syntax/src/syntax_node/syntax_text.rs +++ b/crates/ra_syntax/src/syntax_text.rs | |||
diff --git a/crates/ra_syntax/src/validation.rs b/crates/ra_syntax/src/validation.rs index 10672d6bf..69958f0d7 100644 --- a/crates/ra_syntax/src/validation.rs +++ b/crates/ra_syntax/src/validation.rs | |||
@@ -5,7 +5,7 @@ mod string; | |||
5 | mod block; | 5 | mod block; |
6 | 6 | ||
7 | use crate::{ | 7 | use crate::{ |
8 | SourceFile, syntax_node::SyntaxError, AstNode, | 8 | SourceFile, SyntaxError, AstNode, |
9 | ast, | 9 | ast, |
10 | algo::visit::{visitor_ctx, VisitorCtx}, | 10 | algo::visit::{visitor_ctx, VisitorCtx}, |
11 | }; | 11 | }; |
diff --git a/crates/ra_syntax/src/validation/block.rs b/crates/ra_syntax/src/validation/block.rs index de949d967..f2cf3cbbd 100644 --- a/crates/ra_syntax/src/validation/block.rs +++ b/crates/ra_syntax/src/validation/block.rs | |||
@@ -1,9 +1,7 @@ | |||
1 | use crate::{SyntaxKind::*, | 1 | use crate::{SyntaxKind::*, |
2 | ast::{self, AttrsOwner, AstNode}, | 2 | ast::{self, AttrsOwner, AstNode}, |
3 | syntax_node::{ | 3 | SyntaxError, |
4 | SyntaxError, | 4 | SyntaxErrorKind::*, |
5 | SyntaxErrorKind::*, | ||
6 | }, | ||
7 | }; | 5 | }; |
8 | 6 | ||
9 | pub(crate) fn validate_block_node(node: &ast::Block, errors: &mut Vec<SyntaxError>) { | 7 | pub(crate) fn validate_block_node(node: &ast::Block, errors: &mut Vec<SyntaxError>) { |
diff --git a/crates/ra_syntax/src/validation/byte.rs b/crates/ra_syntax/src/validation/byte.rs index acdc12552..838e7a65f 100644 --- a/crates/ra_syntax/src/validation/byte.rs +++ b/crates/ra_syntax/src/validation/byte.rs | |||
@@ -5,10 +5,8 @@ use crate::{ | |||
5 | string_lexing::{self, StringComponentKind}, | 5 | string_lexing::{self, StringComponentKind}, |
6 | TextRange, | 6 | TextRange, |
7 | validation::char, | 7 | validation::char, |
8 | syntax_node::{ | 8 | SyntaxError, |
9 | SyntaxError, | 9 | SyntaxErrorKind::*, |
10 | SyntaxErrorKind::*, | ||
11 | }, | ||
12 | }; | 10 | }; |
13 | 11 | ||
14 | pub(super) fn validate_byte_node(node: &ast::Byte, errors: &mut Vec<SyntaxError>) { | 12 | pub(super) fn validate_byte_node(node: &ast::Byte, errors: &mut Vec<SyntaxError>) { |
diff --git a/crates/ra_syntax/src/validation/byte_string.rs b/crates/ra_syntax/src/validation/byte_string.rs index 69a98b640..64c7054a1 100644 --- a/crates/ra_syntax/src/validation/byte_string.rs +++ b/crates/ra_syntax/src/validation/byte_string.rs | |||
@@ -1,10 +1,8 @@ | |||
1 | use crate::{ | 1 | use crate::{ |
2 | ast::{self, AstNode, AstToken}, | 2 | ast::{self, AstNode, AstToken}, |
3 | string_lexing::{self, StringComponentKind}, | 3 | string_lexing::{self, StringComponentKind}, |
4 | syntax_node::{ | 4 | SyntaxError, |
5 | SyntaxError, | 5 | SyntaxErrorKind::*, |
6 | SyntaxErrorKind::*, | ||
7 | }, | ||
8 | }; | 6 | }; |
9 | 7 | ||
10 | use super::byte; | 8 | use super::byte; |
diff --git a/crates/ra_syntax/src/validation/char.rs b/crates/ra_syntax/src/validation/char.rs index 26c15e36d..3169ed590 100644 --- a/crates/ra_syntax/src/validation/char.rs +++ b/crates/ra_syntax/src/validation/char.rs | |||
@@ -8,10 +8,8 @@ use crate::{ | |||
8 | ast::{self, AstNode, AstToken}, | 8 | ast::{self, AstNode, AstToken}, |
9 | string_lexing::{self, StringComponentKind}, | 9 | string_lexing::{self, StringComponentKind}, |
10 | TextRange, | 10 | TextRange, |
11 | syntax_node::{ | 11 | SyntaxError, |
12 | SyntaxError, | 12 | SyntaxErrorKind::*, |
13 | SyntaxErrorKind::*, | ||
14 | }, | ||
15 | }; | 13 | }; |
16 | 14 | ||
17 | pub(super) fn validate_char_node(node: &ast::Char, errors: &mut Vec<SyntaxError>) { | 15 | pub(super) fn validate_char_node(node: &ast::Char, errors: &mut Vec<SyntaxError>) { |
diff --git a/crates/ra_syntax/src/validation/string.rs b/crates/ra_syntax/src/validation/string.rs index 2f7f9c7c4..d857d088c 100644 --- a/crates/ra_syntax/src/validation/string.rs +++ b/crates/ra_syntax/src/validation/string.rs | |||
@@ -1,10 +1,8 @@ | |||
1 | use crate::{ | 1 | use crate::{ |
2 | ast::{self, AstNode, AstToken}, | 2 | ast::{self, AstNode, AstToken}, |
3 | string_lexing, | 3 | string_lexing, |
4 | syntax_node::{ | 4 | SyntaxError, |
5 | SyntaxError, | 5 | SyntaxErrorKind::*, |
6 | SyntaxErrorKind::*, | ||
7 | }, | ||
8 | }; | 6 | }; |
9 | 7 | ||
10 | use super::char; | 8 | use super::char; |
diff --git a/crates/tools/src/lib.rs b/crates/tools/src/lib.rs index ef9c613a7..0a10d2737 100644 --- a/crates/tools/src/lib.rs +++ b/crates/tools/src/lib.rs | |||
@@ -14,7 +14,7 @@ pub use teraron::{Mode, Overwrite, Verify}; | |||
14 | pub type Result<T> = std::result::Result<T, failure::Error>; | 14 | pub type Result<T> = std::result::Result<T, failure::Error>; |
15 | 15 | ||
16 | pub const GRAMMAR: &str = "crates/ra_syntax/src/grammar.ron"; | 16 | pub const GRAMMAR: &str = "crates/ra_syntax/src/grammar.ron"; |
17 | const GRAMMAR_DIR: &str = "crates/ra_syntax/src/grammar"; | 17 | const GRAMMAR_DIR: &str = "crates/ra_syntax/src/parsing/grammar"; |
18 | const OK_INLINE_TESTS_DIR: &str = "crates/ra_syntax/tests/data/parser/inline/ok"; | 18 | const OK_INLINE_TESTS_DIR: &str = "crates/ra_syntax/tests/data/parser/inline/ok"; |
19 | const ERR_INLINE_TESTS_DIR: &str = "crates/ra_syntax/tests/data/parser/inline/err"; | 19 | const ERR_INLINE_TESTS_DIR: &str = "crates/ra_syntax/tests/data/parser/inline/err"; |
20 | 20 | ||