| Index: pkg/analysis_server/lib/src/services/refactoring/inline_method.dart
|
| diff --git a/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart b/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart
|
| index 486f724f937a0edb17834bb0266ec63146ac9f36..8a0322c6b363ce9a46e99e8b3732b21fcaa560cf 100644
|
| --- a/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart
|
| +++ b/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart
|
| @@ -191,11 +191,18 @@ Set<String> _getNamesConflictingAt(AstNode node) {
|
| }
|
|
|
| /**
|
| + * Completes with the resolved [CompilationUnit] that contains the [element].
|
| + */
|
| +typedef Future<CompilationUnit> GetResolvedUnitContainingElement(
|
| + Element element);
|
| +
|
| +/**
|
| * [InlineMethodRefactoring] implementation.
|
| */
|
| class InlineMethodRefactoringImpl extends RefactoringImpl
|
| implements InlineMethodRefactoring {
|
| final SearchEngine searchEngine;
|
| + final GetResolvedUnitContainingElement getResolvedUnit;
|
| final CompilationUnit unit;
|
| final int offset;
|
| CorrectionUtils utils;
|
| @@ -218,7 +225,8 @@ class InlineMethodRefactoringImpl extends RefactoringImpl
|
| List<_ReferenceProcessor> _referenceProcessors = [];
|
| Set<FunctionBody> _alreadyMadeAsync = new Set<FunctionBody>();
|
|
|
| - InlineMethodRefactoringImpl(this.searchEngine, this.unit, this.offset) {
|
| + InlineMethodRefactoringImpl(
|
| + this.searchEngine, this.getResolvedUnit, this.unit, this.offset) {
|
| utils = new CorrectionUtils(unit);
|
| }
|
|
|
| @@ -279,7 +287,7 @@ class InlineMethodRefactoringImpl extends RefactoringImpl
|
| Future<RefactoringStatus> checkInitialConditions() async {
|
| RefactoringStatus result = new RefactoringStatus();
|
| // prepare method information
|
| - result.addStatus(_prepareMethod());
|
| + result.addStatus(await _prepareMethod());
|
| if (result.hasFatalError) {
|
| return new Future<RefactoringStatus>.value(result);
|
| }
|
| @@ -301,6 +309,7 @@ class InlineMethodRefactoringImpl extends RefactoringImpl
|
| _referenceProcessors.clear();
|
| for (SearchMatch reference in references) {
|
| _ReferenceProcessor processor = new _ReferenceProcessor(this, reference);
|
| + await processor.init();
|
| _referenceProcessors.add(processor);
|
| }
|
| return result;
|
| @@ -327,7 +336,7 @@ class InlineMethodRefactoringImpl extends RefactoringImpl
|
| /**
|
| * Initializes [_methodElement] and related fields.
|
| */
|
| - RefactoringStatus _prepareMethod() {
|
| + Future<RefactoringStatus> _prepareMethod() async {
|
| _methodElement = null;
|
| _methodParameters = null;
|
| _methodBody = null;
|
| @@ -352,7 +361,7 @@ class InlineMethodRefactoringImpl extends RefactoringImpl
|
| }
|
| _methodElement = element as ExecutableElement;
|
| _isAccessor = element is PropertyAccessorElement;
|
| - _methodUnit = element.unit;
|
| + _methodUnit = await getResolvedUnit(element);
|
| _methodUtils = new CorrectionUtils(_methodUnit);
|
| // class member
|
| bool isClassMember = element.enclosingElement is ClassElement;
|
| @@ -435,6 +444,7 @@ class _ParameterOccurrence {
|
| */
|
| class _ReferenceProcessor {
|
| final InlineMethodRefactoringImpl ref;
|
| + final SearchMatch reference;
|
|
|
| Element refElement;
|
| CorrectionUtils _refUtils;
|
| @@ -442,10 +452,12 @@ class _ReferenceProcessor {
|
| SourceRange _refLineRange;
|
| String _refPrefix;
|
|
|
| - _ReferenceProcessor(this.ref, SearchMatch reference) {
|
| + _ReferenceProcessor(this.ref, this.reference);
|
| +
|
| + Future<Null> init() async {
|
| refElement = reference.element;
|
| // prepare CorrectionUtils
|
| - CompilationUnit refUnit = refElement.unit;
|
| + CompilationUnit refUnit = await ref.getResolvedUnit(refElement);
|
| _refUtils = new CorrectionUtils(refUnit);
|
| // prepare node and environment
|
| _node = _refUtils.findNode(reference.sourceRange.offset);
|
|
|