Migrate extract_local
Change-Id: Ie199575d643b6de80b17cf44f61d038c0cc11525
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/397103
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analysis_server/analyzer_use_new_elements.txt b/pkg/analysis_server/analyzer_use_new_elements.txt
index 977072f..aaebc73 100644
--- a/pkg/analysis_server/analyzer_use_new_elements.txt
+++ b/pkg/analysis_server/analyzer_use_new_elements.txt
@@ -49,7 +49,6 @@
lib/src/services/kythe/kythe_visitors.dart
lib/src/services/refactoring/agnostic/change_method_signature.dart
lib/src/services/refactoring/framework/formal_parameter.dart
-lib/src/services/refactoring/legacy/extract_local.dart
lib/src/services/refactoring/legacy/extract_method.dart
lib/src/services/refactoring/legacy/extract_widget.dart
lib/src/services/refactoring/legacy/inline_local.dart
diff --git a/pkg/analysis_server/lib/src/services/refactoring/legacy/extract_local.dart b/pkg/analysis_server/lib/src/services/refactoring/legacy/extract_local.dart
index 6208630..ef584a6 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/legacy/extract_local.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/legacy/extract_local.dart
@@ -20,7 +20,7 @@
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/ast/visitor.dart';
-import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/dart/element/element2.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/source/source_range.dart';
import 'package:analyzer/src/dart/ast/utilities.dart';
@@ -55,7 +55,7 @@
Expression? singleExpression;
String? stringLiteralPart;
final List<SourceRange> occurrences = <SourceRange>[];
- final Map<Element, int> elementIds = <Element, int>{};
+ final Map<Element2, int> elementIds = <Element2, int>{};
Set<String> excludedVariableNames = <String>{};
ExtractLocalRefactoringImpl(
@@ -74,13 +74,13 @@
String get file => resolveResult.path;
+ LibraryFragment get libraryFragment => unit.declaredFragment!;
+
@override
String get refactoringName => 'Extract Local Variable';
CompilationUnit get unit => resolveResult.unit;
- CompilationUnitElement get unitElement => unit.declaredElement!;
-
String get _declarationKeywordAndType {
var useConst =
stringLiteralPart == null &&
@@ -165,7 +165,7 @@
var keywordAndType = _declarationKeywordAndType;
var declarationCode = '$keywordAndType $name = ';
var edit = SourceEdit(singleExpression.offset, 0, declarationCode);
- doSourceChange_addElementEdit(change, unitElement, edit);
+ doSourceChange_addFragmentEdit(change, libraryFragment, edit);
return Future.value(change);
}
// prepare positions
@@ -195,7 +195,7 @@
if (target is Statement) {
var prefix = utils.getNodePrefix(target);
var edit = SourceEdit(target.offset, 0, declarationCode + eol + prefix);
- doSourceChange_addElementEdit(change, unitElement, edit);
+ doSourceChange_addFragmentEdit(change, libraryFragment, edit);
addPosition(edit.offset + nameOffsetInDeclarationCode);
occurrencesShift = edit.replacement.length;
} else if (target is ExpressionFunctionBody) {
@@ -215,11 +215,11 @@
code,
);
occurrencesShift = target.offset + code.length - expr.offset;
- doSourceChange_addElementEdit(change, unitElement, edit);
+ doSourceChange_addFragmentEdit(change, libraryFragment, edit);
}
- doSourceChange_addElementEdit(
+ doSourceChange_addFragmentEdit(
change,
- unitElement,
+ libraryFragment,
SourceEdit(expr.end, target.end - expr.end, ';$eol$prefix}'),
);
}
@@ -236,7 +236,7 @@
var edit = newSourceEdit_range(range, occurrenceReplacement);
addPosition(range.offset + occurrencesShift);
occurrencesShift += name.length - range.length;
- doSourceChange_addElementEdit(change, unitElement, edit);
+ doSourceChange_addFragmentEdit(change, libraryFragment, edit);
}
// add the linked group
change.addLinkedEditGroup(
@@ -340,8 +340,8 @@
// stop at void method invocations
if (node is MethodInvocation) {
var invocation = node;
- var element = invocation.methodName.staticElement;
- if (element is ExecutableElement && element.returnType is VoidType) {
+ var element = invocation.methodName.element;
+ if (element is ExecutableElement2 && element.returnType is VoidType) {
if (singleExpression == null) {
return RefactoringStatus.fatal(
'Cannot extract the void expression.',
@@ -360,8 +360,10 @@
newLocation_fromNode(node),
);
}
- var element = node.staticElement;
- if (element is FunctionElement || element is MethodElement) {
+ var element = node.element;
+ if (element is LocalFunctionElement ||
+ element is MethodElement2 ||
+ element is TopLevelFunctionElement) {
continue;
}
}
@@ -391,7 +393,7 @@
/// Return an unique identifier for the given [Element], or `null` if
/// [element] is `null`.
- int? _encodeElement(Element? element) {
+ int? _encodeElement(Element2? element) {
if (element == null) {
return null;
}
@@ -411,7 +413,7 @@
/// function we are searching occurrences in.
String _encodeExpressionTokens(Expression expr, List<Token> tokens) {
// prepare Token -> LocalElement map
- Map<Token, Element> map = HashMap<Token, Element>(
+ Map<Token, Element2> map = HashMap<Token, Element2>(
equals: (Token a, Token b) => a.lexeme == b.lexeme,
hashCode: (Token t) => t.lexeme.hashCode,
);
@@ -638,14 +640,14 @@
}
class _TokenLocalElementVisitor extends RecursiveAstVisitor<void> {
- final Map<Token, Element> map;
+ final Map<Token, Element2> map;
_TokenLocalElementVisitor(this.map);
@override
void visitSimpleIdentifier(SimpleIdentifier node) {
- var element = node.staticElement;
- if (element is LocalVariableElement) {
+ var element = node.element;
+ if (element is LocalVariableElement2) {
map[node.token] = element;
}
}