Skip to content

Commit bfc2fc0

Browse files
johnniwintherCommit Queue
authored andcommitted
[cfe] Create factories through fragments
Change-Id: I4409750c68e9ead65c84cbdf1e3ca0ed8f3703ca Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/406541 Reviewed-by: Chloe Stefantsova <[email protected]> Commit-Queue: Johnni Winther <[email protected]>
1 parent 21b930b commit bfc2fc0

File tree

8 files changed

+815
-704
lines changed

8 files changed

+815
-704
lines changed

pkg/front_end/lib/src/fragment/factory.dart

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,17 @@ class _FactoryBodyBuildingContext implements FunctionBodyBuildingContext {
7676

7777
@override
7878
LocalScope computeFormalParameterScope(LookupScope typeParameterScope) {
79-
return _fragment.builder.computeFormalParameterScope(typeParameterScope);
79+
if (_fragment.formals == null) {
80+
return new FormalParameterScope(parent: typeParameterScope);
81+
}
82+
Map<String, Builder> local = <String, Builder>{};
83+
for (FormalParameterBuilder formal in _fragment.formals!) {
84+
if (formal.isWildcard) {
85+
continue;
86+
}
87+
local[formal.name] = formal;
88+
}
89+
return new FormalParameterScope(local: local, parent: typeParameterScope);
8090
}
8191

8292
@override

pkg/front_end/lib/src/kernel/body_builder_context.dart

Lines changed: 10 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import '../source/source_constructor_builder.dart';
2424
import '../source/source_enum_builder.dart';
2525
import '../source/source_extension_builder.dart';
2626
import '../source/source_extension_type_declaration_builder.dart';
27-
import '../source/source_factory_builder.dart';
2827
import '../source/source_function_builder.dart';
2928
import '../source/source_library_builder.dart';
3029
import '../source/source_member_builder.dart';
@@ -759,11 +758,6 @@ mixin _FunctionBodyBuilderContextMixin<T extends SourceFunctionBuilder>
759758
@override
760759
List<FormalParameterBuilder>? get formals => _member.formals;
761760

762-
@override
763-
LocalScope computeFormalParameterInitializerScope(LocalScope parent) {
764-
return _member.computeFormalParameterInitializerScope(parent);
765-
}
766-
767761
@override
768762
FormalParameterBuilder? getFormalParameterByName(Identifier name) {
769763
return _member.getFormal(name);
@@ -872,6 +866,11 @@ class ConstructorBodyBuilderContext extends BodyBuilderContext
872866
: super(_member.libraryBuilder, _member.declarationBuilder,
873867
isDeclarationInstanceMember: _member.isDeclarationInstanceMember);
874868

869+
@override
870+
LocalScope computeFormalParameterInitializerScope(LocalScope parent) {
871+
return _member.computeFormalParameterInitializerScope(parent);
872+
}
873+
875874
@override
876875
void setBody(Statement body) {
877876
_member.body = body;
@@ -907,6 +906,11 @@ class ExtensionTypeConstructorBodyBuilderContext extends BodyBuilderContext
907906
: super(_member.libraryBuilder, _member.declarationBuilder,
908907
isDeclarationInstanceMember: _member.isDeclarationInstanceMember);
909908

909+
@override
910+
LocalScope computeFormalParameterInitializerScope(LocalScope parent) {
911+
return _member.computeFormalParameterInitializerScope(parent);
912+
}
913+
910914
@override
911915
void setBody(Statement body) {
912916
_member.body = body;
@@ -921,65 +925,6 @@ class ExtensionTypeConstructorBodyBuilderContext extends BodyBuilderContext
921925
TreeNode get _initializerParent => _member.invokeTarget;
922926
}
923927

924-
class FactoryBodyBuilderContext extends BodyBuilderContext
925-
with
926-
_MemberBodyBuilderContext<SourceFactoryBuilder>,
927-
_FunctionBodyBuilderContextMixin<SourceFactoryBuilder> {
928-
@override
929-
final SourceFactoryBuilder _member;
930-
931-
@override
932-
final Member _builtMember;
933-
934-
FactoryBodyBuilderContext(this._member, this._builtMember)
935-
: super(_member.libraryBuilder, _member.declarationBuilder,
936-
isDeclarationInstanceMember: _member.isDeclarationInstanceMember);
937-
938-
@override
939-
void setBody(Statement body) {
940-
_member.setBody(body);
941-
}
942-
943-
@override
944-
void setAsyncModifier(AsyncMarker asyncModifier) {
945-
_member.asyncModifier = asyncModifier;
946-
}
947-
948-
@override
949-
DartType get returnTypeContext {
950-
return _member.function.returnType;
951-
}
952-
}
953-
954-
class RedirectingFactoryBodyBuilderContext extends BodyBuilderContext
955-
with
956-
_MemberBodyBuilderContext<SourceFactoryBuilder>,
957-
_FunctionBodyBuilderContextMixin<SourceFactoryBuilder> {
958-
@override
959-
final SourceFactoryBuilder _member;
960-
961-
@override
962-
final Member _builtMember;
963-
964-
RedirectingFactoryBodyBuilderContext(this._member, this._builtMember)
965-
: super(_member.libraryBuilder, _member.declarationBuilder,
966-
isDeclarationInstanceMember: _member.isDeclarationInstanceMember);
967-
968-
@override
969-
// Coverage-ignore(suite): Not run.
970-
void setBody(Statement body) {
971-
_member.setBody(body);
972-
}
973-
974-
@override
975-
bool get isRedirectingFactory => true;
976-
977-
@override
978-
String get redirectingFactoryTargetName {
979-
return _member.redirectionTarget!.fullNameForErrors;
980-
}
981-
}
982-
983928
class ParameterBodyBuilderContext extends BodyBuilderContext {
984929
factory ParameterBodyBuilderContext(
985930
LibraryBuilder libraryBuilder,

pkg/front_end/lib/src/source/class_declaration.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ mixin ClassDeclarationMixin implements ClassDeclaration {
9999
fileOffset, fileUri);
100100
}
101101
if (declaration is SourceFactoryBuilder) {
102-
declaration.resolveRedirectingFactory(this);
102+
declaration.resolveRedirectingFactory();
103103
}
104104
}
105105
}

pkg/front_end/lib/src/source/source_constructor_builder.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,6 @@ abstract class AbstractSourceConstructorBuilder extends SourceMemberBuilderImpl
175175
/// of a augmented member or by not being the last among augmentations.
176176
bool get isAugmented;
177177

178-
@override
179178
LocalScope computeFormalParameterScope(LookupScope parent) {
180179
if (formals == null) return new FormalParameterScope(parent: parent);
181180
Map<String, Builder> local = <String, Builder>{};
@@ -191,7 +190,6 @@ abstract class AbstractSourceConstructorBuilder extends SourceMemberBuilderImpl
191190
return new FormalParameterScope(local: local, parent: parent);
192191
}
193192

194-
@override
195193
LocalScope computeFormalParameterInitializerScope(LocalScope parent) {
196194
// From
197195
// [dartLangSpec.tex](../../../../../../docs/language/dartLangSpec.tex) at

0 commit comments

Comments
 (0)