Set proper startCharOffset on enum classes
Change-Id: I2edf7b5484e4c0fc9728644c5e1166fb3adcd909
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/98353
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_enum_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_enum_builder.dart
index b34c4ed..484c95e 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_enum_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_enum_builder.dart
@@ -105,6 +105,7 @@
String name,
List<EnumConstantInfo> enumConstantInfos,
KernelLibraryBuilder parent,
+ int startCharOffset,
int charOffset,
int charEndOffset) {
assert(enumConstantInfos == null || enumConstantInfos.isNotEmpty);
@@ -226,8 +227,8 @@
members[name] = fieldBuilder..next = existing;
}
}
- final int startCharOffset =
- metadata == null ? charOffset : metadata.first.charOffset;
+ final int startCharOffsetComputed =
+ metadata == null ? startCharOffset : metadata.first.charOffset;
KernelEnumBuilder enumBuilder = new KernelEnumBuilder.internal(
metadata,
name,
@@ -241,7 +242,7 @@
objectType,
stringType,
parent,
- startCharOffset,
+ startCharOffsetComputed,
charOffset,
charEndOffset);
void setParent(String name, MemberBuilder builder) {
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_library_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_library_builder.dart
index a7fbd0a..51926c3 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_library_builder.dart
@@ -819,11 +819,19 @@
List<MetadataBuilder> metadata,
String name,
List<EnumConstantInfo> enumConstantInfos,
+ int startCharOffset,
int charOffset,
int charEndOffset) {
MetadataCollector metadataCollector = loader.target.metadataCollector;
- KernelEnumBuilder builder = new KernelEnumBuilder(metadataCollector,
- metadata, name, enumConstantInfos, this, charOffset, charEndOffset);
+ KernelEnumBuilder builder = new KernelEnumBuilder(
+ metadataCollector,
+ metadata,
+ name,
+ enumConstantInfos,
+ this,
+ startCharOffset,
+ charOffset,
+ charEndOffset);
addBuilder(name, builder, charOffset);
metadataCollector?.setDocumentationComment(
builder.target, documentationComment);
diff --git a/pkg/front_end/lib/src/fasta/source/outline_builder.dart b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
index 32a7071..2b61fc4 100644
--- a/pkg/front_end/lib/src/fasta/source/outline_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
@@ -1168,13 +1168,14 @@
String documentationComment = getDocumentationComment(enumKeyword);
List<EnumConstantInfo> enumConstantInfos =
const FixedNullableList<EnumConstantInfo>().pop(stack, count);
- int charOffset = pop();
+ int charOffset = pop(); // identifier char offset.
+ int startCharOffset = enumKeyword.charOffset;
Object name = pop();
List<MetadataBuilder<KernelTypeBuilder>> metadata = pop();
checkEmpty(enumKeyword.charOffset);
if (name is ParserRecovery) return;
library.addEnum(documentationComment, metadata, name, enumConstantInfos,
- charOffset, leftBrace?.endGroup?.charOffset);
+ startCharOffset, charOffset, leftBrace?.endGroup?.charOffset);
}
@override
diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
index 7aadb95..94cb17d 100644
--- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
@@ -453,6 +453,7 @@
List<MetadataBuilder> metadata,
String name,
List<EnumConstantInfo> enumConstantInfos,
+ int startCharOffset,
int charOffset,
int charEndOffset);