Skip to content

Commit 7b12b23

Browse files
natebiggsCommit Queue
authored andcommitted
[dart2js] Remove serializer allowNull pattern to be more null safe friendly.
With the exception of the one noted case, this change just adds an `OrNull` method variant for any write that was using `allowNull` and changes the call site to use the new `OrNull` method. There are a few cases where we weren't using the `allowNull` parameter at all. In those cases I've removed the parameter without adding an `OrNull` variant. Change-Id: Ie5eae4d7f2fb7ccaf9594b9c533afdd93bd99198 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/338280 Reviewed-by: Mayank Patke <[email protected]>
1 parent f01b6ee commit 7b12b23

File tree

10 files changed

+261
-403
lines changed

10 files changed

+261
-403
lines changed

pkg/compiler/lib/src/common/codegen.dart

Lines changed: 19 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -158,36 +158,29 @@ class _CodegenImpact extends WorldImpactBuilderImpl implements CodegenImpact {
158158
void writeToDataSink(DataSinkWriter sink) {
159159
sink.begin(tag);
160160
sink.writeMember(member);
161-
sink.writeList(dynamicUses, (DynamicUse use) => use.writeToDataSink(sink),
162-
allowNull: true);
163-
sink.writeList(staticUses, (StaticUse use) => use.writeToDataSink(sink),
164-
allowNull: true);
165-
sink.writeList(typeUses, (TypeUse use) => use.writeToDataSink(sink),
166-
allowNull: true);
167-
sink.writeList(constantUses, (ConstantUse use) => use.writeToDataSink(sink),
168-
allowNull: true);
169-
sink.writeList<Pair<DartType, DartType>>(_typeVariableBoundsSubtypeChecks,
170-
(pair) {
161+
sink.writeList(dynamicUses, (DynamicUse use) => use.writeToDataSink(sink));
162+
sink.writeList(staticUses, (StaticUse use) => use.writeToDataSink(sink));
163+
sink.writeList(typeUses, (TypeUse use) => use.writeToDataSink(sink));
164+
sink.writeList(
165+
constantUses, (ConstantUse use) => use.writeToDataSink(sink));
166+
sink.writeListOrNull<Pair<DartType, DartType>>(
167+
_typeVariableBoundsSubtypeChecks, (pair) {
171168
sink.writeDartType(pair.a);
172169
sink.writeDartType(pair.b);
173-
}, allowNull: true);
174-
sink.writeStrings(_constSymbols, allowNull: true);
175-
sink.writeList(_specializedGetInterceptors, sink.writeClasses,
176-
allowNull: true);
170+
});
171+
sink.writeStringsOrNull(_constSymbols);
172+
sink.writeListOrNull(_specializedGetInterceptors, sink.writeClasses);
177173
sink.writeBool(_usesInterceptor);
178174
sink.writeIntOrNull(_asyncMarkers?.value);
179-
sink.writeList(
175+
sink.writeListOrNull(
180176
_genericInstantiations,
181177
(GenericInstantiation instantiation) =>
182-
instantiation.writeToDataSink(sink),
183-
allowNull: true);
184-
sink.writeList(_nativeBehaviors,
185-
(NativeBehavior behavior) => behavior.writeToDataSink(sink),
186-
allowNull: true);
187-
sink.writeMembers(_nativeMethods, allowNull: true);
188-
sink.writeList(_oneShotInterceptors,
189-
(Selector selector) => selector.writeToDataSink(sink),
190-
allowNull: true);
178+
instantiation.writeToDataSink(sink));
179+
sink.writeListOrNull(_nativeBehaviors,
180+
(NativeBehavior behavior) => behavior.writeToDataSink(sink));
181+
sink.writeMembersOrNull(_nativeMethods);
182+
sink.writeListOrNull(_oneShotInterceptors,
183+
(Selector selector) => selector.writeToDataSink(sink));
191184
sink.end(tag);
192185
}
193186

@@ -2071,12 +2064,12 @@ class ModularName extends js.Name implements js.AstContainer {
20712064
sink.writeTypeVariable(typeVariable);
20722065
break;
20732066
case ModularNameKind.nameForGetInterceptor:
2074-
sink.writeClasses(set);
2067+
sink.writeClasses(set!);
20752068
break;
20762069
case ModularNameKind.nameForOneShotInterceptor:
20772070
final selector = data as Selector;
20782071
selector.writeToDataSink(sink);
2079-
sink.writeClasses(set);
2072+
sink.writeClasses(set!);
20802073
break;
20812074
case ModularNameKind.asName:
20822075
sink.writeString(data as String);

pkg/compiler/lib/src/inferrer/engine.dart

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1646,26 +1646,22 @@ class KernelGlobalTypeInferenceElementData
16461646
AbstractValueDomain abstractValueDomain) {
16471647
sink.inMemberContext(context, () {
16481648
sink.begin(tag);
1649-
sink.writeTreeNodeMapInContext(
1649+
sink.writeTreeNodeMapInContextOrNull(
16501650
_receiverMap,
16511651
(AbstractValue? value) =>
1652-
abstractValueDomain.writeAbstractValueToDataSink(sink, value),
1653-
allowNull: true);
1654-
sink.writeTreeNodeMapInContext(
1652+
abstractValueDomain.writeAbstractValueToDataSink(sink, value));
1653+
sink.writeTreeNodeMapInContextOrNull(
16551654
_iteratorMap,
16561655
(AbstractValue? value) =>
1657-
abstractValueDomain.writeAbstractValueToDataSink(sink, value),
1658-
allowNull: true);
1659-
sink.writeTreeNodeMapInContext(
1656+
abstractValueDomain.writeAbstractValueToDataSink(sink, value));
1657+
sink.writeTreeNodeMapInContextOrNull(
16601658
_currentMap,
16611659
(AbstractValue? value) =>
1662-
abstractValueDomain.writeAbstractValueToDataSink(sink, value),
1663-
allowNull: true);
1664-
sink.writeTreeNodeMapInContext(
1660+
abstractValueDomain.writeAbstractValueToDataSink(sink, value));
1661+
sink.writeTreeNodeMapInContextOrNull(
16651662
_moveNextMap,
16661663
(AbstractValue? value) =>
1667-
abstractValueDomain.writeAbstractValueToDataSink(sink, value),
1668-
allowNull: true);
1664+
abstractValueDomain.writeAbstractValueToDataSink(sink, value));
16691665
sink.end(tag);
16701666
});
16711667
}

pkg/compiler/lib/src/io/position_information.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,10 @@ class PositionSourceInformation extends SourceInformation {
6464
SourceLocation.writeToDataSink(sink, sourceLocation));
6565
sink.writeIndexed(
6666
inliningContext,
67-
(_) => sink.writeList(
67+
(_) => sink.writeListOrNull(
6868
inliningContext,
6969
(FrameContext context) => sink.writeIndexed(
70-
context, (_) => context.writeToDataSink(sink)),
71-
allowNull: true));
70+
context, (_) => context.writeToDataSink(sink))));
7271
sink.end(tag);
7372
}
7473

pkg/compiler/lib/src/ir/impact_data.dart

Lines changed: 58 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1140,81 +1140,65 @@ class ImpactData {
11401140
void toDataSink(DataSinkWriter sink) {
11411141
sink.begin(tag);
11421142

1143-
sink.writeList(
1144-
_superInitializers, (_SuperInitializer o) => o.toDataSink(sink),
1145-
allowNull: true);
1146-
sink.writeList(_superSets, sink.writeMemberNode, allowNull: true);
1147-
sink.writeList(_superGets, sink.writeMemberNode, allowNull: true);
1148-
sink.writeList(
1149-
_superInvocations, (_SuperInvocation o) => o.toDataSink(sink),
1150-
allowNull: true);
1151-
sink.writeList(_instanceSets, (_InstanceAccess o) => o.toDataSink(sink),
1152-
allowNull: true);
1153-
sink.writeList(_dynamicSets, (_DynamicAccess o) => o.toDataSink(sink),
1154-
allowNull: true);
1155-
sink.writeList(_instanceGets, (_InstanceAccess o) => o.toDataSink(sink),
1156-
allowNull: true);
1157-
sink.writeList(_dynamicGets, (_DynamicAccess o) => o.toDataSink(sink),
1158-
allowNull: true);
1159-
sink.writeList(
1160-
_functionInvocations, (_FunctionInvocation o) => o.toDataSink(sink),
1161-
allowNull: true);
1162-
sink.writeList(
1163-
_instanceInvocations, (_InstanceInvocation o) => o.toDataSink(sink),
1164-
allowNull: true);
1165-
sink.writeList(
1166-
_dynamicInvocations, (_DynamicInvocation o) => o.toDataSink(sink),
1167-
allowNull: true);
1168-
sink.writeList(_localFunctionInvocations,
1169-
(_LocalFunctionInvocation o) => o.toDataSink(sink),
1170-
allowNull: true);
1171-
sink.writeList(
1172-
_staticInvocations, (_StaticInvocation o) => o.toDataSink(sink),
1173-
allowNull: true);
1174-
sink.writeList(_constructorInvocations,
1175-
(_ConstructorInvocation o) => o.toDataSink(sink),
1176-
allowNull: true);
1143+
sink.writeListOrNull(
1144+
_superInitializers, (_SuperInitializer o) => o.toDataSink(sink));
1145+
sink.writeListOrNull(_superSets, sink.writeMemberNode);
1146+
sink.writeListOrNull(_superGets, sink.writeMemberNode);
1147+
sink.writeListOrNull(
1148+
_superInvocations, (_SuperInvocation o) => o.toDataSink(sink));
1149+
sink.writeListOrNull(
1150+
_instanceSets, (_InstanceAccess o) => o.toDataSink(sink));
1151+
sink.writeListOrNull(
1152+
_dynamicSets, (_DynamicAccess o) => o.toDataSink(sink));
1153+
sink.writeListOrNull(
1154+
_instanceGets, (_InstanceAccess o) => o.toDataSink(sink));
1155+
sink.writeListOrNull(
1156+
_dynamicGets, (_DynamicAccess o) => o.toDataSink(sink));
1157+
sink.writeListOrNull(
1158+
_functionInvocations, (_FunctionInvocation o) => o.toDataSink(sink));
1159+
sink.writeListOrNull(
1160+
_instanceInvocations, (_InstanceInvocation o) => o.toDataSink(sink));
1161+
sink.writeListOrNull(
1162+
_dynamicInvocations, (_DynamicInvocation o) => o.toDataSink(sink));
1163+
sink.writeListOrNull(_localFunctionInvocations,
1164+
(_LocalFunctionInvocation o) => o.toDataSink(sink));
1165+
sink.writeListOrNull(
1166+
_staticInvocations, (_StaticInvocation o) => o.toDataSink(sink));
1167+
sink.writeListOrNull(_constructorInvocations,
1168+
(_ConstructorInvocation o) => o.toDataSink(sink));
11771169
sink.writeInt(_features?.value ?? 0);
1178-
sink.writeList(_typeUses, (_TypeUse o) => o.toDataSink(sink),
1179-
allowNull: true);
1180-
sink.writeList(_redirectingInitializers,
1181-
(_RedirectingInitializer o) => o.toDataSink(sink),
1182-
allowNull: true);
1183-
sink.writeMemberNodes(_fieldInitializers, allowNull: true);
1184-
sink.writeMemberNodeMap(_fieldConstantInitializers, sink.writeTreeNodes,
1185-
allowNull: true);
1186-
sink.writeList(_typeLiterals, (_TypeLiteral o) => o.toDataSink(sink),
1187-
allowNull: true);
1188-
sink.writeTreeNodes(_localFunctions, allowNull: true);
1189-
sink.writeList(
1190-
_genericInstantiations, (_GenericInstantiation o) => o.toDataSink(sink),
1191-
allowNull: true);
1192-
sink.writeList(_staticSets, (_StaticAccess o) => o.toDataSink(sink),
1193-
allowNull: true);
1194-
sink.writeList(_staticGets, (_StaticAccess o) => o.toDataSink(sink),
1195-
allowNull: true);
1196-
sink.writeList(_staticTearOffs, (_StaticAccess o) => o.toDataSink(sink),
1197-
allowNull: true);
1198-
sink.writeList(_weakStaticTearOffs, (_StaticAccess o) => o.toDataSink(sink),
1199-
allowNull: true);
1200-
sink.writeList(_mapLiterals, (_MapLiteral o) => o.toDataSink(sink),
1201-
allowNull: true);
1202-
sink.writeList(_listLiterals, (_ContainerLiteral o) => o.toDataSink(sink),
1203-
allowNull: true);
1204-
sink.writeList(_setLiterals, (_ContainerLiteral o) => o.toDataSink(sink),
1205-
allowNull: true);
1206-
sink.writeList(_recordLiterals, (_RecordLiteral o) => o.toDataSink(sink),
1207-
allowNull: true);
1208-
sink.writeList(_runtimeTypeUses, (_RuntimeTypeUse o) => o.toDataSink(sink),
1209-
allowNull: true);
1210-
sink.writeList(_forInData, (_ForInData o) => o.toDataSink(sink),
1211-
allowNull: true);
1212-
1213-
sink.writeMemberNodes(_externalConstructorNodes, allowNull: true);
1214-
sink.writeMemberNodes(_fieldNodes, allowNull: true);
1215-
sink.writeMemberNodes(_externalProcedureNodes, allowNull: true);
1216-
sink.writeTreeNodes(_switchStatementNodes, allowNull: true);
1217-
sink.writeTreeNodes(_foreignStaticInvocationNodes, allowNull: true);
1170+
sink.writeListOrNull(_typeUses, (_TypeUse o) => o.toDataSink(sink));
1171+
sink.writeListOrNull(_redirectingInitializers,
1172+
(_RedirectingInitializer o) => o.toDataSink(sink));
1173+
sink.writeMemberNodesOrNull(_fieldInitializers);
1174+
sink.writeMemberNodeMapOrNull(
1175+
_fieldConstantInitializers, sink.writeTreeNodes);
1176+
sink.writeListOrNull(_typeLiterals, (_TypeLiteral o) => o.toDataSink(sink));
1177+
sink.writeTreeNodesOrNull(_localFunctions);
1178+
sink.writeListOrNull(_genericInstantiations,
1179+
(_GenericInstantiation o) => o.toDataSink(sink));
1180+
sink.writeListOrNull(_staticSets, (_StaticAccess o) => o.toDataSink(sink));
1181+
sink.writeListOrNull(_staticGets, (_StaticAccess o) => o.toDataSink(sink));
1182+
sink.writeListOrNull(
1183+
_staticTearOffs, (_StaticAccess o) => o.toDataSink(sink));
1184+
sink.writeListOrNull(
1185+
_weakStaticTearOffs, (_StaticAccess o) => o.toDataSink(sink));
1186+
sink.writeListOrNull(_mapLiterals, (_MapLiteral o) => o.toDataSink(sink));
1187+
sink.writeListOrNull(
1188+
_listLiterals, (_ContainerLiteral o) => o.toDataSink(sink));
1189+
sink.writeListOrNull(
1190+
_setLiterals, (_ContainerLiteral o) => o.toDataSink(sink));
1191+
sink.writeListOrNull(
1192+
_recordLiterals, (_RecordLiteral o) => o.toDataSink(sink));
1193+
sink.writeListOrNull(
1194+
_runtimeTypeUses, (_RuntimeTypeUse o) => o.toDataSink(sink));
1195+
sink.writeListOrNull(_forInData, (_ForInData o) => o.toDataSink(sink));
1196+
1197+
sink.writeMemberNodesOrNull(_externalConstructorNodes);
1198+
sink.writeMemberNodesOrNull(_fieldNodes);
1199+
sink.writeMemberNodesOrNull(_externalProcedureNodes);
1200+
sink.writeTreeNodesOrNull(_switchStatementNodes);
1201+
sink.writeTreeNodesOrNull(_foreignStaticInvocationNodes);
12181202
sink.writeBool(_hasConstSymbolConstructorInvocation);
12191203

12201204
sink.end(tag);

pkg/compiler/lib/src/ir/static_type_cache.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,8 @@ class StaticTypeCache {
3232
sink.inMemberContext(context, () {
3333
sink.begin(tag);
3434
sink.writeTreeNodeMapInContext(_expressionTypes, sink.writeDartTypeNode);
35-
sink.writeTreeNodeMapInContext(
36-
_forInIteratorTypes, sink.writeDartTypeNode,
37-
allowNull: true);
35+
sink.writeTreeNodeMapInContextOrNull(
36+
_forInIteratorTypes, sink.writeDartTypeNode);
3837
sink.end(tag);
3938
});
4039
}

pkg/compiler/lib/src/js_backend/backend_usage.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -344,8 +344,8 @@ class BackendUsageImpl implements BackendUsage {
344344
@override
345345
void writeToDataSink(DataSinkWriter sink) {
346346
sink.begin(tag);
347-
sink.writeMembers(_globalFunctionDependencies, allowNull: true);
348-
sink.writeClasses(_globalClassDependencies, allowNull: true);
347+
sink.writeMembersOrNull(_globalFunctionDependencies);
348+
sink.writeClassesOrNull(_globalClassDependencies);
349349
sink.writeMembers(_helperFunctionsUsed);
350350
sink.writeClasses(_helperClassesUsed);
351351
sink.writeList(runtimeTypeUses, (RuntimeTypeUse runtimeTypeUse) {

pkg/compiler/lib/src/js_backend/field_analysis.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -657,7 +657,7 @@ class FieldAnalysisData {
657657
sink.writeBool(isLateBackingField);
658658
sink.writeBool(isEager);
659659
sink.writeIntOrNull(eagerCreationIndex);
660-
sink.writeMembers(eagerFieldDependenciesForTesting, allowNull: true);
660+
sink.writeMembersOrNull(eagerFieldDependenciesForTesting);
661661
sink.end(tag);
662662
}
663663

pkg/compiler/lib/src/js_model/locals.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ class KernelToLocalsMapImpl implements KernelToLocalsMap {
167167
} else {
168168
sink.writeInt(0);
169169
}
170-
sink.writeTreeNodes(_breaksAsContinue, allowNull: true);
170+
sink.writeTreeNodesOrNull(_breaksAsContinue);
171171
sink.end(tag);
172172
}
173173

0 commit comments

Comments
 (0)