blob: 740a486f1ec0ab3925c77e3ffcd65345941ce9d8 [file] [log] [blame]
// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
part of '../fragment.dart';
class FieldFragmentBodyBuilderContext extends BodyBuilderContext {
final SourcePropertyBuilder _builder;
final FieldFragmentDeclaration _declaration;
@override
final bool isLateField;
@override
final bool isAbstractField;
@override
final bool isExternalField;
final int _nameOffset;
final int _nameLength;
final bool _isConst;
FieldFragmentBodyBuilderContext(
this._builder,
this._declaration, {
required this.isLateField,
required this.isAbstractField,
required this.isExternalField,
required int nameOffset,
required int nameLength,
required bool isConst,
}) : this._nameOffset = nameOffset,
this._nameLength = nameLength,
this._isConst = isConst,
super(
_builder.libraryBuilder,
_builder.declarationBuilder,
isDeclarationInstanceMember: _builder.isDeclarationInstanceMember,
);
@override
// Coverage-ignore(suite): Not run.
LocalScope computeFormalParameterInitializerScope(LocalScope parent) {
/// Initializer formals or super parameters cannot occur in getters so
/// we don't need to create a new scope.
return parent;
}
@override
// Coverage-ignore(suite): Not run.
int get memberNameOffset => _nameOffset;
@override
// Coverage-ignore(suite): Not run.
int get memberNameLength => _nameLength;
@override
InstanceTypeParameterAccessState get instanceTypeParameterAccessState {
if (_builder.isExtensionMember && !isExternalField) {
return InstanceTypeParameterAccessState.Invalid;
} else {
return super.instanceTypeParameterAccessState;
}
}
@override
void registerSuperCall() {
_declaration.registerSuperCall();
}
@override
ConstantContext get constantContext {
return _isConst
? ConstantContext.inferred
: !_declaration.isStatic && declarationDeclaresConstConstructor
? ConstantContext.required
: ConstantContext.none;
}
}