Skip to content

Commit 7013a02

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Write nameOffset, firstTokenOffset, offset for fragments.
With changes to the way that we set `firstTokenOffset` that I have in mind, I think it would be useful to write actual values. After reviewing the current code for writing "best offset", I also think that it is better just write the value, and not try to be smart about it. And for consistency we use `(nameOffset:6)` for the name offset. Change-Id: I83772ea7497d5edf2b6c5ae6448833956be954fc Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/442006 Reviewed-by: Paul Berry <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 148b658 commit 7013a02

27 files changed

+7951
-8012
lines changed

pkg/analyzer/test/src/summary/element_text.dart

Lines changed: 14 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -795,77 +795,6 @@ class _Element2Writer extends _AbstractElementWriter {
795795
}
796796
}
797797

798-
void _writeFragmentBestOffset(Fragment f) {
799-
// Usually the name offset is available.
800-
// And then the offset must be the same.
801-
if (f.nameOffset case var nameOffset?) {
802-
expect(f.offset, nameOffset);
803-
return;
804-
}
805-
806-
switch (f) {
807-
case ConstructorFragment():
808-
if (f.isSynthetic) {
809-
expect(f.offset, f.enclosingFragment!.offset);
810-
return;
811-
} else {
812-
expect(f.offset, f.typeNameOffset);
813-
return;
814-
}
815-
case FieldFragment():
816-
if (f.isSynthetic) {
817-
// TODO(scheglov): Why not the offset of the getter/setter?
818-
expect(f.offset, f.enclosingFragment!.offset);
819-
return;
820-
}
821-
case FormalParameterFragment():
822-
if (f.enclosingFragment case SetterFragment setter) {
823-
if (setter.isSynthetic) {
824-
var variable = setter.element.variable!;
825-
if (!variable.isSynthetic) {
826-
expect(f.offset, variable.firstFragment.offset);
827-
return;
828-
}
829-
}
830-
}
831-
case GetterFragment():
832-
expect(f.isSynthetic, isTrue);
833-
834-
var variable = f.element.variable!;
835-
if (!variable.isSynthetic) {
836-
expect(f.offset, variable.firstFragment.offset);
837-
return;
838-
}
839-
840-
// Special case enum fields/getters: index, _name, values.
841-
if (variable is FieldElementImpl && variable.isSyntheticEnumField) {
842-
var enumElement = f.enclosingFragment as EnumFragmentImpl;
843-
expect(f.offset, enumElement.offset);
844-
expect(variable.firstFragment.offset, enumElement.offset);
845-
return;
846-
}
847-
case SetterFragment():
848-
expect(f.isSynthetic, isTrue);
849-
850-
var variable = f.element.variable!;
851-
if (!variable.isSynthetic) {
852-
expect(f.offset, variable.firstFragment.offset);
853-
return;
854-
}
855-
856-
case LibraryFragment():
857-
if (f.element.firstFragment != f) {
858-
expect(f.offset, 0);
859-
return;
860-
} else if (f.offset == 0) {
861-
return;
862-
}
863-
}
864-
865-
// If a non-standard case, write the offset.
866-
_sink.write(' (offset=${f.offset})');
867-
}
868-
869798
void _writeFragmentCodeRange(Fragment f) {
870799
if (configuration.withCodeRanges) {
871800
if (f is FragmentImpl) {
@@ -903,11 +832,21 @@ class _Element2Writer extends _AbstractElementWriter {
903832
}
904833

905834
_sink.write(f.name ?? '<null-name>');
906-
if (f.nameOffset case var nameOffset?) {
907-
_sink.write(' @$nameOffset');
835+
_writeFragmentOffsets(f);
836+
}
837+
838+
void _writeFragmentOffsets(FragmentImpl f) {
839+
if (f is LibraryFragmentImpl) {
840+
expect(f.nameOffset, isNull);
841+
expect(f.firstTokenOffset, 0);
842+
if (f.offset == 0) {
843+
return;
844+
}
908845
}
909846

910-
_writeFragmentBestOffset(f);
847+
_sink.write(' (nameOffset:${f.nameOffset ?? '<null>'})');
848+
_sink.write(' (firstTokenOffset:${f.firstTokenOffset ?? '<null>'})');
849+
_sink.write(' (offset:${f.offset})');
911850
}
912851

913852
void _writeFragmentReference(String name, Fragment? f) {
@@ -1268,7 +1207,7 @@ class _Element2Writer extends _AbstractElementWriter {
12681207
_sink.write(uriStr);
12691208
}
12701209

1271-
_writeFragmentBestOffset(f);
1210+
_writeFragmentOffsets(f);
12721211
});
12731212

12741213
_sink.withIndent(() {

0 commit comments

Comments
 (0)