Skip to content

Commit ec313ed

Browse files
authored
Refactor accessors (#444)
- **Fix**
1 parent b538d3e commit ec313ed

File tree

6 files changed

+25
-44
lines changed

6 files changed

+25
-44
lines changed

macro/src/dialect/generation.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,21 @@ pub fn generate_operation(operation: &Operation) -> Result<TokenStream, Error> {
3131
.results()
3232
.enumerate()
3333
.map(|(index, result)| generate_result_accessor(result, index, operation.result_len()))
34-
.collect::<Result<Vec<_>, _>>()?;
34+
.collect::<Vec<_>>();
3535
let operand_accessors = operation
3636
.operands()
3737
.enumerate()
3838
.map(|(index, operand)| generate_operand_accessor(operand, index, operation.operand_len()))
39-
.collect::<Result<Vec<_>, _>>()?;
39+
.collect::<Vec<_>>();
4040
let region_accessors = operation
4141
.regions()
4242
.enumerate()
43-
.map(|(index, region)| generate_region_accessor(index, region))
43+
.map(|(index, region)| generate_region_accessor(region, index))
4444
.collect::<Vec<_>>();
4545
let successor_accessors = operation
4646
.successors()
4747
.enumerate()
48-
.map(|(index, region)| generate_successor_accessor(index, region))
48+
.map(|(index, region)| generate_successor_accessor(region, index))
4949
.collect::<Vec<_>>();
5050
let attribute_accessors = operation
5151
.attributes()

macro/src/dialect/generation/element_accessor.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ pub fn generate_element_getter(
1616
let count = Ident::new(&format!("{singular_kind}_count"), Span::call_site());
1717
let name = field.name();
1818

19-
match field.variadic_kind() {
19+
let body = match field.variadic_kind() {
2020
VariadicKind::Simple { unfixed_seen } => {
2121
if field.is_optional() {
2222
// Optional element, and some singular elements.
@@ -110,5 +110,14 @@ pub fn generate_element_getter(
110110
#get_elements
111111
}
112112
}
113+
};
114+
115+
let identifier = field.singular_identifier();
116+
let return_type = field.return_type();
117+
118+
quote! {
119+
pub fn #identifier(&self) -> #return_type {
120+
#body
121+
}
113122
}
114123
}
Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,14 @@
11
use super::element_accessor::generate_element_getter;
2-
use crate::dialect::{
3-
error::Error,
4-
operation::{Operand, OperationField},
5-
};
2+
use crate::dialect::operation::Operand;
63
use proc_macro2::{Ident, Span, TokenStream};
7-
use quote::quote;
84

9-
pub fn generate_operand_accessor(
10-
field: &Operand,
11-
index: usize,
12-
length: usize,
13-
) -> Result<TokenStream, Error> {
14-
let ident = field.singular_identifier();
15-
let return_type = field.return_type();
16-
let body = generate_element_getter(
17-
field,
5+
pub fn generate_operand_accessor(operand: &Operand, index: usize, length: usize) -> TokenStream {
6+
generate_element_getter(
7+
operand,
188
"operand",
199
"operands",
2010
&Ident::new("OperandNotFound", Span::call_site()),
2111
index,
2212
length,
23-
);
24-
25-
Ok(quote! {
26-
pub fn #ident(&self) -> #return_type {
27-
#body
28-
}
29-
})
13+
)
3014
}

macro/src/dialect/generation/region_accessor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::dialect::operation::{OperationField, Region};
22
use proc_macro2::TokenStream;
33
use quote::quote;
44

5-
pub fn generate_region_accessor(index: usize, region: &Region) -> TokenStream {
5+
pub fn generate_region_accessor(region: &Region, index: usize) -> TokenStream {
66
let identifier = &region.singular_identifier();
77
let return_type = &region.return_type();
88
let body = if region.is_variadic() {
Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,18 @@
11
use super::element_accessor::generate_element_getter;
2-
use crate::dialect::{
3-
error::Error,
4-
operation::{OperationField, OperationResult},
5-
};
2+
use crate::dialect::operation::OperationResult;
63
use proc_macro2::{Ident, Span, TokenStream};
7-
use quote::quote;
84

95
pub fn generate_result_accessor(
106
result: &OperationResult,
117
index: usize,
128
length: usize,
13-
) -> Result<TokenStream, Error> {
14-
let identifier = result.singular_identifier();
15-
let return_type = result.return_type();
16-
let body = generate_element_getter(
9+
) -> TokenStream {
10+
generate_element_getter(
1711
result,
1812
"result",
1913
"results",
2014
&Ident::new("ResultNotFound", Span::call_site()),
2115
index,
2216
length,
23-
);
24-
25-
Ok(quote! {
26-
pub fn #identifier(&self) -> #return_type {
27-
#body
28-
}
29-
})
17+
)
3018
}

macro/src/dialect/generation/successor_accessor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::dialect::operation::{OperationField, Successor};
22
use proc_macro2::TokenStream;
33
use quote::quote;
44

5-
pub fn generate_successor_accessor(index: usize, successor: &Successor) -> TokenStream {
5+
pub fn generate_successor_accessor(successor: &Successor, index: usize) -> TokenStream {
66
let identifier = successor.singular_identifier();
77
let return_type = successor.return_type();
88
let body = if successor.is_variadic() {

0 commit comments

Comments
 (0)