[Elements.migrate] Migrate FeatureComputer
Change-Id: Iff5c9cffd676464454460ca2a51cdd7cd0e1d507 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/397040 Commit-Queue: Keerti Parthasarathy <keertip@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
committed by
Commit Queue
parent
d621ed9782
commit
44a8f14932
@@ -29,7 +29,6 @@ lib/src/search/element_references.dart
|
||||
lib/src/search/type_hierarchy.dart
|
||||
lib/src/services/completion/dart/completion_manager.dart
|
||||
lib/src/services/completion/dart/declaration_helper.dart
|
||||
lib/src/services/completion/dart/feature_computer.dart
|
||||
lib/src/services/completion/dart/identifier_helper.dart
|
||||
lib/src/services/completion/dart/in_scope_completion_pass.dart
|
||||
lib/src/services/completion/dart/not_imported_completion_pass.dart
|
||||
|
||||
@@ -679,7 +679,7 @@ mixin MemberSuggestion implements ElementBasedSuggestion {
|
||||
var declaringClass = element.enclosingElement2;
|
||||
var referencingInterface = this.referencingInterface;
|
||||
if (referencingInterface != null && declaringClass is InterfaceElement2) {
|
||||
inheritanceDistance = featureComputer.inheritanceDistanceFeature2(
|
||||
inheritanceDistance = featureComputer.inheritanceDistanceFeature(
|
||||
referencingInterface,
|
||||
declaringClass,
|
||||
);
|
||||
|
||||
@@ -16,7 +16,6 @@ import 'package:analysis_server/src/utilities/extensions/element.dart';
|
||||
import 'package:analysis_server/src/utilities/extensions/numeric.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/dart/element/type_provider.dart';
|
||||
@@ -24,7 +23,6 @@ import 'package:analyzer/dart/element/type_system.dart';
|
||||
import 'package:analyzer/src/dart/ast/ast.dart';
|
||||
import 'package:analyzer/src/dart/element/extensions.dart';
|
||||
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
|
||||
import 'package:analyzer/src/utilities/extensions/element.dart';
|
||||
import 'package:analyzer/src/utilities/extensions/object.dart';
|
||||
import 'package:analyzer_plugin/utilities/range_factory.dart';
|
||||
|
||||
@@ -190,19 +188,19 @@ class FeatureComputer {
|
||||
/// setters are always mapped into a different kind: FIELD for getters and
|
||||
/// setters declared in a class or extension, and TOP_LEVEL_VARIABLE for
|
||||
/// top-level getters and setters.
|
||||
protocol.ElementKind computeElementKind(Element element) {
|
||||
if (element is LibraryElement) {
|
||||
protocol.ElementKind computeElementKind(Element2 element) {
|
||||
if (element is LibraryElement2) {
|
||||
return protocol.ElementKind.PREFIX;
|
||||
} else if (element is EnumElement) {
|
||||
} else if (element is EnumElement2) {
|
||||
return protocol.ElementKind.ENUM;
|
||||
} else if (element is MixinElement) {
|
||||
} else if (element is MixinElement2) {
|
||||
return protocol.ElementKind.MIXIN;
|
||||
} else if (element is ClassElement) {
|
||||
} else if (element is ClassElement2) {
|
||||
return protocol.ElementKind.CLASS;
|
||||
} else if (element is FieldElement && element.isEnumConstant) {
|
||||
} else if (element is FieldElement2 && element.isEnumConstant) {
|
||||
return protocol.ElementKind.ENUM_CONSTANT;
|
||||
} else if (element is PropertyAccessorElement) {
|
||||
var variable = element.variable2;
|
||||
} else if (element is PropertyAccessorElement2) {
|
||||
var variable = element.variable3;
|
||||
if (variable == null) {
|
||||
return protocol.ElementKind.UNKNOWN;
|
||||
}
|
||||
@@ -333,31 +331,6 @@ class FeatureComputer {
|
||||
/// completing at the given [completionLocation]. If a [distance] is given it
|
||||
/// will be used to provide finer-grained relevance scores.
|
||||
double elementKindFeature(
|
||||
Element element,
|
||||
String? completionLocation, {
|
||||
double? distance,
|
||||
}) {
|
||||
if (completionLocation == null) {
|
||||
return 0.0;
|
||||
}
|
||||
var locationTable = elementKindRelevance[completionLocation];
|
||||
if (locationTable == null) {
|
||||
return 0.0;
|
||||
}
|
||||
var range = locationTable[computeElementKind(element)];
|
||||
if (range == null) {
|
||||
return 0.0;
|
||||
}
|
||||
if (distance == null) {
|
||||
return range.middle;
|
||||
}
|
||||
return range.conditionalProbability(distance);
|
||||
}
|
||||
|
||||
/// Return the value of the _element kind_ feature for the [element] when
|
||||
/// completing at the given [completionLocation]. If a [distance] is given it
|
||||
/// will be used to provide finer-grained relevance scores.
|
||||
double elementKindFeature2(
|
||||
Element2 element,
|
||||
String? completionLocation, {
|
||||
double? distance,
|
||||
@@ -379,13 +352,8 @@ class FeatureComputer {
|
||||
return range.conditionalProbability(distance);
|
||||
}
|
||||
|
||||
/// Return the value of the _has deprecated_ feature for the given [element].
|
||||
double hasDeprecatedFeature(Element element) {
|
||||
return element.hasOrInheritsDeprecated ? -1.0 : 0.0;
|
||||
}
|
||||
|
||||
// Return the value of the _has deprecated_ feature for the given [element].
|
||||
double hasDeprecatedFeature2(Element2 element) {
|
||||
double hasDeprecatedFeature(Element2 element) {
|
||||
return element.hasOrInheritsDeprecated ? -1.0 : 0.0;
|
||||
}
|
||||
|
||||
@@ -396,21 +364,6 @@ class FeatureComputer {
|
||||
/// supertype if the two types are not the same. Return `-1` if the [subclass]
|
||||
/// is not a subclass of the [superclass].
|
||||
int inheritanceDistance(
|
||||
InterfaceElement subclass,
|
||||
InterfaceElement superclass,
|
||||
) {
|
||||
// This method is only visible for the metrics computation and might be made
|
||||
// private at some future date.
|
||||
return _inheritanceDistance(subclass.asElement2, superclass.asElement2, {});
|
||||
}
|
||||
|
||||
/// Return the inheritance distance between the [subclass] and the
|
||||
/// [superclass]. We define the inheritance distance between two types to be
|
||||
/// zero if the two types are the same and the minimum number of edges that
|
||||
/// must be traversed in the type graph to get from the subtype to the
|
||||
/// supertype if the two types are not the same. Return `-1` if the [subclass]
|
||||
/// is not a subclass of the [superclass].
|
||||
int inheritanceDistance2(
|
||||
InterfaceElement2 subclass,
|
||||
InterfaceElement2 superclass,
|
||||
) {
|
||||
@@ -423,21 +376,6 @@ class FeatureComputer {
|
||||
/// defined in the [superclass] that is being accessed through an expression
|
||||
/// whose static type is the [subclass].
|
||||
double inheritanceDistanceFeature(
|
||||
InterfaceElement subclass,
|
||||
InterfaceElement superclass,
|
||||
) {
|
||||
var distance = _inheritanceDistance(
|
||||
subclass.asElement2,
|
||||
superclass.asElement2,
|
||||
{},
|
||||
);
|
||||
return distanceToPercent(distance);
|
||||
}
|
||||
|
||||
/// Return the value of the _inheritance distance_ feature for a member
|
||||
/// defined in the [superclass] that is being accessed through an expression
|
||||
/// whose static type is the [subclass].
|
||||
double inheritanceDistanceFeature2(
|
||||
InterfaceElement2 subclass,
|
||||
InterfaceElement2 superclass,
|
||||
) {
|
||||
@@ -446,24 +384,7 @@ class FeatureComputer {
|
||||
}
|
||||
|
||||
/// Return the value of the _is constant_ feature for the given [element].
|
||||
double isConstantFeature(Element element) {
|
||||
if (element is ConstructorElement && element.isConst) {
|
||||
return 1.0;
|
||||
} else if (element is FieldElement && element.isStatic && element.isConst) {
|
||||
return 1.0;
|
||||
} else if (element is TopLevelVariableElement && element.isConst) {
|
||||
return 1.0;
|
||||
} else if (element is PropertyAccessorElement && element.isSynthetic) {
|
||||
var variable = element.variable2;
|
||||
if (variable != null && variable.isStatic && variable.isConst) {
|
||||
return 1.0;
|
||||
}
|
||||
}
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
/// Return the value of the _is constant_ feature for the given [element].
|
||||
double isConstantFeature2(Element2 element) {
|
||||
double isConstantFeature(Element2 element) {
|
||||
if (element is ConstructorElement2 && element.isConst) {
|
||||
return 1.0;
|
||||
} else if (element is FieldElement2 &&
|
||||
@@ -491,7 +412,7 @@ class FeatureComputer {
|
||||
// override of `noSuchMethod`.
|
||||
return 0.0;
|
||||
}
|
||||
return proposedMemberName == FunctionElement.NO_SUCH_METHOD_METHOD_NAME
|
||||
return proposedMemberName == MethodElement2.NO_SUCH_METHOD_METHOD_NAME
|
||||
? -1.0
|
||||
: 0.0;
|
||||
}
|
||||
@@ -612,7 +533,7 @@ class _ContextTypeVisitor extends SimpleAstVisitor<DartType> {
|
||||
if (range
|
||||
.endStart(node.leftParenthesis, node.rightParenthesis)
|
||||
.contains(offset)) {
|
||||
var parameters = node.functionType?.parameters;
|
||||
var parameters = node.functionType?.formalParameters;
|
||||
if (parameters == null) {
|
||||
return null;
|
||||
}
|
||||
@@ -637,14 +558,14 @@ class _ContextTypeVisitor extends SimpleAstVisitor<DartType> {
|
||||
}
|
||||
if (argument.contains(offset)) {
|
||||
if (offset >= argument.name.end) {
|
||||
return argument.staticParameterElement?.type;
|
||||
return argument.element2?.type;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
if (previousArgument == null || previousArgument.end < offset) {
|
||||
if (offset <= argument.end) {
|
||||
return argument.staticParameterElement?.type;
|
||||
return argument.correspondingParameter?.type;
|
||||
}
|
||||
}
|
||||
previousArgument = argument;
|
||||
@@ -717,7 +638,7 @@ class _ContextTypeVisitor extends SimpleAstVisitor<DartType> {
|
||||
@override
|
||||
DartType? visitBinaryExpression(BinaryExpression node) {
|
||||
if (node.operator.end <= offset) {
|
||||
return node.rightOperand.staticParameterElement?.type;
|
||||
return node.rightOperand.correspondingParameter?.type;
|
||||
}
|
||||
return _visitParent(node);
|
||||
}
|
||||
@@ -742,8 +663,8 @@ class _ContextTypeVisitor extends SimpleAstVisitor<DartType> {
|
||||
@override
|
||||
DartType? visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
|
||||
if (node.equals.end <= offset) {
|
||||
var element = node.fieldName.staticElement;
|
||||
if (element is FieldElement) {
|
||||
var element = node.fieldName.element;
|
||||
if (element is FieldElement2) {
|
||||
return element.type;
|
||||
}
|
||||
}
|
||||
@@ -764,7 +685,7 @@ class _ContextTypeVisitor extends SimpleAstVisitor<DartType> {
|
||||
DartType? visitDefaultFormalParameter(DefaultFormalParameter node) {
|
||||
var separator = node.separator;
|
||||
if (separator != null && separator.end <= offset) {
|
||||
return node.parameter.declaredElement?.type;
|
||||
return node.parameter.declaredFragment?.element.type;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -1073,7 +994,7 @@ parent3: ${node.parent?.parent?.parent}
|
||||
|
||||
@override
|
||||
DartType? visitPostfixExpression(PostfixExpression node) {
|
||||
return node.operand.staticParameterElement?.type;
|
||||
return node.operand.correspondingParameter?.type;
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -1083,7 +1004,7 @@ parent3: ${node.parent?.parent?.parent}
|
||||
|
||||
@override
|
||||
DartType? visitPrefixExpression(PrefixExpression node) {
|
||||
return node.operand.staticParameterElement?.type;
|
||||
return node.operand.correspondingParameter?.type;
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -1305,17 +1226,17 @@ parent3: ${node.parent?.parent?.parent}
|
||||
// TODO(brianwilkerson): Replace with `patternTypeSchema` (on AST) where
|
||||
// possible.
|
||||
pattern = pattern.unParenthesized;
|
||||
Element? element;
|
||||
Element2? element;
|
||||
if (pattern is AssignedVariablePattern) {
|
||||
element = pattern.element;
|
||||
element = pattern.element2;
|
||||
} else if (pattern is DeclaredVariablePattern) {
|
||||
element = pattern.declaredElement;
|
||||
element = pattern.declaredElement2;
|
||||
// } else if (pattern is RecordPattern) {
|
||||
// pattern.fields.map((e) => _requiredTypeOfPattern(e.pattern)).toList();
|
||||
} else if (pattern is ListPattern) {
|
||||
return pattern.requiredType;
|
||||
}
|
||||
if (element is VariableElement) {
|
||||
if (element is VariableElement2) {
|
||||
return element.type;
|
||||
}
|
||||
return null;
|
||||
@@ -1337,19 +1258,14 @@ parent3: ${node.parent?.parent?.parent}
|
||||
if (type is! InterfaceType) {
|
||||
return null;
|
||||
}
|
||||
var declaredElement2 = (field.root as CompilationUnit).declaredElement;
|
||||
var uri = declaredElement2?.source.uri;
|
||||
if (uri == null) {
|
||||
return null;
|
||||
}
|
||||
var declaredElement2 = field.element2?.library2;
|
||||
var uri = declaredElement2?.uri;
|
||||
var manager = InheritanceManager3();
|
||||
var member = manager.getMember(type, Name(uri, name));
|
||||
if (member is PropertyAccessorElement) {
|
||||
if (member.isGetter) {
|
||||
return member.type.returnType;
|
||||
}
|
||||
} else if (member is MethodElement) {
|
||||
return member.type;
|
||||
var member = manager.getMember3(type, Name(uri, name));
|
||||
if (member is GetterElement) {
|
||||
return member.returnType;
|
||||
} else if (member is MethodElement2) {
|
||||
return member.returnType;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -1421,7 +1337,7 @@ extension on ArgumentList {
|
||||
FunctionType? get functionType {
|
||||
var parent = this.parent;
|
||||
if (parent is InstanceCreationExpression) {
|
||||
return parent.constructorName.staticElement?.type;
|
||||
return parent.constructorName.element?.type;
|
||||
} else if (parent is MethodInvocation) {
|
||||
var type = parent.staticInvokeType;
|
||||
if (type is FunctionType) {
|
||||
|
||||
@@ -78,9 +78,9 @@ class RelevanceComputer {
|
||||
element,
|
||||
distance: inheritanceDistance,
|
||||
);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature2(element);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature(element);
|
||||
var isConstant =
|
||||
preferConstants ? featureComputer.isConstantFeature2(element) : 0.0;
|
||||
preferConstants ? featureComputer.isConstantFeature(element) : 0.0;
|
||||
var startsWithDollar = featureComputer.startsWithDollarFeature(
|
||||
element.displayName,
|
||||
);
|
||||
@@ -353,9 +353,9 @@ class RelevanceComputer {
|
||||
elementType,
|
||||
);
|
||||
var elementKind = _computeElementKind(element);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature2(element);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature(element);
|
||||
var isConstant =
|
||||
preferConstants ? featureComputer.isConstantFeature2(element) : 0.0;
|
||||
preferConstants ? featureComputer.isConstantFeature(element) : 0.0;
|
||||
return computeScore(
|
||||
contextType: contextType,
|
||||
elementKind: elementKind,
|
||||
@@ -380,9 +380,9 @@ class RelevanceComputer {
|
||||
elementType,
|
||||
);
|
||||
var elementKind = _computeElementKind2(element);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature2(element);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature(element);
|
||||
var isConstant =
|
||||
preferConstants ? featureComputer.isConstantFeature2(element) : 0.0;
|
||||
preferConstants ? featureComputer.isConstantFeature(element) : 0.0;
|
||||
return computeScore(
|
||||
contextType: contextType,
|
||||
elementKind: elementKind,
|
||||
@@ -406,9 +406,9 @@ class RelevanceComputer {
|
||||
type,
|
||||
);
|
||||
var elementKind = _computeElementKind(accessor, distance: distance);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature2(accessor);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature(accessor);
|
||||
var isConstant =
|
||||
preferConstants ? featureComputer.isConstantFeature2(accessor) : 0.0;
|
||||
preferConstants ? featureComputer.isConstantFeature(accessor) : 0.0;
|
||||
return computeScore(
|
||||
contextType: contextType,
|
||||
elementKind: elementKind,
|
||||
@@ -439,7 +439,7 @@ class RelevanceComputer {
|
||||
/// the completion context.
|
||||
double _computeElementKind(Element2 element, {double? distance}) {
|
||||
var location = completionLocation;
|
||||
var elementKind = featureComputer.elementKindFeature2(
|
||||
var elementKind = featureComputer.elementKindFeature(
|
||||
element,
|
||||
location,
|
||||
distance: distance,
|
||||
@@ -461,7 +461,7 @@ class RelevanceComputer {
|
||||
/// the completion context.
|
||||
double _computeElementKind2(Element2 element, {double? distance}) {
|
||||
var location = completionLocation;
|
||||
var elementKind = featureComputer.elementKindFeature2(
|
||||
var elementKind = featureComputer.elementKindFeature(
|
||||
element,
|
||||
location,
|
||||
distance: distance,
|
||||
@@ -510,7 +510,7 @@ class RelevanceComputer {
|
||||
);
|
||||
var elementKind = _computeElementKind(element);
|
||||
var isConstant =
|
||||
preferConstants ? featureComputer.isConstantFeature2(element) : 0.0;
|
||||
preferConstants ? featureComputer.isConstantFeature(element) : 0.0;
|
||||
return computeScore(
|
||||
contextType: contextType,
|
||||
elementKind: elementKind,
|
||||
@@ -555,7 +555,7 @@ class RelevanceComputer {
|
||||
distance: localVariableDistance,
|
||||
);
|
||||
var isConstant =
|
||||
preferConstants ? featureComputer.isConstantFeature2(element) : 0.0;
|
||||
preferConstants ? featureComputer.isConstantFeature(element) : 0.0;
|
||||
return computeScore(
|
||||
contextType: contextType,
|
||||
elementKind: elementKind,
|
||||
@@ -578,9 +578,9 @@ class RelevanceComputer {
|
||||
method,
|
||||
distance: inheritanceDistance,
|
||||
);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature2(method);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature(method);
|
||||
var isConstant =
|
||||
preferConstants ? featureComputer.isConstantFeature2(method) : 0.0;
|
||||
preferConstants ? featureComputer.isConstantFeature(method) : 0.0;
|
||||
var isNoSuchMethod = featureComputer.isNoSuchMethodFeature(
|
||||
_containingMemberName,
|
||||
method.displayName,
|
||||
@@ -698,7 +698,7 @@ class RelevanceComputer {
|
||||
int _computeTypeParameterRelevance(TypeParameterElement2 parameter) {
|
||||
var elementKind = _computeElementKind(parameter);
|
||||
var isConstant =
|
||||
preferConstants ? featureComputer.isConstantFeature2(parameter) : 0.0;
|
||||
preferConstants ? featureComputer.isConstantFeature(parameter) : 0.0;
|
||||
return computeScore(elementKind: elementKind, isConstant: isConstant);
|
||||
}
|
||||
|
||||
|
||||
@@ -296,9 +296,9 @@ class SuggestionBuilder {
|
||||
field,
|
||||
distance: inheritanceDistance,
|
||||
);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature2(field);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature(field);
|
||||
var isConstant =
|
||||
_preferConstants ? featureComputer.isConstantFeature2(field) : 0.0;
|
||||
_preferConstants ? featureComputer.isConstantFeature(field) : 0.0;
|
||||
var startsWithDollar = featureComputer.startsWithDollarFeature(
|
||||
field.name3 ?? '',
|
||||
);
|
||||
@@ -342,7 +342,7 @@ class SuggestionBuilder {
|
||||
var elementKind = _computeElementKind(element);
|
||||
var isConstant =
|
||||
_preferConstants
|
||||
? request.featureComputer.isConstantFeature2(element)
|
||||
? request.featureComputer.isConstantFeature(element)
|
||||
: 0.0;
|
||||
relevance ??= relevanceComputer.computeScore(
|
||||
contextType: contextType,
|
||||
@@ -420,9 +420,9 @@ class SuggestionBuilder {
|
||||
getter,
|
||||
distance: inheritanceDistance,
|
||||
);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature2(getter);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature(getter);
|
||||
var isConstant =
|
||||
_preferConstants ? featureComputer.isConstantFeature2(getter) : 0.0;
|
||||
_preferConstants ? featureComputer.isConstantFeature(getter) : 0.0;
|
||||
var startsWithDollar = featureComputer.startsWithDollarFeature(
|
||||
getter.displayName,
|
||||
);
|
||||
@@ -606,7 +606,7 @@ class SuggestionBuilder {
|
||||
);
|
||||
var isConstant =
|
||||
_preferConstants
|
||||
? request.featureComputer.isConstantFeature2(element)
|
||||
? request.featureComputer.isConstantFeature(element)
|
||||
: 0.0;
|
||||
relevance ??= relevanceComputer.computeScore(
|
||||
contextType: contextType,
|
||||
@@ -645,9 +645,9 @@ class SuggestionBuilder {
|
||||
method,
|
||||
distance: inheritanceDistance,
|
||||
);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature2(method);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature(method);
|
||||
var isConstant =
|
||||
_preferConstants ? featureComputer.isConstantFeature2(method) : 0.0;
|
||||
_preferConstants ? featureComputer.isConstantFeature(method) : 0.0;
|
||||
var isNoSuchMethod = featureComputer.isNoSuchMethodFeature(
|
||||
_containingMemberName,
|
||||
method.displayName,
|
||||
@@ -965,9 +965,9 @@ class SuggestionBuilder {
|
||||
setter,
|
||||
distance: inheritanceDistance,
|
||||
);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature2(setter);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature(setter);
|
||||
var isConstant =
|
||||
_preferConstants ? featureComputer.isConstantFeature2(setter) : 0.0;
|
||||
_preferConstants ? featureComputer.isConstantFeature(setter) : 0.0;
|
||||
var startsWithDollar = featureComputer.startsWithDollarFeature(
|
||||
setter.displayName,
|
||||
);
|
||||
@@ -1128,9 +1128,9 @@ class SuggestionBuilder {
|
||||
type,
|
||||
);
|
||||
var elementKind = _computeElementKind(getter);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature2(getter);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature(getter);
|
||||
var isConstant =
|
||||
_preferConstants ? featureComputer.isConstantFeature2(getter) : 0.0;
|
||||
_preferConstants ? featureComputer.isConstantFeature(getter) : 0.0;
|
||||
var startsWithDollar = featureComputer.startsWithDollarFeature(
|
||||
getter.displayName,
|
||||
);
|
||||
@@ -1180,9 +1180,9 @@ class SuggestionBuilder {
|
||||
type,
|
||||
);
|
||||
var elementKind = _computeElementKind(setter);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature2(setter);
|
||||
var hasDeprecated = featureComputer.hasDeprecatedFeature(setter);
|
||||
var isConstant =
|
||||
_preferConstants ? featureComputer.isConstantFeature2(setter) : 0.0;
|
||||
_preferConstants ? featureComputer.isConstantFeature(setter) : 0.0;
|
||||
var startsWithDollar = featureComputer.startsWithDollarFeature(
|
||||
setter.displayName,
|
||||
);
|
||||
@@ -1270,7 +1270,7 @@ class SuggestionBuilder {
|
||||
var elementKind = _computeElementKind(parameter);
|
||||
var isConstant =
|
||||
_preferConstants
|
||||
? request.featureComputer.isConstantFeature2(parameter)
|
||||
? request.featureComputer.isConstantFeature(parameter)
|
||||
: 0.0;
|
||||
relevance ??= relevanceComputer.computeScore(
|
||||
elementKind: elementKind,
|
||||
@@ -1362,7 +1362,7 @@ class SuggestionBuilder {
|
||||
/// the completion context.
|
||||
double _computeElementKind(Element2 element, {double? distance}) {
|
||||
var location = request.opType.completionLocation;
|
||||
var elementKind = request.featureComputer.elementKindFeature2(
|
||||
var elementKind = request.featureComputer.elementKindFeature(
|
||||
element,
|
||||
location,
|
||||
distance: distance,
|
||||
|
||||
@@ -1851,7 +1851,7 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
}
|
||||
|
||||
var superclassDepth = getSuperclassDepth();
|
||||
var interfaceDepth = featureComputer.inheritanceDistance2(
|
||||
var interfaceDepth = featureComputer.inheritanceDistance(
|
||||
targetClass,
|
||||
memberClass,
|
||||
);
|
||||
@@ -2079,12 +2079,12 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
int distance;
|
||||
if (parameterType.element3 == typeProvider.futureOrElement2) {
|
||||
var typeArgument = parameterType.typeArguments[0];
|
||||
distance = featureComputer.inheritanceDistance2(
|
||||
distance = featureComputer.inheritanceDistance(
|
||||
argumentType.element3,
|
||||
typeProvider.futureElement2,
|
||||
);
|
||||
if (typeArgument is InterfaceType) {
|
||||
var argDistance = featureComputer.inheritanceDistance2(
|
||||
var argDistance = featureComputer.inheritanceDistance(
|
||||
argumentType.element3,
|
||||
typeArgument.element3,
|
||||
);
|
||||
@@ -2093,7 +2093,7 @@ class RelevanceDataCollector extends RecursiveAstVisitor<void> {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
distance = featureComputer.inheritanceDistance2(
|
||||
distance = featureComputer.inheritanceDistance(
|
||||
argumentType.element3,
|
||||
parameterType.element3,
|
||||
);
|
||||
|
||||
@@ -1887,6 +1887,10 @@ abstract class MethodElement2 implements ExecutableElement2 {
|
||||
/// instances to be invoked as if they were a function.
|
||||
static final String CALL_METHOD_NAME = "call";
|
||||
|
||||
/// The name of the method that will be invoked if an attempt is made to
|
||||
/// invoke an undefined method on an object.
|
||||
static final String NO_SUCH_METHOD_METHOD_NAME = "noSuchMethod";
|
||||
|
||||
@override
|
||||
MethodElement2 get baseElement;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user