| 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);
|
|
|