Skip to content

Commit c6abc1e

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Rename _writeReference2() to _writeReference(), and fix
the nullability of `_indexOfReference()` formal parameter. It turns out that no code paths ever pass null to it. Also reuse _writeVariableGetterSetterLinking() for top-level variables. Change-Id: Ia031ca5097fadaa28ea52a47fb18ebbc06d76c4e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/435722 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Paul Berry <[email protected]>
1 parent 38ac87f commit c6abc1e

File tree

3 files changed

+35
-39
lines changed

3 files changed

+35
-39
lines changed

pkg/analyzer/lib/src/dart/analysis/driver.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ testFineAfterLibraryAnalyzerHook;
110110
// TODO(scheglov): Clean up the list of implicitly analyzed files.
111111
class AnalysisDriver {
112112
/// The version of data format, should be incremented on every format change.
113-
static const int DATA_VERSION = 477;
113+
static const int DATA_VERSION = 479;
114114

115115
/// The number of exception contexts allowed to write. Once this field is
116116
/// zero, we stop writing any new exception contexts in this process.

pkg/analyzer/lib/src/dart/element/element.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9225,6 +9225,9 @@ abstract class PropertyInducingElementImpl extends VariableElementImpl
92259225
}
92269226
}
92279227

9228+
@override
9229+
Reference get reference;
9230+
92289231
bool get shouldUseTypeForInitializerInference {
92299232
return firstFragment.shouldUseTypeForInitializerInference;
92309233
}

pkg/analyzer/lib/src/summary2/bundle_writer.dart

Lines changed: 31 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -121,18 +121,13 @@ class BundleWriter {
121121
_writeTypeAliasElements(libraryElement.typeAliases);
122122

123123
_sink.writeList(libraryElement.topLevelVariables, (element) {
124-
_writeReference2(element.reference);
124+
_writeReference(element.reference);
125125
_sink.writeList(element.fragments, _writeFragmentId);
126126
});
127127

128128
_writeGetterElements(libraryElement.getters);
129129
_writeSetterElements(libraryElement.setters);
130-
131-
_sink.writeList(libraryElement.topLevelVariables, (variableElement) {
132-
_writeReference2(variableElement.reference);
133-
_writeOptionalReference(variableElement.getter2?.reference);
134-
_writeOptionalReference(variableElement.setter2?.reference);
135-
});
130+
_writeVariableGetterSetterLinking(libraryElement.topLevelVariables);
136131

137132
// Write resolution data for the library.
138133
_writeResolutionOffset();
@@ -149,7 +144,7 @@ class BundleWriter {
149144

150145
void _writeClassElements(List<ClassElementImpl> elements) {
151146
_sink.writeList(elements, (element) {
152-
_writeReference2(element.reference);
147+
_writeReference(element.reference);
153148
_sink.writeList(element.fragments, (fragment) {
154149
_writeFragmentId(fragment);
155150
});
@@ -200,7 +195,7 @@ class BundleWriter {
200195

201196
void _writeConstructorElements(List<ConstructorElementImpl> elements) {
202197
_sink.writeList(elements, (element) {
203-
_writeReference2(element.reference);
198+
_writeReference(element.reference);
204199
_sink.writeList(element.fragments, _writeFragmentId);
205200
});
206201
}
@@ -264,7 +259,7 @@ class BundleWriter {
264259

265260
void _writeEnumElements(List<EnumElementImpl> elements) {
266261
_sink.writeList(elements, (element) {
267-
_writeReference2(element.reference);
262+
_writeReference(element.reference);
268263
_sink.writeList(element.fragments, (fragment) {
269264
_writeFragmentId(fragment);
270265
});
@@ -329,7 +324,7 @@ class BundleWriter {
329324

330325
void _writeExtensionElements(List<ExtensionElementImpl> elements) {
331326
_sink.writeList(elements, (element) {
332-
_writeReference2(element.reference);
327+
_writeReference(element.reference);
333328
_sink.writeList(element.fragments, (fragment) {
334329
_writeFragmentId(fragment);
335330
});
@@ -368,7 +363,7 @@ class BundleWriter {
368363

369364
void _writeExtensionTypeElements(List<ExtensionTypeElementImpl> elements) {
370365
_sink.writeList(elements, (element) {
371-
_writeReference2(element.reference);
366+
_writeReference(element.reference);
372367
_sink.writeList(element.fragments, (fragment) {
373368
_writeFragmentId(fragment);
374369
});
@@ -417,7 +412,7 @@ class BundleWriter {
417412

418413
void _writeFieldElements(List<FieldElementImpl> elements) {
419414
_sink.writeList(elements, (element) {
420-
_writeReference2(element.reference);
415+
_writeReference(element.reference);
421416
_sink.writeList(element.fragments, _writeFragmentId);
422417
});
423418
}
@@ -480,7 +475,7 @@ class BundleWriter {
480475

481476
void _writeGetterElements(List<GetterElementImpl> elements) {
482477
_sink.writeList(elements, (element) {
483-
_writeReference2(element.reference);
478+
_writeReference(element.reference);
484479
_sink.writeList(element.fragments, _writeFragmentId);
485480

486481
_writeElementResolution(() {
@@ -532,7 +527,7 @@ class BundleWriter {
532527
void _writeLibraryImportPrefixFragment(PrefixFragmentImpl? fragment) {
533528
_sink.writeOptionalObject(fragment, (fragment) {
534529
_writeFragmentName(fragment);
535-
_writeReference2(fragment.element.reference);
530+
_writeReference(fragment.element.reference);
536531
_sink.writeBool(fragment.isDeferred);
537532
});
538533
}
@@ -546,12 +541,12 @@ class BundleWriter {
546541

547542
void _writeLoadLibraryFunctionReferences(LibraryElementImpl library) {
548543
var element = library.loadLibraryFunction2;
549-
_writeReference2(element.reference);
544+
_writeReference(element.reference);
550545
}
551546

552547
void _writeMethodElements(List<MethodElementImpl> elements) {
553548
_sink.writeList(elements, (element) {
554-
_writeReference2(element.reference);
549+
_writeReference(element.reference);
555550
_sink.writeList(element.fragments, _writeFragmentId);
556551

557552
_writeElementResolution(() {
@@ -579,7 +574,7 @@ class BundleWriter {
579574

580575
void _writeMixinElements(List<MixinElementImpl> elements) {
581576
_sink.writeList(elements, (element) {
582-
_writeReference2(element.reference);
577+
_writeReference(element.reference);
583578
_sink.writeList(element.fragments, (fragment) {
584579
_writeFragmentId(fragment);
585580
});
@@ -639,10 +634,7 @@ class BundleWriter {
639634
}
640635

641636
void _writeOptionalReference(Reference? reference) {
642-
_sink.writeOptionalObject(reference, (reference) {
643-
var index = _references._indexOfReference(reference);
644-
_sink.writeUInt30(index);
645-
});
637+
_sink.writeOptionalObject(reference, _writeReference);
646638
}
647639

648640
// TODO(scheglov): Deduplicate parameter writing implementation.
@@ -687,7 +679,7 @@ class BundleWriter {
687679
_writeDirectiveUri(element.uri);
688680
}
689681

690-
void _writeReference2(Reference? reference) {
682+
void _writeReference(Reference reference) {
691683
var index = _references._indexOfReference(reference);
692684
_sink.writeUInt30(index);
693685
}
@@ -700,7 +692,7 @@ class BundleWriter {
700692

701693
void _writeSetterElements(List<SetterElementImpl> elements) {
702694
_sink.writeList(elements, (element) {
703-
_writeReference2(element.reference);
695+
_writeReference(element.reference);
704696
_sink.writeList(element.fragments, _writeFragmentId);
705697

706698
_writeElementResolution(() {
@@ -726,7 +718,7 @@ class BundleWriter {
726718
List<TopLevelFunctionElementImpl> elements,
727719
) {
728720
_sink.writeList(elements, (element) {
729-
_writeReference2(element.reference);
721+
_writeReference(element.reference);
730722
_sink.writeList(element.fragments, _writeFragmentId);
731723

732724
_writeElementResolution(() {
@@ -761,7 +753,7 @@ class BundleWriter {
761753

762754
void _writeTypeAliasElements(List<TypeAliasElementImpl> elements) {
763755
_sink.writeList(elements, (element) {
764-
_writeReference2(element.reference);
756+
_writeReference(element.reference);
765757
_sink.writeList(element.fragments, _writeFragmentId);
766758
// TODO(scheglov): resolution too?
767759
});
@@ -835,7 +827,7 @@ class BundleWriter {
835827
List<PropertyInducingElementImpl> variables,
836828
) {
837829
_sink.writeList(variables, (variable) {
838-
_writeReference2(variable.reference);
830+
_writeReference(variable.reference);
839831
_writeOptionalReference(variable.getter2?.reference);
840832
_writeOptionalReference(variable.setter2?.reference);
841833
});
@@ -1338,21 +1330,22 @@ class _BundleWriterReferences {
13381330
}
13391331
}
13401332

1341-
int _indexOfReference(Reference? reference) {
1342-
if (reference == null) return 0;
1343-
if (reference.parent == null) return 0;
1344-
1333+
int _indexOfReference(Reference reference) {
13451334
var index = reference.index;
13461335
if (index != null) return index;
13471336

1348-
var parentIndex = _indexOfReference(reference.parent);
1349-
_referenceParents.add(parentIndex);
1350-
_referenceNames.add(reference.name);
1337+
if (reference.parent case var parent?) {
1338+
var parentIndex = _indexOfReference(parent);
1339+
_referenceParents.add(parentIndex);
1340+
_referenceNames.add(reference.name);
13511341

1352-
index = _references.length;
1353-
reference.index = index;
1354-
_references.add(reference);
1355-
return index;
1342+
index = _references.length;
1343+
reference.index = index;
1344+
_references.add(reference);
1345+
return index;
1346+
} else {
1347+
return 0;
1348+
}
13561349
}
13571350
}
13581351

0 commit comments

Comments
 (0)