Skip to content

Commit

Permalink
Version 3.7.0-284.0.dev
Browse files Browse the repository at this point in the history
Merge d2f3470 into dev
  • Loading branch information
Dart CI committed Dec 24, 2024
2 parents 43cb724 + d2f3470 commit ed6b041
Show file tree
Hide file tree
Showing 13 changed files with 99 additions and 70 deletions.
10 changes: 5 additions & 5 deletions pkg/analyzer/lib/src/dart/ast/ast.dart
Original file line number Diff line number Diff line change
Expand Up @@ -821,7 +821,7 @@ final class AssignedVariablePatternImpl extends VariablePatternImpl
@override
DartType computePatternSchema(ResolverVisitor resolverVisitor) {
var element = element2;
if (element is PromotableElement2) {
if (element is PromotableElementImpl2) {
return resolverVisitor
.analyzeAssignedVariablePatternSchema(element)
.unwrapTypeSchemaView();
Expand Down Expand Up @@ -2583,7 +2583,7 @@ final class CatchClauseParameterImpl extends AstNodeImpl

@experimental
@override
LocalVariableElement2? get declaredElement2 {
LocalVariableElementImpl2? get declaredElement2 {
return declaredElement.asElement2 as LocalVariableElementImpl2?;
}

Expand Down Expand Up @@ -4892,7 +4892,7 @@ final class DeclaredIdentifierImpl extends DeclarationImpl

@experimental
@override
LocalVariableElement2? get declaredElement2 {
LocalVariableElementImpl2? get declaredElement2 {
return declaredElement.asElement2 as LocalVariableElementImpl2?;
}

Expand Down Expand Up @@ -4983,7 +4983,7 @@ final class DeclaredVariablePatternImpl extends VariablePatternImpl

@experimental
@override
BindPatternVariableElement2? get declaredElement2 {
BindPatternVariableElementImpl2? get declaredElement2 {
return declaredElement?.element;
}

Expand Down Expand Up @@ -17274,7 +17274,7 @@ class SwitchStatementCaseGroup {
final bool hasLabels;

/// Joined variables declared in [members], available in [statements].
late Map<String, PromotableElement2> variables;
late Map<String, PromotableElementImpl2> variables;

SwitchStatementCaseGroup(this.members, this.hasLabels);

Expand Down
39 changes: 25 additions & 14 deletions pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import 'package:_fe_analyzer_shared/src/type_inference/type_constraint.dart'
UnknownTypeConstraintOrigin;
import 'package:_fe_analyzer_shared/src/types/shared_type.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/src/dart/ast/ast.dart';
import 'package:analyzer/src/dart/element/element.dart';
Expand All @@ -31,19 +30,27 @@ import 'package:analyzer/src/dart/resolver/flow_analysis_visitor.dart';

/// Instance of [shared.GeneratedTypeConstraint] specific to the Analyzer.
typedef GeneratedTypeConstraint = shared.GeneratedTypeConstraint<DartType,
TypeParameterElement, PromotableElement2>;
TypeParameterElement, PromotableElementImpl2>;

/// Instance of [shared.MergedTypeConstraint] specific to the Analyzer.
typedef MergedTypeConstraint = shared.MergedTypeConstraint<DartType,
TypeParameterElement, PromotableElement2, InterfaceType, InterfaceElement>;
typedef MergedTypeConstraint = shared.MergedTypeConstraint<
DartType,
TypeParameterElement,
PromotableElementImpl2,
InterfaceType,
InterfaceElement>;

/// Instance of [shared.TypeConstraintFromArgument] specific to the Analyzer.
typedef TypeConstraintFromArgument = shared.TypeConstraintFromArgument<DartType,
PromotableElement2, TypeParameterElement, InterfaceType, InterfaceElement>;
typedef TypeConstraintFromArgument = shared.TypeConstraintFromArgument<
DartType,
PromotableElementImpl2,
TypeParameterElement,
InterfaceType,
InterfaceElement>;

/// Instance of [shared.TypeConstraintFromExtendsClause] specific to the Analyzer.
typedef TypeConstraintFromExtendsClause
= shared.TypeConstraintFromExtendsClause<DartType, PromotableElement2,
= shared.TypeConstraintFromExtendsClause<DartType, PromotableElementImpl2,
TypeParameterElement, InterfaceType, InterfaceElement>;

/// Instance of [shared.TypeConstraintFromFunctionContext] specific to the Analyzer.
Expand All @@ -52,7 +59,7 @@ typedef TypeConstraintFromFunctionContext
DartType,
DartType,
DartType,
PromotableElement2,
PromotableElementImpl2,
TypeParameterElement,
InterfaceType,
InterfaceElement>;
Expand All @@ -62,19 +69,23 @@ typedef TypeConstraintFromReturnType = shared.TypeConstraintFromReturnType<
DartType,
DartType,
DartType,
PromotableElement2,
PromotableElementImpl2,
TypeParameterElement,
InterfaceType,
InterfaceElement>;

/// Instance of [shared.TypeConstraintOrigin] specific to the Analyzer.
typedef TypeConstraintOrigin = shared.TypeConstraintOrigin<DartType,
PromotableElement2, TypeParameterElement, InterfaceType, InterfaceElement>;
typedef TypeConstraintOrigin = shared.TypeConstraintOrigin<
DartType,
PromotableElementImpl2,
TypeParameterElement,
InterfaceType,
InterfaceElement>;

/// Instance of [shared.UnknownTypeConstraintOrigin] specific to the Analyzer.
typedef UnknownTypeConstraintOrigin = shared.UnknownTypeConstraintOrigin<
DartType,
PromotableElement2,
PromotableElementImpl2,
TypeParameterElement,
InterfaceType,
InterfaceElement>;
Expand All @@ -84,7 +95,7 @@ typedef UnknownTypeConstraintOrigin = shared.UnknownTypeConstraintOrigin<
class TypeConstraintGatherer extends shared.TypeConstraintGenerator<
DartType,
ParameterElement,
PromotableElement2,
PromotableElementImpl2,
TypeParameterElement,
InterfaceType,
InterfaceElement,
Expand All @@ -93,7 +104,7 @@ class TypeConstraintGatherer extends shared.TypeConstraintGenerator<
shared.TypeConstraintGeneratorMixin<
DartType,
ParameterElement,
PromotableElement2,
PromotableElementImpl2,
TypeParameterElement,
InterfaceType,
InterfaceElement,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ import 'package:_fe_analyzer_shared/src/types/shared_type.dart';
import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/ast/token.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';
import 'package:analyzer/error/listener.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_schema.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
Expand Down Expand Up @@ -103,7 +103,7 @@ class AssignmentExpressionResolver {
whyNotPromoted: whyNotPromoted, contextType: contextType);

if (flow != null) {
if (writeElement2 is PromotableElement2) {
if (writeElement2 is PromotableElementImpl2) {
flow.write(node, writeElement2, SharedTypeView(node.typeOrThrow),
hasRead ? null : right);
}
Expand Down Expand Up @@ -362,7 +362,7 @@ class AssignmentExpressionShared {

if (left is SimpleIdentifier) {
var element = left.element;
if (element is PromotableElement2) {
if (element is PromotableElementImpl2) {
var assigned = flowAnalysis.isDefinitelyAssigned(left, element);
var unassigned = flowAnalysis.isDefinitelyUnassigned(left, element);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/ast/syntactic_entity.dart';
import 'package:analyzer/dart/ast/token.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';
import 'package:analyzer/error/listener.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_schema.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
Expand Down Expand Up @@ -141,13 +141,13 @@ class BinaryExpressionResolver {

if (left is SimpleIdentifierImpl && right is NullLiteralImpl) {
var element = left.element;
if (element is PromotableElement2 &&
if (element is PromotableElementImpl2 &&
flowAnalysis.isDefinitelyUnassigned(left, element)) {
reportNullComparison(left, node.operator);
}
} else if (right is SimpleIdentifierImpl && left is NullLiteralImpl) {
var element = right.element;
if (element is PromotableElement2 &&
if (element is PromotableElementImpl2 &&
flowAnalysis.isDefinitelyUnassigned(right, element)) {
reportNullComparison(node.operator, right);
}
Expand Down
35 changes: 20 additions & 15 deletions pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ class FlowAnalysisDataForTesting {

/// For each top level or class level declaration, the assigned variables
/// information that was computed for it.
final Map<AstNode, AssignedVariablesForTesting<AstNode, PromotableElement2>>
final Map<AstNode,
AssignedVariablesForTesting<AstNode, PromotableElementImpl2>>
assignedVariables = {};

/// For each expression that led to an error because it was not promoted, a
Expand All @@ -76,7 +77,7 @@ class FlowAnalysisHelper {
final TypeSystemOperations typeOperations;

/// Precomputed sets of potentially assigned variables.
AssignedVariables<AstNode, PromotableElement2>? assignedVariables;
AssignedVariables<AstNode, PromotableElementImpl2>? assignedVariables;

/// The result for post-resolution stages of analysis, for testing only.
final FlowAnalysisDataForTesting? dataForTesting;
Expand All @@ -95,7 +96,7 @@ class FlowAnalysisHelper {
final bool inferenceUpdate4Enabled;

/// The current flow, when resolving a function body, or `null` otherwise.
FlowAnalysis<AstNode, Statement, Expression, PromotableElement2,
FlowAnalysis<AstNode, Statement, Expression, PromotableElementImpl2,
SharedTypeView<DartType>>? flow;

FlowAnalysisHelper(bool retainDataForTesting, FeatureSet featureSet,
Expand Down Expand Up @@ -173,10 +174,10 @@ class FlowAnalysisHelper {
retainDataForTesting: dataForTesting != null, visit: visit);
if (dataForTesting != null) {
dataForTesting!.assignedVariables[node] = assignedVariables
as AssignedVariablesForTesting<AstNode, PromotableElement2>;
as AssignedVariablesForTesting<AstNode, PromotableElementImpl2>;
}
flow = isNonNullableByDefault
? FlowAnalysis<AstNode, Statement, Expression, PromotableElement2,
? FlowAnalysis<AstNode, Statement, Expression, PromotableElementImpl2,
SharedTypeView<DartType>>(
typeOperations,
assignedVariables!,
Expand All @@ -185,7 +186,7 @@ class FlowAnalysisHelper {
fieldPromotionEnabled: fieldPromotionEnabled,
inferenceUpdate4Enabled: inferenceUpdate4Enabled,
)
: FlowAnalysis<AstNode, Statement, Expression, PromotableElement2,
: FlowAnalysis<AstNode, Statement, Expression, PromotableElementImpl2,
SharedTypeView<DartType>>.legacy(
typeOperations, assignedVariables!);
}
Expand Down Expand Up @@ -235,7 +236,10 @@ class FlowAnalysisHelper {

if (parameters != null) {
for (var parameter in parameters.parameters) {
var declaredElement = parameter.declaredFragment!.element;
// TODO(paulberry): try to remove this cast by changing `parameters` to
// a `FormalParameterListImpl`
var declaredElement =
parameter.declaredFragment!.element as PromotableElementImpl2;
// TODO(paulberry): `skipDuplicateCheck` is currently needed to work
// around a failure in duplicate_definition_test.dart; fix this.
flow!.declare(declaredElement, SharedTypeView(declaredElement.type),
Expand Down Expand Up @@ -263,7 +267,7 @@ class FlowAnalysisHelper {

bool isDefinitelyAssigned(
SimpleIdentifier node,
PromotableElement2 element,
PromotableElementImpl2 element,
) {
var isAssigned = flow!.isAssigned(element);

Expand All @@ -280,7 +284,7 @@ class FlowAnalysisHelper {

bool isDefinitelyUnassigned(
SimpleIdentifier node,
PromotableElement2 element,
PromotableElementImpl2 element,
) {
var isUnassigned = flow!.isUnassigned(element);

Expand Down Expand Up @@ -335,19 +339,20 @@ class FlowAnalysisHelper {
var variables = node.variables;
for (var i = 0; i < variables.length; ++i) {
var variable = variables[i];
var declaredElement = variable.declaredElement2 as PromotableElement2;
var declaredElement =
variable.declaredElement2 as PromotableElementImpl2;
flow!.declare(declaredElement, SharedTypeView(declaredElement.type),
initialized: variable.initializer != null);
}
}
}

/// Computes the [AssignedVariables] map for the given [node].
static AssignedVariables<AstNode, PromotableElement2>
static AssignedVariables<AstNode, PromotableElementImpl2>
computeAssignedVariables(AstNode node, FormalParameterList? parameters,
{bool retainDataForTesting = false,
void Function(AstVisitor<Object?> visitor)? visit}) {
AssignedVariables<AstNode, PromotableElement2> assignedVariables =
AssignedVariables<AstNode, PromotableElementImpl2> assignedVariables =
retainDataForTesting
? AssignedVariablesForTesting()
: AssignedVariables();
Expand Down Expand Up @@ -418,10 +423,10 @@ class FlowAnalysisHelper {

class TypeSystemOperations
with
TypeAnalyzerOperationsMixin<DartType, PromotableElement2,
TypeAnalyzerOperationsMixin<DartType, PromotableElementImpl2,
TypeParameterElement, InterfaceType, InterfaceElement>
implements
TypeAnalyzerOperations<DartType, PromotableElement2,
TypeAnalyzerOperations<DartType, PromotableElementImpl2,
TypeParameterElement, InterfaceType, InterfaceElement> {
final bool strictCasts;
final TypeSystemImpl typeSystem;
Expand Down Expand Up @@ -1189,7 +1194,7 @@ class _LocalVariableTypeProvider implements LocalVariableTypeProvider {
@override
DartType getType(SimpleIdentifier node, {required bool isRead}) {
var variable = node.element as VariableElement2;
if (variable is PromotableElement2) {
if (variable is PromotableElementImpl2) {
var promotedType = isRead
? _manager.flow?.variableRead(node, variable)
: _manager.flow?.promotedType(variable);
Expand Down
6 changes: 3 additions & 3 deletions pkg/analyzer/lib/src/dart/resolver/for_resolver.dart
Original file line number Diff line number Diff line change
Expand Up @@ -123,10 +123,10 @@ class ForResolver {
void _forEachParts(AstNode node, bool isAsync, ForEachParts forEachParts,
void Function() visitBody) {
Expression iterable = forEachParts.iterable;
DeclaredIdentifier? loopVariable;
DeclaredIdentifierImpl? loopVariable;
SimpleIdentifier? identifier;
Element2? identifierElement;
if (forEachParts is ForEachPartsWithDeclaration) {
if (forEachParts is ForEachPartsWithDeclarationImpl) {
loopVariable = forEachParts.loopVariable;
} else if (forEachParts is ForEachPartsWithIdentifier) {
identifier = forEachParts.identifier;
Expand Down Expand Up @@ -188,7 +188,7 @@ class ForResolver {
}

_resolver.flowAnalysis.flow?.forEach_bodyBegin(node);
if (identifierElement is PromotableElement2 &&
if (identifierElement is PromotableElementImpl2 &&
forEachParts is ForEachPartsWithIdentifier) {
_resolver.flowAnalysis.flow?.write(
forEachParts, identifierElement, SharedTypeView(elementType), null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ import 'package:_fe_analyzer_shared/src/types/shared_type.dart';
import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/ast/token.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/error/listener.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_system.dart';
import 'package:analyzer/src/dart/error/syntactic_errors.dart';
Expand Down Expand Up @@ -177,7 +177,7 @@ class PostfixExpressionResolver {
}
if (operand is SimpleIdentifier) {
var element = operand.element;
if (element is PromotableElement2) {
if (element is PromotableElementImpl2) {
if (_resolver.definingLibrary.featureSet
.isEnabled(Feature.inference_update_4)) {
_resolver.flowAnalysis.flow?.postIncDec(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
import 'package:_fe_analyzer_shared/src/types/shared_type.dart';
import 'package:analyzer/dart/ast/token.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';
import 'package:analyzer/error/listener.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_schema.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
Expand Down Expand Up @@ -236,7 +236,7 @@ class PrefixExpressionResolver {
}
if (operand is SimpleIdentifier) {
var element = operand.element;
if (element is PromotableElement2) {
if (element is PromotableElementImpl2) {
_resolver.flowAnalysis.flow
?.write(node, element, SharedTypeView(staticType), null);
}
Expand Down
Loading

0 comments on commit ed6b041

Please sign in to comment.