in lib/src/source_visitor.dart [1394:1432]
bool _fixSingleCascadeStatement(ExpressionStatement statement) {
var cascade = statement.expression as CascadeExpression;
if (cascade.cascadeSections.length != 1) return false;
var target = cascade.target;
if (target is AsExpression ||
target is AwaitExpression ||
target is BinaryExpression ||
target is ConditionalExpression ||
target is IsExpression ||
target is PostfixExpression ||
target is PrefixExpression) {
// In these cases, the cascade target needs to be parenthesized before
// removing the cascade, otherwise the semantics will change.
_fixCascadeByParenthesizingTarget(statement);
return true;
} else if (target is BooleanLiteral ||
target is FunctionExpression ||
target is IndexExpression ||
target is InstanceCreationExpression ||
target is IntegerLiteral ||
target is ListLiteral ||
target is NullLiteral ||
target is MethodInvocation ||
target is ParenthesizedExpression ||
target is PrefixedIdentifier ||
target is PropertyAccess ||
target is SimpleIdentifier ||
target is StringLiteral ||
target is ThisExpression) {
// OK to simply remove the cascade.
_removeCascade(statement);
return true;
} else {
// If we get here, some new syntax was added to the language that the fix
// does not yet support. Leave it as is.
return false;
}
}