55import 'package:analyzer/dart/element/element.dart' ;
66import 'package:analyzer/dart/element/nullability_suffix.dart' ;
77import 'package:analyzer/dart/element/type.dart' ;
8+ import 'package:analyzer/dart/element/type_visitor.dart' ;
89import 'package:analyzer/src/dart/element/element.dart' ;
910import 'package:analyzer/src/dart/element/extensions.dart' ;
1011import 'package:analyzer/src/dart/element/type.dart' ;
1112import 'package:analyzer/src/dart/element/type_algebra.dart' ;
1213import 'package:analyzer/src/dart/element/type_schema.dart' ;
1314import 'package:analyzer/src/dart/element/type_visitor.dart' ;
1415import 'package:analyzer/src/generated/utilities_dart.dart' ;
15- import 'package:analyzer/src/summary2/function_type_builder.dart' ;
16- import 'package:analyzer/src/summary2/named_type_builder.dart' ;
1716import 'package:meta/meta.dart' ;
1817
1918/// Helper visitor that clones a type if a nested type is replaced, and
2019/// otherwise returns `null` .
21- class ReplacementVisitor implements DartTypeVisitor <DartType > {
20+ class ReplacementVisitor
21+ implements TypeVisitor <DartType >, InferenceTypeVisitor <DartType > {
2222 const ReplacementVisitor ();
2323
2424 void changeVariance () {}
@@ -103,16 +103,12 @@ class ReplacementVisitor implements DartTypeVisitor<DartType> {
103103 }
104104
105105 @override
106- DartType defaultDartType (DartType type) {
106+ DartType visitDartType (DartType type) {
107107 return null ;
108108 }
109109
110- DartType visit (DartType type) {
111- return DartTypeVisitor .visit (type, this );
112- }
113-
114110 @override
115- DartType visitDynamicType (DynamicTypeImpl type) {
111+ DartType visitDynamicType (DynamicType type) {
116112 return null ;
117113 }
118114
@@ -125,7 +121,7 @@ class ReplacementVisitor implements DartTypeVisitor<DartType> {
125121 var typeParameter = node.typeFormals[i];
126122 var bound = typeParameter.bound;
127123 if (bound != null ) {
128- var newBound = visit ( bound);
124+ var newBound = bound. accept ( this );
129125 if (newBound != null ) {
130126 newTypeParameters ?? = node.typeFormals.toList (growable: false );
131127 newTypeParameters[i] = TypeParameterElementImpl .synthetic (
@@ -160,7 +156,7 @@ class ReplacementVisitor implements DartTypeVisitor<DartType> {
160156
161157 DartType visitType (DartType type) {
162158 if (type == null ) return null ;
163- var result = visit ( type);
159+ var result = type. accept ( this );
164160 if (substitution != null ) {
165161 result = substitution.substituteType (result ?? type);
166162 }
@@ -202,18 +198,13 @@ class ReplacementVisitor implements DartTypeVisitor<DartType> {
202198 );
203199 }
204200
205- @override
206- DartType visitFunctionTypeBuilder (FunctionTypeBuilder type) {
207- throw UnimplementedError ();
208- }
209-
210201 @override
211202 DartType visitInterfaceType (InterfaceType type) {
212203 var newNullability = visitNullability (type);
213204
214205 List <DartType > newTypeArguments;
215206 for (var i = 0 ; i < type.typeArguments.length; i++ ) {
216- var substitution = visit ( type.typeArguments[i]);
207+ var substitution = type.typeArguments[i]. accept ( this );
217208 if (substitution != null ) {
218209 newTypeArguments ?? = type.typeArguments.toList (growable: false );
219210 newTypeArguments[i] = substitution;
@@ -228,12 +219,7 @@ class ReplacementVisitor implements DartTypeVisitor<DartType> {
228219 }
229220
230221 @override
231- DartType visitNamedTypeBuilder (NamedTypeBuilder type) {
232- throw UnimplementedError ();
233- }
234-
235- @override
236- DartType visitNeverType (NeverTypeImpl type) {
222+ DartType visitNeverType (NeverType type) {
237223 var newNullability = visitNullability (type);
238224
239225 return createNeverType (
@@ -256,7 +242,7 @@ class ReplacementVisitor implements DartTypeVisitor<DartType> {
256242
257243 var promotedBound = (type as TypeParameterTypeImpl ).promotedBound;
258244 if (promotedBound != null ) {
259- var newPromotedBound = visit ( promotedBound);
245+ var newPromotedBound = promotedBound. accept ( this );
260246 return createPromotedTypeParameterType (
261247 type: type,
262248 newNullability: newNullability,
0 commit comments