Skip to content

Commit 7bd3ce0

Browse files
committed
refactor: Made fields of TypedName private
1 parent 28abe63 commit 7bd3ce0

11 files changed

Lines changed: 59 additions & 56 deletions

File tree

rusty_basic/src/instruction_generator/dim.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,7 @@ impl InstructionGenerator {
5555
}
5656

5757
fn generate_dim_name(&mut self, dim_name: DimVar, shared: bool, pos: Position) {
58-
let DimVar {
59-
bare_name,
60-
var_type: dim_type,
61-
} = dim_name;
58+
let (bare_name, dim_type) = dim_name.into();
6259
match dim_type {
6360
DimType::Array(array_dimensions, box_element_type) => {
6461
self.push(Instruction::BeginCollectArguments, pos);

rusty_basic/src/interpreter/variables.rs

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,7 @@ impl Variables {
5959
}
6060

6161
fn param_to_name(param_name: Parameter) -> Name {
62-
let Parameter {
63-
bare_name,
64-
var_type: param_type,
65-
} = param_name;
62+
let (bare_name, param_type) = param_name.into();
6663
match param_type {
6764
ParamType::Bare => panic!("Unresolved param {:?}", bare_name),
6865
ParamType::BuiltIn(q, _) => Name::Qualified(bare_name, q),
@@ -79,10 +76,7 @@ impl Variables {
7976
}
8077

8178
pub fn insert_dim(&mut self, dim_name: DimVar, value: Variant) {
82-
let DimVar {
83-
bare_name,
84-
var_type: dim_type,
85-
} = dim_name;
79+
let (bare_name, dim_type) = dim_name.into();
8680
self.insert_dim_internal(bare_name, dim_type, value);
8781
}
8882

@@ -177,7 +171,7 @@ impl Variables {
177171
}
178172

179173
pub fn get_by_dim_name(&self, dim_name: &DimVar) -> Option<&Variant> {
180-
self.get_by_dim_name_internal(&dim_name.bare_name, &dim_name.var_type)
174+
self.get_by_dim_name_internal(dim_name.bare_name(), dim_name.var_type())
181175
}
182176

183177
fn get_by_dim_name_internal(

rusty_common/src/positioned.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,14 @@ impl<T> Positioned<T> {
2828
pos,
2929
}
3030
}
31+
32+
pub fn try_map<F, U, E>(self, op: F) -> Result<Positioned<U>, E>
33+
where
34+
F: FnOnce(T) -> Result<U, E>,
35+
{
36+
let Self { element, pos } = self;
37+
op(element).map(|new_element| Positioned::new(new_element, pos))
38+
}
3139
}
3240

3341
// AtPos

rusty_linter/src/converter/dim_rules/dim_rules.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,7 @@ impl ConvertibleIn<DimNameState> for DimVar {
3535
validation::validate(&self, ctx, extra.pos)?;
3636
let shared = extra.shared;
3737
shared_illegal_in_sub_function(ctx, shared, extra.pos)?;
38-
let Self {
39-
bare_name,
40-
var_type,
41-
} = self;
38+
let (bare_name, var_type) = self.into();
4239
let (var_type, redim_info) = if extra.dim_context == DimContext::Redim {
4340
on_redim_type(var_type, &bare_name, ctx, extra)?
4441
} else {

rusty_linter/src/converter/dim_rules/param_rules.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,7 @@ use rusty_parser::Parameter;
99
impl ConvertibleIn<Position> for Parameter {
1010
fn convert_in(self, ctx: &mut Context, pos: Position) -> Result<Self, LintErrorPos> {
1111
validation::validate(&self, ctx, pos)?;
12-
let Self {
13-
bare_name,
14-
var_type,
15-
} = self;
12+
let (bare_name, var_type) = self.into();
1613
let var_type = on_param_type(var_type, &bare_name, ctx, pos)?;
1714
ctx.names.insert(bare_name.clone(), &var_type, false, None);
1815
Ok(Self::new(bare_name, var_type))

rusty_linter/src/converter/dim_rules/validation.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ fn cannot_clash_with_subs<T: VarType, C: HasSubprograms>(
2626
ctx: &C,
2727
pos: Position,
2828
) -> Result<(), LintErrorPos> {
29-
if ctx.subs().contains_key(&var_name.bare_name) {
29+
if ctx.subs().contains_key(var_name.bare_name()) {
3030
Err(LintError::DuplicateDefinition.at_pos(pos))
3131
} else {
3232
Ok(())
@@ -38,7 +38,7 @@ fn cannot_clash_with_local_constants<T: VarType>(
3838
ctx: &Context,
3939
pos: Position,
4040
) -> Result<(), LintErrorPos> {
41-
match ctx.names.names().get_const_value(&var_name.bare_name) {
41+
match ctx.names.names().get_const_value(var_name.bare_name()) {
4242
Some(_) => Err(LintError::DuplicateDefinition.at_pos(pos)),
4343
_ => Ok(()),
4444
}
@@ -55,7 +55,7 @@ impl CannotClashWithFunctions for DimVar {
5555
ctx: &Context,
5656
pos: Position,
5757
) -> Result<(), LintErrorPos> {
58-
if ctx.functions().contains_key(&self.bare_name) {
58+
if ctx.functions().contains_key(self.bare_name()) {
5959
Err(LintError::DuplicateDefinition.at_pos(pos))
6060
} else {
6161
Ok(())
@@ -69,15 +69,15 @@ impl CannotClashWithFunctions for Parameter {
6969
ctx: &Context,
7070
pos: Position,
7171
) -> Result<(), LintErrorPos> {
72-
if let Some(func_qualifier) = ctx.function_qualifier(&self.bare_name) {
73-
if self.var_type.is_extended() {
72+
if let Some(func_qualifier) = ctx.function_qualifier(self.bare_name()) {
73+
if self.var_type().is_extended() {
7474
Err(LintError::DuplicateDefinition.at_pos(pos))
7575
} else {
7676
// for some reason you can have a FUNCTION Add(Add)
7777
let q = self
78-
.var_type
78+
.var_type()
7979
.to_qualifier_recursively()
80-
.unwrap_or_else(|| self.bare_name.qualify(ctx));
80+
.unwrap_or_else(|| self.bare_name().qualify(ctx));
8181
if q == func_qualifier {
8282
Ok(())
8383
} else {
@@ -97,7 +97,7 @@ fn user_defined_type_must_exist<T>(
9797
where
9898
T: VarType,
9999
{
100-
match var_name.var_type.as_user_defined_recursively() {
100+
match var_name.var_type().as_user_defined_recursively() {
101101
Some(Positioned {
102102
element: type_name,
103103
pos,

rusty_linter/src/post_linter/dots_linter.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,13 @@ where
6565

6666
impl NoDotNamesCheck<Parameter, LintError> for DotsLinter {
6767
fn ensure_no_dots(&self, x: &Parameter) -> Result<(), LintError> {
68-
self.ensure_no_dots(&x.bare_name)
68+
self.ensure_no_dots(x.bare_name())
6969
}
7070
}
7171

7272
impl NoDotNamesCheck<DimVar, LintError> for DotsLinter {
7373
fn ensure_no_dots(&self, x: &DimVar) -> Result<(), LintError> {
74-
self.ensure_no_dots(&x.bare_name)
74+
self.ensure_no_dots(x.bare_name())
7575
}
7676
}
7777

@@ -224,8 +224,8 @@ where
224224
T: VarType,
225225
{
226226
fn visit(&mut self, element: &TypedName<T>) -> VisitResult {
227-
if element.var_type.as_user_defined_recursively().is_some() {
228-
self.user_defined_names.insert(element.bare_name.clone());
227+
if element.var_type().as_user_defined_recursively().is_some() {
228+
self.user_defined_names.insert(element.bare_name().clone());
229229
}
230230
Ok(())
231231
}

rusty_linter/src/post_linter/expression_reducer.rs

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -310,22 +310,8 @@ pub trait ExpressionReducer {
310310
}
311311

312312
fn visit_dim_var_pos(&mut self, dim_var_pos: DimVarPos) -> Result<DimVarPos, LintErrorPos> {
313-
let DimVarPos {
314-
element:
315-
DimVar {
316-
bare_name,
317-
var_type: dim_type,
318-
},
319-
pos,
320-
} = dim_var_pos;
321-
let converted_dim_type = self.visit_dim_type(dim_type)?;
322-
Ok(DimVarPos {
323-
element: DimVar {
324-
bare_name,
325-
var_type: converted_dim_type,
326-
},
327-
pos,
328-
})
313+
dim_var_pos
314+
.try_map(|dim_var| dim_var.try_map_type(|dim_type| self.visit_dim_type(dim_type)))
329315
}
330316

331317
fn visit_dim_type(&mut self, dim_type: DimType) -> Result<DimType, LintErrorPos> {

rusty_linter/src/pre_linter/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ impl MainContext {
150150
}
151151

152152
fn on_parameter(&self, parameter: &Parameter) -> Result<ResolvedParamType, LintError> {
153-
self.resolve_param_type(&parameter.bare_name, &parameter.var_type)
153+
self.resolve_param_type(parameter.bare_name(), parameter.var_type())
154154
}
155155

156156
fn resolve_param_type(

rusty_parser/src/specific/core/dim.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,10 @@ mod tests {
8080
pos,
8181
} = dim_list.variables.pop().unwrap();
8282
assert_eq!(pos, Position::new(1, 5));
83-
assert_eq!(dim_name.bare_name, var_name_bare);
84-
match dim_name.var_type {
83+
assert_eq!(*dim_name.bare_name(), var_name_bare);
84+
match dim_name.var_type() {
8585
DimType::UserDefined(Positioned { element, .. }) => {
86-
assert_eq!(element, var_type_bare);
86+
assert_eq!(*element, var_type_bare);
8787
}
8888
_ => panic!("Expected user defined type"),
8989
}

0 commit comments

Comments
 (0)