trim method
Trim the contents of the Statement.
This is only relevant for compound Statements, such as ForLoopStatement.
Non-compound statements, e.g., VariableDeclarationStatement, simply return themselves.
Implementation
@override
(ForLoopStatement?, int) trim(int remaining) {
if (remaining <= 0) {
return (null, 0);
} else {
// For loop statement itself consumes 1
remaining--;
Statement? trimmedInitStatement;
if (initStatement != null && remaining > 0) {
trimmedInitStatement = initStatement;
remaining--;
}
List<Statement> trimmedBodyStatements = [];
for (final statement in bodyStatements) {
final trimmedStatementResult = statement.trim(remaining);
remaining = trimmedStatementResult.$2;
if (trimmedStatementResult.$1 != null) {
trimmedBodyStatements.add(trimmedStatementResult.$1!);
}
if (remaining <= 0) {
break;
}
}
Statement? trimmedPostStatement;
if (postStatement != null && remaining > 0) {
trimmedPostStatement = postStatement;
remaining--;
}
return (
ForLoopStatement.init(
trimmedInitStatement,
condition,
trimmedPostStatement,
trimmedBodyStatements,
),
remaining,
);
}
}