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-
75import 'package:analyzer/dart/ast/syntactic_entity.dart' ;
86import 'package:analyzer/dart/ast/token.dart' ;
9- import 'package:analyzer/dart/element/element.dart' ;
107import 'package:analyzer/dart/element/element2.dart' ;
118import 'package:analyzer/diagnostic/diagnostic.dart' ;
129import 'package:analyzer/error/error.dart' ;
1310import 'package:analyzer/source/source.dart' ;
1411import 'package:analyzer/src/dart/ast/ast.dart' ;
1512import 'package:analyzer/src/diagnostic/diagnostic.dart' ;
1613import 'package:analyzer/src/error/codes.dart' ;
17- import 'package:analyzer/src/utilities/extensions/element.dart' ;
1814
1915/// A factory used to create diagnostics.
2016class 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 }
0 commit comments