Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(93)

Unified Diff: pkg/analysis_server/lib/src/services/correction/util.dart

Issue 1431673003: Compute covering offsets/lengths. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analysis_server/lib/src/services/correction/util.dart
diff --git a/pkg/analysis_server/lib/src/services/correction/util.dart b/pkg/analysis_server/lib/src/services/correction/util.dart
index a74488f0def042910ef5e4358e9c8dc82a5dd8f5..434c3fe961c1cce4999befad62f5380b70f344c2 100644
--- a/pkg/analysis_server/lib/src/services/correction/util.dart
+++ b/pkg/analysis_server/lib/src/services/correction/util.dart
@@ -78,7 +78,7 @@ bool allListsIdentical(List<List> lists, int position) {
}
/**
- * Climbs up [PrefixedIdentifier] and [ProperyAccess] nodes that include [node].
+ * Climbs up [PrefixedIdentifier] and [PropertyAccess] nodes that include [node].
*/
Expression climbPropertyAccess(AstNode node) {
while (true) {
@@ -1235,30 +1235,6 @@ class CorrectionUtils {
}
/**
- * @return <code>true</code> if given range of [BinaryExpression] can be extracted.
- */
- bool validateBinaryExpressionRange(
- BinaryExpression binaryExpression, SourceRange range) {
- // only parts of associative expression are safe to extract
- if (!binaryExpression.operator.type.isAssociativeOperator) {
- return false;
- }
- // prepare selected operands
- List<Expression> operands = _getOperandsInOrderFor(binaryExpression);
- List<Expression> subOperands = _getOperandsForSourceRange(operands, range);
- // if empty, then something wrong with selection
- if (subOperands.isEmpty) {
- return false;
- }
- // may be some punctuation included into selection - operators, braces, etc
- if (_selectionIncludesNonWhitespaceOutsideOperands(range, subOperands)) {
- return false;
- }
- // OK
- return true;
- }
-
- /**
* @return the [ImportElement] used to import given [Element] into [library].
* May be `null` if was not imported, i.e. declared in the same library.
*/
@@ -1344,11 +1320,12 @@ class CorrectionUtils {
}
if (expression is ParenthesizedExpression) {
ParenthesizedExpression pe = expression;
- Expression innerExpresion = pe.expression;
- while (innerExpresion is ParenthesizedExpression) {
- innerExpresion = (innerExpresion as ParenthesizedExpression).expression;
+ Expression innerExpression = pe.expression;
+ while (innerExpression is ParenthesizedExpression) {
+ innerExpression =
+ (innerExpression as ParenthesizedExpression).expression;
}
- return _invertCondition0(innerExpresion);
+ return _invertCondition0(innerExpression);
}
DartType type = expression.bestType;
if (type.displayName == "bool") {
@@ -1369,12 +1346,6 @@ class CorrectionUtils {
return true;
}
- bool _selectionIncludesNonWhitespaceOutsideOperands(
- SourceRange selection, List<Expression> operands) {
- return _selectionIncludesNonWhitespaceOutsideRange(
- selection, rangeNodes(operands));
- }
-
/**
* @return <code>true</code> if "selection" covers "range" and there are any non-whitespace tokens
* between "selection" and "range" start/end.
@@ -1396,66 +1367,6 @@ class CorrectionUtils {
// only whitespace in selection around range
return false;
}
-
- /**
- * @return [Expression]s from <code>operands</code> which are completely covered by given
- * [SourceRange]. Range should start and end between given [Expression]s.
- */
- static List<Expression> _getOperandsForSourceRange(
- List<Expression> operands, SourceRange range) {
- assert(!operands.isEmpty);
- List<Expression> subOperands = [];
- // track range enter/exit
- bool entered = false;
- bool exited = false;
- // may be range starts before or on first operand
- if (range.offset <= operands[0].offset) {
- entered = true;
- }
- // iterate over gaps between operands
- for (int i = 0; i < operands.length - 1; i++) {
- Expression operand = operands[i];
- Expression nextOperand = operands[i + 1];
- SourceRange inclusiveGap =
- rangeEndStart(operand, nextOperand).getMoveEnd(1);
- // add operand, if already entered range
- if (entered) {
- subOperands.add(operand);
- // may be last operand in range
- if (range.endsIn(inclusiveGap)) {
- exited = true;
- }
- } else {
- // may be first operand in range
- if (range.startsIn(inclusiveGap)) {
- entered = true;
- }
- }
- }
- // check if last operand is in range
- Expression lastGroupMember = operands[operands.length - 1];
- if (range.end == lastGroupMember.end) {
- subOperands.add(lastGroupMember);
- exited = true;
- }
- // we expect that range covers only given operands
- if (!exited) {
- return [];
- }
- // done
- return subOperands;
- }
-
- /**
- * @return all operands of the given [BinaryExpression] and its children with the same
- * operator.
- */
- static List<Expression> _getOperandsInOrderFor(BinaryExpression groupRoot) {
- List<Expression> operands = [];
- TokenType groupOperatorType = groupRoot.operator.type;
- groupRoot.accept(new _OrderedOperandsVisitor(groupOperatorType, operands));
- return operands;
- }
}
/**
@@ -1547,7 +1458,7 @@ class _InvertedCondition {
static _InvertedCondition _binary2(
_InvertedCondition left, String operation, _InvertedCondition right) {
- // TODO(scheglov) conside merging with "_binary()" after testing
+ // TODO(scheglov) consider merging with "_binary()" after testing
return new _InvertedCondition(
1 << 20, "${left._source}${operation}${right._source}");
}
@@ -1567,19 +1478,3 @@ class _InvertedCondition {
static _InvertedCondition _simple(String source) =>
new _InvertedCondition(2147483647, source);
}
-
-class _OrderedOperandsVisitor extends GeneralizingAstVisitor {
- final TokenType groupOperatorType;
- final List<Expression> operands;
-
- _OrderedOperandsVisitor(this.groupOperatorType, this.operands);
-
- @override
- Object visitExpression(Expression node) {
- if (node is BinaryExpression && node.operator.type == groupOperatorType) {
- return super.visitNode(node);
- }
- operands.add(node);
- return null;
- }
-}

Powered by Google App Engine
This is Rietveld 408576698