Skip to content

Commit a039f88

Browse files
bwilkersonCommit Queue
authored andcommitted
[migration] diagnostic_factory.dart
Change-Id: I45da294d218329f312f3f30bfa64d4089b7017fc Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/411181 Commit-Queue: Brian Wilkerson <[email protected]> Reviewed-by: Konstantin Shcheglov <[email protected]>
1 parent 7ac018e commit a039f88

File tree

2 files changed

+31
-33
lines changed

2 files changed

+31
-33
lines changed

pkg/analyzer/lib/src/diagnostic/diagnostic_factory.dart

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,15 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
// ignore_for_file: analyzer_use_new_elements
6-
75
import 'package:analyzer/dart/ast/syntactic_entity.dart';
86
import 'package:analyzer/dart/ast/token.dart';
9-
import 'package:analyzer/dart/element/element.dart';
107
import 'package:analyzer/dart/element/element2.dart';
118
import 'package:analyzer/diagnostic/diagnostic.dart';
129
import 'package:analyzer/error/error.dart';
1310
import 'package:analyzer/source/source.dart';
1411
import 'package:analyzer/src/dart/ast/ast.dart';
1512
import 'package:analyzer/src/diagnostic/diagnostic.dart';
1613
import 'package:analyzer/src/error/codes.dart';
17-
import 'package:analyzer/src/utilities/extensions/element.dart';
1814

1915
/// A factory used to create diagnostics.
2016
class DiagnosticFactory {
@@ -49,22 +45,24 @@ class DiagnosticFactory {
4945

5046
/// Return a diagnostic indicating that [duplicateElement] reuses a name
5147
/// already used by [originalElement].
52-
AnalysisError duplicateDefinition(ErrorCode code, Element duplicateElement,
53-
Element originalElement, List<Object> arguments) {
54-
var duplicate = duplicateElement.nonSynthetic;
55-
var original = originalElement.nonSynthetic;
48+
AnalysisError duplicateDefinition(ErrorCode code, Element2 duplicateElement,
49+
Element2 originalElement, List<Object> arguments) {
50+
var duplicate = duplicateElement.nonSynthetic2;
51+
var duplicateFragment = duplicate.firstFragment;
52+
var original = originalElement.nonSynthetic2;
53+
var originalFragment = original.firstFragment;
5654
return AnalysisError.tmp(
57-
source: duplicate.source!,
58-
offset: duplicate.nameOffset,
59-
length: duplicate.nameLength,
55+
source: duplicateFragment.libraryFragment!.source,
56+
offset: duplicateFragment.nameOffset2 ?? -1,
57+
length: duplicate.name3!.length,
6058
errorCode: code,
6159
arguments: arguments,
6260
contextMessages: [
6361
DiagnosticMessageImpl(
64-
filePath: original.source!.fullName,
62+
filePath: originalFragment.libraryFragment!.source.fullName,
6563
message: "The first definition of this name.",
66-
offset: original.nameOffset,
67-
length: original.nameLength,
64+
offset: originalFragment.nameOffset2 ?? -1,
65+
length: original.name3!.length,
6866
url: null,
6967
),
7068
],
@@ -301,6 +299,7 @@ class DiagnosticFactory {
301299
// Elements enclosing members that can participate in overrides are always
302300
// named, so we can safely assume `_thisMember.enclosingElement3.name` and
303301
// `superMember.enclosingElement3.name` are non-`null`.
302+
var superFragment = superMember.nonSynthetic2.firstFragment;
304303
return AnalysisError.tmp(
305304
source: source,
306305
offset: errorNode.offset,
@@ -321,18 +320,18 @@ class DiagnosticFactory {
321320
// concrete).
322321
if (errorCode == CompileTimeErrorCode.INVALID_OVERRIDE)
323322
DiagnosticMessageImpl(
324-
filePath: superMember.asElement.source.fullName,
323+
filePath: superFragment.libraryFragment!.source.fullName,
325324
message: "The member being overridden.",
326-
offset: superMember.asElement.nonSynthetic.nameOffset,
327-
length: superMember.asElement.nonSynthetic.nameLength,
325+
offset: superFragment.nameOffset2 ?? -1,
326+
length: superFragment.name2!.length,
328327
url: null,
329328
),
330329
if (errorCode == CompileTimeErrorCode.INVALID_OVERRIDE_SETTER)
331330
DiagnosticMessageImpl(
332-
filePath: superMember.asElement.source.fullName,
331+
filePath: superFragment.libraryFragment!.source.fullName,
333332
message: "The setter being overridden.",
334-
offset: superMember.asElement.nonSynthetic.nameOffset,
335-
length: superMember.asElement.nonSynthetic.nameLength,
333+
offset: superFragment.nameOffset2 ?? -1,
334+
length: superFragment.name2!.length,
336335
url: null,
337336
)
338337
],
@@ -346,17 +345,16 @@ class DiagnosticFactory {
346345
required Token nameToken,
347346
required Element2 element2,
348347
}) {
349-
var element = element2.asElement!;
350348
String name = nameToken.lexeme;
351349
List<DiagnosticMessage>? contextMessages;
352-
int declarationOffset = element.nameOffset;
350+
int declarationOffset = element2.firstFragment.nameOffset2 ?? -1;
353351
if (declarationOffset >= 0) {
354352
contextMessages = [
355353
DiagnosticMessageImpl(
356354
filePath: source.fullName,
357355
message: "The declaration of '$name' is here.",
358356
offset: declarationOffset,
359-
length: element.nameLength,
357+
length: name.length,
360358
url: null)
361359
];
362360
}

pkg/analyzer/lib/src/error/duplicate_definition_verifier.dart

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,8 @@ class DuplicateDefinitionVerifier {
170170
_errorReporter.reportError(
171171
_diagnosticFactory.duplicateDefinition(
172172
CompileTimeErrorCode.PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER,
173-
importPrefix,
174-
existing.asElement!,
173+
importPrefix.asElement2,
174+
existing,
175175
[name],
176176
),
177177
);
@@ -260,8 +260,8 @@ class DuplicateDefinitionVerifier {
260260
if (!_isGetterSetterPair(element, previous)) {
261261
_errorReporter.reportError(_diagnosticFactory.duplicateDefinition(
262262
getError(previous, element),
263-
element,
264-
previous,
263+
element.asElement2!,
264+
previous.asElement2!,
265265
[name],
266266
));
267267
}
@@ -275,8 +275,8 @@ class DuplicateDefinitionVerifier {
275275
if (previous != null) {
276276
_errorReporter.reportError(_diagnosticFactory.duplicateDefinition(
277277
getError(previous, element),
278-
element,
279-
previous,
278+
element.asElement2,
279+
previous.asElement2!,
280280
[name],
281281
));
282282
} else {
@@ -545,8 +545,8 @@ class MemberDuplicateDefinitionVerifier {
545545
_errorReporter.reportError(
546546
_diagnosticFactory.duplicateDefinition(
547547
CompileTimeErrorCode.DUPLICATE_DEFINITION,
548-
element,
549-
previous,
548+
element.asElement2!,
549+
previous.asElement2!,
550550
[name],
551551
),
552552
);
@@ -562,8 +562,8 @@ class MemberDuplicateDefinitionVerifier {
562562
_errorReporter.reportError(
563563
_diagnosticFactory.duplicateDefinition(
564564
CompileTimeErrorCode.DUPLICATE_DEFINITION,
565-
element,
566-
previous,
565+
element.asElement2,
566+
previous.asElement2!,
567567
[name],
568568
),
569569
);

0 commit comments

Comments
 (0)