Skip to content

Commit

Permalink
[cfe] Add introductory to SourceExtensionTypeDeclarationBuilder
Browse files Browse the repository at this point in the history
Change-Id: I30b7dd3b69e25a2e611d7ae1bb221a823fe092ce
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/389461
Reviewed-by: Jens Johansen <[email protected]>
Commit-Queue: Johnni Winther <[email protected]>
  • Loading branch information
johnniwinther authored and Commit Queue committed Oct 11, 2024
1 parent 9541425 commit c5c7fc8
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -61,16 +61,12 @@ class SourceExtensionTypeDeclarationBuilder
@override
final Uri fileUri;

// TODO(johnniwinther): Avoid exposing this. Annotations for macros and
// patches should be computing from within the builder.
final List<MetadataBuilder>? metadata;

final Modifiers _modifiers;

@override
final List<ConstructorReferenceBuilder>? constructorReferences;

final ExtensionTypeDeclaration _extensionTypeDeclaration;
late final ExtensionTypeDeclaration _extensionTypeDeclaration;

SourceExtensionTypeDeclarationBuilder? _origin;

Expand All @@ -93,6 +89,8 @@ class SourceExtensionTypeDeclarationBuilder
@override
List<TypeBuilder>? interfaceBuilders;

final ExtensionTypeFragment _introductory;

FieldFragment? _representationFieldFragment;

SourceFieldBuilder? _representationFieldBuilder;
Expand All @@ -102,33 +100,43 @@ class SourceExtensionTypeDeclarationBuilder
Nullability? _nullability;

SourceExtensionTypeDeclarationBuilder(
{required this.metadata,
required Modifiers modifiers,
required this.name,
required this.typeParameters,
required this.interfaceBuilders,
required this.typeParameterScope,
required DeclarationNameSpaceBuilder nameSpaceBuilder,
{required this.name,
required SourceLibraryBuilder enclosingLibraryBuilder,
required this.constructorReferences,
required this.fileUri,
required int startOffset,
required int nameOffset,
required int endOffset,
required ExtensionTypeFragment fragment,
required this.indexedContainer,
required FieldFragment? representationFieldFragment})
: parent = enclosingLibraryBuilder,
charOffset = nameOffset,
_modifiers = modifiers,
_extensionTypeDeclaration = new ExtensionTypeDeclaration(
name: name,
fileUri: fileUri,
typeParameters: NominalVariableBuilder.typeParametersFromBuilders(
typeParameters),
reference: indexedContainer?.reference)
..fileOffset = nameOffset,
_nameSpaceBuilder = nameSpaceBuilder,
_representationFieldFragment = representationFieldFragment;
_modifiers = fragment.modifiers,
typeParameters = fragment.typeParameters,
interfaceBuilders = fragment.interfaces,
typeParameterScope = fragment.typeParameterScope,
_introductory = fragment,
_nameSpaceBuilder = fragment.toDeclarationNameSpaceBuilder(),
_representationFieldFragment = representationFieldFragment {
_introductory.builder = this;
_introductory.bodyScope.declarationBuilder = this;

// TODO(johnniwinther): Move this to the [build] once augmentations are
// handled through fragments.
_extensionTypeDeclaration = new ExtensionTypeDeclaration(
name: name,
fileUri: fileUri,
typeParameters: NominalVariableBuilder.typeParametersFromBuilders(
fragment.typeParameters),
reference: indexedContainer?.reference)
..fileOffset = nameOffset;
}

// Coverage-ignore(suite): Not run.
// TODO(johnniwinther): Avoid exposing this. Annotations for macros and
// patches should be computing from within the builder.
List<MetadataBuilder>? get metadata => _introductory.metadata;

@override
LookupScope get scope => _scope;
Expand Down Expand Up @@ -725,13 +733,13 @@ class SourceExtensionTypeDeclarationBuilder
List<DelayedDefaultValueCloner> delayedDefaultValueCloners) {
MetadataBuilder.buildAnnotations(
annotatable,
metadata,
_introductory.metadata,
createBodyBuilderContext(
inOutlineBuildingPhase: true,
inMetadata: true,
inConstFields: false),
libraryBuilder,
fileUri,
_introductory.fileUri,
libraryBuilder.scope);

super.buildOutlineExpressions(classHierarchy, delayedDefaultValueCloners);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -292,23 +292,16 @@ class _Added {
}
SourceExtensionTypeDeclarationBuilder extensionTypeDeclarationBuilder =
new SourceExtensionTypeDeclarationBuilder(
metadata: fragment.metadata,
modifiers: fragment.modifiers,
name: fragment.name,
typeParameters: fragment.typeParameters,
interfaceBuilders: fragment.interfaces,
typeParameterScope: fragment.typeParameterScope,
nameSpaceBuilder: fragment.toDeclarationNameSpaceBuilder(),
enclosingLibraryBuilder: enclosingLibraryBuilder,
constructorReferences: fragment.constructorReferences,
fileUri: fragment.fileUri,
startOffset: fragment.startOffset,
nameOffset: fragment.nameOffset,
endOffset: fragment.endOffset,
fragment: fragment,
indexedContainer: indexedContainer,
representationFieldFragment: representationFieldFragment);
fragment.builder = extensionTypeDeclarationBuilder;
fragment.bodyScope.declarationBuilder = extensionTypeDeclarationBuilder;
builders.add(new _AddBuilder(
fragment.name,
extensionTypeDeclarationBuilder,
Expand Down
6 changes: 3 additions & 3 deletions pkg/front_end/test/coverage_suite_expected.dart
Original file line number Diff line number Diff line change
Expand Up @@ -836,7 +836,7 @@ const Map<String, ({int hitCount, int missCount})> _expect = {
// 100.0%.
"package:front_end/src/source/source_extension_type_declaration_builder.dart":
(
hitCount: 492,
hitCount: 509,
missCount: 0,
),
// 100.0%.
Expand Down Expand Up @@ -886,7 +886,7 @@ const Map<String, ({int hitCount, int missCount})> _expect = {
),
// 100.0%.
"package:front_end/src/source/type_parameter_scope_builder.dart": (
hitCount: 684,
hitCount: 675,
missCount: 0,
),
// 100.0%.
Expand Down Expand Up @@ -921,7 +921,7 @@ const Map<String, ({int hitCount, int missCount})> _expect = {
),
// 100.0%.
"package:front_end/src/type_inference/inference_visitor.dart": (
hitCount: 8219,
hitCount: 8218,
missCount: 0,
),
// 100.0%.
Expand Down

0 comments on commit c5c7fc8

Please sign in to comment.