@@ -41,6 +41,7 @@ import 'package:analyzer/src/dart/element/type_system.dart';
4141import 'package:analyzer/src/dart/resolver/scope.dart'
4242 show Namespace, NamespaceBuilder;
4343import 'package:analyzer/src/error/inference_error.dart' ;
44+ import 'package:analyzer/src/fine/annotations.dart' ;
4445import 'package:analyzer/src/fine/library_manifest.dart' ;
4546import 'package:analyzer/src/fine/requirements.dart' ;
4647import 'package:analyzer/src/generated/engine.dart' show AnalysisContext;
@@ -135,14 +136,15 @@ class BindPatternVariableFragmentImpl extends PatternVariableFragmentImpl
135136 super .previousFragment as BindPatternVariableFragmentImpl ? ;
136137}
137138
139+ @elementClass
138140class ClassElementImpl2 extends InterfaceElementImpl2 implements ClassElement {
139141 @override
142+ @trackedIncludedIntoId
140143 final Reference reference;
141144
142- @override
143- final ClassFragmentImpl firstFragment;
145+ final ClassFragmentImpl _firstFragment;
144146
145- ClassElementImpl2 (this .reference, this .firstFragment ) {
147+ ClassElementImpl2 (this .reference, this ._firstFragment ) {
146148 reference.element2 = this ;
147149 firstFragment.augmentedInternal = this ;
148150 }
@@ -153,7 +155,10 @@ class ClassElementImpl2 extends InterfaceElementImpl2 implements ClassElement {
153155 ///
154156 /// If the class is sealed, and all its subtypes are either final or sealed,
155157 /// then these subtypes are all subtypes that are possible.
158+ @trackedDirectlyExpensive
156159 List <InterfaceTypeImpl >? get allSubtypes {
160+ globalResultRequirements? .record_classElement_allSubtypes (element: this );
161+
157162 if (isFinal) {
158163 var result = < InterfaceTypeImpl > [];
159164 for (var element in library2.children2) {
@@ -199,7 +204,16 @@ class ClassElementImpl2 extends InterfaceElementImpl2 implements ClassElement {
199204 }
200205
201206 @override
207+ @trackedDirectlyDisable
208+ ClassFragmentImpl get firstFragment {
209+ globalResultRequirements? .record_disable (this , 'firstFragment' );
210+ return _firstFragment;
211+ }
212+
213+ @override
214+ @trackedDirectlyDisable
202215 List <ClassFragmentImpl > get fragments {
216+ globalResultRequirements? .record_disable (this , 'fragments' );
203217 return [
204218 for (
205219 ClassFragmentImpl ? fragment = firstFragment;
@@ -211,8 +225,12 @@ class ClassElementImpl2 extends InterfaceElementImpl2 implements ClassElement {
211225 }
212226
213227 @override
214- @override
228+ @trackedDirectlyExpensive
215229 bool get hasNonFinalField {
230+ globalResultRequirements? .record_classElement_hasNonFinalField (
231+ element: this ,
232+ );
233+
216234 var classesToVisit = < InterfaceElementImpl2 > [];
217235 var visitedClasses = < InterfaceElementImpl2 > {};
218236 classesToVisit.add (this );
@@ -244,25 +262,34 @@ class ClassElementImpl2 extends InterfaceElementImpl2 implements ClassElement {
244262 }
245263
246264 @override
265+ @trackedIncludedIntoId
247266 bool get isAbstract => firstFragment.isAbstract;
248267
249268 @override
269+ @trackedIncludedIntoId
250270 bool get isBase => firstFragment.isBase;
251271
252272 @override
273+ @trackedIncludedIntoId
253274 bool get isConstructable => firstFragment.isConstructable;
254275
255276 @override
277+ @trackedIncludedIntoId
256278 bool get isDartCoreEnum => firstFragment.isDartCoreEnum;
257279
258280 @override
281+ @trackedIncludedIntoId
259282 bool get isDartCoreObject => firstFragment.isDartCoreObject;
260283
284+ @trackedIncludedIntoId
261285 bool get isDartCoreRecord {
262286 return name3 == 'Record' && library2.isDartCore;
263287 }
264288
289+ @trackedDirectlyExpensive
265290 bool get isEnumLike {
291+ globalResultRequirements? .record_classElement_isEnumLike (element: this );
292+
266293 // Must be a concrete class.
267294 if (isAbstract) {
268295 return false ;
@@ -297,32 +324,42 @@ class ClassElementImpl2 extends InterfaceElementImpl2 implements ClassElement {
297324 }
298325
299326 @override
327+ @trackedIncludedIntoId
300328 bool get isExhaustive => firstFragment.isExhaustive;
301329
302330 @override
331+ @trackedIncludedIntoId
303332 bool get isFinal => firstFragment.isFinal;
304333
305334 @override
335+ @trackedIncludedIntoId
306336 bool get isInterface => firstFragment.isInterface;
307337
308338 @override
339+ @trackedIncludedIntoId
309340 bool get isMixinApplication => firstFragment.isMixinApplication;
310341
311342 @override
343+ @trackedIncludedIntoId
312344 bool get isMixinClass => firstFragment.isMixinClass;
313345
314346 @override
347+ @trackedIncludedIntoId
315348 bool get isSealed => firstFragment.isSealed;
316349
317350 @override
351+ @trackedIncludedIntoId
318352 bool get isValidMixin => firstFragment.isValidMixin;
319353
320354 @override
355+ @trackedDirectlyDisable
321356 T ? accept2 <T >(ElementVisitor2 <T > visitor) {
357+ globalResultRequirements? .record_disable (this , 'accept2' );
322358 return visitor.visitClassElement (this );
323359 }
324360
325361 @override
362+ @trackedIndirectly
326363 bool isExtendableIn2 (LibraryElement library) {
327364 if (library == library2) {
328365 return true ;
@@ -331,6 +368,7 @@ class ClassElementImpl2 extends InterfaceElementImpl2 implements ClassElement {
331368 }
332369
333370 @override
371+ @trackedIndirectly
334372 bool isImplementableIn2 (LibraryElement library) {
335373 if (library == library2) {
336374 return true ;
@@ -339,6 +377,7 @@ class ClassElementImpl2 extends InterfaceElementImpl2 implements ClassElement {
339377 }
340378
341379 @override
380+ @trackedIndirectly
342381 bool isMixableIn2 (LibraryElement library) {
343382 if (library == library2) {
344383 return true ;
0 commit comments