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

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

Issue 2538143003: Issue 27903. Use shared logic for computing new method location. (Closed)
Patch Set: Created 4 years 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/fix_internal.dart
diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
index 76ee0e1bf417668c38684991df4cdf035460e9de..9e3477b4dce29f00813391a06d2758eb4cf1747e 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -2036,23 +2036,17 @@ class FixProcessor {
MethodInvocation invocation = node.parent as MethodInvocation;
// prepare environment
Element targetElement;
- String prefix;
- int insertOffset;
- String sourcePrefix;
- String sourceSuffix;
bool staticModifier = false;
+
+ ClassDeclaration targetClassNode;
Expression target = invocation.realTarget;
if (target == null) {
targetElement = unitElement;
ClassMember enclosingMember =
node.getAncestor((node) => node is ClassMember);
- ClassDeclaration enclosingClass = enclosingMember.parent;
- utils.targetClassElement = enclosingClass.element;
+ targetClassNode = enclosingMember.parent;
+ utils.targetClassElement = targetClassNode.element;
staticModifier = _inStaticContext();
- prefix = utils.getNodePrefix(enclosingMember);
- insertOffset = enclosingMember.end;
- sourcePrefix = '$eol$eol';
- sourceSuffix = '';
} else {
// prepare target interface type
DartType targetType = target.bestType;
@@ -2066,32 +2060,24 @@ class FixProcessor {
if (targetTypeNode is! ClassDeclaration) {
return;
}
- ClassDeclaration targetClassNode = targetTypeNode;
+ targetClassNode = targetTypeNode;
// maybe static
if (target is Identifier) {
staticModifier = target.bestElement.kind == ElementKind.CLASS;
}
- // prepare insert offset
- prefix = ' ';
- insertOffset = targetClassNode.end - 1;
- if (targetClassNode.members.isEmpty) {
- sourcePrefix = '';
- } else {
- sourcePrefix = eol;
- }
- sourceSuffix = eol;
// use different utils
CompilationUnitElement targetUnitElement =
getCompilationUnitElement(targetClassElement);
CompilationUnit targetUnit = getParsedUnit(targetUnitElement);
utils = new CorrectionUtils(targetUnit);
}
+ ClassMemberLocation targetLocation =
+ utils.prepareNewMethodLocation(targetClassNode);
String targetFile = targetElement.source.fullName;
// build method source
- SourceBuilder sb = new SourceBuilder(targetFile, insertOffset);
+ SourceBuilder sb = new SourceBuilder(targetFile, targetLocation.offset);
{
- sb.append(sourcePrefix);
- sb.append(prefix);
+ sb.append(targetLocation.prefix);
// maybe "static"
if (staticModifier) {
sb.append('static ');
@@ -2108,8 +2094,8 @@ class FixProcessor {
sb.endPosition();
}
_addFix_undefinedMethod_create_parameters(sb, invocation.argumentList);
- sb.append(') {$eol$prefix}');
- sb.append(sourceSuffix);
+ sb.append(') {}');
+ sb.append(targetLocation.suffix);
}
// insert source
_insertBuilder(sb, targetElement);

Powered by Google App Engine
This is Rietveld 408576698