diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2020-02-18 12:57:26 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2020-02-18 12:57:26 +0000 |
commit | c447fe9bc06006a7080da782cf67d739c91b534c (patch) | |
tree | 45cbc9578b24437da3eedc6a234784be22b1f38c /crates/ra_ide/src/diagnostics.rs | |
parent | 742459c8fe08e359ae380e3e1dc0d059c0b4f871 (diff) | |
parent | 053ccf4121797e4e559e3225d46d3f23cb1ad70b (diff) |
Merge #3026
3026: ra_syntax: reshape SyntaxError for the sake of removing redundancy r=matklad a=Veetaha
Followup of #2911, also puts some crosses to the todo list of #223.
**AHTUNG!** A big part of the diff of this PR are test data files changes.
Simplified `SyntaxError` that was `SyntaxError { kind: { /* big enum */ }, location: Location }` to `SyntaxError(String, TextRange)`. I am not sure whether the tuple struct here is best fit, I am inclined to add names to the fields, because I already provide getters `SyntaxError::message()`, `SyntaxError::range()`.
I also removed `Location` altogether ...
This is currently WIP, because the following is not done:
- [ ] ~~Add tests to `test_data` dir for unescape errors *// I don't know where to put these errors in particular, because they are out of the scope of the lexer and parser. However, I have an idea in mind that we move all validators we have right now to parsing stage, but this is up to discussion...*~~ **[UPD]** I came to a conclusion that tree validation logic, which unescape errors are a part of, should be rethought of, we currently have no tests and no place to put tests for tree validations. So I'd like to extract potential redesign (maybe move of tree validation to ra_parser) and adding tests for this into a separate task.
Co-authored-by: Veetaha <[email protected]>
Co-authored-by: Veetaha <[email protected]>
Diffstat (limited to 'crates/ra_ide/src/diagnostics.rs')
-rw-r--r-- | crates/ra_ide/src/diagnostics.rs | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/crates/ra_ide/src/diagnostics.rs b/crates/ra_ide/src/diagnostics.rs index 22bd49723..82596c665 100644 --- a/crates/ra_ide/src/diagnostics.rs +++ b/crates/ra_ide/src/diagnostics.rs | |||
@@ -10,7 +10,7 @@ use ra_prof::profile; | |||
10 | use ra_syntax::{ | 10 | use ra_syntax::{ |
11 | algo, | 11 | algo, |
12 | ast::{self, make, AstNode}, | 12 | ast::{self, make, AstNode}, |
13 | Location, SyntaxNode, TextRange, T, | 13 | SyntaxNode, TextRange, T, |
14 | }; | 14 | }; |
15 | use ra_text_edit::{TextEdit, TextEditBuilder}; | 15 | use ra_text_edit::{TextEdit, TextEditBuilder}; |
16 | 16 | ||
@@ -29,7 +29,7 @@ pub(crate) fn diagnostics(db: &RootDatabase, file_id: FileId) -> Vec<Diagnostic> | |||
29 | let mut res = Vec::new(); | 29 | let mut res = Vec::new(); |
30 | 30 | ||
31 | res.extend(parse.errors().iter().map(|err| Diagnostic { | 31 | res.extend(parse.errors().iter().map(|err| Diagnostic { |
32 | range: location_to_range(err.location()), | 32 | range: err.range(), |
33 | message: format!("Syntax Error: {}", err), | 33 | message: format!("Syntax Error: {}", err), |
34 | severity: Severity::Error, | 34 | severity: Severity::Error, |
35 | fix: None, | 35 | fix: None, |
@@ -116,12 +116,6 @@ pub(crate) fn diagnostics(db: &RootDatabase, file_id: FileId) -> Vec<Diagnostic> | |||
116 | drop(sink); | 116 | drop(sink); |
117 | res.into_inner() | 117 | res.into_inner() |
118 | } | 118 | } |
119 | fn location_to_range(location: Location) -> TextRange { | ||
120 | match location { | ||
121 | Location::Offset(offset) => TextRange::offset_len(offset, 1.into()), | ||
122 | Location::Range(range) => range, | ||
123 | } | ||
124 | } | ||
125 | 119 | ||
126 | fn check_unnecessary_braces_in_use_statement( | 120 | fn check_unnecessary_braces_in_use_statement( |
127 | acc: &mut Vec<Diagnostic>, | 121 | acc: &mut Vec<Diagnostic>, |