V8004. The use of 'if A {...} else if A {...}' pattern was detected. Potential logical error is present.
Анализатор обнаружил потенциально возможную ошибку в конструкции, состоящей из условных инструкций. Ошибка заключается в повторяющихся условиях if. Это может привести к тому, что код внутри тел таких операторов будет недостижим.
Рассмотрим пример:
const (
MONDAY = "Monday"
TUESDAY = "Tuesday"
WEDNESDAY = "Wednesday"
THURSDAY = "Thursday"
FRIDAY = "Friday"
)
if day == MONDAY {
....
} else if day == TUESDAY {
....
} else if day == WEDNESDAY {
....
} else if day == THURSDAY {
....
} else if day == MONDAY {
....
}
В данном примере имеются две конструкции if с одинаковым условием. Если поток управления достигнет второго условия, то оно всегда будет вычисляться как false, и весь код в соответствующей ветке будет недостижим.
Корректный код может выглядеть следующим образом:
if day == MONDAY {
....
} else if day == TUESDAY {
....
} else if day == WEDNESDAY {
....
} else if day == THURSDAY {
} else if day == FRIDAY {
....
}