From 279b379ef921991fce16d53e1b3d6c22d30a7906 Mon Sep 17 00:00:00 2001 From: Konstantin Shcheglov Date: Thu, 10 Jul 2025 13:15:54 -0700 Subject: [PATCH] Elements. Replace FragmentImpl.nameOffset with firstTokenOffset. This will free the name `nameOffset` in `FragmentImpl` for `Fragment.nameOffset2` to be renamed into. Change-Id: I28f4d3f9eae8d96c00eef38fe9495beb3520878b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/439642 Reviewed-by: Brian Wilkerson Commit-Queue: Konstantin Shcheglov --- .../lib/src/dart/analysis/driver.dart | 2 +- .../dart/element/display_string_builder.dart | 2 +- .../lib/src/dart/element/element.dart | 191 +++++++++++------- .../dart/element/inheritance_manager3.dart | 20 +- .../lib/src/dart/element/type_algebra.dart | 2 +- .../element/type_constraint_gatherer.dart | 2 +- .../src/dart/resolver/resolution_visitor.dart | 49 +++-- .../lib/src/summary2/ast_binary_reader.dart | 8 +- .../lib/src/summary2/bundle_reader.dart | 55 +++-- .../lib/src/summary2/element_builder.dart | 97 ++++----- .../lib/src/summary2/informative_data.dart | 164 +++++++-------- .../lib/src/summary2/library_builder.dart | 15 +- .../src/test_utilities/mock_sdk_elements.dart | 39 ++-- .../lib/src/utilities/extensions/element.dart | 5 +- .../test/generated/elements_types_mixin.dart | 56 ++--- .../dart/resolution/if_statement_test.dart | 46 ++--- .../resolution/switch_expression_test.dart | 2 +- .../resolution/switch_statement_test.dart | 34 ++-- .../dart/resolution/try_statement_test.dart | 2 +- .../test/src/summary/elements/class_test.dart | 42 ++-- .../elements/duplicate_declaration_test.dart | 8 +- .../test/src/summary/elements/enum_test.dart | 2 +- .../summary/elements/extension_type_test.dart | 6 +- .../elements/local_declarations_test.dart | 2 +- .../src/summary/elements/metadata_test.dart | 10 +- .../test/src/summary/elements/mixin_test.dart | 2 +- .../summary/elements/non_synthetic_test.dart | 6 +- .../src/summary/elements/offsets_test.dart | 2 +- .../elements/top_level_function_test.dart | 2 +- .../elements/top_level_variable_test.dart | 52 ++--- .../src/summary/elements/type_alias_test.dart | 2 +- .../summary/elements/type_inference_test.dart | 2 +- .../src/summary/resolved_ast_printer.dart | 2 +- .../src/summary/top_level_inference_test.dart | 2 +- 34 files changed, 509 insertions(+), 424 deletions(-) diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart index 80f29ce2511..d416f71367a 100644 --- a/pkg/analyzer/lib/src/dart/analysis/driver.dart +++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart @@ -110,7 +110,7 @@ testFineAfterLibraryAnalyzerHook; // TODO(scheglov): Clean up the list of implicitly analyzed files. class AnalysisDriver { /// The version of data format, should be incremented on every format change. - static const int DATA_VERSION = 493; + static const int DATA_VERSION = 494; /// The number of exception contexts allowed to write. Once this field is /// zero, we stop writing any new exception contexts in this process. diff --git a/pkg/analyzer/lib/src/dart/element/display_string_builder.dart b/pkg/analyzer/lib/src/dart/element/display_string_builder.dart index 71fba6e7413..9113e3177f4 100644 --- a/pkg/analyzer/lib/src/dart/element/display_string_builder.dart +++ b/pkg/analyzer/lib/src/dart/element/display_string_builder.dart @@ -772,7 +772,7 @@ class ElementDisplayStringBuilder { var newTypeParameter = TypeParameterFragmentImpl( name: name, - nameOffset: -1, + firstTokenOffset: null, ); newTypeParameter.bound = typeParameter.bound; newTypeParameters.add(newTypeParameter.asElement2); diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart index 00678fe6097..6e61f6758b6 100644 --- a/pkg/analyzer/lib/src/dart/element/element.dart +++ b/pkg/analyzer/lib/src/dart/element/element.dart @@ -120,7 +120,7 @@ class BindPatternVariableFragmentImpl extends PatternVariableFragmentImpl BindPatternVariableFragmentImpl({ required this.node, required super.name, - required super.nameOffset, + required super.firstTokenOffset, }) { _element2 = BindPatternVariableElementImpl(this); } @@ -453,7 +453,7 @@ class ClassElementImpl extends InterfaceElementImpl implements ClassElement { superConstructors.map((superConstructor) { var constructorFragment = ConstructorFragmentImpl( name: superConstructor.name ?? 'new', - nameOffset: -1, + firstTokenOffset: null, ); constructorFragment.isSynthetic = true; constructorFragment.typeName = name; @@ -477,7 +477,7 @@ class ClassElementImpl extends InterfaceElementImpl implements ClassElement { var superInvocationArguments = []; for (var superFormalParameter in superConstructor.formalParameters) { var formalParameterFragment = FormalParameterFragmentImpl( - nameOffset: -1, + firstTokenOffset: null, name: superFormalParameter.name, nameOffset2: null, parameterKind: superFormalParameter.parameterKind, @@ -557,7 +557,7 @@ class ClassFragmentImpl extends ClassOrMixinFragmentImpl /// Initialize a newly created class element to have the given [name] at the /// given [offset] in the file that contains the declaration of this element. - ClassFragmentImpl({required super.name, required super.nameOffset}); + ClassFragmentImpl({required super.name, required super.firstTokenOffset}); bool get hasExtendsClause { return hasModifier(Modifier.HAS_EXTENDS_CLAUSE); @@ -679,7 +679,10 @@ class ClassFragmentImpl extends ClassOrMixinFragmentImpl abstract class ClassOrMixinFragmentImpl extends InterfaceFragmentImpl { /// Initialize a newly created class element to have the given [name] at the /// given [offset] in the file that contains the declaration of this element. - ClassOrMixinFragmentImpl({required super.name, required super.nameOffset}); + ClassOrMixinFragmentImpl({ + required super.name, + required super.firstTokenOffset, + }); bool get isBase { return hasModifier(Modifier.BASE); @@ -981,7 +984,10 @@ class ConstructorFragmentImpl extends ExecutableFragmentImpl /// Initialize a newly created constructor element to have the given [name] /// and [offset]. - ConstructorFragmentImpl({required this.name, required super.nameOffset}); + ConstructorFragmentImpl({ + required this.name, + required super.firstTokenOffset, + }); /// Return the constant initializers for this element, which will be empty if /// there are no initializers, or `null` if there was an error in the source. @@ -1063,7 +1069,11 @@ class ConstructorFragmentImpl extends ExecutableFragmentImpl String get name2 => name; @override - int get offset => isSynthetic ? enclosingElement.offset : nameOffset; + int get offset => + nameOffset2 ?? + typeNameOffset ?? + firstTokenOffset ?? + enclosingElement.offset; @override InterfaceTypeImpl get returnType { @@ -1322,7 +1332,7 @@ class DynamicFragmentImpl extends FragmentImpl implements TypeDefiningFragment { /// should not be created except as part of creating the type /// associated with this element. The single instance of this class should be /// accessed through the method [instance]. - DynamicFragmentImpl._() : super(nameOffset: -1) { + DynamicFragmentImpl._() : super(firstTokenOffset: null) { setModifier(Modifier.SYNTHETIC, true); } @@ -2057,7 +2067,7 @@ class EnumFragmentImpl extends InterfaceFragmentImpl implements EnumFragment { /// Initialize a newly created class element to have the given [name] at the /// given [offset] in the file that contains the declaration of this element. - EnumFragmentImpl({required super.name, required super.nameOffset}); + EnumFragmentImpl({required super.name, required super.firstTokenOffset}); // TODO(fshcheglov): Consider removing. List get constants { @@ -2196,7 +2206,7 @@ abstract class ExecutableFragmentImpl extends _ExistingFragmentImpl /// Initialize a newly created executable element to have the given [name] and /// [offset]. - ExecutableFragmentImpl({required super.nameOffset}); + ExecutableFragmentImpl({required super.firstTokenOffset}); @override List get children => [...typeParameters, ...parameters]; @@ -2327,7 +2337,7 @@ abstract class ExecutableFragmentImpl extends _ExistingFragmentImpl } @override - int get offset => nameOffset; + int get offset => nameOffset2 ?? firstTokenOffset!; /// The formal parameters defined by this executable fragment. List get parameters { @@ -2462,7 +2472,7 @@ class ExtensionFragmentImpl extends InstanceFragmentImpl /// Initialize a newly created extension element to have the given [name] at /// the given [nameOffset] in the file that contains the declaration of this /// element. - ExtensionFragmentImpl({required super.name, required super.nameOffset}); + ExtensionFragmentImpl({required super.name, required super.firstTokenOffset}); @override List get children => [ @@ -2503,9 +2513,6 @@ class ExtensionFragmentImpl extends InstanceFragmentImpl ExtensionFragmentImpl? get nextFragment => super.nextFragment as ExtensionFragmentImpl?; - @override - int get offset => nameOffset2 ?? _codeOffset ?? 0; - @override ExtensionFragmentImpl? get previousFragment => super.previousFragment as ExtensionFragmentImpl?; @@ -2624,7 +2631,10 @@ class ExtensionTypeFragmentImpl extends InterfaceFragmentImpl /// in implemented superinterfaces. bool hasImplementsSelfReference = false; - ExtensionTypeFragmentImpl({required super.name, required super.nameOffset}); + ExtensionTypeFragmentImpl({ + required super.name, + required super.firstTokenOffset, + }); @override ExtensionTypeFragmentImpl? get nextFragment => @@ -2832,7 +2842,7 @@ class FieldFormalParameterFragmentImpl extends FormalParameterFragmentImpl /// Initialize a newly created parameter element to have the given [name] and /// [nameOffset]. FieldFormalParameterFragmentImpl({ - required super.nameOffset, + required super.firstTokenOffset, required super.name, required super.nameOffset2, required super.parameterKind, @@ -2881,7 +2891,7 @@ class FieldFragmentImpl extends PropertyInducingFragmentImpl /// Initialize a newly created synthetic field element to have the given /// [name] at the given [offset]. - FieldFragmentImpl({required super.name, required super.nameOffset}); + FieldFragmentImpl({required super.name, required super.firstTokenOffset}); @override ExpressionImpl? get constantInitializer { @@ -2955,7 +2965,7 @@ class FieldFragmentImpl extends PropertyInducingFragmentImpl super.nextFragment as FieldFragmentImpl?; @override - int get offset => isSynthetic ? enclosingFragment.offset : nameOffset; + int get offset => nameOffset2 ?? firstTokenOffset ?? enclosingFragment.offset; @override FieldFragmentImpl? get previousFragment => @@ -3226,7 +3236,7 @@ class FormalParameterFragmentImpl extends VariableFragmentImpl /// Initialize a newly created parameter element to have the given [name] and /// [nameOffset]. FormalParameterFragmentImpl({ - required super.nameOffset, + required super.firstTokenOffset, required this.name, required this.nameOffset2, required this.parameterKind, @@ -3242,7 +3252,7 @@ class FormalParameterFragmentImpl extends VariableFragmentImpl // parameter which prevents navigation/references from working. See // https://github.com/dart-lang/sdk/issues/60200 var element = FormalParameterFragmentImpl( - nameOffset: -1, + firstTokenOffset: null, name: name2, nameOffset2: null, parameterKind: parameterKind, @@ -3624,10 +3634,9 @@ abstract class FragmentImpl implements Fragment { /// is the defining unit of the library. FragmentImpl? enclosingElement; - /// The offset of the name of this element in the file that contains the - /// declaration of this element, or `-1` if this element is synthetic, does - /// not have a name, or otherwise does not have an offset. - int nameOffset = 0; + /// The offset of the first token of the declaration of this fragment, + /// or `null` if this fragment is synthetic. + int? firstTokenOffset; /// The modifiers associated with this element. EnumSet _modifiers = EnumSet.empty(); @@ -3645,7 +3654,7 @@ abstract class FragmentImpl implements Fragment { /// Initialize a newly created element to have the given [name] at the given /// [_nameOffset]. - FragmentImpl({required this.nameOffset}); + FragmentImpl({required this.firstTokenOffset}); /// The length of the element's code, or `null` if the element is synthetic. int? get codeLength => _codeLength; @@ -3878,13 +3887,12 @@ sealed class FunctionFragmentImpl extends ExecutableFragmentImpl /// Initialize a newly created function element to have the given [name] and /// [offset]. - FunctionFragmentImpl({required this.name, required super.nameOffset}); + FunctionFragmentImpl({required this.name, required super.firstTokenOffset}); /// Initialize a newly created function element to have no name and the given /// [nameOffset]. This is used for function expressions, that have no name. - FunctionFragmentImpl.forOffset(int nameOffset) - : name = null, - super(nameOffset: nameOffset); + FunctionFragmentImpl.forOffset({required super.firstTokenOffset}) + : name = null; @override ExecutableFragmentImpl get declaration => this; @@ -4059,8 +4067,7 @@ class GenericFunctionTypeFragmentImpl extends _ExistingFragmentImpl /// Initialize a newly created function element to have no name and the given /// [nameOffset]. This is used for function expressions, that have no name. - GenericFunctionTypeFragmentImpl.forOffset(int nameOffset) - : super(nameOffset: nameOffset); + GenericFunctionTypeFragmentImpl.forOffset({required super.firstTokenOffset}); @override List get children => [...typeParameters, ...parameters]; @@ -4092,7 +4099,7 @@ class GenericFunctionTypeFragmentImpl extends _ExistingFragmentImpl GenericFunctionTypeFragmentImpl? get nextFragment => null; @override - int get offset => nameOffset; + int get offset => firstTokenOffset!; @override List get parameters { @@ -4255,7 +4262,7 @@ class GetterFragmentImpl extends PropertyAccessorFragmentImpl @override GetterFragmentImpl? nextFragment; - GetterFragmentImpl({required super.name, required super.nameOffset}); + GetterFragmentImpl({required super.name, required super.firstTokenOffset}); GetterFragmentImpl.forVariable(super.variable) : super.forVariable(); @@ -4786,7 +4793,7 @@ abstract class InstanceFragmentImpl extends _ExistingFragmentImpl List _setters = _Sentinel.setterElement; List _methods = _Sentinel.methodElement; - InstanceFragmentImpl({required this.name, required super.nameOffset}); + InstanceFragmentImpl({required this.name, required super.firstTokenOffset}); List get accessors { return [...getters, ...setters]; @@ -4872,7 +4879,7 @@ abstract class InstanceFragmentImpl extends _ExistingFragmentImpl List get methods2 => methods.cast(); @override - int get offset => nameOffset; + int get offset => nameOffset2 ?? firstTokenOffset!; @override List get setters { @@ -5302,7 +5309,7 @@ abstract class InterfaceFragmentImpl extends InstanceFragmentImpl /// Initialize a newly created class element to have the given [name] at the /// given [offset] in the file that contains the declaration of this element. - InterfaceFragmentImpl({required super.name, required super.nameOffset}); + InterfaceFragmentImpl({required super.name, required super.firstTokenOffset}); @override List get children => [ @@ -5511,7 +5518,7 @@ class JoinPatternVariableFragmentImpl extends PatternVariableFragmentImpl JoinPatternVariableFragmentImpl({ required super.name, - required super.nameOffset, + required super.firstTokenOffset, required this.variables, required this.inconsistency, }) { @@ -5654,7 +5661,7 @@ class LabelFragmentImpl extends FragmentImpl implements LabelFragment { /// `switch` member. LabelFragmentImpl({ required this.name, - required super.nameOffset, + required super.firstTokenOffset, required bool onSwitchMember, }) : _onSwitchMember = onSwitchMember; @@ -5679,6 +5686,9 @@ class LabelFragmentImpl extends FragmentImpl implements LabelFragment { ExecutableFragment get enclosingFragment => enclosingElement as ExecutableFragment; + @override + int get firstTokenOffset => super.firstTokenOffset!; + /// Return `true` if this label is associated with a `switch` member (`case` /// or `default`). bool get isOnSwitchMember => _onSwitchMember; @@ -5693,13 +5703,13 @@ class LabelFragmentImpl extends FragmentImpl implements LabelFragment { @override // TODO(scheglov): make it a nullable field - int? get nameOffset2 => nameOffset; + int? get nameOffset2 => firstTokenOffset; @override LabelFragmentImpl? get nextFragment => null; @override - int get offset => nameOffset; + int get offset => firstTokenOffset; @override LabelFragmentImpl? get previousFragment => null; @@ -6402,7 +6412,7 @@ class LibraryFragmentImpl extends _ExistingFragmentImpl required this.library, required this.source, required this.lineInfo, - }) : super(nameOffset: -1); + }) : super(firstTokenOffset: 0); @override List get accessibleExtensions { @@ -6952,7 +6962,10 @@ final class LoadLibraryFunctionProvider { TopLevelFunctionElementImpl _create(LibraryElementImpl library) { var name = TopLevelFunctionElement.LOAD_LIBRARY_NAME; - var fragment = TopLevelFunctionFragmentImpl(name: name, nameOffset: -1); + var fragment = TopLevelFunctionFragmentImpl( + name: name, + firstTokenOffset: null, + ); fragment.isSynthetic = true; fragment.isStatic = true; fragment.returnType = library.typeProvider.futureDynamicType; @@ -7098,9 +7111,13 @@ class LocalFunctionFragmentImpl extends FunctionFragmentImpl @override LocalFunctionFragmentImpl? nextFragment; - LocalFunctionFragmentImpl({required super.name, required super.nameOffset}); + LocalFunctionFragmentImpl({ + required super.name, + required super.firstTokenOffset, + }); - LocalFunctionFragmentImpl.forOffset(super.nameOffset) : super.forOffset(); + LocalFunctionFragmentImpl.forOffset({required super.firstTokenOffset}) + : super.forOffset(); @override bool get _includeNameOffsetInIdentifier { @@ -7223,12 +7240,18 @@ class LocalVariableFragmentImpl extends NonParameterVariableFragmentImpl @override final String? name; + @override + int? nameOffset2; + @override MetadataImpl metadata = MetadataImpl(const []); /// Initialize a newly created method element to have the given [name] and /// [offset]. - LocalVariableFragmentImpl({required this.name, required super.nameOffset}); + LocalVariableFragmentImpl({ + required this.name, + required super.firstTokenOffset, + }); @override List get children => const []; @@ -7255,8 +7278,7 @@ class LocalVariableFragmentImpl extends NonParameterVariableFragmentImpl MetadataImpl get metadata2 => metadata; @override - // TODO(scheglov): make it a nullable field - int? get nameOffset2 => nameOffset; + int get nameOffset => firstTokenOffset!; @override LocalVariableFragmentImpl? get nextFragment => null; @@ -7788,7 +7810,7 @@ class MethodFragmentImpl extends ExecutableFragmentImpl /// Initialize a newly created method element to have the given [name] at the /// given [offset]. - MethodFragmentImpl({required this.name, required super.nameOffset}); + MethodFragmentImpl({required this.name, required super.firstTokenOffset}); @override MethodFragmentImpl get declaration => this; @@ -7923,7 +7945,7 @@ class MixinFragmentImpl extends ClassOrMixinFragmentImpl /// Initialize a newly created class element to have the given [name] at the /// given [offset] in the file that contains the declaration of this element. - MixinFragmentImpl({required super.name, required super.nameOffset}); + MixinFragmentImpl({required super.name, required super.firstTokenOffset}); @override bool get isBase { @@ -8409,7 +8431,7 @@ class NeverFragmentImpl extends FragmentImpl implements TypeDefiningFragment { /// should not be created except as part of creating the type /// associated with this element. The single instance of this class should be /// accessed through the method [instance]. - NeverFragmentImpl._() : super(nameOffset: -1) { + NeverFragmentImpl._() : super(firstTokenOffset: null) { setModifier(Modifier.SYNTHETIC, true); } @@ -8473,7 +8495,7 @@ abstract class NonParameterVariableFragmentImpl extends VariableFragmentImpl with _HasLibraryMixin { /// Initialize a newly created variable element to have the given [name] and /// [offset]. - NonParameterVariableFragmentImpl({required super.nameOffset}); + NonParameterVariableFragmentImpl({required super.firstTokenOffset}); @override FragmentImpl get enclosingElement { @@ -8576,7 +8598,10 @@ class PatternVariableFragmentImpl extends LocalVariableFragmentImpl /// the [GuardedPattern] that declares this variable. bool isVisitingWhenClause = false; - PatternVariableFragmentImpl({required super.name, required super.nameOffset}); + PatternVariableFragmentImpl({ + required super.name, + required super.firstTokenOffset, + }); @override PatternVariableElementImpl get element => @@ -8743,8 +8768,9 @@ class PrefixFragmentImpl extends FragmentImpl implements PrefixFragment { required this.enclosingFragment, required this.name, required this.nameOffset2, + required super.firstTokenOffset, required this.isDeferred, - }) : super(nameOffset: -1); + }); @override List get children => const []; @@ -8842,14 +8868,17 @@ sealed class PropertyAccessorFragmentImpl extends ExecutableFragmentImpl /// Initialize a newly created property accessor element to have the given /// [name] and [offset]. - PropertyAccessorFragmentImpl({required this.name, required super.nameOffset}); + PropertyAccessorFragmentImpl({ + required this.name, + required super.firstTokenOffset, + }); /// Initialize a newly created synthetic property accessor element to be /// associated with the given [variable]. PropertyAccessorFragmentImpl.forVariable( PropertyInducingFragmentImpl variable, ) : name = variable.name, - super(nameOffset: -1) { + super(firstTokenOffset: null) { isAbstract = variable is FieldFragmentImpl && variable.isAbstract; isStatic = variable.isStatic; isSynthetic = true; @@ -8885,6 +8914,9 @@ sealed class PropertyAccessorFragmentImpl extends ExecutableFragmentImpl @override int get offset { + if (nameOffset2 case var nameOffset?) { + return nameOffset; + } if (isSynthetic) { var variable = element.variable!; if (variable.isSynthetic) { @@ -8892,7 +8924,7 @@ sealed class PropertyAccessorFragmentImpl extends ExecutableFragmentImpl } return variable.firstFragment.offset; } - return nameOffset; + return firstTokenOffset!; } } @@ -9063,7 +9095,10 @@ abstract class PropertyInducingFragmentImpl /// Initialize a newly created synthetic element to have the given [name] and /// [offset]. - PropertyInducingFragmentImpl({required this.name, required super.nameOffset}); + PropertyInducingFragmentImpl({ + required this.name, + required super.firstTokenOffset, + }); @override List get children => const []; @@ -9231,7 +9266,7 @@ class SetterFragmentImpl extends PropertyAccessorFragmentImpl @override SetterFragmentImpl? nextFragment; - SetterFragmentImpl({required super.name, required super.nameOffset}); + SetterFragmentImpl({required super.name, required super.firstTokenOffset}); SetterFragmentImpl.forVariable(super.variable) : super.forVariable(); @@ -9413,7 +9448,7 @@ class SuperFormalParameterFragmentImpl extends FormalParameterFragmentImpl /// Initialize a newly created parameter element to have the given [name] and /// [nameOffset]. SuperFormalParameterFragmentImpl({ - required super.nameOffset, + required super.firstTokenOffset, required super.name, required super.nameOffset2, required super.parameterKind, @@ -9556,7 +9591,7 @@ class TopLevelFunctionFragmentImpl extends FunctionFragmentImpl TopLevelFunctionFragmentImpl({ required super.name, - required super.nameOffset, + required super.firstTokenOffset, }); @override @@ -9666,7 +9701,7 @@ class TopLevelVariableFragmentImpl extends PropertyInducingFragmentImpl /// the given [name] and [offset]. TopLevelVariableFragmentImpl({ required super.name, - required super.nameOffset, + required super.firstTokenOffset, }); @override @@ -9970,7 +10005,7 @@ class TypeAliasFragmentImpl extends _ExistingFragmentImpl @override late TypeAliasElementImpl element; - TypeAliasFragmentImpl({required this.name, required super.nameOffset}); + TypeAliasFragmentImpl({required this.name, required super.firstTokenOffset}); /// If the aliased type has structure, return the corresponding element. /// For example it could be [GenericFunctionTypeElement]. @@ -10038,7 +10073,7 @@ class TypeAliasFragmentImpl extends _ExistingFragmentImpl } @override - int get offset => nameOffset; + int get offset => nameOffset2 ?? firstTokenOffset!; void addFragment(TypeAliasFragmentImpl fragment) { fragment.element = element; @@ -10196,12 +10231,15 @@ class TypeParameterFragmentImpl extends FragmentImpl /// Initialize a newly created method element to have the given [name] and /// [offset]. - TypeParameterFragmentImpl({required this.name, required super.nameOffset}); + TypeParameterFragmentImpl({ + required this.name, + required super.firstTokenOffset, + }); /// Initialize a newly created synthetic type parameter element to have the /// given [name], and with [isSynthetic] set to `true`. TypeParameterFragmentImpl.synthetic({required this.name}) - : super(nameOffset: -1) { + : super(firstTokenOffset: null) { isSynthetic = true; } @@ -10287,7 +10325,7 @@ class TypeParameterFragmentImpl extends FragmentImpl TypeParameterFragmentImpl? get nextFragment => null; @override - int get offset => nameOffset; + int get offset => nameOffset2 ?? firstTokenOffset!; @override // TODO(augmentations): Support chaining between the fragments. @@ -10520,7 +10558,7 @@ abstract class VariableFragmentImpl extends FragmentImpl /// Initialize a newly created variable element to have the given [name] and /// [offset]. - VariableFragmentImpl({required super.nameOffset}); + VariableFragmentImpl({required super.firstTokenOffset}); @override VariableFragmentImpl get declaration => this; @@ -10609,7 +10647,20 @@ abstract class VariableFragmentImpl extends FragmentImpl } @override - int get offset => nameOffset; + int get offset { + if (nameOffset2 ?? firstTokenOffset case var result?) { + return result; + } + if (this case PropertyInducingFragmentImpl property) { + var getter = property.element.getter?.firstFragment; + var setter = property.element.setter?.firstFragment; + return (getter ?? setter)!.offset; + } + if (this case FormalParameterFragmentImpl()) { + return enclosingFragment!.offset; + } + throw StateError('($runtimeType) $this'); + } /// The declared type of this variable. // TODO(scheglov): make it nullable and turn into field @@ -10631,7 +10682,7 @@ abstract class VariableFragmentImpl extends FragmentImpl abstract class _ExistingFragmentImpl extends FragmentImpl with _HasLibraryMixin { - _ExistingFragmentImpl({required super.nameOffset}); + _ExistingFragmentImpl({required super.firstTokenOffset}); } /// An element that can be declared in multiple fragments. diff --git a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart index 77bbbf15066..828051b61ff 100644 --- a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart +++ b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart @@ -975,7 +975,7 @@ class InheritanceManager3 { var resultFragment = MethodFragmentImpl( name: executable.name, - nameOffset: -1, + firstTokenOffset: null, ); resultFragment.enclosingElement = class_.firstFragment; resultFragment.isSynthetic = true; @@ -1008,7 +1008,7 @@ class InheritanceManager3 { var resultFragment = SetterFragmentImpl( name: executable.name, - nameOffset: -1, + firstTokenOffset: null, ); resultFragment.enclosingElement = class_.firstFragment; resultFragment.isSynthetic = true; @@ -1020,7 +1020,7 @@ class InheritanceManager3 { var resultField = FieldFragmentImpl( name: executable.name, - nameOffset: -1, + firstTokenOffset: null, ); resultField.enclosingElement = class_.firstFragment; @@ -1080,7 +1080,7 @@ class InheritanceManager3 { var resultFragment = MethodFragmentImpl( name: fragmentName, - nameOffset: -1, + firstTokenOffset: null, ); resultFragment.enclosingElement = targetClass.firstFragment; resultFragment.typeParameters = @@ -1103,7 +1103,7 @@ class InheritanceManager3 { } else { var firstElement = first as PropertyAccessorElement2OrMember; var fragmentName = first.name!; - var field = FieldFragmentImpl(name: fragmentName, nameOffset: -1); + var field = FieldFragmentImpl(name: fragmentName, firstTokenOffset: null); PropertyAccessorFragmentImpl resultFragment; PropertyAccessorElementImpl resultElement; @@ -1115,7 +1115,10 @@ class InheritanceManager3 { return result; } - var fragment = GetterFragmentImpl(name: fragmentName, nameOffset: -1); + var fragment = GetterFragmentImpl( + name: fragmentName, + firstTokenOffset: null, + ); resultFragment = fragment; var element = GetterElementImpl(elementReference, fragment); @@ -1129,7 +1132,10 @@ class InheritanceManager3 { return result; } - var fragment = SetterFragmentImpl(name: fragmentName, nameOffset: -1); + var fragment = SetterFragmentImpl( + name: fragmentName, + firstTokenOffset: null, + ); resultFragment = fragment; resultElement = SetterElementImpl(elementReference, fragment); diff --git a/pkg/analyzer/lib/src/dart/element/type_algebra.dart b/pkg/analyzer/lib/src/dart/element/type_algebra.dart index b14de3d2b47..3da2ba6a9c1 100644 --- a/pkg/analyzer/lib/src/dart/element/type_algebra.dart +++ b/pkg/analyzer/lib/src/dart/element/type_algebra.dart @@ -264,7 +264,7 @@ class _FreshTypeParametersSubstitutor extends _TypeSubstitutor { var element = elements[index]; var freshElement = TypeParameterFragmentImpl( name: element.name, - nameOffset: -1, + firstTokenOffset: null, ); var freshType = freshElement.instantiate( nullabilitySuffix: NullabilitySuffix.none, diff --git a/pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart b/pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart index 4b68054eb7a..714e1345ebb 100644 --- a/pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart +++ b/pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart @@ -275,7 +275,7 @@ class TypeConstraintGatherer // not contain any variables from `L`. var newTypeParameters = []; for (var i = 0; i < P.typeParameters.length; i++) { - var Z = TypeParameterFragmentImpl(name: 'Z$i', nameOffset: -1); + var Z = TypeParameterFragmentImpl(name: 'Z$i', firstTokenOffset: null); if (leftSchema) { Z.bound = P.typeParameters[i].bound; } else { diff --git a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart index 4e5e5b98776..67ec8669505 100644 --- a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart +++ b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart @@ -234,8 +234,9 @@ class ResolutionVisitor extends RecursiveAstVisitor { if (exceptionNode != null) { var fragment = LocalVariableFragmentImpl( name: _getFragmentName(exceptionNode.name), - nameOffset: exceptionNode.name.offset, + firstTokenOffset: exceptionNode.offset, ); + fragment.nameOffset2 = exceptionNode.name.offsetIfNotEmpty; _elementHolder.enclose(fragment); _define(fragment.element); @@ -260,8 +261,9 @@ class ResolutionVisitor extends RecursiveAstVisitor { if (stackTraceNode != null) { var fragment = LocalVariableFragmentImpl( name: _getFragmentName(stackTraceNode.name), - nameOffset: stackTraceNode.name.offset, + firstTokenOffset: stackTraceNode.offset, ); + fragment.nameOffset2 = stackTraceNode.name.offsetIfNotEmpty; _elementHolder.enclose(fragment); _define(fragment.element); @@ -383,10 +385,11 @@ class ResolutionVisitor extends RecursiveAstVisitor { var nameToken = node.name; var fragment = LocalVariableFragmentImpl( name: _getFragmentName(nameToken), - nameOffset: nameToken.offset, + firstTokenOffset: node.offset, ); - _elementHolder.enclose(fragment); + fragment.nameOffset2 = nameToken.offsetIfNotEmpty; node.declaredFragment = fragment; + _elementHolder.enclose(fragment); _setOrCreateMetadataElements(fragment, node.metadata); @@ -415,8 +418,9 @@ class ResolutionVisitor extends RecursiveAstVisitor { var fragment = BindPatternVariableFragmentImpl( node: node, name: _getFragmentName(node.name), - nameOffset: node.name.offset, + firstTokenOffset: node.offset, ); + fragment.nameOffset2 = node.name.offsetIfNotEmpty; _patternVariables.add(name, fragment.element); _elementHolder.enclose(fragment); _define(fragment.element); @@ -451,7 +455,7 @@ class ResolutionVisitor extends RecursiveAstVisitor { if (node.parameter is FieldFormalParameter) { // Only for recovery, this should not happen in valid code. fragment = FieldFormalParameterFragmentImpl( - nameOffset: nameOffset2 ?? -1, + firstTokenOffset: node.offset, parameterKind: node.kind, name: name2, nameOffset2: nameOffset2, @@ -459,14 +463,14 @@ class ResolutionVisitor extends RecursiveAstVisitor { } else if (node.parameter is SuperFormalParameter) { // Only for recovery, this should not happen in valid code. fragment = SuperFormalParameterFragmentImpl( - nameOffset: nameOffset2 ?? -1, + firstTokenOffset: node.offset, parameterKind: node.kind, name: name2, nameOffset2: nameOffset2, )..constantInitializer = node.defaultValue; } else { fragment = FormalParameterFragmentImpl( - nameOffset: nameOffset2 ?? -1, + firstTokenOffset: node.offset, parameterKind: node.kind, name: name2, nameOffset2: nameOffset2, @@ -634,7 +638,7 @@ class ResolutionVisitor extends RecursiveAstVisitor { } else { // Only for recovery, this should not happen in valid code. fragment = FieldFormalParameterFragmentImpl( - nameOffset: nameToken.offset, + firstTokenOffset: node.offset, name: nameToken.lexeme.nullIfEmpty, nameOffset2: nameToken.offset.nullIfNegative, parameterKind: node.kind, @@ -785,7 +789,9 @@ class ResolutionVisitor extends RecursiveAstVisitor { @override void visitFunctionExpression(covariant FunctionExpressionImpl node) { - var fragment = LocalFunctionFragmentImpl.forOffset(node.offset); + var fragment = LocalFunctionFragmentImpl.forOffset( + firstTokenOffset: node.offset, + ); _elementHolder.enclose(fragment); node.declaredFragment = fragment; @@ -845,7 +851,7 @@ class ResolutionVisitor extends RecursiveAstVisitor { fragment = _elementWalker!.getParameter(); } else { fragment = FormalParameterFragmentImpl( - nameOffset: nameToken.offset, + firstTokenOffset: node.offset, name: nameToken.lexeme.nullIfEmpty, nameOffset2: nameToken.offset.nullIfNegative, parameterKind: node.kind, @@ -899,7 +905,9 @@ class ResolutionVisitor extends RecursiveAstVisitor { @override void visitGenericFunctionType(GenericFunctionType node) { - var fragment = GenericFunctionTypeFragmentImpl.forOffset(node.offset); + var fragment = GenericFunctionTypeFragmentImpl.forOffset( + firstTokenOffset: node.offset, + ); _unitElement.encloseElement(fragment); (node as GenericFunctionTypeImpl).declaredFragment = fragment; @@ -1236,14 +1244,14 @@ class ResolutionVisitor extends RecursiveAstVisitor { } else { if (nameToken != null) { fragment = FormalParameterFragmentImpl( - nameOffset: nameToken.offset, + firstTokenOffset: node.offset, name: nameToken.lexeme.nullIfEmpty, nameOffset2: nameToken.offset.nullIfNegative, parameterKind: node.kind, ); } else { fragment = FormalParameterFragmentImpl( - nameOffset: -1, + firstTokenOffset: node.offset, name: null, nameOffset2: null, parameterKind: node.kind, @@ -1295,7 +1303,7 @@ class ResolutionVisitor extends RecursiveAstVisitor { } else { // Only for recovery, this should not happen in valid code. element = SuperFormalParameterFragmentImpl( - nameOffset: nameToken.offset, + firstTokenOffset: node.offset, name: nameToken.lexeme.nullIfEmpty, nameOffset2: nameToken.offset.nullIfNegative, parameterKind: node.kind, @@ -1497,7 +1505,7 @@ class ResolutionVisitor extends RecursiveAstVisitor { var labelName = label.label; var element = LabelFragmentImpl( name: labelName.name, - nameOffset: labelName.offset, + firstTokenOffset: label.offset, onSwitchMember: onSwitchMember, ); labelName.element = element.asElement2; @@ -1523,7 +1531,7 @@ class ResolutionVisitor extends RecursiveAstVisitor { var fragment = LocalFunctionFragmentImpl( name: nameToken.nameIfNotEmpty, - nameOffset: nameToken.offset, + firstTokenOffset: node.offset, ); fragment.nameOffset2 = nameToken.offsetIfNotEmpty; node.declaredFragment = fragment; @@ -1548,8 +1556,9 @@ class ResolutionVisitor extends RecursiveAstVisitor { var fragment = LocalVariableFragmentImpl( name: _getFragmentName(nameToken), - nameOffset: nameToken.offset, + firstTokenOffset: variable.offset, ); + fragment.nameOffset2 = nameToken.offsetIfNotEmpty; variable.declaredFragment = fragment; _elementHolder.enclose(fragment); _define(fragment.element); @@ -1576,7 +1585,7 @@ class ResolutionVisitor extends RecursiveAstVisitor { } else { fragment = TypeParameterFragmentImpl( name: name.lexeme, - nameOffset: name.offset, + firstTokenOffset: typeParameter.offset, ); fragment.nameOffset2 = name.offset; _elementHolder.addTypeParameter(fragment); @@ -2011,7 +2020,7 @@ class _VariableBinder var resultFragment = JoinPatternVariableFragmentImpl( name: first.name, - nameOffset: -1, + firstTokenOffset: null, variables: expandedVariables.map((e) => e.asElement).toList(), inconsistency: inconsistency.maxWithAll( components.whereType().map( diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart index 503a7f74dc9..757cf1eff1b 100644 --- a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart +++ b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart @@ -426,7 +426,7 @@ class AstBinaryReader { var nonDefaultElement = parameter.declaredFragment!; var fragment = FormalParameterFragmentImpl( - nameOffset: nonDefaultElement.nameOffset, + firstTokenOffset: null, name: nonDefaultElement.name, nameOffset2: nonDefaultElement.nameOffset2, parameterKind: kind, @@ -695,7 +695,9 @@ class AstBinaryReader { var type = _reader.readRequiredType() as FunctionTypeImpl; node.type = type; - var fragment = GenericFunctionTypeFragmentImpl.forOffset(-1); + var fragment = GenericFunctionTypeFragmentImpl.forOffset( + firstTokenOffset: null, + ); fragment.parameters = formalParameters.parameters .map((parameter) => parameter.declaredFragment!) @@ -1219,7 +1221,7 @@ class AstBinaryReader { _reader.readByte(); // TODO(scheglov): inherits covariant var fragment = FormalParameterFragmentImpl( - nameOffset: -1, + firstTokenOffset: null, name: name?.lexeme, nameOffset2: null, parameterKind: node.kind, diff --git a/pkg/analyzer/lib/src/summary2/bundle_reader.dart b/pkg/analyzer/lib/src/summary2/bundle_reader.dart index e8e3baae4ca..19f0e6d2bf2 100644 --- a/pkg/analyzer/lib/src/summary2/bundle_reader.dart +++ b/pkg/analyzer/lib/src/summary2/bundle_reader.dart @@ -310,7 +310,7 @@ class LibraryReader { return _reader.readTypedList(() { return _readTemplateFragment( create: (name) { - var fragment = ClassFragmentImpl(name: name, nameOffset: -1); + var fragment = ClassFragmentImpl(name: name, firstTokenOffset: null); fragment.readModifiers(_reader); fragment.typeParameters = _readTypeParameters(); @@ -381,7 +381,10 @@ class LibraryReader { return _reader.readTypedList(() { return _readTemplateFragment( create: (name) { - var fragment = ConstructorFragmentImpl(name: name!, nameOffset: -1); + var fragment = ConstructorFragmentImpl( + name: name!, + firstTokenOffset: null, + ); fragment.readModifiers(_reader); fragment.typeName = _reader.readOptionalStringReference(); @@ -517,7 +520,7 @@ class LibraryReader { return _reader.readTypedList(() { return _readTemplateFragment( create: (name) { - var fragment = EnumFragmentImpl(name: name, nameOffset: -1); + var fragment = EnumFragmentImpl(name: name, firstTokenOffset: null); fragment.readModifiers(_reader); fragment.typeParameters = _readTypeParameters(); @@ -603,7 +606,10 @@ class LibraryReader { return _reader.readTypedList(() { return _readTemplateFragment( create: (name) { - var fragment = ExtensionFragmentImpl(name: name, nameOffset: -1); + var fragment = ExtensionFragmentImpl( + name: name, + firstTokenOffset: null, + ); fragment.readModifiers(_reader); fragment.typeParameters = _readTypeParameters(); fragment.fields = _readFieldFragments(); @@ -657,7 +663,10 @@ class LibraryReader { return _reader.readTypedList(() { return _readTemplateFragment( create: (name) { - var fragment = ExtensionTypeFragmentImpl(name: name, nameOffset: -1); + var fragment = ExtensionTypeFragmentImpl( + name: name, + firstTokenOffset: null, + ); fragment.readModifiers(_reader); fragment.hasRepresentationSelfReference = _reader.readBool(); fragment.hasImplementsSelfReference = _reader.readBool(); @@ -717,7 +726,7 @@ class LibraryReader { return _reader.readTypedList(() { return _readTemplateFragment( create: (name) { - var fragment = FieldFragmentImpl(name: name, nameOffset: -1); + var fragment = FieldFragmentImpl(name: name, firstTokenOffset: null); fragment.readModifiers(_reader); return fragment; }, @@ -811,7 +820,7 @@ class LibraryReader { return _reader.readTypedList(() { return _readTemplateFragment( create: (name) { - var fragment = GetterFragmentImpl(name: name, nameOffset: -1); + var fragment = GetterFragmentImpl(name: name, firstTokenOffset: null); fragment.readModifiers(_reader); fragment.typeParameters = _readTypeParameters(); @@ -889,6 +898,7 @@ class LibraryReader { var fragment = PrefixFragmentImpl( enclosingFragment: libraryFragment, name: fragmentName, + firstTokenOffset: null, nameOffset2: null, isDeferred: isDeferred, ); @@ -942,7 +952,7 @@ class LibraryReader { return _reader.readTypedList(() { return _readTemplateFragment( create: (name) { - var fragment = MethodFragmentImpl(name: name, nameOffset: -1); + var fragment = MethodFragmentImpl(name: name, firstTokenOffset: null); fragment.readModifiers(_reader); fragment.typeInferenceError = _readTopLevelInferenceError(); @@ -1005,7 +1015,7 @@ class LibraryReader { return _reader.readTypedList(() { return _readTemplateFragment( create: (name) { - var fragment = MixinFragmentImpl(name: name, nameOffset: -1); + var fragment = MixinFragmentImpl(name: name, firstTokenOffset: null); fragment.readModifiers(_reader); fragment.superInvokedNames = _reader.readStringReferenceList(); fragment.typeParameters = _readTypeParameters(); @@ -1067,21 +1077,21 @@ class LibraryReader { FormalParameterFragmentImpl element; if (isInitializingFormal) { element = FieldFormalParameterFragmentImpl( - nameOffset: -1, + firstTokenOffset: null, name: fragmentName, nameOffset2: null, parameterKind: kind, ); } else if (isSuperFormal) { element = SuperFormalParameterFragmentImpl( - nameOffset: -1, + firstTokenOffset: null, name: fragmentName, nameOffset2: null, parameterKind: kind, ); } else { element = FormalParameterFragmentImpl( - nameOffset: -1, + firstTokenOffset: null, name: fragmentName, nameOffset2: null, parameterKind: kind, @@ -1138,7 +1148,7 @@ class LibraryReader { return _reader.readTypedList(() { return _readTemplateFragment( create: (name) { - var fragment = SetterFragmentImpl(name: name, nameOffset: -1); + var fragment = SetterFragmentImpl(name: name, firstTokenOffset: null); fragment.readModifiers(_reader); fragment.typeParameters = _readTypeParameters(); @@ -1225,7 +1235,7 @@ class LibraryReader { create: (name) { var fragment = TopLevelFunctionFragmentImpl( name: name, - nameOffset: -1, + firstTokenOffset: null, ); fragment.readModifiers(_reader); @@ -1286,7 +1296,7 @@ class LibraryReader { create: (name) { var fragment = TopLevelVariableFragmentImpl( name: name, - nameOffset: -1, + firstTokenOffset: null, ); fragment.readModifiers(_reader); return fragment; @@ -1320,7 +1330,10 @@ class LibraryReader { return _reader.readTypedList(() { return _readTemplateFragment( create: (name) { - var fragment = TypeAliasFragmentImpl(name: name, nameOffset: -1); + var fragment = TypeAliasFragmentImpl( + name: name, + firstTokenOffset: null, + ); fragment.readModifiers(_reader); fragment.isFunctionTypeAliasBased = _reader.readBool(); @@ -1348,7 +1361,7 @@ class LibraryReader { var variance = _decodeVariance(varianceEncoding); var element = TypeParameterFragmentImpl( name: fragmentName, - nameOffset: -1, + firstTokenOffset: null, ); element.variance = variance; return element; @@ -1716,7 +1729,7 @@ class ResolutionReader { _localElements.length -= typeParameters.length; var fragment = - GenericFunctionTypeFragmentImpl.forOffset(-1) + GenericFunctionTypeFragmentImpl.forOffset(firstTokenOffset: null) ..typeParameters = typeParameters ..parameters = formalParameters ..returnType = returnType; @@ -1799,7 +1812,7 @@ class ResolutionReader { FormalParameterFragmentImpl element; if (isInitializingFormal) { element = FieldFormalParameterFragmentImpl( - nameOffset: -1, + firstTokenOffset: null, name: name, nameOffset2: null, parameterKind: kind, @@ -1808,7 +1821,7 @@ class ResolutionReader { element.type = type; } else { element = FormalParameterFragmentImpl( - nameOffset: -1, + firstTokenOffset: null, name: name, nameOffset2: null, parameterKind: kind, @@ -1925,7 +1938,7 @@ class ResolutionReader { var fragmentName = _readFragmentName(); var typeParameterFragment = TypeParameterFragmentImpl( name: fragmentName, - nameOffset: -1, + firstTokenOffset: null, ); var typeParameterElement = TypeParameterElementImpl( firstFragment: typeParameterFragment, diff --git a/pkg/analyzer/lib/src/summary2/element_builder.dart b/pkg/analyzer/lib/src/summary2/element_builder.dart index b834b032eb8..9b5cc982e41 100644 --- a/pkg/analyzer/lib/src/summary2/element_builder.dart +++ b/pkg/analyzer/lib/src/summary2/element_builder.dart @@ -315,10 +315,7 @@ class ElementBuilder { { var getterFragment = - GetterFragmentImpl( - name: fieldFragment.name, - nameOffset: fieldFragment.nameOffset, - ) + GetterFragmentImpl(name: fieldFragment.name, firstTokenOffset: null) ..isSynthetic = true ..isAbstract = fieldFragment.isAbstract ..isStatic = fieldFragment.isStatic; @@ -336,10 +333,7 @@ class ElementBuilder { if (fieldFragment.hasSetter) { var setterFragment = - SetterFragmentImpl( - name: fieldFragment.name, - nameOffset: fieldFragment.nameOffset, - ) + SetterFragmentImpl(name: fieldFragment.name, firstTokenOffset: null) ..isSynthetic = true ..isAbstract = fieldFragment.isAbstract ..isStatic = fieldFragment.isStatic; @@ -348,7 +342,7 @@ class ElementBuilder { var valueFragment = FormalParameterFragmentImpl( // TODO(scheglov): replace with null name: '_${fieldFragment.name ?? ''}', - nameOffset: fieldFragment.nameOffset, + firstTokenOffset: null, nameOffset2: null, parameterKind: ParameterKind.REQUIRED, ); @@ -404,7 +398,7 @@ class ElementBuilder { if (lastFieldElement == null) { var fieldFragment = - FieldFragmentImpl(name: getterFragment.name, nameOffset: -1) + FieldFragmentImpl(name: getterFragment.name, firstTokenOffset: null) ..isSynthetic = true ..isStatic = getterFragment.isStatic; instanceFragment.addField(fieldFragment); @@ -486,7 +480,7 @@ class ElementBuilder { if (lastFieldElement == null) { var fieldFragment = - FieldFragmentImpl(name: setterFragment.name, nameOffset: -1) + FieldFragmentImpl(name: setterFragment.name, firstTokenOffset: null) ..isSynthetic = true ..isStatic = setterFragment.isStatic; instanceFragment.addField(fieldFragment); @@ -583,7 +577,7 @@ class ElementBuilder { if (lastVariableElement == null) { var variableFragment = TopLevelVariableFragmentImpl( name: getterFragment.name, - nameOffset: -1, + firstTokenOffset: null, )..isSynthetic = true; libraryFragment.addTopLevelVariable(variableFragment); @@ -634,7 +628,7 @@ class ElementBuilder { if (lastVariableElement == null) { var variableFragment = TopLevelVariableFragmentImpl( name: setterFragment.name, - nameOffset: -1, + firstTokenOffset: null, )..isSynthetic = true; libraryFragment.addTopLevelVariable(variableFragment); @@ -673,7 +667,7 @@ class ElementBuilder { var getterFragment = GetterFragmentImpl( name: variableFragment.name, - nameOffset: variableFragment.nameOffset, + firstTokenOffset: null, ) ..isSynthetic = true ..isStatic = true; @@ -694,7 +688,7 @@ class ElementBuilder { var setterFragment = SetterFragmentImpl( name: variableFragment.name, - nameOffset: variableFragment.nameOffset, + firstTokenOffset: null, ) ..isSynthetic = true ..isStatic = true; @@ -703,7 +697,7 @@ class ElementBuilder { var valueFragment = FormalParameterFragmentImpl( // TODO(scheglov): replace with null name: '_${variableFragment.name ?? ''}', - nameOffset: variableFragment.nameOffset, + firstTokenOffset: null, nameOffset2: null, parameterKind: ParameterKind.REQUIRED, ); @@ -842,7 +836,7 @@ class FragmentBuilder extends ThrowingAstVisitor { var fragmentName = _getFragmentName(nameToken); var fragment = ClassFragmentImpl( name: fragmentName, - nameOffset: nameToken.offset, + firstTokenOffset: node.offset, ); fragment.nameOffset2 = _getFragmentNameOffset(nameToken); fragment.isAbstract = node.abstractKeyword != null; @@ -887,7 +881,7 @@ class FragmentBuilder extends ThrowingAstVisitor { var fragment = ClassFragmentImpl( name: fragmentName, - nameOffset: nameToken.offset, + firstTokenOffset: node.offset, ); fragment.nameOffset2 = _getFragmentNameOffset(nameToken); fragment.isAbstract = node.abstractKeyword != null; @@ -934,8 +928,6 @@ class FragmentBuilder extends ThrowingAstVisitor { // A constructor declared as `C.new` is unnamed, and is modeled as such. name = ''; } - var nameOffset = nameNode.offset; - String fragmentName; int? fragmentNameOffset; if ((node.period, node.name) case (var _?, var name?)) { @@ -947,7 +939,7 @@ class FragmentBuilder extends ThrowingAstVisitor { var fragment = ConstructorFragmentImpl( name: fragmentName, - nameOffset: nameOffset, + firstTokenOffset: node.offset, ); fragment.isAugmentation = node.augmentKeyword != null; fragment.isConst = node.constKeyword != null; @@ -989,12 +981,11 @@ class FragmentBuilder extends ThrowingAstVisitor { @override void visitEnumDeclaration(covariant EnumDeclarationImpl node) { var nameToken = node.name; - var nameOffset = nameToken.offset; var fragmentName = _getFragmentName(nameToken); var fragment = EnumFragmentImpl( name: fragmentName, - nameOffset: nameOffset, + firstTokenOffset: node.offset, ); fragment.nameOffset2 = _getFragmentNameOffset(nameToken); fragment.isAugmentation = node.augmentKeyword != null; @@ -1023,7 +1014,7 @@ class FragmentBuilder extends ThrowingAstVisitor { var field = FieldFragmentImpl( name: _getFragmentName(nameToken), - nameOffset: constant.name.offset, + firstTokenOffset: constant.offset, ) ..hasImplicitType = true ..hasInitializer = true @@ -1101,7 +1092,7 @@ class FragmentBuilder extends ThrowingAstVisitor { // Build the 'values' field. var valuesField = - FieldFragmentImpl(name: 'values', nameOffset: -1) + FieldFragmentImpl(name: 'values', firstTokenOffset: null) ..hasEnclosingTypeParameterReference = false ..isConst = true ..isStatic = true @@ -1189,12 +1180,11 @@ class FragmentBuilder extends ThrowingAstVisitor { @override void visitExtensionDeclaration(covariant ExtensionDeclarationImpl node) { var nameToken = node.name; - var nameOffset = nameToken?.offset ?? -1; var fragmentName = _getFragmentName(nameToken); var fragment = ExtensionFragmentImpl( name: fragmentName, - nameOffset: nameOffset, + firstTokenOffset: node.offset, ); fragment.nameOffset2 = _getFragmentNameOffset(nameToken); fragment.isAugmentation = node.augmentKeyword != null; @@ -1234,7 +1224,7 @@ class FragmentBuilder extends ThrowingAstVisitor { var fragment = ExtensionTypeFragmentImpl( name: fragmentName, - nameOffset: nameToken.offset, + firstTokenOffset: node.offset, ); fragment.nameOffset2 = _getFragmentNameOffset(nameToken); fragment.isAugmentation = node.augmentKeyword != null; @@ -1271,11 +1261,10 @@ class FragmentBuilder extends ThrowingAstVisitor { var metadata = _buildMetadata(node.metadata); for (var variable in node.fields.variables) { var nameToken = variable.name; - var nameOffset = nameToken.offset; var fragment = FieldFragmentImpl( name: _getFragmentName(nameToken), - nameOffset: nameOffset, + firstTokenOffset: variable.offset, ); fragment.nameOffset2 = _getFragmentNameOffset(nameToken); fragment.hasInitializer = variable.initializer != null; @@ -1321,7 +1310,7 @@ class FragmentBuilder extends ThrowingAstVisitor { var nameOffset2 = nameToken.offset.nullIfNegative; var fragment = FieldFormalParameterFragmentImpl( - nameOffset: nameOffset2 ?? -1, + firstTokenOffset: node.offset, name: name2, nameOffset2: nameOffset2, parameterKind: node.kind, @@ -1371,7 +1360,6 @@ class FragmentBuilder extends ThrowingAstVisitor { void visitFunctionDeclaration(covariant FunctionDeclarationImpl node) { var nameToken = node.name; var name = nameToken.lexeme; - var nameOffset = nameToken.offset; var name2 = _getFragmentName(nameToken); var functionExpression = node.functionExpression; @@ -1381,7 +1369,7 @@ class FragmentBuilder extends ThrowingAstVisitor { if (node.isGetter) { var getterFragment = GetterFragmentImpl( name: name2, - nameOffset: nameOffset, + firstTokenOffset: node.offset, ); getterFragment.nameOffset2 = _getFragmentNameOffset(nameToken); getterFragment.isAugmentation = node.augmentKeyword != null; @@ -1394,7 +1382,7 @@ class FragmentBuilder extends ThrowingAstVisitor { } else if (node.isSetter) { var setterFragment = SetterFragmentImpl( name: name2, - nameOffset: nameOffset, + firstTokenOffset: node.offset, ); setterFragment.nameOffset2 = _getFragmentNameOffset(nameToken); setterFragment.isAugmentation = node.augmentKeyword != null; @@ -1407,7 +1395,7 @@ class FragmentBuilder extends ThrowingAstVisitor { } else { var fragment = TopLevelFunctionFragmentImpl( name: name2, - nameOffset: nameOffset, + firstTokenOffset: node.offset, ); fragment.nameOffset2 = _getFragmentNameOffset(nameToken); fragment.isAugmentation = node.augmentKeyword != null; @@ -1447,7 +1435,7 @@ class FragmentBuilder extends ThrowingAstVisitor { var fragment = TypeAliasFragmentImpl( name: name2, - nameOffset: nameToken.offset, + firstTokenOffset: node.offset, ); fragment.nameOffset2 = _getFragmentNameOffset(nameToken); fragment.isFunctionTypeAliasBased = true; @@ -1471,7 +1459,7 @@ class FragmentBuilder extends ThrowingAstVisitor { }); var aliasedElement = GenericFunctionTypeFragmentImpl.forOffset( - nameToken.offset, + firstTokenOffset: node.offset, ); aliasedElement.parameters = holder.parameters; @@ -1488,7 +1476,7 @@ class FragmentBuilder extends ThrowingAstVisitor { var nameOffset2 = nameToken.offset.nullIfNegative; var fragment = FormalParameterFragmentImpl( - nameOffset: nameOffset2 ?? -1, + firstTokenOffset: node.offset, name: name2, nameOffset2: nameOffset2, parameterKind: node.kind, @@ -1529,7 +1517,9 @@ class FragmentBuilder extends ThrowingAstVisitor { @override void visitGenericFunctionType(covariant GenericFunctionTypeImpl node) { - var fragment = GenericFunctionTypeFragmentImpl.forOffset(node.offset); + var fragment = GenericFunctionTypeFragmentImpl.forOffset( + firstTokenOffset: node.offset, + ); _unitElement.encloseElement(fragment); node.declaredFragment = fragment; @@ -1561,7 +1551,7 @@ class FragmentBuilder extends ThrowingAstVisitor { var fragment = TypeAliasFragmentImpl( name: name2, - nameOffset: nameToken.offset, + firstTokenOffset: node.offset, ); fragment.nameOffset2 = _getFragmentNameOffset(nameToken); fragment.isAugmentation = node.augmentKeyword != null; @@ -1611,14 +1601,13 @@ class FragmentBuilder extends ThrowingAstVisitor { void visitMethodDeclaration(covariant MethodDeclarationImpl node) { var nameToken = node.name; var name = nameToken.lexeme; - var nameOffset = nameToken.offset; Reference reference; ExecutableFragmentImpl executableFragment; if (node.isGetter) { var fragment = GetterFragmentImpl( name: _getFragmentName(nameToken), - nameOffset: nameOffset, + firstTokenOffset: node.offset, ); fragment.nameOffset2 = _getFragmentNameOffset(nameToken); fragment.isAbstract = node.isAbstract; @@ -1642,7 +1631,7 @@ class FragmentBuilder extends ThrowingAstVisitor { } else if (node.isSetter) { var fragment = SetterFragmentImpl( name: _getFragmentName(nameToken), - nameOffset: nameOffset, + firstTokenOffset: node.offset, ); fragment.nameOffset2 = _getFragmentNameOffset(nameToken); fragment.isAbstract = node.isAbstract; @@ -1668,7 +1657,7 @@ class FragmentBuilder extends ThrowingAstVisitor { var fragment = MethodFragmentImpl( name: _getFragmentName(nameToken), - nameOffset: nameOffset, + firstTokenOffset: node.offset, ); fragment.nameOffset2 = _getFragmentNameOffset(nameToken); fragment.isAbstract = node.isAbstract; @@ -1712,7 +1701,7 @@ class FragmentBuilder extends ThrowingAstVisitor { var fragment = MixinFragmentImpl( name: fragmentName, - nameOffset: nameToken.offset, + firstTokenOffset: node.offset, ); fragment.nameOffset2 = _getFragmentNameOffset(nameToken); fragment.isAugmentation = node.augmentKeyword != null; @@ -1798,7 +1787,7 @@ class FragmentBuilder extends ThrowingAstVisitor { var nameOffset2 = nameToken?.offset; var fragment = FormalParameterFragmentImpl( - nameOffset: nameOffset2 ?? -1, + firstTokenOffset: node.offset, name: name2, nameOffset2: nameOffset2, parameterKind: node.kind, @@ -1831,7 +1820,7 @@ class FragmentBuilder extends ThrowingAstVisitor { var nameOffset2 = nameToken.offset.nullIfNegative; var fragment = SuperFormalParameterFragmentImpl( - nameOffset: nameOffset2 ?? -1, + firstTokenOffset: node.offset, name: name2, nameOffset2: nameOffset2, parameterKind: node.kind, @@ -1879,12 +1868,11 @@ class FragmentBuilder extends ThrowingAstVisitor { var metadata = _buildMetadata(node.metadata); for (var variable in node.variables.variables) { var nameToken = variable.name; - var nameOffset = nameToken.offset; var name2 = _getFragmentName(nameToken); var fragment = TopLevelVariableFragmentImpl( name: name2, - nameOffset: nameOffset, + firstTokenOffset: variable.offset, ); fragment.nameOffset2 = _getFragmentNameOffset(nameToken); @@ -1929,7 +1917,7 @@ class FragmentBuilder extends ThrowingAstVisitor { var fragment = TypeParameterFragmentImpl( name: _getFragmentName(nameToken), - nameOffset: nameToken.offset, + firstTokenOffset: node.offset, ); fragment.nameOffset2 = _getFragmentNameOffset(nameToken); fragment.metadata = _buildMetadata(node.metadata); @@ -1994,7 +1982,7 @@ class FragmentBuilder extends ThrowingAstVisitor { var fieldFragment = FieldFragmentImpl( name: _getFragmentName(fieldNameToken), - nameOffset: fieldNameToken.offset, + firstTokenOffset: representation.offset, ); fieldFragment.nameOffset2 = _getFragmentNameOffset(fieldNameToken); fieldFragment.isFinal = true; @@ -2016,7 +2004,7 @@ class FragmentBuilder extends ThrowingAstVisitor { var formalParameterElement = FieldFormalParameterFragmentImpl( - nameOffset: nameOffset2 ?? -1, + firstTokenOffset: representation.offset, name: _getFragmentName(fieldNameToken), nameOffset2: nameOffset2, parameterKind: ParameterKind.REQUIRED, @@ -2031,16 +2019,13 @@ class FragmentBuilder extends ThrowingAstVisitor { { int? periodOffset; - int nameOffset; int? nameEnd; var constructorNameNode = representation.constructorName; if (constructorNameNode != null) { var nameToken = constructorNameNode.name; periodOffset = constructorNameNode.period.offset; - nameOffset = nameToken.offset; nameEnd = nameToken.end; } else { - nameOffset = extensionNode.name.offset; nameEnd = extensionNode.name.end; } @@ -2056,7 +2041,7 @@ class FragmentBuilder extends ThrowingAstVisitor { var constructorFragment = ConstructorFragmentImpl( name: constructorFragmentName, - nameOffset: nameOffset, + firstTokenOffset: representation.offset, ) ..isAugmentation = extensionNode.augmentKeyword != null ..isConst = extensionNode.constKeyword != null diff --git a/pkg/analyzer/lib/src/summary2/informative_data.dart b/pkg/analyzer/lib/src/summary2/informative_data.dart index 78e58ac8e9b..36009af1242 100644 --- a/pkg/analyzer/lib/src/summary2/informative_data.dart +++ b/pkg/analyzer/lib/src/summary2/informative_data.dart @@ -185,7 +185,7 @@ class InformativeDataApplier { ) { forCorrespondingPairs(elementList.notSynthetic, infoList, (element, info) { element.setCodeRange(info.codeOffset, info.codeLength); - element.nameOffset = info.nameOffset; + element.firstTokenOffset = info.firstTokenOffset; element.nameOffset2 = info.nameOffset2; element.documentationComment = info.documentationComment; _applyToFormalParameters(element.parameters_unresolved, info.parameters); @@ -206,7 +206,7 @@ class InformativeDataApplier { _InfoClassDeclaration info, ) { element.setCodeRange(info.codeOffset, info.codeLength); - element.nameOffset = info.nameOffset; + element.firstTokenOffset = info.firstTokenOffset; element.nameOffset2 = info.nameOffset2; element.documentationComment = info.documentationComment; _applyToTypeParameters( @@ -237,7 +237,7 @@ class InformativeDataApplier { _InfoClassTypeAlias info, ) { element.setCodeRange(info.codeOffset, info.codeLength); - element.nameOffset = info.nameOffset; + element.firstTokenOffset = info.firstTokenOffset; element.nameOffset2 = info.nameOffset2; element.documentationComment = info.documentationComment; _applyToTypeParameters( @@ -281,7 +281,7 @@ class InformativeDataApplier { element.setCodeRange(info.codeOffset, info.codeLength); element.typeNameOffset = info.typeNameOffset; element.periodOffset = info.periodOffset; - element.nameOffset = info.nameOffset; + element.firstTokenOffset = info.firstTokenOffset; element.nameEnd = info.nameEnd; element.nameOffset2 = info.nameOffset2; element.documentationComment = info.documentationComment; @@ -304,7 +304,7 @@ class InformativeDataApplier { _InfoClassDeclaration info, ) { element.setCodeRange(info.codeOffset, info.codeLength); - element.nameOffset = info.nameOffset; + element.firstTokenOffset = info.firstTokenOffset; element.nameOffset2 = info.nameOffset2; element.documentationComment = info.documentationComment; @@ -338,7 +338,7 @@ class InformativeDataApplier { _InfoClassDeclaration info, ) { element.setCodeRange(info.codeOffset, info.codeLength); - element.nameOffset = info.nameOffset; + element.firstTokenOffset = info.firstTokenOffset; element.nameOffset2 = info.nameOffset2; element.documentationComment = info.documentationComment; _applyToTypeParameters( @@ -363,7 +363,7 @@ class InformativeDataApplier { _InfoExtensionTypeDeclaration info, ) { element.setCodeRange(info.codeOffset, info.codeLength); - element.nameOffset = info.nameOffset; + element.firstTokenOffset = info.firstTokenOffset; element.nameOffset2 = info.nameOffset2; element.documentationComment = info.documentationComment; _applyToTypeParameters( @@ -373,7 +373,7 @@ class InformativeDataApplier { var representationField = element.fields.first; var infoRep = info.representation; - representationField.nameOffset = infoRep.fieldNameOffset; + representationField.firstTokenOffset = infoRep.firstTokenOffset; representationField.nameOffset2 = infoRep.fieldNameOffset2; representationField.setCodeRange( infoRep.fieldCodeOffset, @@ -396,13 +396,13 @@ class InformativeDataApplier { ); primaryConstructor.typeNameOffset = infoRep.typeNameOffset; primaryConstructor.periodOffset = infoRep.constructorPeriodOffset; - primaryConstructor.nameOffset = infoRep.constructorNameOffset; + primaryConstructor.firstTokenOffset = infoRep.constructorFirstTokenOffset; primaryConstructor.nameEnd = infoRep.constructorNameEnd; primaryConstructor.nameOffset2 = infoRep.constructorNameOffset2; var primaryConstructorParameter = primaryConstructor.parameters_unresolved.first; - primaryConstructorParameter.nameOffset = infoRep.fieldNameOffset; + primaryConstructorParameter.firstTokenOffset = infoRep.firstTokenOffset; primaryConstructorParameter.nameOffset2 = infoRep.fieldNameOffset2; primaryConstructorParameter.setCodeRange( infoRep.fieldCodeOffset, @@ -434,7 +434,7 @@ class InformativeDataApplier { ) { forCorrespondingPairs(elementList.notSynthetic, infoList, (element, info) { element.setCodeRange(info.codeOffset, info.codeLength); - element.nameOffset = info.nameOffset; + element.firstTokenOffset = info.firstTokenOffset; element.nameOffset2 = info.nameOffset2; element.documentationComment = info.documentationComment; @@ -455,7 +455,7 @@ class InformativeDataApplier { ) { forCorrespondingPairs(parameters, infoList, (element, info) { element.setCodeRange(info.codeOffset, info.codeLength); - element.nameOffset = info.nameOffset; + element.firstTokenOffset = info.firstTokenOffset; element.nameOffset2 = info.nameOffset2; _applyToTypeParameters(element.typeParameters, info.typeParameters); _applyToFormalParameters(element.parameters, info.parameters); @@ -467,7 +467,7 @@ class InformativeDataApplier { _InfoFunctionDeclaration info, ) { element.setCodeRange(info.codeOffset, info.codeLength); - element.nameOffset = info.nameOffset; + element.firstTokenOffset = info.firstTokenOffset; element.nameOffset2 = info.nameOffset2; element.documentationComment = info.documentationComment; _applyToTypeParameters( @@ -490,7 +490,7 @@ class InformativeDataApplier { _InfoFunctionTypeAlias info, ) { element.setCodeRange(info.codeOffset, info.codeLength); - element.nameOffset = info.nameOffset; + element.firstTokenOffset = info.firstTokenOffset; element.nameOffset2 = info.nameOffset2; element.documentationComment = info.documentationComment; _applyToTypeParameters( @@ -510,7 +510,7 @@ class InformativeDataApplier { _InfoGenericTypeAlias info, ) { element.setCodeRange(info.codeOffset, info.codeLength); - element.nameOffset = info.nameOffset; + element.firstTokenOffset = info.firstTokenOffset; element.nameOffset2 = info.nameOffset2; element.documentationComment = info.documentationComment; _applyToTypeParameters( @@ -559,7 +559,7 @@ class InformativeDataApplier { ) { forCorrespondingPairs(elementList, infoList, (element, info) { element.setCodeRange(info.codeOffset, info.codeLength); - element.nameOffset = info.nameOffset; + element.firstTokenOffset = info.firstTokenOffset; element.nameOffset2 = info.nameOffset2; element.documentationComment = info.documentationComment; _applyToTypeParameters( @@ -584,7 +584,7 @@ class InformativeDataApplier { _InfoClassDeclaration info, ) { element.setCodeRange(info.codeOffset, info.codeLength); - element.nameOffset = info.nameOffset; + element.firstTokenOffset = info.firstTokenOffset; element.nameOffset2 = info.nameOffset2; element.documentationComment = info.documentationComment; @@ -611,7 +611,7 @@ class InformativeDataApplier { _InfoTopLevelVariable info, ) { element.setCodeRange(info.codeOffset, info.codeLength); - element.nameOffset = info.nameOffset; + element.firstTokenOffset = info.firstTokenOffset; element.nameOffset2 = info.nameOffset2; element.documentationComment = info.documentationComment; @@ -630,7 +630,7 @@ class InformativeDataApplier { ) { forCorrespondingPairs(elementList, infoList, (element, info) { element.setCodeRange(info.codeOffset, info.codeLength); - element.nameOffset = info.nameOffset; + element.firstTokenOffset = info.firstTokenOffset; element.nameOffset2 = info.nameOffset2; }); } @@ -643,13 +643,14 @@ class InformativeDataApplier { var getterFragment = element.element.getter?.firstFragment; if (getterFragment != null && getterFragment.isSynthetic) { - getterFragment.nameOffset = element.nameOffset; + getterFragment.firstTokenOffset = element.firstTokenOffset; } var setterFragment = element.element.setter?.firstFragment; if (setterFragment != null && setterFragment.isSynthetic) { - setterFragment.nameOffset = element.nameOffset; - setterFragment.valueFormalParameter?.nameOffset = element.nameOffset; + setterFragment.firstTokenOffset = element.firstTokenOffset; + setterFragment.valueFormalParameter?.firstTokenOffset = + element.firstTokenOffset; } } @@ -694,7 +695,7 @@ class InformativeDataApplier { class _InfoClassDeclaration { final int codeOffset; final int codeLength; - final int nameOffset; + final int firstTokenOffset; final int? nameOffset2; final String? documentationComment; final List<_InfoTypeParameter> typeParameters; @@ -707,9 +708,8 @@ class _InfoClassDeclaration { factory _InfoClassDeclaration( InfoDeclarationStore cache, - SummaryDataReader reader, { - int nameOffsetDelta = 0, - }) { + SummaryDataReader reader, + ) { // TODO(scheglov): Shared below. // TODO(jensj): Possibly we could just save the bytes and the // offset and then only read it when/if needed. @@ -726,7 +726,7 @@ class _InfoClassDeclaration { var result = _InfoClassDeclaration._( codeOffset: reader.readUInt30(), codeLength: reader.readUInt30(), - nameOffset: reader.readUInt30() - nameOffsetDelta, + firstTokenOffset: reader.readUInt30(), nameOffset2: reader.readOptionalUInt30(), documentationComment: reader.readStringUtf8().nullIfEmpty, typeParameters: reader.readTypedList(() => _InfoTypeParameter(reader)), @@ -747,7 +747,7 @@ class _InfoClassDeclaration { _InfoClassDeclaration._({ required this.codeOffset, required this.codeLength, - required this.nameOffset, + required this.firstTokenOffset, required this.nameOffset2, required this.documentationComment, required this.typeParameters, @@ -763,7 +763,7 @@ class _InfoClassDeclaration { class _InfoClassTypeAlias { final int codeOffset; final int codeLength; - final int nameOffset; + final int firstTokenOffset; final int? nameOffset2; final String? documentationComment; final List<_InfoTypeParameter> typeParameters; @@ -773,7 +773,7 @@ class _InfoClassTypeAlias { return _InfoClassTypeAlias._( codeOffset: reader.readUInt30(), codeLength: reader.readUInt30(), - nameOffset: reader.readUInt30(), + firstTokenOffset: reader.readUInt30(), nameOffset2: reader.readOptionalUInt30(), documentationComment: reader.readStringUtf8().nullIfEmpty, typeParameters: reader.readTypedList(() => _InfoTypeParameter(reader)), @@ -784,7 +784,7 @@ class _InfoClassTypeAlias { _InfoClassTypeAlias._({ required this.codeOffset, required this.codeLength, - required this.nameOffset, + required this.firstTokenOffset, required this.nameOffset2, required this.documentationComment, required this.typeParameters, @@ -811,7 +811,7 @@ class _InfoConstructorDeclaration { final int codeLength; final int? typeNameOffset; final int? periodOffset; - final int nameOffset; + final int firstTokenOffset; final int? nameEnd; final int? nameOffset2; final String? documentationComment; @@ -824,7 +824,7 @@ class _InfoConstructorDeclaration { codeLength: reader.readUInt30(), typeNameOffset: reader.readUInt30(), periodOffset: reader.readOptionalUInt30(), - nameOffset: reader.readUInt30(), + firstTokenOffset: reader.readUInt30(), nameEnd: reader.readOptionalUInt30(), nameOffset2: reader.readOptionalUInt30(), documentationComment: reader.readStringUtf8().nullIfEmpty, @@ -838,7 +838,7 @@ class _InfoConstructorDeclaration { required this.codeLength, required this.typeNameOffset, required this.periodOffset, - required this.nameOffset, + required this.firstTokenOffset, required this.nameEnd, required this.nameOffset2, required this.documentationComment, @@ -864,7 +864,7 @@ class _InfoExport { class _InfoExtensionTypeDeclaration { final int codeOffset; final int codeLength; - final int nameOffset; + final int firstTokenOffset; final int? nameOffset2; final String? documentationComment; final List<_InfoTypeParameter> typeParameters; @@ -880,7 +880,7 @@ class _InfoExtensionTypeDeclaration { return _InfoExtensionTypeDeclaration._( codeOffset: reader.readUInt30(), codeLength: reader.readUInt30(), - nameOffset: reader.readUInt30(), + firstTokenOffset: reader.readUInt30(), nameOffset2: reader.readOptionalUInt30(), documentationComment: reader.readStringUtf8().nullIfEmpty, typeParameters: reader.readTypedList(() => _InfoTypeParameter(reader)), @@ -899,7 +899,7 @@ class _InfoExtensionTypeDeclaration { _InfoExtensionTypeDeclaration._({ required this.codeOffset, required this.codeLength, - required this.nameOffset, + required this.firstTokenOffset, required this.nameOffset2, required this.documentationComment, required this.typeParameters, @@ -918,12 +918,12 @@ class _InfoExtensionTypeRepresentation { final int constructorCodeLength; final int? typeNameOffset; final int? constructorPeriodOffset; - final int constructorNameOffset; + final int constructorFirstTokenOffset; final int? constructorNameEnd; final int? constructorNameOffset2; final int fieldCodeOffset; final int fieldCodeLength; - final int fieldNameOffset; + final int firstTokenOffset; final int? fieldNameOffset2; final Uint32List fieldConstantOffsets; @@ -933,12 +933,12 @@ class _InfoExtensionTypeRepresentation { constructorCodeLength: reader.readUInt30(), typeNameOffset: reader.readOptionalUInt30(), constructorPeriodOffset: reader.readOptionalUInt30(), - constructorNameOffset: reader.readUInt30(), + constructorFirstTokenOffset: reader.readUInt30(), constructorNameEnd: reader.readOptionalUInt30(), constructorNameOffset2: reader.readOptionalUInt30(), fieldCodeOffset: reader.readUInt30(), fieldCodeLength: reader.readUInt30(), - fieldNameOffset: reader.readUInt30(), + firstTokenOffset: reader.readUInt30(), fieldNameOffset2: reader.readOptionalUInt30(), fieldConstantOffsets: reader.readUInt30List(), ); @@ -949,12 +949,12 @@ class _InfoExtensionTypeRepresentation { required this.constructorCodeLength, required this.typeNameOffset, required this.constructorPeriodOffset, - required this.constructorNameOffset, + required this.constructorFirstTokenOffset, required this.constructorNameEnd, required this.constructorNameOffset2, required this.fieldCodeOffset, required this.fieldCodeLength, - required this.fieldNameOffset, + required this.firstTokenOffset, required this.fieldNameOffset2, required this.fieldConstantOffsets, }); @@ -963,7 +963,7 @@ class _InfoExtensionTypeRepresentation { class _InfoFieldDeclaration { final int codeOffset; final int codeLength; - final int nameOffset; + final int firstTokenOffset; final int? nameOffset2; final String? documentationComment; final Uint32List constantOffsets; @@ -972,7 +972,7 @@ class _InfoFieldDeclaration { return _InfoFieldDeclaration._( codeOffset: reader.readUInt30(), codeLength: reader.readUInt30(), - nameOffset: reader.readUInt30(), + firstTokenOffset: reader.readUInt30(), nameOffset2: reader.readOptionalUInt30(), documentationComment: reader.readStringUtf8().nullIfEmpty, constantOffsets: reader.readUInt30List(), @@ -982,7 +982,7 @@ class _InfoFieldDeclaration { _InfoFieldDeclaration._({ required this.codeOffset, required this.codeLength, - required this.nameOffset, + required this.firstTokenOffset, required this.nameOffset2, required this.documentationComment, required this.constantOffsets, @@ -992,7 +992,7 @@ class _InfoFieldDeclaration { class _InfoFormalParameter { final int codeOffset; final int codeLength; - final int nameOffset; + final int firstTokenOffset; final int? nameOffset2; final List<_InfoTypeParameter> typeParameters; final List<_InfoFormalParameter> parameters; @@ -1001,7 +1001,7 @@ class _InfoFormalParameter { return _InfoFormalParameter._( codeOffset: reader.readUInt30(), codeLength: reader.readUInt30(), - nameOffset: reader.readUInt30() - 1, + firstTokenOffset: reader.readUInt30() - 1, nameOffset2: reader.readOptionalUInt30(), typeParameters: reader.readTypedList(() => _InfoTypeParameter(reader)), parameters: reader.readTypedList(() => _InfoFormalParameter(reader)), @@ -1011,7 +1011,7 @@ class _InfoFormalParameter { _InfoFormalParameter._({ required this.codeOffset, required this.codeLength, - required this.nameOffset, + required this.firstTokenOffset, required this.nameOffset2, required this.typeParameters, required this.parameters, @@ -1021,7 +1021,7 @@ class _InfoFormalParameter { class _InfoFunctionDeclaration { final int codeOffset; final int codeLength; - final int nameOffset; + final int firstTokenOffset; final int? nameOffset2; final String? documentationComment; final List<_InfoTypeParameter> typeParameters; @@ -1032,7 +1032,7 @@ class _InfoFunctionDeclaration { return _InfoFunctionDeclaration._( codeOffset: reader.readUInt30(), codeLength: reader.readUInt30(), - nameOffset: reader.readUInt30(), + firstTokenOffset: reader.readUInt30(), nameOffset2: reader.readOptionalUInt30(), documentationComment: reader.readStringUtf8().nullIfEmpty, typeParameters: reader.readTypedList(() => _InfoTypeParameter(reader)), @@ -1044,7 +1044,7 @@ class _InfoFunctionDeclaration { _InfoFunctionDeclaration._({ required this.codeOffset, required this.codeLength, - required this.nameOffset, + required this.firstTokenOffset, required this.nameOffset2, required this.documentationComment, required this.typeParameters, @@ -1056,7 +1056,7 @@ class _InfoFunctionDeclaration { class _InfoFunctionTypeAlias { final int codeOffset; final int codeLength; - final int nameOffset; + final int firstTokenOffset; final int? nameOffset2; final String? documentationComment; final List<_InfoTypeParameter> typeParameters; @@ -1067,7 +1067,7 @@ class _InfoFunctionTypeAlias { return _InfoFunctionTypeAlias._( codeOffset: reader.readUInt30(), codeLength: reader.readUInt30(), - nameOffset: reader.readUInt30(), + firstTokenOffset: reader.readUInt30(), nameOffset2: reader.readOptionalUInt30(), documentationComment: reader.readStringUtf8().nullIfEmpty, typeParameters: reader.readTypedList(() => _InfoTypeParameter(reader)), @@ -1079,7 +1079,7 @@ class _InfoFunctionTypeAlias { _InfoFunctionTypeAlias._({ required this.codeOffset, required this.codeLength, - required this.nameOffset, + required this.firstTokenOffset, required this.nameOffset2, required this.documentationComment, required this.typeParameters, @@ -1091,7 +1091,7 @@ class _InfoFunctionTypeAlias { class _InfoGenericTypeAlias { final int codeOffset; final int codeLength; - final int nameOffset; + final int firstTokenOffset; final int? nameOffset2; final String? documentationComment; final List<_InfoTypeParameter> typeParameters; @@ -1103,7 +1103,7 @@ class _InfoGenericTypeAlias { return _InfoGenericTypeAlias._( codeOffset: reader.readUInt30(), codeLength: reader.readUInt30(), - nameOffset: reader.readUInt30(), + firstTokenOffset: reader.readUInt30(), nameOffset2: reader.readOptionalUInt30(), documentationComment: reader.readStringUtf8().nullIfEmpty, typeParameters: reader.readTypedList(() => _InfoTypeParameter(reader)), @@ -1120,7 +1120,7 @@ class _InfoGenericTypeAlias { _InfoGenericTypeAlias._({ required this.codeOffset, required this.codeLength, - required this.nameOffset, + required this.firstTokenOffset, required this.nameOffset2, required this.documentationComment, required this.typeParameters, @@ -1170,7 +1170,7 @@ class _InfoLibraryName { class _InfoMethodDeclaration { final int codeOffset; final int codeLength; - final int nameOffset; + final int firstTokenOffset; final int? nameOffset2; final String? documentationComment; final List<_InfoTypeParameter> typeParameters; @@ -1181,7 +1181,7 @@ class _InfoMethodDeclaration { return _InfoMethodDeclaration._( codeOffset: reader.readUInt30(), codeLength: reader.readUInt30(), - nameOffset: reader.readUInt30(), + firstTokenOffset: reader.readUInt30(), nameOffset2: reader.readOptionalUInt30(), documentationComment: reader.readStringUtf8().nullIfEmpty, typeParameters: reader.readTypedList(() => _InfoTypeParameter(reader)), @@ -1193,7 +1193,7 @@ class _InfoMethodDeclaration { _InfoMethodDeclaration._({ required this.codeOffset, required this.codeLength, - required this.nameOffset, + required this.firstTokenOffset, required this.nameOffset2, required this.documentationComment, required this.typeParameters, @@ -1247,7 +1247,7 @@ class _InformativeDataWriter { sink.writeList2(unit.declarations, (node) { sink.writeUInt30(node.offset); sink.writeUInt30(node.length); - sink.writeUInt30(node.name.offset); + sink.writeUInt30(node.offset); sink.writeOptionalUInt30(node.name.offsetIfNotEmpty); _writeDocumentationComment(node); _writeTypeParameters(node.typeParameters); @@ -1263,7 +1263,7 @@ class _InformativeDataWriter { sink.writeList2(unit.declarations, (node) { sink.writeUInt30(node.offset); sink.writeUInt30(node.length); - sink.writeUInt30(node.name.offset); + sink.writeUInt30(node.offset); sink.writeOptionalUInt30(node.name.offsetIfNotEmpty); _writeDocumentationComment(node); _writeTypeParameters(node.typeParameters); @@ -1276,7 +1276,7 @@ class _InformativeDataWriter { sink.writeList2(unit.declarations, (node) { sink.writeUInt30(node.offset); sink.writeUInt30(node.length); - sink.writeUInt30(node.name.offset); + sink.writeUInt30(node.offset); sink.writeOptionalUInt30(node.name.offsetIfNotEmpty); _writeDocumentationComment(node); _writeTypeParameters(node.typeParameters); @@ -1293,7 +1293,7 @@ class _InformativeDataWriter { sink.writeList2(unit.declarations, (node) { sink.writeUInt30(node.offset); sink.writeUInt30(node.length); - sink.writeUInt30(1 + (node.name?.offset ?? -1)); + sink.writeUInt30(node.offset); sink.writeOptionalUInt30(node.name?.offsetIfNotEmpty); _writeDocumentationComment(node); _writeTypeParameters(node.typeParameters); @@ -1309,7 +1309,7 @@ class _InformativeDataWriter { sink.writeList2(unit.declarations, (node) { sink.writeUInt30(node.offset); sink.writeUInt30(node.length); - sink.writeUInt30(node.name.offset); + sink.writeUInt30(node.offset); sink.writeOptionalUInt30(node.name.offsetIfNotEmpty); _writeDocumentationComment(node); _writeTypeParameters(node.typeParameters); @@ -1331,7 +1331,7 @@ class _InformativeDataWriter { (node) { sink.writeUInt30(node.offset); sink.writeUInt30(node.length); - sink.writeUInt30(node.name.offset); + sink.writeUInt30(node.offset); sink.writeOptionalUInt30(node.name.offsetIfNotEmpty); _writeDocumentationComment(node); _writeTypeParameters(node.functionExpression.typeParameters); @@ -1352,7 +1352,7 @@ class _InformativeDataWriter { (node) { sink.writeUInt30(node.offset); sink.writeUInt30(node.length); - sink.writeUInt30(node.name.offset); + sink.writeUInt30(node.offset); sink.writeOptionalUInt30(node.name.offsetIfNotEmpty); _writeDocumentationComment(node); _writeTypeParameters(node.functionExpression.typeParameters); @@ -1373,7 +1373,7 @@ class _InformativeDataWriter { (node) { sink.writeUInt30(node.offset); sink.writeUInt30(node.length); - sink.writeUInt30(node.name.offset); + sink.writeUInt30(node.offset); sink.writeOptionalUInt30(node.name.offsetIfNotEmpty); _writeDocumentationComment(node); _writeTypeParameters(node.functionExpression.typeParameters); @@ -1389,7 +1389,7 @@ class _InformativeDataWriter { sink.writeList2(unit.declarations, (node) { sink.writeUInt30(node.offset); sink.writeUInt30(node.length); - sink.writeUInt30(node.name.offset); + sink.writeUInt30(node.offset); sink.writeOptionalUInt30(node.name.offsetIfNotEmpty); _writeDocumentationComment(node); _writeTypeParameters(node.typeParameters); @@ -1405,7 +1405,7 @@ class _InformativeDataWriter { var aliasedType = node.type; sink.writeUInt30(node.offset); sink.writeUInt30(node.length); - sink.writeUInt30(node.name.offset); + sink.writeUInt30(node.offset); sink.writeOptionalUInt30(node.name.offsetIfNotEmpty); _writeDocumentationComment(node); _writeTypeParameters(node.typeParameters); @@ -1426,7 +1426,7 @@ class _InformativeDataWriter { sink.writeList2(unit.declarations, (node) { sink.writeUInt30(node.offset); sink.writeUInt30(node.length); - sink.writeUInt30(node.name.offset); + sink.writeUInt30(node.offset); sink.writeOptionalUInt30(node.name.offsetIfNotEmpty); _writeDocumentationComment(node); _writeTypeParameters(node.typeParameters); @@ -1731,7 +1731,7 @@ class _InformativeDataWriter { var codeEnd = node.fieldName.end; sink.writeUInt30(codeOffset); sink.writeUInt30(codeEnd - codeOffset); - sink.writeUInt30(node.fieldName.offset); + sink.writeUInt30(node.offset); sink.writeOptionalUInt30(node.fieldName.offsetIfNotEmpty); _writeOffsets(metadata: node.fieldMetadata); @@ -1741,7 +1741,7 @@ class _InformativeDataWriter { var codeOffset = _codeOffsetForVariable(node); sink.writeUInt30(codeOffset); sink.writeUInt30(node.end - codeOffset); - sink.writeUInt30(node.name.offset); + sink.writeUInt30(node.offset); sink.writeOptionalUInt30(node.name.offsetIfNotEmpty); _writeDocumentationComment(node); @@ -1768,7 +1768,7 @@ class _InformativeDataWriter { class _InfoTopLevelVariable { final int codeOffset; final int codeLength; - final int nameOffset; + final int firstTokenOffset; final int? nameOffset2; final String? documentationComment; final Uint32List constantOffsets; @@ -1777,7 +1777,7 @@ class _InfoTopLevelVariable { return _InfoTopLevelVariable._( codeOffset: reader.readUInt30(), codeLength: reader.readUInt30(), - nameOffset: reader.readUInt30(), + firstTokenOffset: reader.readUInt30(), nameOffset2: reader.readOptionalUInt30(), documentationComment: reader.readStringUtf8().nullIfEmpty, constantOffsets: reader.readUInt30List(), @@ -1787,7 +1787,7 @@ class _InfoTopLevelVariable { _InfoTopLevelVariable._({ required this.codeOffset, required this.codeLength, - required this.nameOffset, + required this.firstTokenOffset, required this.nameOffset2, required this.documentationComment, required this.constantOffsets, @@ -1797,14 +1797,14 @@ class _InfoTopLevelVariable { class _InfoTypeParameter { final int codeOffset; final int codeLength; - final int nameOffset; + final int firstTokenOffset; final int? nameOffset2; factory _InfoTypeParameter(SummaryDataReader reader) { return _InfoTypeParameter._( codeOffset: reader.readUInt30(), codeLength: reader.readUInt30(), - nameOffset: reader.readUInt30(), + firstTokenOffset: reader.readUInt30(), nameOffset2: reader.readOptionalUInt30(), ); } @@ -1812,7 +1812,7 @@ class _InfoTypeParameter { _InfoTypeParameter._({ required this.codeOffset, required this.codeLength, - required this.nameOffset, + required this.firstTokenOffset, required this.nameOffset2, }); } @@ -1858,7 +1858,7 @@ class _InfoUnit { classTypeAliases: reader.readTypedList(() => _InfoClassTypeAlias(reader)), enums: reader.readTypedList(() => _InfoClassDeclaration(cache, reader)), extensions: reader.readTypedList( - () => _InfoClassDeclaration(cache, reader, nameOffsetDelta: 1), + () => _InfoClassDeclaration(cache, reader), ), extensionTypes: reader.readTypedList( () => _InfoExtensionTypeDeclaration(reader), @@ -2020,7 +2020,7 @@ class _OffsetsApplier extends _OffsetsAstVisitor { var fragment = node.declaredFragment; var identifier = node.name; if (fragment is FormalParameterFragmentImpl && identifier != null) { - fragment.nameOffset = identifier.offset; + fragment.firstTokenOffset = identifier.offset; fragment.nameOffset2 = identifier.offsetIfNotEmpty; } } diff --git a/pkg/analyzer/lib/src/summary2/library_builder.dart b/pkg/analyzer/lib/src/summary2/library_builder.dart index da212904559..69b602d2cdc 100644 --- a/pkg/analyzer/lib/src/summary2/library_builder.dart +++ b/pkg/analyzer/lib/src/summary2/library_builder.dart @@ -152,8 +152,10 @@ class LibraryBuilder { if (classFragment.isMixinApplication) continue; if (classFragment.constructors.isNotEmpty) continue; - var fragment = ConstructorFragmentImpl(name: 'new', nameOffset: -1) - ..isSynthetic = true; + var fragment = ConstructorFragmentImpl( + name: 'new', + firstTokenOffset: null, + )..isSynthetic = true; fragment.typeName = classFragment.name; var classElement = classFragment.element; @@ -215,8 +217,7 @@ class LibraryBuilder { enum_.valuesElement.element.type = valuesType; // TODO(scheglov): We repeat this code. enum_.valuesElement.element.getter!.returnType = valuesType; - enum_.valuesElement.element.getter!.firstFragment.returnType = - valuesType; + enum_.valuesElement.element.getter!.firstFragment.returnType = valuesType; } } @@ -235,7 +236,7 @@ class LibraryBuilder { if (hasConstructor(enumFragment)) continue; var fragment = - ConstructorFragmentImpl(name: 'new', nameOffset: -1) + ConstructorFragmentImpl(name: 'new', firstTokenOffset: null) ..isConst = true ..isSynthetic = true; fragment.typeName = enumFragment.name; @@ -337,8 +338,7 @@ class LibraryBuilder { for (var constructor in interfaceFragment.constructors) { for (var parameter in constructor.parameters) { if (parameter is FieldFormalParameterFragmentImpl) { - parameter.field = - element.getField(parameter.name ?? '')?.asElement; + parameter.field = element.getField(parameter.name ?? '')?.asElement; } } } @@ -621,6 +621,7 @@ class LibraryBuilder { var fragment = PrefixFragmentImpl( enclosingFragment: libraryFragment, name: unlinkedName?.name, + firstTokenOffset: null, nameOffset2: unlinkedName?.nameOffset, isDeferred: isDeferred, )..offset = offset; diff --git a/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart b/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart index a82b3ca48af..37ab5598017 100644 --- a/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart +++ b/pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart @@ -981,7 +981,7 @@ class _MockSdkElementsBuilder { List typeParameters = const [], required LibraryFragmentImpl unit, }) { - var fragment = ClassFragmentImpl(name: name, nameOffset: 0); + var fragment = ClassFragmentImpl(name: name, firstTokenOffset: null); ClassElementImpl(Reference.root(), fragment); fragment.typeParameters = typeParameters.map((tp) => tp.firstFragment).toList(); @@ -996,7 +996,7 @@ class _MockSdkElementsBuilder { bool isFactory = false, List parameters = const [], }) { - var fragment = ConstructorFragmentImpl(name: name, nameOffset: 0); + var fragment = ConstructorFragmentImpl(name: name, firstTokenOffset: null); fragment.isFactory = isFactory; fragment.isConst = isConst; fragment.parameters = @@ -1020,7 +1020,7 @@ class _MockSdkElementsBuilder { bool isFinal = false, bool isStatic = false, }) { - var fragment = FieldFragmentImpl(name: name, nameOffset: 0); + var fragment = FieldFragmentImpl(name: name, firstTokenOffset: null); var element = FieldElementImpl( reference: Reference.root(), firstFragment: fragment, @@ -1029,20 +1029,20 @@ class _MockSdkElementsBuilder { fragment.isFinal = isFinal; fragment.isStatic = isStatic; - var getterFragment = GetterFragmentImpl(name: name, nameOffset: -1) + var getterFragment = GetterFragmentImpl(name: name, firstTokenOffset: null) ..isSynthetic = true; var getterElement = GetterElementImpl(Reference.root(), getterFragment); element.getter = getterElement; if (!isConst && !isFinal) { var valueFragment = FormalParameterFragmentImpl( - nameOffset: -1, + firstTokenOffset: null, name: null, nameOffset2: null, parameterKind: ParameterKind.REQUIRED, ); var setterFragment = - SetterFragmentImpl(name: name, nameOffset: -1) + SetterFragmentImpl(name: name, firstTokenOffset: null) ..isSynthetic = true ..parameters = [valueFragment]; var setterElement = SetterElementImpl(Reference.root(), setterFragment); @@ -1060,7 +1060,7 @@ class _MockSdkElementsBuilder { List parameters = const [], }) { var fragment = - TopLevelFunctionFragmentImpl(name: name, nameOffset: 0) + TopLevelFunctionFragmentImpl(name: name, firstTokenOffset: null) ..parameters = parameters .map((p) => p.firstFragment as FormalParameterFragmentImpl) @@ -1089,7 +1089,7 @@ class _MockSdkElementsBuilder { TypeImpl type, { bool isStatic = false, }) { - var fieldFragment = FieldFragmentImpl(name: name, nameOffset: -1); + var fieldFragment = FieldFragmentImpl(name: name, firstTokenOffset: null); var fieldElement = FieldElementImpl( reference: Reference.root(), firstFragment: fieldFragment, @@ -1098,7 +1098,7 @@ class _MockSdkElementsBuilder { fieldFragment.isSynthetic = true; fieldFragment.type = type; - var getterFragment = GetterFragmentImpl(name: name, nameOffset: 0); + var getterFragment = GetterFragmentImpl(name: name, firstTokenOffset: null); var getterElement = GetterElementImpl(Reference.root(), getterFragment); fieldElement.getter = getterElement; getterElement.variable = fieldElement; @@ -1127,7 +1127,7 @@ class _MockSdkElementsBuilder { List parameters = const [], }) { var fragment = - MethodFragmentImpl(name: name, nameOffset: 0) + MethodFragmentImpl(name: name, firstTokenOffset: null) ..parameters = parameters .map((p) => p.firstFragment as FormalParameterFragmentImpl) @@ -1144,7 +1144,7 @@ class _MockSdkElementsBuilder { FormalParameterElement _namedParameter(String name, TypeImpl type) { var fragment = FormalParameterFragmentImpl( - nameOffset: 0, + firstTokenOffset: null, name: name, nameOffset2: 0, parameterKind: ParameterKind.NAMED, @@ -1229,7 +1229,7 @@ class _MockSdkElementsBuilder { FormalParameterElement _positionalParameter(String name, TypeImpl type) { var fragment = FormalParameterFragmentImpl( - nameOffset: 0, + firstTokenOffset: null, name: name, nameOffset2: 0, parameterKind: ParameterKind.POSITIONAL, @@ -1239,7 +1239,7 @@ class _MockSdkElementsBuilder { FormalParameterElement _requiredParameter(String name, TypeImpl type) { var fragment = FormalParameterFragmentImpl( - nameOffset: 0, + firstTokenOffset: null, name: name, nameOffset2: 0, parameterKind: ParameterKind.REQUIRED, @@ -1264,10 +1264,12 @@ class _MockSdkElementsBuilder { String name, TypeImpl type, ) { - var fragment = TopLevelVariableFragmentImpl(name: name, nameOffset: -1) - ..isConst = true; + var fragment = TopLevelVariableFragmentImpl( + name: name, + firstTokenOffset: null, + )..isConst = true; var element = TopLevelVariableElementImpl(Reference.root(), fragment); - var getterFragment = GetterFragmentImpl(name: name, nameOffset: -1) + var getterFragment = GetterFragmentImpl(name: name, firstTokenOffset: null) ..isSynthetic = true; var getterElement = GetterElementImpl(Reference.root(), getterFragment); element.getter = getterElement; @@ -1277,7 +1279,10 @@ class _MockSdkElementsBuilder { TypeParameterElementImpl _typeParameter(String name) { return TypeParameterElementImpl( - firstFragment: TypeParameterFragmentImpl(name: name, nameOffset: 0), + firstFragment: TypeParameterFragmentImpl( + name: name, + firstTokenOffset: null, + ), name: name.nullIfEmpty, ); } diff --git a/pkg/analyzer/lib/src/utilities/extensions/element.dart b/pkg/analyzer/lib/src/utilities/extensions/element.dart index bd2c28765f3..bbb75611215 100644 --- a/pkg/analyzer/lib/src/utilities/extensions/element.dart +++ b/pkg/analyzer/lib/src/utilities/extensions/element.dart @@ -433,7 +433,10 @@ extension TypeAliasElementImplExtension on TypeAliasFragmentImpl { extension TypeParameterElement2Extension on TypeParameterElement { TypeParameterElementImpl freshCopy() { - var fragment = TypeParameterFragmentImpl(name: name, nameOffset: -1); + var fragment = TypeParameterFragmentImpl( + name: name, + firstTokenOffset: null, + ); fragment.bound = bound; return TypeParameterElementImpl(firstFragment: fragment, name: name); } diff --git a/pkg/analyzer/test/generated/elements_types_mixin.dart b/pkg/analyzer/test/generated/elements_types_mixin.dart index 7c6fb8f7aa3..c7f8f3781b9 100644 --- a/pkg/analyzer/test/generated/elements_types_mixin.dart +++ b/pkg/analyzer/test/generated/elements_types_mixin.dart @@ -127,7 +127,7 @@ mixin ElementsTypesMixin { List mixins = const [], List methods = const [], }) { - var fragment = ClassFragmentImpl(name: name, nameOffset: 0); + var fragment = ClassFragmentImpl(name: name, firstTokenOffset: null); fragment.isAbstract = isAbstract; fragment.isAugmentation = isAugmentation; fragment.isSealed = isSealed; @@ -154,7 +154,7 @@ mixin ElementsTypesMixin { List mixins = const [], List methods = const [], }) { - var fragment = ClassFragmentImpl(name: name, nameOffset: 0); + var fragment = ClassFragmentImpl(name: name, firstTokenOffset: null); fragment.isAbstract = isAbstract; fragment.isAugmentation = isAugmentation; fragment.isSealed = isSealed; @@ -192,7 +192,7 @@ mixin ElementsTypesMixin { required String name, required List constants, }) { - var fragment = EnumFragmentImpl(name: name, nameOffset: 0); + var fragment = EnumFragmentImpl(name: name, firstTokenOffset: null); EnumElementImpl(Reference.root(), fragment); fragment.enclosingElement = testLibrary.definingCompilationUnit; fragment.fields = constants; @@ -203,7 +203,7 @@ mixin ElementsTypesMixin { required String name, required List constants, }) { - var fragment = EnumFragmentImpl(name: name, nameOffset: 0); + var fragment = EnumFragmentImpl(name: name, firstTokenOffset: null); var element = EnumElementImpl(Reference.root(), fragment); fragment.enclosingElement = testLibrary.definingCompilationUnit; fragment.fields = constants; @@ -211,7 +211,8 @@ mixin ElementsTypesMixin { } FieldFragmentImpl enumConstant_(String name) { - return FieldFragmentImpl(name: name, nameOffset: 0)..isEnumConstant = true; + return FieldFragmentImpl(name: name, firstTokenOffset: null) + ..isEnumConstant = true; } ExtensionFragmentImpl extension({ @@ -221,7 +222,7 @@ mixin ElementsTypesMixin { List typeParameters = const [], List methods = const [], }) { - var element = ExtensionFragmentImpl(name: name, nameOffset: 0); + var element = ExtensionFragmentImpl(name: name, firstTokenOffset: null); ExtensionElementImpl(Reference.root(), element); element.element.extendedType = extendedType; element.isAugmentation = isAugmentation; @@ -238,12 +239,18 @@ mixin ElementsTypesMixin { List typeParameters = const [], List interfaces = const [], }) { - var fragment = ExtensionTypeFragmentImpl(name: name, nameOffset: -1); + var fragment = ExtensionTypeFragmentImpl( + name: name, + firstTokenOffset: null, + ); fragment.enclosingElement = testLibrary.definingCompilationUnit; fragment.typeParameters = typeParameters.map((e) => e.asElement).toList(); fragment.interfaces = interfaces; - var field = FieldFragmentImpl(name: representationName, nameOffset: -1); + var field = FieldFragmentImpl( + name: representationName, + firstTokenOffset: null, + ); FieldElementImpl(reference: Reference.root(), firstFragment: field); field.type = representationType; fragment.fields = [field]; @@ -262,14 +269,17 @@ mixin ElementsTypesMixin { List typeParameters = const [], List interfaces = const [], }) { - var fragment = ExtensionTypeFragmentImpl(name: name, nameOffset: -1); + var fragment = ExtensionTypeFragmentImpl( + name: name, + firstTokenOffset: null, + ); fragment.enclosingElement = testLibrary.definingCompilationUnit; fragment.typeParameters = typeParameters.map((e) => e.asElement).toList(); fragment.interfaces = interfaces; var fieldFragment = FieldFragmentImpl( name: representationName, - nameOffset: -1, + firstTokenOffset: null, ); fieldFragment.type = representationType; fragment.fields = [fieldFragment]; @@ -454,7 +464,7 @@ mixin ElementsTypesMixin { List formalParameters = const [], }) { var fragment = - MethodFragmentImpl(name: name, nameOffset: 0) + MethodFragmentImpl(name: name, firstTokenOffset: null) ..isStatic = isStatic ..parameters = formalParameters.map((e) => e.asElement).toList() ..returnType = returnType @@ -474,7 +484,7 @@ mixin ElementsTypesMixin { List? constraints, List interfaces = const [], }) { - var fragment = MixinFragmentImpl(name: name, nameOffset: 0); + var fragment = MixinFragmentImpl(name: name, firstTokenOffset: null); fragment.isAugmentation = isAugmentation; fragment.enclosingElement = testLibrary.definingCompilationUnit; fragment.typeParameters = typeParameters.map((e) => e.asElement).toList(); @@ -493,7 +503,7 @@ mixin ElementsTypesMixin { List? constraints, List interfaces = const [], }) { - var fragment = MixinFragmentImpl(name: name, nameOffset: 0); + var fragment = MixinFragmentImpl(name: name, firstTokenOffset: null); fragment.isAugmentation = isAugmentation; fragment.enclosingElement = testLibrary.definingCompilationUnit; fragment.typeParameters = typeParameters.map((e) => e.asElement).toList(); @@ -511,7 +521,7 @@ mixin ElementsTypesMixin { bool isCovariant = false, }) { var fragment = FormalParameterFragmentImpl( - nameOffset: 0, + firstTokenOffset: null, name: name, nameOffset2: 0, parameterKind: ParameterKind.NAMED, @@ -526,7 +536,7 @@ mixin ElementsTypesMixin { bool isCovariant = false, }) { var fragment = FormalParameterFragmentImpl( - nameOffset: 0, + firstTokenOffset: null, name: name, nameOffset2: 0, parameterKind: ParameterKind.NAMED_REQUIRED, @@ -541,7 +551,7 @@ mixin ElementsTypesMixin { bool isCovariant = false, }) { var fragment = FormalParameterFragmentImpl( - nameOffset: 0, + firstTokenOffset: null, name: name, nameOffset2: 0, parameterKind: ParameterKind.POSITIONAL, @@ -630,7 +640,7 @@ mixin ElementsTypesMixin { bool isCovariant = false, }) { var fragment = FormalParameterFragmentImpl( - nameOffset: 0, + firstTokenOffset: null, name: name, nameOffset2: 0, parameterKind: ParameterKind.REQUIRED, @@ -644,7 +654,7 @@ mixin ElementsTypesMixin { required List typeParameters, required TypeImpl aliasedType, }) { - var fragment = TypeAliasFragmentImpl(name: name, nameOffset: 0); + var fragment = TypeAliasFragmentImpl(name: name, firstTokenOffset: null); fragment.enclosingElement = testLibrary.definingCompilationUnit; fragment.typeParameters = typeParameters.map((e) => e.asElement).toList(); fragment.aliasedType = aliasedType; @@ -667,13 +677,13 @@ mixin ElementsTypesMixin { TypeImpl? bound, Variance? variance, }) { - var fragment = TypeParameterFragmentImpl(name: name, nameOffset: -1); + var fragment = TypeParameterFragmentImpl( + name: name, + firstTokenOffset: null, + ); fragment.bound = bound; - var element = TypeParameterElementImpl( - firstFragment: fragment, - name: name, - ); + var element = TypeParameterElementImpl(firstFragment: fragment, name: name); element.variance = variance; return element; } diff --git a/pkg/analyzer/test/src/dart/resolution/if_statement_test.dart b/pkg/analyzer/test/src/dart/resolution/if_statement_test.dart index a5e6373e5df..ff0254058bf 100644 --- a/pkg/analyzer/test/src/dart/resolution/if_statement_test.dart +++ b/pkg/analyzer/test/src/dart/resolution/if_statement_test.dart @@ -106,7 +106,7 @@ IfStatement expression: BinaryExpression leftOperand: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int operator: > rightOperand: IntegerLiteral @@ -123,7 +123,7 @@ IfStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int semicolon: ; rightBracket: } @@ -192,7 +192,7 @@ IfStatement expression: BinaryExpression leftOperand: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int operator: > rightOperand: IntegerLiteral @@ -209,7 +209,7 @@ IfStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int semicolon: ; rightBracket: } @@ -283,7 +283,7 @@ IfStatement expression: BinaryExpression leftOperand: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int operator: > rightOperand: IntegerLiteral @@ -300,7 +300,7 @@ IfStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int semicolon: ; rightBracket: } @@ -373,7 +373,7 @@ IfStatement expression: BinaryExpression leftOperand: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: InvalidType operator: > rightOperand: IntegerLiteral @@ -390,7 +390,7 @@ IfStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: InvalidType semicolon: ; rightBracket: } @@ -456,7 +456,7 @@ IfStatement expression: BinaryExpression leftOperand: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int operator: > rightOperand: IntegerLiteral @@ -473,7 +473,7 @@ IfStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int semicolon: ; rightBracket: } @@ -542,7 +542,7 @@ IfStatement expression: BinaryExpression leftOperand: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int operator: > rightOperand: IntegerLiteral @@ -559,7 +559,7 @@ IfStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int semicolon: ; rightBracket: } @@ -631,7 +631,7 @@ IfStatement expression: BinaryExpression leftOperand: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int operator: > rightOperand: IntegerLiteral @@ -648,7 +648,7 @@ IfStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int semicolon: ; rightBracket: } @@ -717,7 +717,7 @@ IfStatement expression: BinaryExpression leftOperand: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int operator: > rightOperand: IntegerLiteral @@ -734,7 +734,7 @@ IfStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int semicolon: ; rightBracket: } @@ -800,7 +800,7 @@ IfStatement expression: BinaryExpression leftOperand: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int operator: > rightOperand: IntegerLiteral @@ -817,7 +817,7 @@ IfStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int semicolon: ; rightBracket: } @@ -886,7 +886,7 @@ IfStatement expression: BinaryExpression leftOperand: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int operator: > rightOperand: IntegerLiteral @@ -903,7 +903,7 @@ IfStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int semicolon: ; rightBracket: } @@ -1066,7 +1066,7 @@ IfStatement rightOperand: ConstantPattern expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: InvalidType matchedValueType: Object? matchedValueType: Object? @@ -1074,7 +1074,7 @@ IfStatement whenKeyword: when expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: bool rightParenthesis: ) thenStatement: Block @@ -1083,7 +1083,7 @@ IfStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: bool semicolon: ; rightBracket: } diff --git a/pkg/analyzer/test/src/dart/resolution/switch_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/switch_expression_test.dart index a1e2aa01f0c..6227e6de968 100644 --- a/pkg/analyzer/test/src/dart/resolution/switch_expression_test.dart +++ b/pkg/analyzer/test/src/dart/resolution/switch_expression_test.dart @@ -586,7 +586,7 @@ SwitchExpression arrow: => expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int SwitchExpressionCase guardedPattern: GuardedPattern diff --git a/pkg/analyzer/test/src/dart/resolution/switch_statement_test.dart b/pkg/analyzer/test/src/dart/resolution/switch_statement_test.dart index 0ba005862a5..bfce3de67f5 100644 --- a/pkg/analyzer/test/src/dart/resolution/switch_statement_test.dart +++ b/pkg/analyzer/test/src/dart/resolution/switch_statement_test.dart @@ -361,7 +361,7 @@ SwitchStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int semicolon: ; rightBracket: } @@ -457,7 +457,7 @@ SwitchStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int semicolon: ; rightBracket: } @@ -526,7 +526,7 @@ SwitchStatement expression: BinaryExpression leftOperand: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int operator: < rightOperand: IntegerLiteral @@ -576,7 +576,7 @@ SwitchStatement expression: BinaryExpression leftOperand: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int operator: > rightOperand: IntegerLiteral @@ -591,7 +591,7 @@ SwitchStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int semicolon: ; rightBracket: } @@ -696,7 +696,7 @@ SwitchStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int semicolon: ; rightBracket: } @@ -801,7 +801,7 @@ SwitchStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: InvalidType semicolon: ; rightBracket: } @@ -905,7 +905,7 @@ SwitchStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: InvalidType semicolon: ; rightBracket: } @@ -987,7 +987,7 @@ SwitchStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int semicolon: ; rightBracket: } @@ -1069,7 +1069,7 @@ SwitchStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int semicolon: ; rightBracket: } @@ -1145,7 +1145,7 @@ SwitchStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int semicolon: ; rightBracket: } @@ -1219,7 +1219,7 @@ SwitchStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: Object? semicolon: ; rightBracket: } @@ -1300,7 +1300,7 @@ SwitchStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int semicolon: ; rightBracket: } @@ -1401,19 +1401,19 @@ SwitchStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int semicolon: ; ExpressionStatement expression: SimpleIdentifier token: b - element: b@-1 + element: b@null staticType: double semicolon: ; ExpressionStatement expression: SimpleIdentifier token: c - element: c@-1 + element: c@null staticType: String semicolon: ; rightBracket: } @@ -1486,7 +1486,7 @@ SwitchStatement ExpressionStatement expression: SimpleIdentifier token: a - element: a@-1 + element: a@null staticType: int semicolon: ; rightBracket: } diff --git a/pkg/analyzer/test/src/dart/resolution/try_statement_test.dart b/pkg/analyzer/test/src/dart/resolution/try_statement_test.dart index f0df1ba266d..8ed545d48e8 100644 --- a/pkg/analyzer/test/src/dart/resolution/try_statement_test.dart +++ b/pkg/analyzer/test/src/dart/resolution/try_statement_test.dart @@ -39,7 +39,7 @@ TryStatement leftParenthesis: ( exceptionParameter: CatchClauseParameter name: - declaredFragment: isFinal isPublic @27 + declaredFragment: isFinal isPublic @null type: null element: hasImplicitType isFinal isPrivate type: Object diff --git a/pkg/analyzer/test/src/summary/elements/class_test.dart b/pkg/analyzer/test/src/summary/elements/class_test.dart index d343edd78ba..025cf8e6554 100644 --- a/pkg/analyzer/test/src/summary/elements/class_test.dart +++ b/pkg/analyzer/test/src/summary/elements/class_test.dart @@ -13266,7 +13266,7 @@ library #F0 element: classes - #F1 class (offset=6) + #F1 class (offset=0) element: ::@class::0 constructors #F2 synthetic new @@ -18443,7 +18443,7 @@ library element: ::@class::C2::@constructor::new typeName: C2 formalParameters - #F10 i (offset=-1) + #F10 i (offset=67) element: ::@class::C2::@constructor::new::@formalParameter::i #F11 class C1 @90 element: ::@class::C1 @@ -18452,7 +18452,7 @@ library element: ::@class::C1::@constructor::new typeName: C1 formalParameters - #F13 i (offset=-1) + #F13 i (offset=90) element: ::@class::C1::@constructor::new::@formalParameter::i classes class A @@ -18607,28 +18607,28 @@ library element: ::@class::C::@constructor::c1 typeName: C formalParameters - #F14 a (offset=-1) + #F14 a (offset=118) element: ::@class::C::@constructor::c1::@formalParameter::a #F15 synthetic c2 element: ::@class::C::@constructor::c2 typeName: C formalParameters - #F16 a (offset=-1) + #F16 a (offset=118) element: ::@class::C::@constructor::c2::@formalParameter::a - #F17 b (offset=-1) + #F17 b (offset=118) element: ::@class::C::@constructor::c2::@formalParameter::b - #F18 c (offset=-1) + #F18 c (offset=118) element: ::@class::C::@constructor::c2::@formalParameter::c initializer: expression_0 #F19 synthetic c3 element: ::@class::C::@constructor::c3 typeName: C formalParameters - #F20 a (offset=-1) + #F20 a (offset=118) element: ::@class::C::@constructor::c3::@formalParameter::a - #F21 b (offset=-1) + #F21 b (offset=118) element: ::@class::C::@constructor::c3::@formalParameter::b - #F22 c (offset=-1) + #F22 c (offset=118) element: ::@class::C::@constructor::c3::@formalParameter::c initializer: expression_1 mixins @@ -18845,9 +18845,9 @@ library element: ::@class::B::@constructor::new typeName: B formalParameters - #F9 x (offset=-1) + #F9 x (offset=61) element: ::@class::B::@constructor::new::@formalParameter::x - #F10 y (offset=-1) + #F10 y (offset=61) element: ::@class::B::@constructor::new::@formalParameter::y mixins #F11 mixin M @49 @@ -19873,13 +19873,13 @@ library element: ::@class::MixinApp::@constructor::requiredArg typeName: MixinApp formalParameters - #F7 x (offset=-1) + #F7 x (offset=34) element: ::@class::MixinApp::@constructor::requiredArg::@formalParameter::x #F8 synthetic positionalArg element: ::@class::MixinApp::@constructor::positionalArg typeName: MixinApp formalParameters - #F9 x (offset=-1) + #F9 x (offset=34) element: ::@class::MixinApp::@constructor::positionalArg::@formalParameter::x initializer: expression_0 BooleanLiteral @@ -19889,7 +19889,7 @@ library element: ::@class::MixinApp::@constructor::positionalArg2 typeName: MixinApp formalParameters - #F11 x (offset=-1) + #F11 x (offset=34) element: ::@class::MixinApp::@constructor::positionalArg2::@formalParameter::x initializer: expression_1 BooleanLiteral @@ -19899,7 +19899,7 @@ library element: ::@class::MixinApp::@constructor::namedArg typeName: MixinApp formalParameters - #F13 x (offset=-1) + #F13 x (offset=34) element: ::@class::MixinApp::@constructor::namedArg::@formalParameter::x initializer: expression_2 IntegerLiteral @@ -19909,7 +19909,7 @@ library element: ::@class::MixinApp::@constructor::namedArg2 typeName: MixinApp formalParameters - #F15 x (offset=-1) + #F15 x (offset=34) element: ::@class::MixinApp::@constructor::namedArg2::@formalParameter::x initializer: expression_3 BooleanLiteral @@ -20141,9 +20141,9 @@ library element: ::@class::MixinApp::@constructor::ctor typeName: MixinApp formalParameters - #F10 t (offset=-1) + #F10 t (offset=64) element: ::@class::MixinApp::@constructor::ctor::@formalParameter::t - #F11 l (offset=-1) + #F11 l (offset=64) element: ::@class::MixinApp::@constructor::ctor::@formalParameter::l classes class Base @@ -20261,9 +20261,9 @@ library element: ::@class::MixinApp::@constructor::ctor typeName: MixinApp formalParameters - #F11 t (offset=-1) + #F11 t (offset=64) element: ::@class::MixinApp::@constructor::ctor::@formalParameter::t - #F12 l (offset=-1) + #F12 l (offset=64) element: ::@class::MixinApp::@constructor::ctor::@formalParameter::l classes class Base diff --git a/pkg/analyzer/test/src/summary/elements/duplicate_declaration_test.dart b/pkg/analyzer/test/src/summary/elements/duplicate_declaration_test.dart index 60387bde929..fa8cecd9e4e 100644 --- a/pkg/analyzer/test/src/summary/elements/duplicate_declaration_test.dart +++ b/pkg/analyzer/test/src/summary/elements/duplicate_declaration_test.dart @@ -1377,9 +1377,9 @@ library #F0 element: topLevelVariables - #F1 synthetic foo (offset=-1) + #F1 synthetic foo (offset=8) element: ::@topLevelVariable::foo::@def::0 - #F2 synthetic foo (offset=-1) + #F2 synthetic foo (offset=26) element: ::@topLevelVariable::foo::@def::1 getters #F3 foo @8 @@ -1426,9 +1426,9 @@ library #F0 element: topLevelVariables - #F1 synthetic foo (offset=-1) + #F1 synthetic foo (offset=4) element: ::@topLevelVariable::foo::@def::0 - #F2 synthetic foo (offset=-1) + #F2 synthetic foo (offset=22) element: ::@topLevelVariable::foo::@def::1 setters #F3 foo @4 diff --git a/pkg/analyzer/test/src/summary/elements/enum_test.dart b/pkg/analyzer/test/src/summary/elements/enum_test.dart index a0093d666ff..ba9a86994c3 100644 --- a/pkg/analyzer/test/src/summary/elements/enum_test.dart +++ b/pkg/analyzer/test/src/summary/elements/enum_test.dart @@ -3138,7 +3138,7 @@ library #F0 element: enums - #F1 enum (offset=5) + #F1 enum (offset=0) element: ::@enum::0 fields #F2 hasInitializer v @6 diff --git a/pkg/analyzer/test/src/summary/elements/extension_type_test.dart b/pkg/analyzer/test/src/summary/elements/extension_type_test.dart index 208916f8904..dd2a56dae04 100644 --- a/pkg/analyzer/test/src/summary/elements/extension_type_test.dart +++ b/pkg/analyzer/test/src/summary/elements/extension_type_test.dart @@ -1623,7 +1623,7 @@ library #F0 element: extensionTypes - #F1 extension type (offset=15) + #F1 extension type (offset=0) element: ::@extensionType::0 fields #F2 it @20 @@ -1670,7 +1670,7 @@ library #F1 extension type A @15 element: ::@extensionType::A fields - #F2 (offset=17) + #F2 (offset=16) element: ::@extensionType::A::@field::0 constructors #F3 new @@ -1680,7 +1680,7 @@ library typeName: A typeNameOffset: 15 formalParameters - #F4 this. (offset=17) + #F4 this. (offset=16) element: ::@extensionType::A::@constructor::new::@formalParameter:: getters #F5 synthetic diff --git a/pkg/analyzer/test/src/summary/elements/local_declarations_test.dart b/pkg/analyzer/test/src/summary/elements/local_declarations_test.dart index fb5f6cca817..aab09e0e210 100644 --- a/pkg/analyzer/test/src/summary/elements/local_declarations_test.dart +++ b/pkg/analyzer/test/src/summary/elements/local_declarations_test.dart @@ -128,7 +128,7 @@ library #F0 element: topLevelVariables - #F1 synthetic g (offset=-1) + #F1 synthetic g (offset=4) element: ::@topLevelVariable::g getters #F2 g @4 diff --git a/pkg/analyzer/test/src/summary/elements/metadata_test.dart b/pkg/analyzer/test/src/summary/elements/metadata_test.dart index d960d60dbbd..8037f6747ef 100644 --- a/pkg/analyzer/test/src/summary/elements/metadata_test.dart +++ b/pkg/analyzer/test/src/summary/elements/metadata_test.dart @@ -2065,7 +2065,7 @@ library NullLiteral literal: null @10 staticType: Null - #F2 synthetic f (offset=-1) + #F2 synthetic f (offset=23) element: ::@topLevelVariable::f getters #F3 synthetic a @@ -2133,7 +2133,7 @@ library NullLiteral literal: null @10 staticType: Null - #F2 synthetic f (offset=-1) + #F2 synthetic f (offset=23) element: ::@topLevelVariable::f getters #F3 synthetic a @@ -5063,7 +5063,7 @@ library IntegerLiteral literal: 0 @12 staticType: int - #F2 synthetic getter (offset=-1) + #F2 synthetic getter (offset=29) element: ::@topLevelVariable::getter getters #F3 synthetic foo @@ -5136,7 +5136,7 @@ library IntegerLiteral literal: 0 @12 staticType: int - #F2 synthetic setter (offset=-1) + #F2 synthetic setter (offset=25) element: ::@topLevelVariable::setter getters #F3 synthetic foo @@ -5867,7 +5867,7 @@ library NullLiteral literal: null @10 staticType: Null - #F2 synthetic foo (offset=-1) + #F2 synthetic foo (offset=21) element: ::@topLevelVariable::foo getters #F3 synthetic a diff --git a/pkg/analyzer/test/src/summary/elements/mixin_test.dart b/pkg/analyzer/test/src/summary/elements/mixin_test.dart index 86bc7edec7d..c60169b3f19 100644 --- a/pkg/analyzer/test/src/summary/elements/mixin_test.dart +++ b/pkg/analyzer/test/src/summary/elements/mixin_test.dart @@ -1433,7 +1433,7 @@ library #F0 element: mixins - #F1 mixin (offset=6) + #F1 mixin (offset=0) element: ::@mixin::0 mixins mixin diff --git a/pkg/analyzer/test/src/summary/elements/non_synthetic_test.dart b/pkg/analyzer/test/src/summary/elements/non_synthetic_test.dart index 81609606347..8af7059a3af 100644 --- a/pkg/analyzer/test/src/summary/elements/non_synthetic_test.dart +++ b/pkg/analyzer/test/src/summary/elements/non_synthetic_test.dart @@ -480,7 +480,7 @@ library #F0 element: topLevelVariables - #F1 synthetic foo (offset=-1) + #F1 synthetic foo (offset=8) element: ::@topLevelVariable::foo getters #F2 foo @8 @@ -514,7 +514,7 @@ library #F0 element: topLevelVariables - #F1 synthetic foo (offset=-1) + #F1 synthetic foo (offset=8) element: ::@topLevelVariable::foo getters #F2 foo @8 @@ -563,7 +563,7 @@ library #F0 element: topLevelVariables - #F1 synthetic foo (offset=-1) + #F1 synthetic foo (offset=4) element: ::@topLevelVariable::foo setters #F2 foo @4 diff --git a/pkg/analyzer/test/src/summary/elements/offsets_test.dart b/pkg/analyzer/test/src/summary/elements/offsets_test.dart index d2b02088bc0..d590c2fe60e 100644 --- a/pkg/analyzer/test/src/summary/elements/offsets_test.dart +++ b/pkg/analyzer/test/src/summary/elements/offsets_test.dart @@ -3203,7 +3203,7 @@ library #F0 element: topLevelVariables - #F1 synthetic foo (offset=-1) + #F1 synthetic foo (offset=8) element: ::@topLevelVariable::foo getters #F2 foo @8 diff --git a/pkg/analyzer/test/src/summary/elements/top_level_function_test.dart b/pkg/analyzer/test/src/summary/elements/top_level_function_test.dart index 4dc3a683fd6..cccd144fe4d 100644 --- a/pkg/analyzer/test/src/summary/elements/top_level_function_test.dart +++ b/pkg/analyzer/test/src/summary/elements/top_level_function_test.dart @@ -1039,7 +1039,7 @@ library #F0 element: topLevelVariables - #F1 synthetic main (offset=-1) + #F1 synthetic main (offset=4) element: ::@topLevelVariable::main getters #F2 main @4 diff --git a/pkg/analyzer/test/src/summary/elements/top_level_variable_test.dart b/pkg/analyzer/test/src/summary/elements/top_level_variable_test.dart index c633698e4c0..dc79a5211a1 100644 --- a/pkg/analyzer/test/src/summary/elements/top_level_variable_test.dart +++ b/pkg/analyzer/test/src/summary/elements/top_level_variable_test.dart @@ -35,9 +35,9 @@ library #F0 element: topLevelVariables - #F1 synthetic a (offset=-1) + #F1 synthetic a (offset=8) element: ::@topLevelVariable::a - #F2 synthetic b (offset=-1) + #F2 synthetic b (offset=20) element: ::@topLevelVariable::b getters #F3 a @8 @@ -105,9 +105,9 @@ library #F0 element: topLevelVariables - #F1 synthetic a (offset=-1) + #F1 synthetic a (offset=40) element: ::@topLevelVariable::a - #F2 synthetic b (offset=-1) + #F2 synthetic b (offset=24) element: ::@topLevelVariable::b getters #F3 b @24 @@ -168,7 +168,7 @@ library #F0 element: topLevelVariables - #F1 synthetic foo (offset=-1) + #F1 synthetic foo (offset=16) element: ::@topLevelVariable::foo getters #F2 foo @16 @@ -203,7 +203,7 @@ library libraryImports dart:async topLevelVariables - #F1 synthetic foo (offset=-1) + #F1 synthetic foo (offset=37) element: ::@topLevelVariable::foo getters #F2 foo @37 @@ -238,7 +238,7 @@ library #F0 element: topLevelVariables - #F1 synthetic x (offset=-1) + #F1 synthetic x (offset=64) element: ::@topLevelVariable::x getters #F2 x @64 @@ -270,7 +270,7 @@ library #F0 element: topLevelVariables - #F1 synthetic x (offset=-1) + #F1 synthetic x (offset=17) element: ::@topLevelVariable::x getters #F2 x @17 @@ -383,7 +383,7 @@ library #F0 element: topLevelVariables - #F1 synthetic foo (offset=-1) + #F1 synthetic foo (offset=18) element: ::@topLevelVariable::foo getters #F2 foo @18 @@ -413,9 +413,9 @@ library #F0 element: topLevelVariables - #F1 synthetic x (offset=-1) + #F1 synthetic x (offset=8) element: ::@topLevelVariable::x - #F2 synthetic y (offset=-1) + #F2 synthetic y (offset=23) element: ::@topLevelVariable::y getters #F3 x @8 @@ -461,7 +461,7 @@ library #F0 element: topLevelVariables - #F1 synthetic x (offset=-1) + #F1 synthetic x (offset=8) element: ::@topLevelVariable::x getters #F2 x @8 @@ -509,7 +509,7 @@ library #F0 element: topLevelVariables - #F1 synthetic x (offset=-1) + #F1 synthetic x (offset=33) element: ::@topLevelVariable::x getters #F2 x @33 @@ -560,7 +560,7 @@ library #F0 element: topLevelVariables - #F1 synthetic x (offset=-1) + #F1 synthetic x (offset=69) element: ::@topLevelVariable::x setters #F2 x @69 @@ -597,7 +597,7 @@ library #F0 element: topLevelVariables - #F1 synthetic x (offset=-1) + #F1 synthetic x (offset=18) element: ::@topLevelVariable::x setters #F2 x @18 @@ -632,7 +632,7 @@ library #F0 element: topLevelVariables - #F1 synthetic f (offset=-1) + #F1 synthetic f (offset=4) element: ::@topLevelVariable::f setters #F2 f @4 @@ -669,9 +669,9 @@ library #F0 element: topLevelVariables - #F1 synthetic x (offset=-1) + #F1 synthetic x (offset=9) element: ::@topLevelVariable::x - #F2 synthetic y (offset=-1) + #F2 synthetic y (offset=29) element: ::@topLevelVariable::y setters #F3 x @9 @@ -775,7 +775,7 @@ library #F0 element: topLevelVariables - #F1 synthetic x (offset=-1) + #F1 synthetic x (offset=8) element: ::@topLevelVariable::x getters #F2 x @8 @@ -824,7 +824,7 @@ library #F0 element: topLevelVariables - #F1 synthetic x (offset=-1) + #F1 synthetic x (offset=33) element: ::@topLevelVariable::x getters #F2 x @33 @@ -955,7 +955,7 @@ library topLevelVariables #F1 hasInitializer foo @4 element: ::@topLevelVariable::foo::@def::0 - #F2 synthetic foo (offset=-1) + #F2 synthetic foo (offset=21) element: ::@topLevelVariable::foo::@def::1 getters #F3 synthetic foo @@ -1020,7 +1020,7 @@ library topLevelVariables #F1 hasInitializer foo @4 element: ::@topLevelVariable::foo::@def::0 - #F2 synthetic foo (offset=-1) + #F2 synthetic foo (offset=17) element: ::@topLevelVariable::foo::@def::1 getters #F3 synthetic foo @@ -1382,7 +1382,7 @@ library uri: package:test/a.dart unit: #F1 topLevelVariables - #F2 synthetic x (offset=-1) + #F2 synthetic x (offset=39) element: ::@topLevelVariable::x getters #F3 x @39 @@ -1446,7 +1446,7 @@ library uri: package:test/a.dart unit: #F1 topLevelVariables - #F2 synthetic x (offset=-1) + #F2 synthetic x (offset=24) element: ::@topLevelVariable::x setters #F3 x @40 @@ -1517,7 +1517,7 @@ library previousFragment: #F0 nextFragment: #F2 topLevelVariables - #F3 synthetic x (offset=-1) + #F3 synthetic x (offset=24) element: ::@topLevelVariable::x getters #F4 x @24 @@ -2324,7 +2324,7 @@ library previousFragment: #F0 nextFragment: #F2 topLevelVariables - #F3 synthetic x (offset=-1) + #F3 synthetic x (offset=24) element: ::@topLevelVariable::x setters #F4 x @25 diff --git a/pkg/analyzer/test/src/summary/elements/type_alias_test.dart b/pkg/analyzer/test/src/summary/elements/type_alias_test.dart index d080accccca..9ed0055d4e7 100644 --- a/pkg/analyzer/test/src/summary/elements/type_alias_test.dart +++ b/pkg/analyzer/test/src/summary/elements/type_alias_test.dart @@ -4052,7 +4052,7 @@ library #F0 element: typeAliases - #F1 (offset=8) + #F1 (offset=0) element: ::@typeAlias::0 typeAliases diff --git a/pkg/analyzer/test/src/summary/elements/type_inference_test.dart b/pkg/analyzer/test/src/summary/elements/type_inference_test.dart index 338111169f2..966ee65cd87 100644 --- a/pkg/analyzer/test/src/summary/elements/type_inference_test.dart +++ b/pkg/analyzer/test/src/summary/elements/type_inference_test.dart @@ -4133,7 +4133,7 @@ library element: ::@class::B::@constructor::new typeName: B formalParameters - #F12 value (offset=-1) + #F12 value (offset=51) element: ::@class::B::@constructor::new::@formalParameter::value #F13 class C @78 element: ::@class::C diff --git a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart index 3c861717f35..cca7d8e7d87 100644 --- a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart +++ b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart @@ -1767,7 +1767,7 @@ Expected parent: (${parent.runtimeType}) $parent _sink.writeIf(fragment.isPublic, 'isPublic '); _sink.writeIf(fragment.isStatic, 'isStatic '); _sink.writeIf(fragment.isSynthetic, 'isSynthetic '); - _sink.write('${fragment.name ?? ''}@${fragment.nameOffset}'); + _sink.write('${fragment.name ?? ''}@${fragment.nameOffset2}'); }); _sink.withIndent(() { diff --git a/pkg/analyzer/test/src/summary/top_level_inference_test.dart b/pkg/analyzer/test/src/summary/top_level_inference_test.dart index 56942f81bb1..9c64ec1123a 100644 --- a/pkg/analyzer/test/src/summary/top_level_inference_test.dart +++ b/pkg/analyzer/test/src/summary/top_level_inference_test.dart @@ -4327,7 +4327,7 @@ library topLevelVariables #F13 hasInitializer topLevelVariable @44 element: ::@topLevelVariable::topLevelVariable - #F14 synthetic topLevelGetter (offset=-1) + #F14 synthetic topLevelGetter (offset=74) element: ::@topLevelVariable::topLevelGetter #F15 hasInitializer r_topLevelFunction @280 element: ::@topLevelVariable::r_topLevelFunction