22// for details. All rights reserved. Use of this source code is governed by a
33// BSD-style license that can be found in the LICENSE file.
44
5- // ignore_for_file: analyzer_use_new_elements
6-
7- import 'package:analyzer/dart/element/element.dart' ;
8- import 'package:analyzer/dart/element/visitor.dart' ;
5+ import 'package:analyzer/dart/element/element2.dart' ;
6+ import 'package:analyzer/dart/element/visitor2.dart' ;
97import 'package:analyzer/src/dart/ast/ast.dart' ;
108import 'package:analyzer/src/dart/element/element.dart' ;
119import 'package:analyzer/src/summary2/not_serializable_nodes.dart' ;
@@ -16,23 +14,23 @@ import 'package:analyzer/src/utilities/extensions/collection.dart';
1614/// the whole token stream for the file. We don't want all this data after
1715/// linking. So, we need to detach these nodes.
1816void detachElementsFromNodes (LibraryElementImpl element) {
19- element.accept (_Visitor ());
17+ element.accept2 (_Visitor ());
2018}
2119
22- class _Visitor extends GeneralizingElementVisitor <void > {
20+ class _Visitor extends GeneralizingElementVisitor2 <void > {
2321 @override
24- void visitClassElement (ClassElement element) {
25- if (element is ClassElementImpl ) {
26- element .mixinInferenceCallback = null ;
22+ void visitClassElement (covariant ClassElementImpl2 element) {
23+ for ( var fragment in element.fragments ) {
24+ fragment .mixinInferenceCallback = null ;
2725 }
2826 super .visitClassElement (element);
2927 }
3028
3129 @override
32- void visitConstructorElement (ConstructorElement element) {
33- if (element is ConstructorElementImpl ) {
30+ void visitConstructorElement (covariant ConstructorElementImpl2 element) {
31+ for ( var fragment in element.fragments ) {
3432 // Make a copy, so that it is not a NodeList.
35- var initializers = element .constantInitializers.toFixedList ();
33+ var initializers = fragment .constantInitializers.toFixedList ();
3634 initializers.forEach (_detachNode);
3735
3836 for (var initializer in initializers) {
@@ -56,63 +54,76 @@ class _Visitor extends GeneralizingElementVisitor<void> {
5654 }
5755 }
5856
59- element .constantInitializers = initializers;
57+ fragment .constantInitializers = initializers;
6058 }
6159 super .visitConstructorElement (element);
6260 }
6361
6462 @override
65- void visitElement (Element element) {
66- for (var annotation in element.metadata) {
67- var ast = (annotation as ElementAnnotationImpl ).annotationAst;
68- _detachNode (ast);
69- _sanitizeArguments (ast.arguments? .arguments);
63+ void visitElement (Element2 element) {
64+ if (element case Annotatable annotatable) {
65+ for (var annotation in annotatable.metadata2.annotations) {
66+ var ast = (annotation as ElementAnnotationImpl ).annotationAst;
67+ _detachNode (ast);
68+ _sanitizeArguments (ast.arguments? .arguments);
69+ }
7070 }
7171 super .visitElement (element);
7272 }
7373
7474 @override
75- void visitEnumElement (EnumElement element) {
76- if (element is EnumElementImpl ) {
77- element .mixinInferenceCallback = null ;
75+ void visitEnumElement (covariant EnumElementImpl2 element) {
76+ for ( var fragment in element.fragments ) {
77+ fragment .mixinInferenceCallback = null ;
7878 }
7979 super .visitEnumElement (element);
8080 }
8181
8282 @override
83- void visitMixinElement ( MixinElement element) {
84- if ( element is MixinElementImpl ) {
85- element.mixinInferenceCallback = null ;
86- }
87- super .visitMixinElement (element);
83+ void visitFormalParameterElement (
84+ FormalParameterElement element,
85+ ) {
86+ _detachConstVariable (element);
87+ super .visitFormalParameterElement (element);
8888 }
8989
9090 @override
91- void visitParameterElement (ParameterElement element) {
92- _detachConstVariable (element);
93- super .visitParameterElement (element);
91+ void visitMixinElement (covariant MixinElementImpl2 element) {
92+ for (var fragment in element.fragments) {
93+ fragment.mixinInferenceCallback = null ;
94+ }
95+ super .visitMixinElement (element);
9496 }
9597
9698 @override
97- void visitPropertyInducingElement (PropertyInducingElement element) {
98- if (element is PropertyInducingElementImpl ) {
99- element.typeInference = null ;
99+ void visitPropertyInducingElement (PropertyInducingElement2 element) {
100+ for (var fragment in element.fragments) {
101+ if (fragment is PropertyInducingElementImpl ) {
102+ fragment.typeInference = null ;
103+ }
100104 }
105+ element.constantInitializer2;
101106 _detachConstVariable (element);
102107 super .visitPropertyInducingElement (element);
103108 }
104109
105- void _detachConstVariable (Element element) {
106- if (element is ConstVariableElement ) {
107- var initializer = element.constantInitializer;
108- if (initializer is ExpressionImpl ) {
109- _detachNode (initializer);
110+ void _detachConstVariable (Object element) {
111+ if (element is VariableElementImpl2 ) {
112+ for (var fragment in element.fragments) {
113+ if (fragment case ConstVariableElement fragment) {
114+ fragment as VariableElementImpl ;
115+ var initializer = fragment.constantInitializer;
116+ if (initializer is ExpressionImpl ) {
117+ _detachNode (initializer);
110118
111- initializer = replaceNotSerializableNode (initializer);
112- element .constantInitializer = initializer;
119+ initializer = replaceNotSerializableNode (initializer);
120+ fragment .constantInitializer = initializer;
113121
114- ConstantContextForExpressionImpl (element, initializer);
122+ ConstantContextForExpressionImpl (fragment, initializer);
123+ }
124+ }
115125 }
126+ element.resetConstantInitializer ();
116127 }
117128 }
118129
0 commit comments