in lib/src/rules/prefer_contains.dart [95:134]
void _checkConstant(Expression expression, int value, TokenType type) {
if (value == -1) {
if (type == TokenType.EQ_EQ ||
type == TokenType.BANG_EQ ||
type == TokenType.LT_EQ ||
type == TokenType.GT) {
rule.reportLint(expression,
errorCode: PreferContainsOverIndexOf.useContains);
} else if (type == TokenType.LT) {
// indexOf < -1 is always false
rule.reportLint(expression,
errorCode: PreferContainsOverIndexOf.alwaysFalse);
} else if (type == TokenType.GT_EQ) {
// indexOf >= -1 is always true
rule.reportLint(expression,
errorCode: PreferContainsOverIndexOf.alwaysTrue);
}
} else if (value == 0) {
// 'indexOf >= 0' is same as 'contains',
// and 'indexOf < 0' is same as '!contains'
if (type == TokenType.GT_EQ || type == TokenType.LT) {
rule.reportLint(expression,
errorCode: PreferContainsOverIndexOf.useContains);
}
} else if (value < -1) {
// 'indexOf' is always >= -1, so comparing with lesser values makes
// no sense.
if (type == TokenType.EQ_EQ ||
type == TokenType.LT_EQ ||
type == TokenType.LT) {
rule.reportLint(expression,
errorCode: PreferContainsOverIndexOf.alwaysFalse);
} else if (type == TokenType.BANG_EQ ||
type == TokenType.GT_EQ ||
type == TokenType.GT) {
rule.reportLint(expression,
errorCode: PreferContainsOverIndexOf.alwaysTrue);
}
}
}