Skip to content

Commit 3f8c6d3

Browse files
committed
address Tess' feedback
1 parent 3bf8fbe commit 3f8c6d3

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

dsc/tests/dsc_expressions.tests.ps1

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ Describe 'Expressions tests' {
55
It 'Accessors work: <text>' -TestCases @(
66
@{ text = "[parameters('test').hello]"; expected = '@{world=there}' }
77
@{ text = "[parameters('test').hello.world]"; expected = 'there' }
8+
@{ text = "[parameters('test').array[0]]"; expected = 'one' }
9+
@{ text = "[parameters('test').array[1][1]]"; expected = 'three' }
10+
@{ text = "[parameters('test').objectArray[0].name]"; expected = 'one' }
11+
@{ text = "[parameters('test').objectArray[1].value[0]]"; expected = '2' }
12+
@{ text = "[parameters('test').objectArray[1].value[1].name]"; expected = 'three' }
813
) {
914
param($text, $expected)
1015
$yaml = @"

dsc_lib/src/parser/expressions.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -120,20 +120,16 @@ impl Expression {
120120
for accessor in &self.accessors {
121121
match accessor {
122122
Accessor::Member(member) => {
123-
if !value.is_object() {
124-
return Err(DscError::Parser("Member access on non-object value".to_string()));
125-
}
126123
if let Some(object) = value.as_object() {
127124
if !object.contains_key(member) {
128125
return Err(DscError::Parser(format!("Member '{member}' not found")));
129126
}
130127
value = object[member].clone();
128+
} else {
129+
return Err(DscError::Parser("Member access on non-object value".to_string()));
131130
}
132131
},
133132
Accessor::Index(index) => {
134-
if !value.is_array() {
135-
return Err(DscError::Parser("Index access on non-array value".to_string()));
136-
}
137133
if let Some(array) = value.as_array() {
138134
if !index.is_number() {
139135
return Err(DscError::Parser("Index is not a number".to_string()));
@@ -146,6 +142,8 @@ impl Expression {
146142
return Err(DscError::Parser("Index out of bounds".to_string()));
147143
}
148144
value = array[index].clone();
145+
} else {
146+
return Err(DscError::Parser("Index access on non-array value".to_string()));
149147
}
150148
},
151149
}

0 commit comments

Comments
 (0)