|
1 | 1 | use slang_solidity::cst::{NonterminalKind, Query, QueryMatch, TextRange};
|
2 | 2 |
|
3 | 3 | use crate::{
|
4 |
| - error::{Error, Result}, |
| 4 | + error::Result, |
5 | 5 | lint::{Diagnostic, ItemDiagnostics, ItemType},
|
6 | 6 | natspec::{NatSpec, NatSpecKind},
|
7 | 7 | };
|
8 | 8 |
|
9 | 9 | use super::{
|
10 |
| - capture, check_params, check_returns, extract_attributes, extract_comment, extract_params, |
11 |
| - extract_parent_name, Attributes, Definition, Identifier, Parent, Validate, ValidationOptions, |
12 |
| - Visibility, |
| 10 | + capture, capture_opt, check_params, check_returns, extract_attributes, extract_comment, |
| 11 | + extract_params, extract_parent_name, Attributes, Definition, Identifier, Parent, Validate, |
| 12 | + ValidationOptions, Visibility, |
13 | 13 | };
|
14 | 14 |
|
15 | 15 | /// A function definition
|
@@ -70,19 +70,12 @@ impl Validate for FunctionDefinition {
|
70 | 70 | }
|
71 | 71 |
|
72 | 72 | fn extract(m: QueryMatch) -> Result<Definition> {
|
73 |
| - let func = capture!(m, "function"); |
74 |
| - let keyword = capture!(m, "keyword"); |
75 |
| - let name = capture!(m, "function_name"); |
76 |
| - let params = capture!(m, "function_params"); |
77 |
| - let attributes = capture!(m, "function_attr"); |
78 |
| - let returns = match m |
79 |
| - .capture("function_returns") |
80 |
| - .map(|(_, mut captures)| captures.next()) |
81 |
| - { |
82 |
| - Some(Some(ret)) => Some(ret), |
83 |
| - Some(None) => None, |
84 |
| - _ => return Err(Error::UnknownError), |
85 |
| - }; |
| 73 | + let func = capture(&m, "function")?; |
| 74 | + let keyword = capture(&m, "keyword")?; |
| 75 | + let name = capture(&m, "function_name")?; |
| 76 | + let params = capture(&m, "function_params")?; |
| 77 | + let attributes = capture(&m, "function_attr")?; |
| 78 | + let returns = capture_opt(&m, "function_returns")?; |
86 | 79 |
|
87 | 80 | let span = if let Some(returns) = &returns {
|
88 | 81 | keyword.text_range().start..returns.text_range().end
|
|
0 commit comments