Skip to content

Commit 189fee4

Browse files
johnniwintherCommit Queue
authored and
Commit Queue
committed
[cfe] Create setters through SourcePropertyBuilder
This uses the SourcePropertyBuilder for creating setters. Getters and setters do not yet share the SourcePropertyBuilder, this will done in a follow-up. Change-Id: I7ce36dd8ac478c5e7c61a0de82c6d081e352397b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/399940 Reviewed-by: Chloe Stefantsova <[email protected]> Commit-Queue: Johnni Winther <[email protected]>
1 parent 66d8d8d commit 189fee4

13 files changed

+1413
-234
lines changed

pkg/front_end/lib/src/builder/member_builder.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ abstract class BuilderClassMember implements ClassMember {
227227
@override
228228
MemberResult getMemberResult(ClassMembersBuilder membersBuilder) {
229229
if (isStatic) {
230+
// Coverage-ignore-block(suite): Not run.
230231
return new StaticMemberResult(getMember(membersBuilder), memberKind,
231232
isDeclaredAsField: memberBuilder.isField,
232233
fullName:

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import '../builder/type_builder.dart';
2323
import '../kernel/body_builder_context.dart';
2424
import '../kernel/hierarchy/class_member.dart';
2525
import '../kernel/hierarchy/members_builder.dart';
26+
import '../kernel/internal_ast.dart';
2627
import '../kernel/type_algorithms.dart';
2728
import '../source/name_scheme.dart';
2829
import '../source/source_property_builder.dart';

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

Lines changed: 12 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ class GetterFragment implements Fragment, FunctionFragment {
162162
}
163163

164164
BodyBuilderContext createBodyBuilderContext() {
165-
return new GetterFragmentBodyBuilderContext(
165+
return new _GetterFragmentBodyBuilderContext(
166166
this, builder.libraryBuilder, builder.declarationBuilder,
167167
isDeclarationInstanceMember: builder.isDeclarationInstanceMember);
168168
}
@@ -190,10 +190,10 @@ class GetterFragment implements Fragment, FunctionFragment {
190190
void ensureTypes(
191191
ClassMembersBuilder membersBuilder,
192192
SourceClassBuilder enclosingClassBuilder,
193-
Set<ClassMember>? _getterOverrideDependencies) {
194-
if (_getterOverrideDependencies != null) {
193+
Set<ClassMember>? getterOverrideDependencies) {
194+
if (getterOverrideDependencies != null) {
195195
membersBuilder.inferGetterType(
196-
enclosingClassBuilder, returnType, _getterOverrideDependencies,
196+
enclosingClassBuilder, returnType, getterOverrideDependencies,
197197
name: name,
198198
fileUri: fileUri,
199199
nameOffset: nameOffset,
@@ -204,7 +204,7 @@ class GetterFragment implements Fragment, FunctionFragment {
204204
}
205205

206206
void checkTypes(SourceLibraryBuilder libraryBuilder,
207-
TypeEnvironment typeEnvironment, SourceProcedureBuilder? setterBuilder,
207+
TypeEnvironment typeEnvironment, SourcePropertyBuilder? setterBuilder,
208208
{required bool isAbstract, required bool isExternal}) {
209209
_encoding.checkTypes(libraryBuilder, typeEnvironment, setterBuilder,
210210
isAbstract: isAbstract, isExternal: isExternal);
@@ -296,58 +296,6 @@ sealed class _GetterEncoding implements InferredTypeListener {
296296
{required bool isClassInstanceMember,
297297
required bool createFileUriExpression});
298298

299-
void _buildMetadataForOutlineExpressions(
300-
SourceLibraryBuilder libraryBuilder,
301-
LookupScope parentScope,
302-
BodyBuilderContext bodyBuilderContext,
303-
Annotatable annotatable,
304-
List<MetadataBuilder>? metadata,
305-
{required Uri fileUri,
306-
required bool createFileUriExpression}) {
307-
MetadataBuilder.buildAnnotations(annotatable, metadata, bodyBuilderContext,
308-
libraryBuilder, fileUri, parentScope,
309-
createFileUriExpression: createFileUriExpression);
310-
}
311-
312-
void _buildTypeParametersForOutlineExpressions(
313-
ClassHierarchy classHierarchy,
314-
SourceLibraryBuilder libraryBuilder,
315-
BodyBuilderContext bodyBuilderContext,
316-
LookupScope typeParameterScope,
317-
List<NominalParameterBuilder>? typeParameters) {
318-
if (typeParameters != null) {
319-
for (int i = 0; i < typeParameters.length; i++) {
320-
typeParameters[i].buildOutlineExpressions(libraryBuilder,
321-
bodyBuilderContext, classHierarchy, typeParameterScope);
322-
}
323-
}
324-
}
325-
326-
void _buildFormalsForOutlineExpressions(
327-
SourceLibraryBuilder libraryBuilder,
328-
DeclarationBuilder? declarationBuilder,
329-
List<FormalParameterBuilder>? formals,
330-
{required bool isClassInstanceMember}) {
331-
if (formals != null) {
332-
for (FormalParameterBuilder formal in formals) {
333-
_buildFormalForOutlineExpressions(
334-
libraryBuilder, declarationBuilder, formal,
335-
isClassInstanceMember: isClassInstanceMember);
336-
}
337-
}
338-
}
339-
340-
void _buildFormalForOutlineExpressions(SourceLibraryBuilder libraryBuilder,
341-
DeclarationBuilder? declarationBuilder, FormalParameterBuilder formal,
342-
{required bool isClassInstanceMember}) {
343-
// For const constructors we need to include default parameter values
344-
// into the outline. For all other formals we need to call
345-
// buildOutlineExpressions to clear initializerToken to prevent
346-
// consuming too much memory.
347-
formal.buildOutlineExpressions(libraryBuilder, declarationBuilder,
348-
buildDefaultValue: isClassInstanceMember);
349-
}
350-
351299
LocalScope createFormalParameterScope(LookupScope typeParameterScope);
352300

353301
int computeDefaultTypes(ComputeDefaultTypeContext context,
@@ -363,7 +311,7 @@ sealed class _GetterEncoding implements InferredTypeListener {
363311
VariableDeclaration getFormalParameter(int index);
364312

365313
void checkTypes(SourceLibraryBuilder libraryBuilder,
366-
TypeEnvironment typeEnvironment, SourceProcedureBuilder? setterBuilder,
314+
TypeEnvironment typeEnvironment, SourcePropertyBuilder? setterBuilder,
367315
{required bool isAbstract, required bool isExternal});
368316

369317
void checkVariance(
@@ -497,7 +445,7 @@ mixin _DirectGetterEncodingMixin implements _GetterEncoding {
497445

498446
@override
499447
void checkTypes(SourceLibraryBuilder libraryBuilder,
500-
TypeEnvironment typeEnvironment, SourceProcedureBuilder? setterBuilder,
448+
TypeEnvironment typeEnvironment, SourcePropertyBuilder? setterBuilder,
501449
{required bool isAbstract, required bool isExternal}) {
502450
List<TypeParameterBuilder>? typeParameters =
503451
_fragment.declaredTypeParameters;
@@ -510,7 +458,7 @@ mixin _DirectGetterEncodingMixin implements _GetterEncoding {
510458
isAbstract: isAbstract, isExternal: isExternal);
511459
if (setterBuilder != null) {
512460
DartType getterType = function.returnType;
513-
DartType setterType = SourceProcedureBuilder.getSetterType(setterBuilder,
461+
DartType setterType = SourcePropertyBuilder.getSetterType(setterBuilder,
514462
getterExtensionTypeParameters: null);
515463
libraryBuilder.checkGetterSetterTypes(typeEnvironment,
516464
getterType: getterType,
@@ -763,7 +711,7 @@ mixin _ExtensionInstanceGetterEncodingMixin implements _GetterEncoding {
763711

764712
@override
765713
void checkTypes(SourceLibraryBuilder libraryBuilder,
766-
TypeEnvironment typeEnvironment, SourceProcedureBuilder? setterBuilder,
714+
TypeEnvironment typeEnvironment, SourcePropertyBuilder? setterBuilder,
767715
{required bool isAbstract, required bool isExternal}) {
768716
List<TypeParameterBuilder>? typeParameters =
769717
_fragment.declaredTypeParameters;
@@ -776,7 +724,7 @@ mixin _ExtensionInstanceGetterEncodingMixin implements _GetterEncoding {
776724
isAbstract: isAbstract, isExternal: isExternal);
777725
if (setterBuilder != null) {
778726
DartType getterType = function.returnType;
779-
DartType setterType = SourceProcedureBuilder.getSetterType(setterBuilder,
727+
DartType setterType = SourcePropertyBuilder.getSetterType(setterBuilder,
780728
getterExtensionTypeParameters: function.typeParameters);
781729
libraryBuilder.checkGetterSetterTypes(typeEnvironment,
782730
getterType: getterType,
@@ -870,10 +818,10 @@ class _ExtensionTypeInstanceGetterEncoding extends _GetterEncoding
870818
bool get _isExtensionTypeMember => true;
871819
}
872820

873-
class GetterFragmentBodyBuilderContext extends BodyBuilderContext {
821+
class _GetterFragmentBodyBuilderContext extends BodyBuilderContext {
874822
final GetterFragment _fragment;
875823

876-
GetterFragmentBodyBuilderContext(
824+
_GetterFragmentBodyBuilderContext(
877825
this._fragment,
878826
SourceLibraryBuilder libraryBuilder,
879827
DeclarationBuilder? declarationBuilder,

0 commit comments

Comments
 (0)