Skip to content

Commit

Permalink
Version 3.8.0-107.0.dev
Browse files Browse the repository at this point in the history
Merge b77b1f2 into dev
  • Loading branch information
Dart CI committed Feb 15, 2025
2 parents fab1e07 + b77b1f2 commit d22c271
Show file tree
Hide file tree
Showing 34 changed files with 6,242 additions and 137 deletions.
1 change: 1 addition & 0 deletions pkg/_fe_analyzer_shared/OWNERS
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
file:/tools/OWNERS_ANALYZER
file:/tools/OWNERS_CFE
file:/tools/OWNERS_MODEL
1 change: 1 addition & 0 deletions pkg/analysis_server/OWNERS
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
file:/tools/OWNERS_ANALYZER
file:/tools/OWNERS_DEVELOPER_EXPERIENCE
2 changes: 1 addition & 1 deletion pkg/analysis_server/lib/src/cider/fixes.dart
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ class _CiderDartFixContextImpl extends DartFixContext {
var libraryElement = await _fileResolver.getLibraryByUri2(
uriStr: file.uriStr,
);
TopLevelDeclarations.addElement2(result, libraryElement, name);
TopLevelDeclarations.addElement(result, libraryElement, name);
}
}
return result;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// ignore_for_file: analyzer_use_new_elements

import 'package:analysis_server/src/protocol_server.dart' hide Element;
import 'package:analysis_server/src/services/correction/name_suggestion.dart';
import 'package:analysis_server/src/services/correction/selection_analyzer.dart';
Expand All @@ -24,7 +22,6 @@ import 'package:analyzer/dart/analysis/session.dart';
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/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
Expand All @@ -37,7 +34,6 @@ import 'package:analyzer/src/dart/ast/utilities.dart';
import 'package:analyzer/src/dart/resolver/exit_detector.dart';
import 'package:analyzer/src/generated/java_core.dart';
import 'package:analyzer/src/utilities/extensions/ast.dart';
import 'package:analyzer/src/utilities/extensions/element.dart';
import 'package:analyzer/src/utilities/extensions/string.dart';
import 'package:analyzer_plugin/utilities/range_factory.dart';
import 'package:meta/meta.dart';
Expand Down Expand Up @@ -214,15 +210,14 @@ Future<void> addLibraryImports(
}
}

bool isLocalElement(Element? element) {
return element is LocalVariableElement ||
element is ParameterElement ||
element is FunctionElement &&
element.enclosingElement3 is! CompilationUnitElement;
bool isLocalElement(Element2? element) {
return element is LocalVariableElement2 ||
element is FormalParameterElement ||
element is LocalFunctionElement;
}

Element? _getLocalElement(SimpleIdentifier node) {
var element = node.writeOrReadElement;
Element2? _getLocalElement(SimpleIdentifier node) {
var element = node.writeOrReadElement2;
if (isLocalElement(element)) {
return element;
}
Expand Down Expand Up @@ -832,7 +827,7 @@ final class ExtractMethodRefactoringImpl extends RefactoringImpl
if (argument.parent is NamedExpression) {
argument = argument.parent as NamedExpression;
}
var parameter = argument.staticParameterElement;
var parameter = argument.correspondingParameter;
if (parameter != null) {
var parameterType = parameter.type;
if (parameterType is FunctionType) {
Expand Down Expand Up @@ -913,7 +908,7 @@ final class ExtractMethodRefactoringImpl extends RefactoringImpl
}

String _getTypeCode(DartType type) =>
_resolveResult.libraryElement.getTypeSource(type, _librariesToImport)!;
_resolveResult.libraryElement2.getTypeSource(type, _librariesToImport)!;

void _initializeHasAwait() {
var visitor = _HasAwaitVisitor();
Expand Down Expand Up @@ -954,7 +949,7 @@ final class ExtractMethodRefactoringImpl extends RefactoringImpl
_parametersMap.clear();
_parameterReferencesMap.clear();
var result = RefactoringStatus();
var assignedUsedVariables = <VariableElement>[];
var assignedUsedVariables = <VariableElement2>[];

var unit = _resolveResult.unit;
_visibleRangeMap = VisibleRangesComputer.forNode(unit);
Expand Down Expand Up @@ -1040,7 +1035,7 @@ final class ExtractMethodRefactoringImpl extends RefactoringImpl
_variableType = _getTypeCode(returnTypeObj);
if (_hasAwait) {
if (returnTypeObj is InterfaceType &&
returnTypeObj.element != typeProvider.futureElement) {
returnTypeObj.element3 != typeProvider.futureElement2) {
returnType = _getTypeCode(typeProvider.futureType(returnTypeObj));
}
} else {
Expand All @@ -1050,8 +1045,8 @@ final class ExtractMethodRefactoringImpl extends RefactoringImpl
}

/// Checks if the given [element] is declared in [_selectionRange].
bool _isDeclaredInSelection(Element element) {
return _selectionRange.contains(element.nameOffset);
bool _isDeclaredInSelection(Element2 element) {
return _selectionRange.contains(element.firstFragment.nameOffset2!);
}

/// Checks if it is OK to extract the node with the given [SourceRange].
Expand Down Expand Up @@ -1096,7 +1091,7 @@ final class ExtractMethodRefactoringImpl extends RefactoringImpl
}

/// Checks if [element] is referenced after [_selectionRange].
bool _isUsedAfterSelection(Element element) {
bool _isUsedAfterSelection(Element2 element) {
var visitor = _IsUsedAfterSelectionVisitor(this, element);
_parentMember!.accept(visitor);
return visitor.result;
Expand Down Expand Up @@ -1345,11 +1340,13 @@ class _ExtractMethodAnalyzer extends StatementAnalyzer {
invalidSelection('Cannot extract the name part of a declaration.');
}
// method name
var element = node.writeOrReadElement;
if (element is FunctionElement || element is MethodElement) {
var element = node.writeOrReadElement2;
if (element is LocalFunctionElement ||
element is MethodElement2 ||
element is TopLevelFunctionElement) {
invalidSelection('Cannot extract a single method name.');
}
if (element is PrefixElement) {
if (element is PrefixElement2) {
invalidSelection('Cannot extract an import prefix.');
}
var parent = node.parent;
Expand Down Expand Up @@ -1407,17 +1404,17 @@ class _GetSourcePatternVisitor extends GeneralizingAstVisitor<void> {

@override
void visitSimpleIdentifier(SimpleIdentifier node) {
_addPatterns(nameToken: node.token, element: node.staticElement);
_addPatterns(nameToken: node.token, element: node.element);
}

@override
void visitVariableDeclaration(VariableDeclaration node) {
_addPatterns(nameToken: node.name, element: node.declaredElement);
_addPatterns(nameToken: node.name, element: node.declaredFragment?.element);

super.visitVariableDeclaration(node);
}

void _addPatterns({required Token nameToken, required Element? element}) {
void _addPatterns({required Token nameToken, required Element2? element}) {
var nameRange = range.token(nameToken);
if (partRange.covers(nameRange)) {
if (element != null && isLocalElement(element)) {
Expand All @@ -1440,11 +1437,11 @@ class _GetSourcePatternVisitor extends GeneralizingAstVisitor<void> {
}
}

DartType _getElementType(Element element) {
if (element is VariableElement) {
DartType _getElementType(Element2 element) {
if (element is VariableElement2) {
return element.type;
}
if (element is FunctionElement) {
if (element is LocalFunctionElement) {
return element.type;
}
throw StateError('Unknown element type: ${element.runtimeType}');
Expand Down Expand Up @@ -1620,7 +1617,7 @@ class _InitializeOccurrencesVisitor extends GeneralizingAstVisitor<void> {

class _InitializeParametersVisitor extends GeneralizingAstVisitor<void> {
final ExtractMethodRefactoringImpl ref;
final List<VariableElement> assignedUsedVariables;
final List<VariableElement2> assignedUsedVariables;

_InitializeParametersVisitor(this.ref, this.assignedUsedVariables);

Expand All @@ -1645,7 +1642,7 @@ class _InitializeParametersVisitor extends GeneralizingAstVisitor<void> {
if (parameter == null) {
var parameterType = node.writeOrReadType!;
var parametersBuffer = StringBuffer();
var parameterTypeCode = ref._resolveResult.libraryElement
var parameterTypeCode = ref._resolveResult.libraryElement2
.getTypeSource(
parameterType,
ref._librariesToImport,
Expand All @@ -1671,17 +1668,17 @@ class _InitializeParametersVisitor extends GeneralizingAstVisitor<void> {
}
// remember, if assigned and used after selection
if (isLeftHandOfAssignment(node) && ref._isUsedAfterSelection(element)) {
if (element is VariableElement &&
if (element is VariableElement2 &&
!assignedUsedVariables.contains(element)) {
assignedUsedVariables.add(element);
}
}
}
// remember information for conflicts checking
if (element is LocalElement) {
if (element is LocalElement2) {
// declared local elements
if (node.inDeclarationContext()) {
var range = ref._visibleRangeMap[element.asElement2];
var range = ref._visibleRangeMap[element];
if (range != null) {
var ranges = ref._localNames.putIfAbsent(name, () => <SourceRange>[]);
ranges.add(range);
Expand All @@ -1699,7 +1696,7 @@ class _InitializeParametersVisitor extends GeneralizingAstVisitor<void> {
visitVariableDeclaration(VariableDeclaration node) {
var nodeRange = range.node(node);
if (ref._selectionRange.covers(nodeRange)) {
var element = node.declaredElement!;
var element = node.declaredFragment!.element;

// remember, if assigned and used after selection
if (ref._isUsedAfterSelection(element)) {
Expand All @@ -1709,9 +1706,9 @@ class _InitializeParametersVisitor extends GeneralizingAstVisitor<void> {
}

// remember information for conflicts checking
if (element is LocalElement) {
if (element is LocalVariableElement2) {
// declared local elements
var range = ref._visibleRangeMap[element.asElement2 as LocalElement2];
var range = ref._visibleRangeMap[element];
if (range != null) {
var name = node.name.lexeme;
var ranges = ref._localNames.putIfAbsent(name, () => <SourceRange>[]);
Expand All @@ -1726,14 +1723,14 @@ class _InitializeParametersVisitor extends GeneralizingAstVisitor<void> {

class _IsUsedAfterSelectionVisitor extends GeneralizingAstVisitor<void> {
final ExtractMethodRefactoringImpl ref;
final Element element;
final Element2 element;
bool result = false;

_IsUsedAfterSelectionVisitor(this.ref, this.element);

@override
void visitSimpleIdentifier(SimpleIdentifier node) {
var nodeElement = node.writeOrReadElement;
var nodeElement = node.writeOrReadElement2;
if (identical(nodeElement, element)) {
var nodeOffset = node.offset;
if (nodeOffset > ref._selectionRange.end) {
Expand Down Expand Up @@ -1778,10 +1775,10 @@ class _SourcePattern {
}
}

extension on LibraryElement {
extension on LibraryElement2 {
/// Returns the source to reference [type] in this [CompilationUnit].
///
/// Fills [librariesToImport] with [LibraryElement]s whose elements are
/// Fills [librariesToImport] with library elements whose elements are
/// used by the generated source, but not imported.
String? getTypeSource(
DartType type,
Expand All @@ -1792,7 +1789,7 @@ extension on LibraryElement {
if (alias != null) {
return _getTypeCodeElementArguments(
librariesToImport: librariesToImport,
element: alias.element,
element: alias.element2,
isNullable: type.nullabilitySuffix == NullabilitySuffix.question,
typeArguments: alias.typeArguments,
);
Expand All @@ -1807,15 +1804,16 @@ extension on LibraryElement {
return 'Function';
}
parametersBuffer.write('(');
for (var parameter in type.parameters) {
for (var parameter in type.formalParameters) {
var parameterType = getTypeSource(parameter.type, librariesToImport);
if (parametersBuffer.length != 1) {
parametersBuffer.write(', ');
}
parametersBuffer.write(parameterType);
if (parameter.name.isNotEmpty) {
var parameterName = parameter.name3;
if (parameterName != null && parameterName.isNotEmpty) {
parametersBuffer.write(' ');
parametersBuffer.write(parameter.name);
parametersBuffer.write(parameterName);
}
}
parametersBuffer.write(')');
Expand All @@ -1825,7 +1823,7 @@ extension on LibraryElement {
if (type is InterfaceType) {
return _getTypeCodeElementArguments(
librariesToImport: librariesToImport,
element: type.element,
element: type.element3,
isNullable: type.nullabilitySuffix == NullabilitySuffix.question,
typeArguments: type.typeArguments,
);
Expand Down Expand Up @@ -1862,10 +1860,10 @@ extension on LibraryElement {
/// Returns the import element used to import given [element] into the
/// library.
///
/// May be `null` if was not imported, i.e. declared in the same library.
LibraryImportElement? _getImportElement(Element element) {
for (var imp in library.definingCompilationUnit.libraryImports) {
var definedNames = imp.namespace.definedNames;
/// Returns `null` if was not imported, i.e. declared in the same library.
LibraryImport? _getImportElement(Element2 element) {
for (var imp in firstFragment.libraryImports2) {
var definedNames = imp.namespace.definedNames2;
if (definedNames.containsValue(element)) {
return imp;
}
Expand All @@ -1875,14 +1873,14 @@ extension on LibraryElement {

String? _getTypeCodeElementArguments({
required Set<Source> librariesToImport,
required Element element,
required Element2 element,
required bool isNullable,
required List<DartType> typeArguments,
}) {
var sb = StringBuffer();

// Check if imported.
var library = element.library;
var library = element.library2;
if (library != null && library != this) {
// No source, if private.
if (element.isPrivate) {
Expand All @@ -1891,13 +1889,13 @@ extension on LibraryElement {
// Ensure import.
var importElement = _getImportElement(element);
if (importElement != null) {
var prefix = importElement.prefix?.element;
var prefix = importElement.prefix2?.element;
if (prefix != null) {
sb.write(prefix.displayName);
sb.write('.');
}
} else {
librariesToImport.add(library.source);
librariesToImport.add(library.firstFragment.source);
}
}

Expand Down
1 change: 1 addition & 0 deletions pkg/analysis_server_client/OWNERS
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
file:/tools/OWNERS_ANALYZER
file:/tools/OWNERS_DEVELOPER_EXPERIENCE
1 change: 1 addition & 0 deletions pkg/analysis_server_plugin/OWNERS
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
file:/tools/OWNERS_ANALYZER
file:/tools/OWNERS_DEVELOPER_EXPERIENCE
4 changes: 4 additions & 0 deletions pkg/analysis_server_plugin/analysis_options.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ analyzer:
implementation_imports: ignore
non_constant_identifier_names: ignore

# Ignoring this for all developers means developers don't need to ignore
# TODOs in their IDE settings.
todo: ignore

linter:
rules:
- always_use_package_imports
Expand Down
Loading

0 comments on commit d22c271

Please sign in to comment.