diff --git a/reid/src/ast/parse.rs b/reid/src/ast/parse.rs index d1713b3..40d58ce 100644 --- a/reid/src/ast/parse.rs +++ b/reid/src/ast/parse.rs @@ -425,11 +425,21 @@ impl Parse for VariableReference { stream.get_range().unwrap(), ); - while let Ok(ArrayValueIndex(idx)) = stream.parse() { - var_ref = VariableReference( - VariableReferenceKind::ArrayIndex(Box::new(var_ref), idx), - stream.get_range().unwrap(), - ); + while let Ok(val) = stream.parse::() { + match val { + ValueIndex::Array(ArrayValueIndex(idx)) => { + var_ref = VariableReference( + VariableReferenceKind::ArrayIndex(Box::new(var_ref), idx), + stream.get_range().unwrap(), + ); + } + ValueIndex::Struct(StructValueIndex(name)) => { + var_ref = VariableReference( + VariableReferenceKind::StructIndex(Box::new(var_ref), name), + stream.get_range().unwrap(), + ); + } + } } Ok(var_ref)