Extension type. Issue 56508. Use nonSynthetic name offset.
Bug: https://github.com/dart-lang/sdk/issues/56508
Change-Id: Ia575089a28ac3ddd5fbbf7e57fde4b59204ce590
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/382100
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index 2ab3ed8..4594966 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -3452,11 +3452,12 @@
}) {
void report(String memberName, List<ExecutableElement> candidates) {
var contextMessages = candidates.map<DiagnosticMessage>((executable) {
+ var nonSynthetic = executable.nonSynthetic;
var container = executable.enclosingElement as InterfaceElement;
return DiagnosticMessageImpl(
filePath: executable.source.fullName,
- offset: executable.nameOffset,
- length: executable.nameLength,
+ offset: nonSynthetic.nameOffset,
+ length: nonSynthetic.nameLength,
message: "Inherited from '${container.name}'",
url: null,
);
diff --git a/pkg/analyzer/test/src/diagnostics/extension_type_inherited_member_conflict_test.dart b/pkg/analyzer/test/src/diagnostics/extension_type_inherited_member_conflict_test.dart
index 5861487..bd46333 100644
--- a/pkg/analyzer/test/src/diagnostics/extension_type_inherited_member_conflict_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/extension_type_inherited_member_conflict_test.dart
@@ -48,6 +48,26 @@
]);
}
+ test_conflict_representationField() async {
+ await assertErrorsInCode('''
+extension type A(String bar) {}
+
+extension type B(String bar) {}
+
+extension type C(String foo) implements A, B {}
+''', [
+ error(
+ CompileTimeErrorCode.EXTENSION_TYPE_INHERITED_MEMBER_CONFLICT,
+ 81,
+ 1,
+ contextMessages: [
+ message(testFile, 24, 3),
+ message(testFile, 57, 3),
+ ],
+ ),
+ ]);
+ }
+
test_noConflict_redeclared() async {
await assertNoErrorsInCode('''
extension type A1(int it) {