Skip to content

Commit 9121663

Browse files
Rename ListMemberAccess to MemberAccess
1 parent 43b0560 commit 9121663

2 files changed

Lines changed: 35 additions & 35 deletions

File tree

src/utils/helpers.rs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,21 @@ pub fn resolve_expression(expr: &Expression, state: &mut State) -> Value {
3636
};
3737
Value::Closure(Box::new(Callable::Function(closure)))
3838
}
39-
Expression::ListMemberAccess { list, index } => {
40-
let index = resolve_expression(index, state);
41-
let list = resolve_expression(list, state);
42-
if let Value::List(list) = list {
43-
if let Value::Number(index) = index {
44-
if index >= 0.0 && index < list.len() as f32 {
45-
return list[index as usize].clone();
39+
Expression::MemberAccess { object, key } => {
40+
let key = resolve_expression(key, state);
41+
let object = resolve_expression(object, state);
42+
if let Value::List(list) = object {
43+
if let Value::Number(key) = key {
44+
if key >= 0.0 && key < list.len() as f32 {
45+
return list[key as usize].clone();
4646
} else {
4747
return Value::Null;
4848
}
4949
} else {
5050
return Value::Null;
5151
}
52-
} else if let Value::Object(object) = list {
53-
if let Value::String(ref key) = index {
52+
} else if let Value::Object(object) = object {
53+
if let Value::String(ref key) = key {
5454
if let Some(value) = object.get(key) {
5555
return value.clone();
5656
} else {
@@ -209,10 +209,10 @@ pub fn assign_expression(expr: &Expression, value: Value, state: &mut State, is_
209209
}
210210
Ok(())
211211
}
212-
Expression::ListMemberAccess { list, index } => {
213-
let index_val = resolve_expression(index, state);
214-
let list = get_mut_container(list, state, is_global)?;
215-
match (list, index_val) {
212+
Expression::MemberAccess { object, key } => {
213+
let key_val = resolve_expression(key, state);
214+
let object = get_mut_container(object, state, is_global)?;
215+
match (object, key_val) {
216216
(Value::List(list), Value::Number(idx)) => { list[idx as usize] = value; Ok(()) }
217217
(Value::Object(obj), Value::String(s)) => {
218218
obj.insert(s.clone(), value);
@@ -635,10 +635,10 @@ fn get_mut_container<'a>(
635635
}
636636
}
637637

638-
Expression::ListMemberAccess { list, index } => {
639-
let index_val = crate::utils::resolve_expression(index, state); // resolve key first
640-
let container = get_mut_container(list, state, is_global)?; // now borrow mutable
641-
match (container, index_val) {
638+
Expression::MemberAccess { object, key } => {
639+
let key_val = crate::utils::resolve_expression(key, state); // resolve key first
640+
let container = get_mut_container(object, state, is_global)?; // now borrow mutable
641+
match (container, key_val) {
642642
(Value::List(list), Value::Number(idx)) => {
643643
let idx = idx as usize;
644644
if idx >= list.len() {

src/utils/language/parser.rs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ pub enum Expression {
1111
body: Vec<Statement>,
1212
returns: Box<Expression>,
1313
},
14-
ListMemberAccess {
15-
list: Box<Expression>,
16-
index: Box<Expression>,
14+
MemberAccess {
15+
object: Box<Expression>,
16+
key: Box<Expression>,
1717
},
1818
Identifier(String),
1919
PostIncrement(String),
@@ -59,8 +59,8 @@ impl std::fmt::Display for Expression {
5959
let args_str = args.join(", ");
6060
write!(f, "({}) {} {{ ... }}", args_str, returns.to_string())
6161
}
62-
Expression::ListMemberAccess { list, index } => {
63-
write!(f, "{}[{}]", list.to_string(), index.to_string())
62+
Expression::MemberAccess { object, key } => {
63+
write!(f, "{}[{}]", object.to_string(), key.to_string())
6464
}
6565
Expression::Identifier(id) => write!(f, "ID[{}]", id),
6666
Expression::PostIncrement(id) => write!(f, "{}++", id),
@@ -624,33 +624,33 @@ impl Parser {
624624
}
625625

626626
fn parse_bracket_access(&mut self, base: Expression) -> Result<Expression, String> {
627-
let index = self.parse_binary(0)?;
627+
let key = self.parse_binary(0)?;
628628
if !self.eat(&TokenType::Symbol("]".to_string())) {
629629
return Err(format!(
630630
"Expected ']' after list member access at {}:{}",
631631
self.peek().line, self.peek().column
632632
));
633633
}
634-
Ok(Expression::ListMemberAccess {
635-
list: Box::new(base),
636-
index: Box::new(index),
634+
Ok(Expression::MemberAccess {
635+
object: Box::new(base),
636+
key: Box::new(key),
637637
})
638638
}
639639

640640
fn parse_dot_access(&mut self, base: Expression) -> Result<Expression, String> {
641-
let index = self.parse_primary()?;
642-
match index {
643-
Expression::Identifier(index_name) => Ok(Expression::ListMemberAccess {
644-
list: Box::new(base),
645-
index: Box::new(Expression::Value(Value::String(index_name))),
641+
let key = self.parse_primary()?;
642+
match key {
643+
Expression::Identifier(key_name) => Ok(Expression::MemberAccess {
644+
object: Box::new(base),
645+
key: Box::new(Expression::Value(Value::String(key_name))),
646646
}),
647-
Expression::Value(Value::Number(num)) => Ok(Expression::ListMemberAccess {
648-
list: Box::new(base),
649-
index: Box::new(Expression::Value(Value::Number(num))),
647+
Expression::Value(Value::Number(num)) => Ok(Expression::MemberAccess {
648+
object: Box::new(base),
649+
key: Box::new(Expression::Value(Value::Number(num))),
650650
}),
651651
_ => Err(format!(
652652
"Expected identifier or number after '.' but got {:?} at {}:{}",
653-
index, self.peek().line, self.peek().column
653+
key, self.peek().line, self.peek().column
654654
)),
655655
}
656656
}

0 commit comments

Comments
 (0)