mirror of
https://github.com/dart-lang/sdk
synced 2024-09-15 23:29:47 +00:00
Stop using FormalParameter.kind in analyzer.
So that we could remove it from the public API in a breaking change. Change-Id: I625bd650d6e6fb4734e40bd8d58ae2142d7fb25e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/154304 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
parent
e7abc41107
commit
72bb1d1428
|
@ -4339,7 +4339,6 @@ abstract class FormalParameterImpl extends AstNodeImpl
|
|||
bool get isRequiredPositional => kind == ParameterKind.REQUIRED;
|
||||
|
||||
@override
|
||||
// Overridden to remove the 'deprecated' annotation.
|
||||
ParameterKind get kind;
|
||||
}
|
||||
|
||||
|
@ -7685,11 +7684,10 @@ abstract class NormalFormalParameterImpl extends FormalParameterImpl
|
|||
_identifier = _becomeParentOf(identifier as SimpleIdentifierImpl);
|
||||
}
|
||||
|
||||
@deprecated
|
||||
@override
|
||||
ParameterKind get kind {
|
||||
AstNode parent = this.parent;
|
||||
if (parent is DefaultFormalParameter) {
|
||||
if (parent is DefaultFormalParameterImpl) {
|
||||
return parent.kind;
|
||||
}
|
||||
return ParameterKind.REQUIRED;
|
||||
|
|
12
pkg/analyzer/lib/src/dart/ast/extensions.dart
Normal file
12
pkg/analyzer/lib/src/dart/ast/extensions.dart
Normal file
|
@ -0,0 +1,12 @@
|
|||
// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
|
||||
// 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.
|
||||
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
import 'package:analyzer/src/dart/ast/ast.dart';
|
||||
|
||||
extension ListOfFormalParameterExtension on List<FormalParameter> {
|
||||
Iterable<FormalParameterImpl> get asImpl {
|
||||
return this.cast<FormalParameterImpl>();
|
||||
}
|
||||
}
|
|
@ -339,8 +339,7 @@ class AstCloner implements AstVisitor<AstNode> {
|
|||
|
||||
@override
|
||||
DefaultFormalParameter visitDefaultFormalParameter(
|
||||
DefaultFormalParameter node) =>
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
covariant DefaultFormalParameterImpl node) =>
|
||||
astFactory.defaultFormalParameter(cloneNode(node.parameter), node.kind,
|
||||
cloneToken(node.separator), cloneNode(node.defaultValue));
|
||||
|
||||
|
@ -1446,10 +1445,9 @@ class AstComparator implements AstVisitor<bool> {
|
|||
}
|
||||
|
||||
@override
|
||||
bool visitDefaultFormalParameter(DefaultFormalParameter node) {
|
||||
DefaultFormalParameter other = _other as DefaultFormalParameter;
|
||||
bool visitDefaultFormalParameter(covariant DefaultFormalParameterImpl node) {
|
||||
var other = _other as DefaultFormalParameterImpl;
|
||||
return isEqualNodes(node.parameter, other.parameter) &&
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
node.kind == other.kind &&
|
||||
isEqualTokens(node.separator, other.separator) &&
|
||||
isEqualNodes(node.defaultValue, other.defaultValue);
|
||||
|
@ -4321,11 +4319,10 @@ class ResolutionCopier implements AstVisitor<bool> {
|
|||
}
|
||||
|
||||
@override
|
||||
bool visitDefaultFormalParameter(DefaultFormalParameter node) {
|
||||
DefaultFormalParameter toNode = this._toNode as DefaultFormalParameter;
|
||||
bool visitDefaultFormalParameter(covariant DefaultFormalParameterImpl node) {
|
||||
var toNode = this._toNode as DefaultFormalParameterImpl;
|
||||
return _and(
|
||||
_isEqualNodes(node.parameter, toNode.parameter),
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
node.kind == toNode.kind,
|
||||
_isEqualTokens(node.separator, toNode.separator),
|
||||
_isEqualNodes(node.defaultValue, toNode.defaultValue));
|
||||
|
|
|
@ -15,6 +15,7 @@ import 'package:analyzer/dart/element/type.dart';
|
|||
import 'package:analyzer/error/error.dart';
|
||||
import 'package:analyzer/src/dart/analysis/experiments.dart';
|
||||
import 'package:analyzer/src/dart/analysis/session.dart';
|
||||
import 'package:analyzer/src/dart/ast/ast.dart';
|
||||
import 'package:analyzer/src/dart/constant/compute.dart';
|
||||
import 'package:analyzer/src/dart/constant/evaluation.dart';
|
||||
import 'package:analyzer/src/dart/constant/value.dart';
|
||||
|
@ -6679,8 +6680,7 @@ class ParameterElementImpl extends VariableElementImpl
|
|||
if (_parameterKind != null) return _parameterKind;
|
||||
|
||||
if (linkedNode != null) {
|
||||
FormalParameter linkedNode = this.linkedNode;
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
var linkedNode = this.linkedNode as FormalParameterImpl;
|
||||
return linkedNode.kind;
|
||||
}
|
||||
return _parameterKind;
|
||||
|
|
|
@ -336,7 +336,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
|
|||
}
|
||||
|
||||
@override
|
||||
void visitDefaultFormalParameter(DefaultFormalParameter node) {
|
||||
void visitDefaultFormalParameter(covariant DefaultFormalParameterImpl node) {
|
||||
NormalFormalParameter normalParameter = node.parameter;
|
||||
SimpleIdentifier nameNode = normalParameter.identifier;
|
||||
|
||||
|
@ -358,7 +358,6 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
|
|||
element.isConst = node.isConst;
|
||||
element.isExplicitlyCovariant = node.parameter.covariantKeyword != null;
|
||||
element.isFinal = node.isFinal;
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
element.parameterKind = node.kind;
|
||||
|
||||
if (normalParameter is SimpleFormalParameter &&
|
||||
|
@ -457,7 +456,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
|
|||
}
|
||||
|
||||
@override
|
||||
void visitFieldFormalParameter(FieldFormalParameter node) {
|
||||
void visitFieldFormalParameter(covariant FieldFormalParameterImpl node) {
|
||||
FieldFormalParameterElementImpl element;
|
||||
if (node.parent is DefaultFormalParameter) {
|
||||
element = node.declaredElement;
|
||||
|
@ -475,7 +474,6 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
|
|||
element.isConst = node.isConst;
|
||||
element.isExplicitlyCovariant = node.covariantKeyword != null;
|
||||
element.isFinal = node.isFinal;
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
element.parameterKind = node.kind;
|
||||
_setCodeRange(element, node);
|
||||
element.metadata = _createElementAnnotations(node.metadata);
|
||||
|
@ -629,7 +627,9 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
|
|||
}
|
||||
|
||||
@override
|
||||
void visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
|
||||
void visitFunctionTypedFormalParameter(
|
||||
covariant FunctionTypedFormalParameterImpl node,
|
||||
) {
|
||||
ParameterElementImpl element;
|
||||
if (node.parent is DefaultFormalParameter) {
|
||||
element = node.declaredElement;
|
||||
|
@ -643,7 +643,6 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
|
|||
element.isConst = node.isConst;
|
||||
element.isExplicitlyCovariant = node.covariantKeyword != null;
|
||||
element.isFinal = node.isFinal;
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
element.parameterKind = node.kind;
|
||||
_setCodeRange(element, node);
|
||||
}
|
||||
|
@ -857,7 +856,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
|
|||
}
|
||||
|
||||
@override
|
||||
void visitSimpleFormalParameter(SimpleFormalParameter node) {
|
||||
void visitSimpleFormalParameter(covariant SimpleFormalParameterImpl node) {
|
||||
ParameterElementImpl element;
|
||||
if (node.parent is DefaultFormalParameter) {
|
||||
element = node.declaredElement;
|
||||
|
@ -877,15 +876,14 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
|
|||
element.isConst = node.isConst;
|
||||
element.isExplicitlyCovariant = node.covariantKeyword != null;
|
||||
element.isFinal = node.isFinal;
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
element.parameterKind = node.kind;
|
||||
if (node.type == null) {
|
||||
element.hasImplicitType = true;
|
||||
}
|
||||
(node as SimpleFormalParameterImpl).declaredElement = element;
|
||||
node.declaredElement = element;
|
||||
}
|
||||
nameNode?.staticElement = element;
|
||||
(node as SimpleFormalParameterImpl).declaredElement = element;
|
||||
node.declaredElement = element;
|
||||
}
|
||||
|
||||
node.type?.accept(this);
|
||||
|
|
|
@ -8,6 +8,7 @@ import 'package:analyzer/dart/element/nullability_suffix.dart';
|
|||
import 'package:analyzer/dart/element/type.dart';
|
||||
import 'package:analyzer/dart/element/type_visitor.dart';
|
||||
import 'package:analyzer/src/dart/ast/ast.dart';
|
||||
import 'package:analyzer/src/dart/ast/extensions.dart';
|
||||
import 'package:analyzer/src/dart/element/element.dart';
|
||||
import 'package:analyzer/src/dart/element/type.dart';
|
||||
import 'package:analyzer/src/dart/element/type_visitor.dart';
|
||||
|
@ -160,11 +161,10 @@ class FunctionTypeBuilder extends TypeBuilder {
|
|||
bool isNNBD,
|
||||
FormalParameterList node,
|
||||
) {
|
||||
return node.parameters.map((parameter) {
|
||||
return node.parameters.asImpl.map((parameter) {
|
||||
return ParameterElementImpl.synthetic(
|
||||
parameter.identifier?.name ?? '',
|
||||
_getParameterType(isNNBD, parameter),
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
parameter.kind,
|
||||
);
|
||||
}).toList();
|
||||
|
|
|
@ -7,6 +7,7 @@ import 'package:analyzer/dart/element/element.dart';
|
|||
import 'package:analyzer/dart/element/nullability_suffix.dart';
|
||||
import 'package:analyzer/dart/element/type.dart';
|
||||
import 'package:analyzer/dart/element/type_visitor.dart';
|
||||
import 'package:analyzer/src/dart/ast/extensions.dart';
|
||||
import 'package:analyzer/src/dart/element/element.dart';
|
||||
import 'package:analyzer/src/dart/element/type.dart';
|
||||
import 'package:analyzer/src/dart/element/type_algebra.dart';
|
||||
|
@ -203,15 +204,7 @@ class NamedTypeBuilder extends TypeBuilder {
|
|||
}) {
|
||||
var returnType = _buildNodeType(returnTypeNode);
|
||||
var typeParameters = _typeParameters(typeParameterList);
|
||||
|
||||
var formalParameters = parameterList.parameters.map((parameter) {
|
||||
return ParameterElementImpl.synthetic(
|
||||
parameter.identifier?.name ?? '',
|
||||
_buildFormalParameterType(parameter),
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
parameter.kind,
|
||||
);
|
||||
}).toList();
|
||||
var formalParameters = _formalParameters(parameterList);
|
||||
|
||||
return FunctionTypeImpl(
|
||||
typeFormals: typeParameters,
|
||||
|
@ -242,6 +235,16 @@ class NamedTypeBuilder extends TypeBuilder {
|
|||
}
|
||||
}
|
||||
|
||||
List<ParameterElementImpl> _formalParameters(FormalParameterList node) {
|
||||
return node.parameters.asImpl.map((parameter) {
|
||||
return ParameterElementImpl.synthetic(
|
||||
parameter.identifier?.name ?? '',
|
||||
_buildFormalParameterType(parameter),
|
||||
parameter.kind,
|
||||
);
|
||||
}).toList();
|
||||
}
|
||||
|
||||
NullabilitySuffix _getNullabilitySuffix(bool hasQuestion) {
|
||||
if (hasQuestion) {
|
||||
return NullabilitySuffix.question;
|
||||
|
|
|
@ -8,6 +8,7 @@ import 'package:analyzer/dart/element/element.dart';
|
|||
import 'package:analyzer/dart/element/nullability_suffix.dart';
|
||||
import 'package:analyzer/dart/element/type.dart';
|
||||
import 'package:analyzer/src/dart/analysis/session.dart';
|
||||
import 'package:analyzer/src/dart/ast/extensions.dart';
|
||||
import 'package:analyzer/src/dart/element/element.dart';
|
||||
import 'package:analyzer/src/dart/element/type.dart';
|
||||
import 'package:analyzer/src/dart/element/type_system.dart';
|
||||
|
@ -55,24 +56,8 @@ class TypesBuilder {
|
|||
NullabilitySuffix nullabilitySuffix,
|
||||
) {
|
||||
var returnType = returnTypeNode?.type ?? _dynamicType;
|
||||
|
||||
List<TypeParameterElement> typeParameters;
|
||||
if (typeParameterList != null) {
|
||||
typeParameters = typeParameterList.typeParameters
|
||||
.map<TypeParameterElement>((p) => p.declaredElement)
|
||||
.toList();
|
||||
} else {
|
||||
typeParameters = const <TypeParameterElement>[];
|
||||
}
|
||||
|
||||
var formalParameters = parameterList.parameters.map((parameter) {
|
||||
return ParameterElementImpl.synthetic(
|
||||
parameter.identifier?.name ?? '',
|
||||
_getType(parameter),
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
parameter.kind,
|
||||
);
|
||||
}).toList();
|
||||
var typeParameters = _typeParameters(typeParameterList);
|
||||
var formalParameters = _formalParameters(parameterList);
|
||||
|
||||
return FunctionTypeImpl(
|
||||
typeFormals: typeParameters,
|
||||
|
@ -156,6 +141,16 @@ class TypesBuilder {
|
|||
}
|
||||
}
|
||||
|
||||
List<ParameterElementImpl> _formalParameters(FormalParameterList node) {
|
||||
return node.parameters.asImpl.map((parameter) {
|
||||
return ParameterElementImpl.synthetic(
|
||||
parameter.identifier?.name ?? '',
|
||||
_getType(parameter),
|
||||
parameter.kind,
|
||||
);
|
||||
}).toList();
|
||||
}
|
||||
|
||||
void _functionTypeAlias(FunctionTypeAlias node) {
|
||||
var returnTypeNode = node.returnType;
|
||||
LazyAst.setReturnType(node, returnTypeNode?.type ?? _dynamicType);
|
||||
|
@ -188,6 +183,16 @@ class TypesBuilder {
|
|||
}
|
||||
}
|
||||
|
||||
List<TypeParameterElement> _typeParameters(TypeParameterList node) {
|
||||
if (node == null) {
|
||||
return const <TypeParameterElement>[];
|
||||
}
|
||||
|
||||
return node.typeParameters
|
||||
.map<TypeParameterElement>((p) => p.declaredElement)
|
||||
.toList();
|
||||
}
|
||||
|
||||
static DartType _getType(FormalParameter node) {
|
||||
if (node is DefaultFormalParameter) {
|
||||
return _getType(node.parameter);
|
||||
|
|
Loading…
Reference in a new issue