22// for details. All rights reserved. Use of this source code is governed by a
33// BSD-style license that can be found in the LICENSE file.
44
5- // ignore_for_file: analyzer_use_new_elements
6-
75import 'package:analysis_server/src/protocol_server.dart' hide Element;
86import 'package:analysis_server/src/services/correction/name_suggestion.dart' ;
97import 'package:analysis_server/src/services/correction/selection_analyzer.dart' ;
@@ -24,7 +22,6 @@ import 'package:analyzer/dart/analysis/session.dart';
2422import 'package:analyzer/dart/ast/ast.dart' ;
2523import 'package:analyzer/dart/ast/token.dart' ;
2624import 'package:analyzer/dart/ast/visitor.dart' ;
27- import 'package:analyzer/dart/element/element.dart' ;
2825import 'package:analyzer/dart/element/element2.dart' ;
2926import 'package:analyzer/dart/element/nullability_suffix.dart' ;
3027import 'package:analyzer/dart/element/type.dart' ;
@@ -37,7 +34,6 @@ import 'package:analyzer/src/dart/ast/utilities.dart';
3734import 'package:analyzer/src/dart/resolver/exit_detector.dart' ;
3835import 'package:analyzer/src/generated/java_core.dart' ;
3936import 'package:analyzer/src/utilities/extensions/ast.dart' ;
40- import 'package:analyzer/src/utilities/extensions/element.dart' ;
4137import 'package:analyzer/src/utilities/extensions/string.dart' ;
4238import 'package:analyzer_plugin/utilities/range_factory.dart' ;
4339import 'package:meta/meta.dart' ;
@@ -214,15 +210,14 @@ Future<void> addLibraryImports(
214210 }
215211}
216212
217- bool isLocalElement (Element ? element) {
218- return element is LocalVariableElement ||
219- element is ParameterElement ||
220- element is FunctionElement &&
221- element.enclosingElement3 is ! CompilationUnitElement ;
213+ bool isLocalElement (Element2 ? element) {
214+ return element is LocalVariableElement2 ||
215+ element is FormalParameterElement ||
216+ element is LocalFunctionElement ;
222217}
223218
224- Element ? _getLocalElement (SimpleIdentifier node) {
225- var element = node.writeOrReadElement ;
219+ Element2 ? _getLocalElement (SimpleIdentifier node) {
220+ var element = node.writeOrReadElement2 ;
226221 if (isLocalElement (element)) {
227222 return element;
228223 }
@@ -832,7 +827,7 @@ final class ExtractMethodRefactoringImpl extends RefactoringImpl
832827 if (argument.parent is NamedExpression ) {
833828 argument = argument.parent as NamedExpression ;
834829 }
835- var parameter = argument.staticParameterElement ;
830+ var parameter = argument.correspondingParameter ;
836831 if (parameter != null ) {
837832 var parameterType = parameter.type;
838833 if (parameterType is FunctionType ) {
@@ -913,7 +908,7 @@ final class ExtractMethodRefactoringImpl extends RefactoringImpl
913908 }
914909
915910 String _getTypeCode (DartType type) =>
916- _resolveResult.libraryElement .getTypeSource (type, _librariesToImport)! ;
911+ _resolveResult.libraryElement2 .getTypeSource (type, _librariesToImport)! ;
917912
918913 void _initializeHasAwait () {
919914 var visitor = _HasAwaitVisitor ();
@@ -954,7 +949,7 @@ final class ExtractMethodRefactoringImpl extends RefactoringImpl
954949 _parametersMap.clear ();
955950 _parameterReferencesMap.clear ();
956951 var result = RefactoringStatus ();
957- var assignedUsedVariables = < VariableElement > [];
952+ var assignedUsedVariables = < VariableElement2 > [];
958953
959954 var unit = _resolveResult.unit;
960955 _visibleRangeMap = VisibleRangesComputer .forNode (unit);
@@ -1040,7 +1035,7 @@ final class ExtractMethodRefactoringImpl extends RefactoringImpl
10401035 _variableType = _getTypeCode (returnTypeObj);
10411036 if (_hasAwait) {
10421037 if (returnTypeObj is InterfaceType &&
1043- returnTypeObj.element != typeProvider.futureElement ) {
1038+ returnTypeObj.element3 != typeProvider.futureElement2 ) {
10441039 returnType = _getTypeCode (typeProvider.futureType (returnTypeObj));
10451040 }
10461041 } else {
@@ -1050,8 +1045,8 @@ final class ExtractMethodRefactoringImpl extends RefactoringImpl
10501045 }
10511046
10521047 /// Checks if the given [element] is declared in [_selectionRange] .
1053- bool _isDeclaredInSelection (Element element) {
1054- return _selectionRange.contains (element.nameOffset );
1048+ bool _isDeclaredInSelection (Element2 element) {
1049+ return _selectionRange.contains (element.firstFragment.nameOffset2 ! );
10551050 }
10561051
10571052 /// Checks if it is OK to extract the node with the given [SourceRange] .
@@ -1096,7 +1091,7 @@ final class ExtractMethodRefactoringImpl extends RefactoringImpl
10961091 }
10971092
10981093 /// Checks if [element] is referenced after [_selectionRange] .
1099- bool _isUsedAfterSelection (Element element) {
1094+ bool _isUsedAfterSelection (Element2 element) {
11001095 var visitor = _IsUsedAfterSelectionVisitor (this , element);
11011096 _parentMember! .accept (visitor);
11021097 return visitor.result;
@@ -1345,11 +1340,13 @@ class _ExtractMethodAnalyzer extends StatementAnalyzer {
13451340 invalidSelection ('Cannot extract the name part of a declaration.' );
13461341 }
13471342 // method name
1348- var element = node.writeOrReadElement;
1349- if (element is FunctionElement || element is MethodElement ) {
1343+ var element = node.writeOrReadElement2;
1344+ if (element is LocalFunctionElement ||
1345+ element is MethodElement2 ||
1346+ element is TopLevelFunctionElement ) {
13501347 invalidSelection ('Cannot extract a single method name.' );
13511348 }
1352- if (element is PrefixElement ) {
1349+ if (element is PrefixElement2 ) {
13531350 invalidSelection ('Cannot extract an import prefix.' );
13541351 }
13551352 var parent = node.parent;
@@ -1407,17 +1404,17 @@ class _GetSourcePatternVisitor extends GeneralizingAstVisitor<void> {
14071404
14081405 @override
14091406 void visitSimpleIdentifier (SimpleIdentifier node) {
1410- _addPatterns (nameToken: node.token, element: node.staticElement );
1407+ _addPatterns (nameToken: node.token, element: node.element );
14111408 }
14121409
14131410 @override
14141411 void visitVariableDeclaration (VariableDeclaration node) {
1415- _addPatterns (nameToken: node.name, element: node.declaredElement );
1412+ _addPatterns (nameToken: node.name, element: node.declaredFragment ? .element );
14161413
14171414 super .visitVariableDeclaration (node);
14181415 }
14191416
1420- void _addPatterns ({required Token nameToken, required Element ? element}) {
1417+ void _addPatterns ({required Token nameToken, required Element2 ? element}) {
14211418 var nameRange = range.token (nameToken);
14221419 if (partRange.covers (nameRange)) {
14231420 if (element != null && isLocalElement (element)) {
@@ -1440,11 +1437,11 @@ class _GetSourcePatternVisitor extends GeneralizingAstVisitor<void> {
14401437 }
14411438 }
14421439
1443- DartType _getElementType (Element element) {
1444- if (element is VariableElement ) {
1440+ DartType _getElementType (Element2 element) {
1441+ if (element is VariableElement2 ) {
14451442 return element.type;
14461443 }
1447- if (element is FunctionElement ) {
1444+ if (element is LocalFunctionElement ) {
14481445 return element.type;
14491446 }
14501447 throw StateError ('Unknown element type: ${element .runtimeType }' );
@@ -1620,7 +1617,7 @@ class _InitializeOccurrencesVisitor extends GeneralizingAstVisitor<void> {
16201617
16211618class _InitializeParametersVisitor extends GeneralizingAstVisitor <void > {
16221619 final ExtractMethodRefactoringImpl ref;
1623- final List <VariableElement > assignedUsedVariables;
1620+ final List <VariableElement2 > assignedUsedVariables;
16241621
16251622 _InitializeParametersVisitor (this .ref, this .assignedUsedVariables);
16261623
@@ -1645,7 +1642,7 @@ class _InitializeParametersVisitor extends GeneralizingAstVisitor<void> {
16451642 if (parameter == null ) {
16461643 var parameterType = node.writeOrReadType! ;
16471644 var parametersBuffer = StringBuffer ();
1648- var parameterTypeCode = ref._resolveResult.libraryElement
1645+ var parameterTypeCode = ref._resolveResult.libraryElement2
16491646 .getTypeSource (
16501647 parameterType,
16511648 ref._librariesToImport,
@@ -1671,17 +1668,17 @@ class _InitializeParametersVisitor extends GeneralizingAstVisitor<void> {
16711668 }
16721669 // remember, if assigned and used after selection
16731670 if (isLeftHandOfAssignment (node) && ref._isUsedAfterSelection (element)) {
1674- if (element is VariableElement &&
1671+ if (element is VariableElement2 &&
16751672 ! assignedUsedVariables.contains (element)) {
16761673 assignedUsedVariables.add (element);
16771674 }
16781675 }
16791676 }
16801677 // remember information for conflicts checking
1681- if (element is LocalElement ) {
1678+ if (element is LocalElement2 ) {
16821679 // declared local elements
16831680 if (node.inDeclarationContext ()) {
1684- var range = ref._visibleRangeMap[element.asElement2 ];
1681+ var range = ref._visibleRangeMap[element];
16851682 if (range != null ) {
16861683 var ranges = ref._localNames.putIfAbsent (name, () => < SourceRange > []);
16871684 ranges.add (range);
@@ -1699,7 +1696,7 @@ class _InitializeParametersVisitor extends GeneralizingAstVisitor<void> {
16991696 visitVariableDeclaration (VariableDeclaration node) {
17001697 var nodeRange = range.node (node);
17011698 if (ref._selectionRange.covers (nodeRange)) {
1702- var element = node.declaredElement ! ;
1699+ var element = node.declaredFragment ! .element ;
17031700
17041701 // remember, if assigned and used after selection
17051702 if (ref._isUsedAfterSelection (element)) {
@@ -1709,9 +1706,9 @@ class _InitializeParametersVisitor extends GeneralizingAstVisitor<void> {
17091706 }
17101707
17111708 // remember information for conflicts checking
1712- if (element is LocalElement ) {
1709+ if (element is LocalVariableElement2 ) {
17131710 // declared local elements
1714- var range = ref._visibleRangeMap[element.asElement2 as LocalElement2 ];
1711+ var range = ref._visibleRangeMap[element];
17151712 if (range != null ) {
17161713 var name = node.name.lexeme;
17171714 var ranges = ref._localNames.putIfAbsent (name, () => < SourceRange > []);
@@ -1726,14 +1723,14 @@ class _InitializeParametersVisitor extends GeneralizingAstVisitor<void> {
17261723
17271724class _IsUsedAfterSelectionVisitor extends GeneralizingAstVisitor <void > {
17281725 final ExtractMethodRefactoringImpl ref;
1729- final Element element;
1726+ final Element2 element;
17301727 bool result = false ;
17311728
17321729 _IsUsedAfterSelectionVisitor (this .ref, this .element);
17331730
17341731 @override
17351732 void visitSimpleIdentifier (SimpleIdentifier node) {
1736- var nodeElement = node.writeOrReadElement ;
1733+ var nodeElement = node.writeOrReadElement2 ;
17371734 if (identical (nodeElement, element)) {
17381735 var nodeOffset = node.offset;
17391736 if (nodeOffset > ref._selectionRange.end) {
@@ -1778,10 +1775,10 @@ class _SourcePattern {
17781775 }
17791776}
17801777
1781- extension on LibraryElement {
1778+ extension on LibraryElement2 {
17821779 /// Returns the source to reference [type] in this [CompilationUnit] .
17831780 ///
1784- /// Fills [librariesToImport] with [LibraryElement] s whose elements are
1781+ /// Fills [librariesToImport] with library elements whose elements are
17851782 /// used by the generated source, but not imported.
17861783 String ? getTypeSource (
17871784 DartType type,
@@ -1792,7 +1789,7 @@ extension on LibraryElement {
17921789 if (alias != null ) {
17931790 return _getTypeCodeElementArguments (
17941791 librariesToImport: librariesToImport,
1795- element: alias.element ,
1792+ element: alias.element2 ,
17961793 isNullable: type.nullabilitySuffix == NullabilitySuffix .question,
17971794 typeArguments: alias.typeArguments,
17981795 );
@@ -1807,15 +1804,16 @@ extension on LibraryElement {
18071804 return 'Function' ;
18081805 }
18091806 parametersBuffer.write ('(' );
1810- for (var parameter in type.parameters ) {
1807+ for (var parameter in type.formalParameters ) {
18111808 var parameterType = getTypeSource (parameter.type, librariesToImport);
18121809 if (parametersBuffer.length != 1 ) {
18131810 parametersBuffer.write (', ' );
18141811 }
18151812 parametersBuffer.write (parameterType);
1816- if (parameter.name.isNotEmpty) {
1813+ var parameterName = parameter.name3;
1814+ if (parameterName != null && parameterName.isNotEmpty) {
18171815 parametersBuffer.write (' ' );
1818- parametersBuffer.write (parameter.name );
1816+ parametersBuffer.write (parameterName );
18191817 }
18201818 }
18211819 parametersBuffer.write (')' );
@@ -1825,7 +1823,7 @@ extension on LibraryElement {
18251823 if (type is InterfaceType ) {
18261824 return _getTypeCodeElementArguments (
18271825 librariesToImport: librariesToImport,
1828- element: type.element ,
1826+ element: type.element3 ,
18291827 isNullable: type.nullabilitySuffix == NullabilitySuffix .question,
18301828 typeArguments: type.typeArguments,
18311829 );
@@ -1862,10 +1860,10 @@ extension on LibraryElement {
18621860 /// Returns the import element used to import given [element] into the
18631861 /// library.
18641862 ///
1865- /// May be `null` if was not imported, i.e. declared in the same library.
1866- LibraryImportElement ? _getImportElement (Element element) {
1867- for (var imp in library.definingCompilationUnit.libraryImports ) {
1868- var definedNames = imp.namespace.definedNames ;
1863+ /// Returns `null` if was not imported, i.e. declared in the same library.
1864+ LibraryImport ? _getImportElement (Element2 element) {
1865+ for (var imp in firstFragment.libraryImports2 ) {
1866+ var definedNames = imp.namespace.definedNames2 ;
18691867 if (definedNames.containsValue (element)) {
18701868 return imp;
18711869 }
@@ -1875,14 +1873,14 @@ extension on LibraryElement {
18751873
18761874 String ? _getTypeCodeElementArguments ({
18771875 required Set <Source > librariesToImport,
1878- required Element element,
1876+ required Element2 element,
18791877 required bool isNullable,
18801878 required List <DartType > typeArguments,
18811879 }) {
18821880 var sb = StringBuffer ();
18831881
18841882 // Check if imported.
1885- var library = element.library ;
1883+ var library = element.library2 ;
18861884 if (library != null && library != this ) {
18871885 // No source, if private.
18881886 if (element.isPrivate) {
@@ -1891,13 +1889,13 @@ extension on LibraryElement {
18911889 // Ensure import.
18921890 var importElement = _getImportElement (element);
18931891 if (importElement != null ) {
1894- var prefix = importElement.prefix ? .element;
1892+ var prefix = importElement.prefix2 ? .element;
18951893 if (prefix != null ) {
18961894 sb.write (prefix.displayName);
18971895 sb.write ('.' );
18981896 }
18991897 } else {
1900- librariesToImport.add (library.source);
1898+ librariesToImport.add (library.firstFragment. source);
19011899 }
19021900 }
19031901
0 commit comments