fix semantic analysis to allow assignment to indexed identifier

This commit is contained in:
Moritz Hölting 2025-08-13 18:55:47 +02:00
parent e0c3253ab6
commit bd8270bd5d
1 changed files with 11 additions and 1 deletions

View File

@ -393,12 +393,22 @@ impl Assignment {
if let Some(variable_type) = variable_type { if let Some(variable_type) = variable_type {
let expected = match variable_type { let expected = match variable_type {
VariableType::BooleanStorage | VariableType::Tag => ValueType::Boolean, VariableType::BooleanStorage => ValueType::Boolean,
VariableType::ScoreboardValue => ValueType::Integer, VariableType::ScoreboardValue => ValueType::Integer,
VariableType::ComptimeValue => { VariableType::ComptimeValue => {
// TODO: check if the expression is a constant expression // TODO: check if the expression is a constant expression
return Ok(()); return Ok(());
} }
VariableType::BooleanStorageArray | VariableType::Tag
if matches!(self.destination(), AssignmentDestination::Indexed(..)) =>
{
ValueType::Boolean
}
VariableType::Scoreboard | VariableType::ScoreboardArray
if matches!(self.destination(), AssignmentDestination::Indexed(..)) =>
{
ValueType::Integer
}
_ => { _ => {
let err = error::Error::AssignmentError(AssignmentError { let err = error::Error::AssignmentError(AssignmentError {
identifier: self.destination().span(), identifier: self.destination().span(),