diff options
Diffstat (limited to 'crates/ra_syntax/src/lib.rs')
-rw-r--r-- | crates/ra_syntax/src/lib.rs | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/crates/ra_syntax/src/lib.rs b/crates/ra_syntax/src/lib.rs index 2a095817a..bc311cbbc 100644 --- a/crates/ra_syntax/src/lib.rs +++ b/crates/ra_syntax/src/lib.rs | |||
@@ -59,24 +59,29 @@ impl SourceFile { | |||
59 | assert_eq!(root.kind(), SyntaxKind::SOURCE_FILE); | 59 | assert_eq!(root.kind(), SyntaxKind::SOURCE_FILE); |
60 | TreeArc::cast(root) | 60 | TreeArc::cast(root) |
61 | } | 61 | } |
62 | |||
62 | pub fn parse(text: &str) -> TreeArc<SourceFile> { | 63 | pub fn parse(text: &str) -> TreeArc<SourceFile> { |
63 | let tokens = tokenize(&text); | 64 | let tokens = tokenize(&text); |
64 | let (green, errors) = | 65 | let (green, errors) = |
65 | parser_impl::parse_with(yellow::GreenBuilder::new(), text, &tokens, grammar::root); | 66 | parser_impl::parse_with(yellow::GreenBuilder::new(), text, &tokens, grammar::root); |
66 | SourceFile::new(green, errors) | 67 | SourceFile::new(green, errors) |
67 | } | 68 | } |
69 | |||
68 | pub fn reparse(&self, edit: &AtomTextEdit) -> TreeArc<SourceFile> { | 70 | pub fn reparse(&self, edit: &AtomTextEdit) -> TreeArc<SourceFile> { |
69 | self.incremental_reparse(edit) | 71 | self.incremental_reparse(edit) |
70 | .unwrap_or_else(|| self.full_reparse(edit)) | 72 | .unwrap_or_else(|| self.full_reparse(edit)) |
71 | } | 73 | } |
74 | |||
72 | pub fn incremental_reparse(&self, edit: &AtomTextEdit) -> Option<TreeArc<SourceFile>> { | 75 | pub fn incremental_reparse(&self, edit: &AtomTextEdit) -> Option<TreeArc<SourceFile>> { |
73 | reparsing::incremental_reparse(self.syntax(), edit, self.errors()) | 76 | reparsing::incremental_reparse(self.syntax(), edit, self.errors()) |
74 | .map(|(green_node, errors)| SourceFile::new(green_node, errors)) | 77 | .map(|(green_node, errors)| SourceFile::new(green_node, errors)) |
75 | } | 78 | } |
79 | |||
76 | fn full_reparse(&self, edit: &AtomTextEdit) -> TreeArc<SourceFile> { | 80 | fn full_reparse(&self, edit: &AtomTextEdit) -> TreeArc<SourceFile> { |
77 | let text = edit.apply(self.syntax().text().to_string()); | 81 | let text = edit.apply(self.syntax().text().to_string()); |
78 | SourceFile::parse(&text) | 82 | SourceFile::parse(&text) |
79 | } | 83 | } |
84 | |||
80 | pub fn errors(&self) -> Vec<SyntaxError> { | 85 | pub fn errors(&self) -> Vec<SyntaxError> { |
81 | let mut errors = self.syntax.root_data().clone(); | 86 | let mut errors = self.syntax.root_data().clone(); |
82 | errors.extend(validation::validate(self)); | 87 | errors.extend(validation::validate(self)); |