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 <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
Konstantin Shcheglov
2025-07-10 13:15:54 -07:00
committed by Commit Queue
parent 14bb2be360
commit 279b379ef9
34 changed files with 509 additions and 424 deletions
@@ -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.
@@ -772,7 +772,7 @@ class ElementDisplayStringBuilder {
var newTypeParameter = TypeParameterFragmentImpl(
name: name,
nameOffset: -1,
firstTokenOffset: null,
);
newTypeParameter.bound = typeParameter.bound;
newTypeParameters.add(newTypeParameter.asElement2);
+121 -70
View File
@@ -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 = <ExpressionImpl>[];
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 <b>not</b> 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<FieldFragmentImpl> 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<Fragment> 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<FormalParameterFragmentImpl> 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<Fragment> 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<Modifier> _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<Fragment> 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<FormalParameterFragmentImpl> 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<SetterFragmentImpl> _setters = _Sentinel.setterElement;
List<MethodFragmentImpl> _methods = _Sentinel.methodElement;
InstanceFragmentImpl({required this.name, required super.nameOffset});
InstanceFragmentImpl({required this.name, required super.firstTokenOffset});
List<PropertyAccessorFragmentImpl> get accessors {
return [...getters, ...setters];
@@ -4872,7 +4879,7 @@ abstract class InstanceFragmentImpl extends _ExistingFragmentImpl
List<MethodFragment> get methods2 => methods.cast<MethodFragment>();
@override
int get offset => nameOffset;
int get offset => nameOffset2 ?? firstTokenOffset!;
@override
List<SetterFragmentImpl> 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<Fragment> 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<ExtensionElement> 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<Fragment> 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 <b>not</b> 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<Fragment> 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<Fragment> 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.
@@ -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);
@@ -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,
@@ -275,7 +275,7 @@ class TypeConstraintGatherer
// not contain any variables from `L`.
var newTypeParameters = <TypeParameterElementImpl>[];
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 {
@@ -234,8 +234,9 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
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<void> {
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<void> {
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<void> {
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<void> {
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<void> {
} 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<void> {
} 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<void> {
@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<void> {
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<void> {
@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<void> {
} 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<void> {
} 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<void> {
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<void> {
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<void> {
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<void> {
} 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<JoinPatternVariableElementImpl>().map(
@@ -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,
@@ -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,
@@ -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<void> {
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<void> {
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<void> {
// 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<void> {
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<void> {
@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<void> {
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<void> {
// 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<void> {
@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<void> {
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<void> {
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<void> {
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> {
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<void> {
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<void> {
} 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<void> {
} 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<void> {
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<void> {
});
var aliasedElement = GenericFunctionTypeFragmentImpl.forOffset(
nameToken.offset,
firstTokenOffset: node.offset,
);
aliasedElement.parameters = holder.parameters;
@@ -1488,7 +1476,7 @@ class FragmentBuilder extends ThrowingAstVisitor<void> {
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<void> {
@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<void> {
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> {
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<void> {
} 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<void> {
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<void> {
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<void> {
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<void> {
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<void> {
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<void> {
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<void> {
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<void> {
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<void> {
{
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<void> {
var constructorFragment =
ConstructorFragmentImpl(
name: constructorFragmentName,
nameOffset: nameOffset,
firstTokenOffset: representation.offset,
)
..isAugmentation = extensionNode.augmentKeyword != null
..isConst = extensionNode.constKeyword != null
@@ -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<ClassDeclaration>(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<ClassTypeAlias>(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<EnumDeclaration>(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<ExtensionDeclaration>(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<ExtensionTypeDeclaration>(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<FunctionTypeAlias>(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<MixinDeclaration>(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;
}
}
@@ -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;
@@ -981,7 +981,7 @@ class _MockSdkElementsBuilder {
List<TypeParameterElementImpl> 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<FormalParameterElement> 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<FormalParameterElement> 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<FormalParameterElement> 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,
);
}
@@ -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);
}
@@ -127,7 +127,7 @@ mixin ElementsTypesMixin {
List<InterfaceTypeImpl> mixins = const [],
List<MethodFragmentImpl> 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<InterfaceTypeImpl> mixins = const [],
List<MethodElementImpl> 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<FieldFragmentImpl> 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<FieldFragmentImpl> 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<TypeParameterFragmentImpl> typeParameters = const [],
List<MethodFragmentImpl> 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<TypeParameterElementImpl> typeParameters = const [],
List<InterfaceTypeImpl> 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<TypeParameterElementImpl> typeParameters = const [],
List<InterfaceTypeImpl> 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<FormalParameterElementImpl> 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<InterfaceTypeImpl>? constraints,
List<InterfaceTypeImpl> 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<InterfaceTypeImpl>? constraints,
List<InterfaceTypeImpl> 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<TypeParameterElementImpl> 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;
}
@@ -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: }
@@ -586,7 +586,7 @@ SwitchExpression
arrow: =>
expression: SimpleIdentifier
token: a
element: a@-1
element: a@null
staticType: int
SwitchExpressionCase
guardedPattern: GuardedPattern
@@ -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: }
@@ -39,7 +39,7 @@ TryStatement
leftParenthesis: (
exceptionParameter: CatchClauseParameter
name: <empty> <synthetic>
declaredFragment: isFinal isPublic @27
declaredFragment: isFinal isPublic @null
type: null
element: hasImplicitType isFinal isPrivate
type: Object
@@ -13266,7 +13266,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
classes
#F1 class <null-name> (offset=6)
#F1 class <null-name> (offset=0)
element: <testLibrary>::@class::0
constructors
#F2 synthetic new
@@ -18443,7 +18443,7 @@ library
element: <testLibrary>::@class::C2::@constructor::new
typeName: C2
formalParameters
#F10 i (offset=-1)
#F10 i (offset=67)
element: <testLibrary>::@class::C2::@constructor::new::@formalParameter::i
#F11 class C1 @90
element: <testLibrary>::@class::C1
@@ -18452,7 +18452,7 @@ library
element: <testLibrary>::@class::C1::@constructor::new
typeName: C1
formalParameters
#F13 i (offset=-1)
#F13 i (offset=90)
element: <testLibrary>::@class::C1::@constructor::new::@formalParameter::i
classes
class A
@@ -18607,28 +18607,28 @@ library
element: <testLibrary>::@class::C::@constructor::c1
typeName: C
formalParameters
#F14 a (offset=-1)
#F14 a (offset=118)
element: <testLibrary>::@class::C::@constructor::c1::@formalParameter::a
#F15 synthetic c2
element: <testLibrary>::@class::C::@constructor::c2
typeName: C
formalParameters
#F16 a (offset=-1)
#F16 a (offset=118)
element: <testLibrary>::@class::C::@constructor::c2::@formalParameter::a
#F17 b (offset=-1)
#F17 b (offset=118)
element: <testLibrary>::@class::C::@constructor::c2::@formalParameter::b
#F18 c (offset=-1)
#F18 c (offset=118)
element: <testLibrary>::@class::C::@constructor::c2::@formalParameter::c
initializer: expression_0
#F19 synthetic c3
element: <testLibrary>::@class::C::@constructor::c3
typeName: C
formalParameters
#F20 a (offset=-1)
#F20 a (offset=118)
element: <testLibrary>::@class::C::@constructor::c3::@formalParameter::a
#F21 b (offset=-1)
#F21 b (offset=118)
element: <testLibrary>::@class::C::@constructor::c3::@formalParameter::b
#F22 c (offset=-1)
#F22 c (offset=118)
element: <testLibrary>::@class::C::@constructor::c3::@formalParameter::c
initializer: expression_1
mixins
@@ -18845,9 +18845,9 @@ library
element: <testLibrary>::@class::B::@constructor::new
typeName: B
formalParameters
#F9 x (offset=-1)
#F9 x (offset=61)
element: <testLibrary>::@class::B::@constructor::new::@formalParameter::x
#F10 y (offset=-1)
#F10 y (offset=61)
element: <testLibrary>::@class::B::@constructor::new::@formalParameter::y
mixins
#F11 mixin M @49
@@ -19873,13 +19873,13 @@ library
element: <testLibrary>::@class::MixinApp::@constructor::requiredArg
typeName: MixinApp
formalParameters
#F7 x (offset=-1)
#F7 x (offset=34)
element: <testLibrary>::@class::MixinApp::@constructor::requiredArg::@formalParameter::x
#F8 synthetic positionalArg
element: <testLibrary>::@class::MixinApp::@constructor::positionalArg
typeName: MixinApp
formalParameters
#F9 x (offset=-1)
#F9 x (offset=34)
element: <testLibrary>::@class::MixinApp::@constructor::positionalArg::@formalParameter::x
initializer: expression_0
BooleanLiteral
@@ -19889,7 +19889,7 @@ library
element: <testLibrary>::@class::MixinApp::@constructor::positionalArg2
typeName: MixinApp
formalParameters
#F11 x (offset=-1)
#F11 x (offset=34)
element: <testLibrary>::@class::MixinApp::@constructor::positionalArg2::@formalParameter::x
initializer: expression_1
BooleanLiteral
@@ -19899,7 +19899,7 @@ library
element: <testLibrary>::@class::MixinApp::@constructor::namedArg
typeName: MixinApp
formalParameters
#F13 x (offset=-1)
#F13 x (offset=34)
element: <testLibrary>::@class::MixinApp::@constructor::namedArg::@formalParameter::x
initializer: expression_2
IntegerLiteral
@@ -19909,7 +19909,7 @@ library
element: <testLibrary>::@class::MixinApp::@constructor::namedArg2
typeName: MixinApp
formalParameters
#F15 x (offset=-1)
#F15 x (offset=34)
element: <testLibrary>::@class::MixinApp::@constructor::namedArg2::@formalParameter::x
initializer: expression_3
BooleanLiteral
@@ -20141,9 +20141,9 @@ library
element: <testLibrary>::@class::MixinApp::@constructor::ctor
typeName: MixinApp
formalParameters
#F10 t (offset=-1)
#F10 t (offset=64)
element: <testLibrary>::@class::MixinApp::@constructor::ctor::@formalParameter::t
#F11 l (offset=-1)
#F11 l (offset=64)
element: <testLibrary>::@class::MixinApp::@constructor::ctor::@formalParameter::l
classes
class Base
@@ -20261,9 +20261,9 @@ library
element: <testLibrary>::@class::MixinApp::@constructor::ctor
typeName: MixinApp
formalParameters
#F11 t (offset=-1)
#F11 t (offset=64)
element: <testLibrary>::@class::MixinApp::@constructor::ctor::@formalParameter::t
#F12 l (offset=-1)
#F12 l (offset=64)
element: <testLibrary>::@class::MixinApp::@constructor::ctor::@formalParameter::l
classes
class Base
@@ -1377,9 +1377,9 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic foo (offset=-1)
#F1 synthetic foo (offset=8)
element: <testLibrary>::@topLevelVariable::foo::@def::0
#F2 synthetic foo (offset=-1)
#F2 synthetic foo (offset=26)
element: <testLibrary>::@topLevelVariable::foo::@def::1
getters
#F3 foo @8
@@ -1426,9 +1426,9 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic foo (offset=-1)
#F1 synthetic foo (offset=4)
element: <testLibrary>::@topLevelVariable::foo::@def::0
#F2 synthetic foo (offset=-1)
#F2 synthetic foo (offset=22)
element: <testLibrary>::@topLevelVariable::foo::@def::1
setters
#F3 foo @4
@@ -3138,7 +3138,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
enums
#F1 enum <null-name> (offset=5)
#F1 enum <null-name> (offset=0)
element: <testLibrary>::@enum::0
fields
#F2 hasInitializer v @6
@@ -1623,7 +1623,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
extensionTypes
#F1 extension type <null-name> (offset=15)
#F1 extension type <null-name> (offset=0)
element: <testLibrary>::@extensionType::0
fields
#F2 it @20
@@ -1670,7 +1670,7 @@ library
#F1 extension type A @15
element: <testLibrary>::@extensionType::A
fields
#F2 <null-name> (offset=17)
#F2 <null-name> (offset=16)
element: <testLibrary>::@extensionType::A::@field::0
constructors
#F3 new
@@ -1680,7 +1680,7 @@ library
typeName: A
typeNameOffset: 15
formalParameters
#F4 this.<null-name> (offset=17)
#F4 this.<null-name> (offset=16)
element: <testLibrary>::@extensionType::A::@constructor::new::@formalParameter::<null-name>
getters
#F5 synthetic <null-name>
@@ -128,7 +128,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic g (offset=-1)
#F1 synthetic g (offset=4)
element: <testLibrary>::@topLevelVariable::g
getters
#F2 g @4
@@ -2065,7 +2065,7 @@ library
NullLiteral
literal: null @10
staticType: Null
#F2 synthetic f (offset=-1)
#F2 synthetic f (offset=23)
element: <testLibrary>::@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: <testLibrary>::@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: <testLibrary>::@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: <testLibrary>::@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: <testLibrary>::@topLevelVariable::foo
getters
#F3 synthetic a
@@ -1433,7 +1433,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
mixins
#F1 mixin <null-name> (offset=6)
#F1 mixin <null-name> (offset=0)
element: <testLibrary>::@mixin::0
mixins
mixin <null-name>
@@ -480,7 +480,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic foo (offset=-1)
#F1 synthetic foo (offset=8)
element: <testLibrary>::@topLevelVariable::foo
getters
#F2 foo @8
@@ -514,7 +514,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic foo (offset=-1)
#F1 synthetic foo (offset=8)
element: <testLibrary>::@topLevelVariable::foo
getters
#F2 foo @8
@@ -563,7 +563,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic foo (offset=-1)
#F1 synthetic foo (offset=4)
element: <testLibrary>::@topLevelVariable::foo
setters
#F2 foo @4
@@ -3203,7 +3203,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic foo (offset=-1)
#F1 synthetic foo (offset=8)
element: <testLibrary>::@topLevelVariable::foo
getters
#F2 foo @8
@@ -1039,7 +1039,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic main (offset=-1)
#F1 synthetic main (offset=4)
element: <testLibrary>::@topLevelVariable::main
getters
#F2 main @4
@@ -35,9 +35,9 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic a (offset=-1)
#F1 synthetic a (offset=8)
element: <testLibrary>::@topLevelVariable::a
#F2 synthetic b (offset=-1)
#F2 synthetic b (offset=20)
element: <testLibrary>::@topLevelVariable::b
getters
#F3 a @8
@@ -105,9 +105,9 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic a (offset=-1)
#F1 synthetic a (offset=40)
element: <testLibrary>::@topLevelVariable::a
#F2 synthetic b (offset=-1)
#F2 synthetic b (offset=24)
element: <testLibrary>::@topLevelVariable::b
getters
#F3 b @24
@@ -168,7 +168,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic foo (offset=-1)
#F1 synthetic foo (offset=16)
element: <testLibrary>::@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: <testLibrary>::@topLevelVariable::foo
getters
#F2 foo @37
@@ -238,7 +238,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic x (offset=-1)
#F1 synthetic x (offset=64)
element: <testLibrary>::@topLevelVariable::x
getters
#F2 x @64
@@ -270,7 +270,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic x (offset=-1)
#F1 synthetic x (offset=17)
element: <testLibrary>::@topLevelVariable::x
getters
#F2 x @17
@@ -383,7 +383,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic foo (offset=-1)
#F1 synthetic foo (offset=18)
element: <testLibrary>::@topLevelVariable::foo
getters
#F2 foo @18
@@ -413,9 +413,9 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic x (offset=-1)
#F1 synthetic x (offset=8)
element: <testLibrary>::@topLevelVariable::x
#F2 synthetic y (offset=-1)
#F2 synthetic y (offset=23)
element: <testLibrary>::@topLevelVariable::y
getters
#F3 x @8
@@ -461,7 +461,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic x (offset=-1)
#F1 synthetic x (offset=8)
element: <testLibrary>::@topLevelVariable::x
getters
#F2 x @8
@@ -509,7 +509,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic x (offset=-1)
#F1 synthetic x (offset=33)
element: <testLibrary>::@topLevelVariable::x
getters
#F2 x @33
@@ -560,7 +560,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic x (offset=-1)
#F1 synthetic x (offset=69)
element: <testLibrary>::@topLevelVariable::x
setters
#F2 x @69
@@ -597,7 +597,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic x (offset=-1)
#F1 synthetic x (offset=18)
element: <testLibrary>::@topLevelVariable::x
setters
#F2 x @18
@@ -632,7 +632,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic f (offset=-1)
#F1 synthetic f (offset=4)
element: <testLibrary>::@topLevelVariable::f
setters
#F2 f @4
@@ -669,9 +669,9 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic x (offset=-1)
#F1 synthetic x (offset=9)
element: <testLibrary>::@topLevelVariable::x
#F2 synthetic y (offset=-1)
#F2 synthetic y (offset=29)
element: <testLibrary>::@topLevelVariable::y
setters
#F3 x @9
@@ -775,7 +775,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic x (offset=-1)
#F1 synthetic x (offset=8)
element: <testLibrary>::@topLevelVariable::x
getters
#F2 x @8
@@ -824,7 +824,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
topLevelVariables
#F1 synthetic x (offset=-1)
#F1 synthetic x (offset=33)
element: <testLibrary>::@topLevelVariable::x
getters
#F2 x @33
@@ -955,7 +955,7 @@ library
topLevelVariables
#F1 hasInitializer foo @4
element: <testLibrary>::@topLevelVariable::foo::@def::0
#F2 synthetic foo (offset=-1)
#F2 synthetic foo (offset=21)
element: <testLibrary>::@topLevelVariable::foo::@def::1
getters
#F3 synthetic foo
@@ -1020,7 +1020,7 @@ library
topLevelVariables
#F1 hasInitializer foo @4
element: <testLibrary>::@topLevelVariable::foo::@def::0
#F2 synthetic foo (offset=-1)
#F2 synthetic foo (offset=17)
element: <testLibrary>::@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: <testLibrary>::@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: <testLibrary>::@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: <testLibrary>::@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: <testLibrary>::@topLevelVariable::x
setters
#F4 x @25
@@ -4052,7 +4052,7 @@ library
#F0 <testLibraryFragment>
element: <testLibrary>
typeAliases
#F1 <null-name> (offset=8)
#F1 <null-name> (offset=0)
element: <testLibrary>::@typeAlias::0
typeAliases
<null-name>
@@ -4133,7 +4133,7 @@ library
element: <testLibrary>::@class::B::@constructor::new
typeName: B
formalParameters
#F12 value (offset=-1)
#F12 value (offset=51)
element: <testLibrary>::@class::B::@constructor::new::@formalParameter::value
#F13 class C @78
element: <testLibrary>::@class::C
@@ -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(() {
@@ -4327,7 +4327,7 @@ library
topLevelVariables
#F13 hasInitializer topLevelVariable @44
element: <testLibrary>::@topLevelVariable::topLevelVariable
#F14 synthetic topLevelGetter (offset=-1)
#F14 synthetic topLevelGetter (offset=74)
element: <testLibrary>::@topLevelVariable::topLevelGetter
#F15 hasInitializer r_topLevelFunction @280
element: <testLibrary>::@topLevelVariable::r_topLevelFunction