Skip to content

Commit a5fb950

Browse files
srawlinsCommit Queue
authored and
Commit Queue
committed
DAS: Move CorrectionUtils.indentLeft and indentRight near their call sites
Cq-Include-Trybots: luci.dart.try:flutter-analyze-try,analyzer-win-release-try,pkg-win-release-try Bug: #53402 Change-Id: Id62b06f3419820d4a74b34b51a6022792bcef7ab Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/363404 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Samuel Rawlins <[email protected]>
1 parent 82d5407 commit a5fb950

File tree

3 files changed

+48
-47
lines changed

3 files changed

+48
-47
lines changed

pkg/analysis_server/lib/src/services/correction/dart/convert_to_switch_expression.dart

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,21 @@ class ConvertToSwitchExpression extends ResolvedCorrectionProducer {
270270
return deletion;
271271
}
272272

273+
/// Adds [level] indents to each line.
274+
String indentRight(String text, {int level = 1}) {
275+
var buffer = StringBuffer();
276+
var indent = utils.oneIndent * level;
277+
var eol = utils.endOfLine;
278+
var lines = text.split(eol);
279+
for (var line in lines) {
280+
if (buffer.isNotEmpty) {
281+
buffer.write(eol);
282+
}
283+
buffer.write('$indent$line');
284+
}
285+
return buffer.toString();
286+
}
287+
273288
bool isEffectivelyExhaustive(SwitchStatement node, DartType? expressionType) {
274289
if (expressionType == null) return false;
275290
if ((typeSystem as TypeSystemImpl).isAlwaysExhaustive(expressionType)) {
@@ -420,7 +435,7 @@ class ConvertToSwitchExpression extends ResolvedCorrectionProducer {
420435

421436
switch (indentation) {
422437
case _IndentationFullFirstRightAll():
423-
var indentedText = utils.indentRight(
438+
var indentedText = indentRight(
424439
nextLinePrefix + text,
425440
level: indentation.level,
426441
);

pkg/analysis_server/lib/src/services/correction/dart/remove_comparison.dart

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,33 @@ class RemoveComparison extends ResolvedCorrectionProducer {
8686
}
8787
}
8888

89+
/// Splits [text] into lines, and removes one level of indent from each line.
90+
///
91+
/// Lines that don't start with indentation are left as is.
92+
String indentLeft(String text) {
93+
var buffer = StringBuffer();
94+
var indent = utils.oneIndent;
95+
var eol = utils.endOfLine;
96+
var lines = text.split(eol);
97+
for (var line in lines) {
98+
if (buffer.isNotEmpty) {
99+
buffer.write(eol);
100+
}
101+
String updatedLine;
102+
if (line.startsWith(indent)) {
103+
updatedLine = line.substring(indent.length);
104+
} else {
105+
updatedLine = line;
106+
}
107+
buffer.write(updatedLine);
108+
}
109+
return buffer.toString();
110+
}
111+
89112
Future<void> _ifElement(IfElement node, ChangeBuilder builder) async {
90113
Future<void> replaceWithElement(CollectionElement element) async {
91114
var text = _textWithLeadingComments(element);
92-
var unIndented = utils.indentLeft(text);
115+
var unIndented = indentLeft(text);
93116
await builder.addDartFileEdit(file, (builder) {
94117
builder.addSimpleReplacement(range.node(node), unIndented);
95118
});
@@ -123,7 +146,7 @@ class RemoveComparison extends ResolvedCorrectionProducer {
123146
),
124147
),
125148
);
126-
var unIndented = utils.indentLeft(text);
149+
var unIndented = indentLeft(text);
127150
await builder.addDartFileEdit(file, (builder) {
128151
builder.addSimpleReplacement(
129152
utils.getLinesRangeStatements([node]),
@@ -134,7 +157,7 @@ class RemoveComparison extends ResolvedCorrectionProducer {
134157

135158
Future<void> replaceWithStatement(Statement replacement) async {
136159
var text = _textWithLeadingComments(replacement);
137-
var unIndented = utils.indentLeft(text);
160+
var unIndented = indentLeft(text);
138161
await builder.addDartFileEdit(file, (builder) {
139162
builder.addSimpleReplacement(range.node(node), unIndented);
140163
});

pkg/analysis_server/lib/src/services/correction/util.dart

Lines changed: 6 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -393,14 +393,14 @@ final class CorrectionUtils {
393393

394394
static const String _twoIndents = _oneIndent + _oneIndent;
395395

396-
final CompilationUnit unit;
396+
final CompilationUnit _unit;
397397

398398
final String _buffer;
399399

400400
String? _endOfLine;
401401

402402
CorrectionUtils(ParsedUnitResult result)
403-
: unit = result.unit,
403+
: _unit = result.unit,
404404
_buffer = result.content;
405405

406406
/// The EOL sequence to use for this [CompilationUnit].
@@ -426,7 +426,7 @@ final class CorrectionUtils {
426426
String get twoIndents => _twoIndents;
427427

428428
/// Returns the [AstNode] that encloses the given offset.
429-
AstNode? findNode(int offset) => NodeLocator(offset).searchWithin(unit);
429+
AstNode? findNode(int offset) => NodeLocator(offset).searchWithin(_unit);
430430

431431
/// Skips whitespace characters and single EOL on the right from [index].
432432
///
@@ -524,7 +524,7 @@ final class CorrectionUtils {
524524
// end
525525
var endOffset = sourceRange.end;
526526
var afterEndLineOffset = endOffset;
527-
var lineInfo = unit.lineInfo;
527+
var lineInfo = _unit.lineInfo;
528528
var lineStart = lineInfo
529529
.getOffsetOfLine(lineInfo.getLocation(startLineOffset).lineNumber - 1);
530530
if (lineStart == startLineOffset) {
@@ -597,43 +597,6 @@ final class CorrectionUtils {
597597
return _buffer.substring(offset, offset + length);
598598
}
599599

600-
/// Splits [text] into lines, and removes one level of indent from each line.
601-
/// Lines that don't start with indentation are left as is.
602-
String indentLeft(String text) {
603-
var buffer = StringBuffer();
604-
var indent = oneIndent;
605-
var eol = endOfLine;
606-
var lines = text.split(eol);
607-
for (var line in lines) {
608-
if (buffer.isNotEmpty) {
609-
buffer.write(eol);
610-
}
611-
String updatedLine;
612-
if (line.startsWith(indent)) {
613-
updatedLine = line.substring(indent.length);
614-
} else {
615-
updatedLine = line;
616-
}
617-
buffer.write(updatedLine);
618-
}
619-
return buffer.toString();
620-
}
621-
622-
/// Adds [level] indents to each line.
623-
String indentRight(String text, {int level = 1}) {
624-
var buffer = StringBuffer();
625-
var indent = _oneIndent * level;
626-
var eol = endOfLine;
627-
var lines = text.split(eol);
628-
for (var line in lines) {
629-
if (buffer.isNotEmpty) {
630-
buffer.write(eol);
631-
}
632-
buffer.write('$indent$line');
633-
}
634-
return buffer.toString();
635-
}
636-
637600
/// Indents given source left or right.
638601
String indentSourceLeftRight(String source, {bool indentLeft = true}) {
639602
var sb = StringBuffer();
@@ -682,7 +645,7 @@ final class CorrectionUtils {
682645
// prepare STRING token ranges
683646
var lineRanges = <SourceRange>[];
684647
{
685-
var tokens = TokenUtils.getTokens(source, unit.featureSet);
648+
var tokens = TokenUtils.getTokens(source, _unit.featureSet);
686649
for (var token in tokens) {
687650
if (token.type == TokenType.STRING) {
688651
lineRanges.add(range.token(token));
@@ -838,7 +801,7 @@ final class CorrectionUtils {
838801
return true;
839802
}
840803
// may be comment
841-
return TokenUtils.getTokens(trimmedText, unit.featureSet).isEmpty;
804+
return TokenUtils.getTokens(trimmedText, _unit.featureSet).isEmpty;
842805
}
843806

844807
/// Return `true` if [selection] covers [range] and there are any

0 commit comments

Comments
 (0)