[ VM / Service ] Use same default value logic in toJson as _fromJson
Bug: https://github.com/dart-lang/webdev/issues/1741
Change-Id: I86df5591c3b302e88f76a2f7031215df18bb1431
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/258100
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Liam Appelbe <liama@google.com>
diff --git a/pkg/vm_service/lib/src/vm_service.dart b/pkg/vm_service/lib/src/vm_service.dart
index 821b717..782a241 100644
--- a/pkg/vm_service/lib/src/vm_service.dart
+++ b/pkg/vm_service/lib/src/vm_service.dart
@@ -2983,11 +2983,11 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'name': name,
+ 'name': name ?? '',
'value': value?.toJson(),
- 'declarationTokenPos': declarationTokenPos,
- 'scopeStartTokenPos': scopeStartTokenPos,
- 'scopeEndTokenPos': scopeEndTokenPos,
+ 'declarationTokenPos': declarationTokenPos ?? -1,
+ 'scopeStartTokenPos': scopeStartTokenPos ?? -1,
+ 'scopeEndTokenPos': scopeEndTokenPos ?? -1,
});
return json;
}
@@ -3055,9 +3055,9 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'breakpointNumber': breakpointNumber,
- 'enabled': enabled,
- 'resolved': resolved,
+ 'breakpointNumber': breakpointNumber ?? -1,
+ 'enabled': enabled ?? false,
+ 'resolved': resolved ?? false,
'location': location?.toJson(),
});
_setIfNotNull(
@@ -3126,7 +3126,7 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'name': name,
+ 'name': name ?? '',
'library': library?.toJson(),
});
_setIfNotNull(json, 'location', location?.toJson());
@@ -3272,11 +3272,11 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'name': name,
+ 'name': name ?? '',
'library': library?.toJson(),
- 'abstract': isAbstract,
- 'const': isConst,
- 'traceAllocations': traceAllocations,
+ 'abstract': isAbstract ?? false,
+ 'const': isConst ?? false,
+ 'traceAllocations': traceAllocations ?? false,
'interfaces': interfaces?.map((f) => f.toJson()).toList(),
'fields': fields?.map((f) => f.toJson()).toList(),
'functions': functions?.map((f) => f.toJson()).toList(),
@@ -3346,10 +3346,10 @@
json['type'] = type;
json.addAll({
'class': classRef?.toJson(),
- 'accumulatedSize': accumulatedSize,
- 'bytesCurrent': bytesCurrent,
- 'instancesAccumulated': instancesAccumulated,
- 'instancesCurrent': instancesCurrent,
+ 'accumulatedSize': accumulatedSize ?? -1,
+ 'bytesCurrent': bytesCurrent ?? -1,
+ 'instancesAccumulated': instancesAccumulated ?? -1,
+ 'instancesCurrent': instancesCurrent ?? -1,
});
return json;
}
@@ -3423,8 +3423,8 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'name': name,
- 'kind': kind,
+ 'name': name ?? '',
+ 'kind': kind ?? '',
});
return json;
}
@@ -3468,8 +3468,8 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'name': name,
- 'kind': kind,
+ 'name': name ?? '',
+ 'kind': kind ?? '',
});
return json;
}
@@ -3507,7 +3507,7 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'length': length,
+ 'length': length ?? -1,
});
return json;
}
@@ -3562,7 +3562,7 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'length': length,
+ 'length': length ?? -1,
'variables': variables?.map((f) => f.toJson()).toList(),
});
_setIfNotNull(json, 'parent', parent?.toJson());
@@ -3682,13 +3682,13 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'samplePeriod': samplePeriod,
- 'maxStackDepth': maxStackDepth,
- 'sampleCount': sampleCount,
- 'timeSpan': timeSpan,
- 'timeOriginMicros': timeOriginMicros,
- 'timeExtentMicros': timeExtentMicros,
- 'pid': pid,
+ 'samplePeriod': samplePeriod ?? -1,
+ 'maxStackDepth': maxStackDepth ?? -1,
+ 'sampleCount': sampleCount ?? -1,
+ 'timeSpan': timeSpan ?? -1,
+ 'timeOriginMicros': timeOriginMicros ?? -1,
+ 'timeExtentMicros': timeExtentMicros ?? -1,
+ 'pid': pid ?? -1,
'functions': functions?.map((f) => f.toJson()).toList(),
'samples': samples?.map((f) => f.toJson()).toList(),
});
@@ -3768,13 +3768,13 @@
Map<String, dynamic> toJson() {
final json = <String, dynamic>{};
json.addAll({
- 'samplePeriod': samplePeriod,
- 'maxStackDepth': maxStackDepth,
- 'sampleCount': sampleCount,
- 'timeSpan': timeSpan,
- 'timeOriginMicros': timeOriginMicros,
- 'timeExtentMicros': timeExtentMicros,
- 'pid': pid,
+ 'samplePeriod': samplePeriod ?? -1,
+ 'maxStackDepth': maxStackDepth ?? -1,
+ 'sampleCount': sampleCount ?? -1,
+ 'timeSpan': timeSpan ?? -1,
+ 'timeOriginMicros': timeOriginMicros ?? -1,
+ 'timeExtentMicros': timeExtentMicros ?? -1,
+ 'pid': pid ?? -1,
'functions': functions?.map((f) => f.toJson()).toList(),
'samples': samples?.map((f) => f.toJson()).toList(),
});
@@ -3857,8 +3857,8 @@
Map<String, dynamic> toJson() {
final json = <String, dynamic>{};
json.addAll({
- 'tid': tid,
- 'timestamp': timestamp,
+ 'tid': tid ?? -1,
+ 'timestamp': timestamp ?? -1,
'stack': stack?.map((f) => f).toList(),
});
_setIfNotNull(json, 'vmTag', vmTag);
@@ -3905,8 +3905,8 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'kind': kind,
- 'message': message,
+ 'kind': kind ?? '',
+ 'message': message ?? '',
});
return json;
}
@@ -3968,8 +3968,8 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'kind': kind,
- 'message': message,
+ 'kind': kind ?? '',
+ 'message': message ?? '',
});
_setIfNotNull(json, 'exception', exception?.toJson());
_setIfNotNull(json, 'stacktrace', stacktrace?.toJson());
@@ -4281,8 +4281,8 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'kind': kind,
- 'timestamp': timestamp,
+ 'kind': kind ?? '',
+ 'timestamp': timestamp ?? -1,
});
_setIfNotNull(json, 'isolate', isolate?.toJson());
_setIfNotNull(json, 'vm', vm?.toJson());
@@ -4390,12 +4390,12 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'name': name,
+ 'name': name ?? '',
'owner': owner?.toJson(),
'declaredType': declaredType?.toJson(),
- 'const': isConst,
- 'final': isFinal,
- 'static': isStatic,
+ 'const': isConst ?? false,
+ 'final': isFinal ?? false,
+ 'static': isStatic ?? false,
});
_setIfNotNull(json, 'location', location?.toJson());
return json;
@@ -4490,12 +4490,12 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'name': name,
+ 'name': name ?? '',
'owner': owner?.toJson(),
'declaredType': declaredType?.toJson(),
- 'const': isConst,
- 'final': isFinal,
- 'static': isStatic,
+ 'const': isConst ?? false,
+ 'final': isFinal ?? false,
+ 'static': isStatic ?? false,
});
_setIfNotNull(json, 'location', location?.toJson());
_setIfNotNull(json, 'staticValue', staticValue?.toJson());
@@ -4548,9 +4548,9 @@
Map<String, dynamic> toJson() {
final json = <String, dynamic>{};
json.addAll({
- 'name': name,
- 'comment': comment,
- 'modified': modified,
+ 'name': name ?? '',
+ 'comment': comment ?? '',
+ 'modified': modified ?? false,
});
_setIfNotNull(json, 'valueAsString', valueAsString);
return json;
@@ -4646,7 +4646,7 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'index': index,
+ 'index': index ?? -1,
});
_setIfNotNull(json, 'function', function?.toJson());
_setIfNotNull(json, 'code', code?.toJson());
@@ -4729,12 +4729,12 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'name': name,
+ 'name': name ?? '',
'owner': owner?.toJson(),
- 'static': isStatic,
- 'const': isConst,
- 'implicit': implicit,
- 'abstract': isAbstract,
+ 'static': isStatic ?? false,
+ 'const': isConst ?? false,
+ 'implicit': implicit ?? false,
+ 'abstract': isAbstract ?? false,
});
_setIfNotNull(json, 'location', location?.toJson());
return json;
@@ -4831,12 +4831,12 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'name': name,
+ 'name': name ?? '',
'owner': owner?.toJson(),
- 'static': isStatic,
- 'const': isConst,
- 'implicit': implicit,
- 'abstract': isAbstract,
+ 'static': isStatic ?? false,
+ 'const': isConst ?? false,
+ 'implicit': implicit ?? false,
+ 'abstract': isAbstract ?? false,
'signature': signature?.toJson(),
});
_setIfNotNull(json, 'location', location?.toJson());
@@ -5074,8 +5074,8 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'kind': kind,
- 'identityHashCode': identityHashCode,
+ 'kind': kind ?? '',
+ 'identityHashCode': identityHashCode ?? -1,
'class': classRef?.toJson(),
});
_setIfNotNull(json, 'valueAsString', valueAsString);
@@ -5533,8 +5533,8 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'kind': kind,
- 'identityHashCode': identityHashCode,
+ 'kind': kind ?? '',
+ 'identityHashCode': identityHashCode ?? -1,
'class': classRef?.toJson(),
});
_setIfNotNull(json, 'valueAsString', valueAsString);
@@ -5627,11 +5627,11 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'id': id,
- 'number': number,
- 'name': name,
- 'isSystemIsolate': isSystemIsolate,
- 'isolateGroupId': isolateGroupId,
+ 'id': id ?? '',
+ 'number': number ?? '',
+ 'name': name ?? '',
+ 'isSystemIsolate': isSystemIsolate ?? false,
+ 'isolateGroupId': isolateGroupId ?? '',
});
return json;
}
@@ -5774,20 +5774,20 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'id': id,
- 'number': number,
- 'name': name,
- 'isSystemIsolate': isSystemIsolate,
- 'isolateGroupId': isolateGroupId,
+ 'id': id ?? '',
+ 'number': number ?? '',
+ 'name': name ?? '',
+ 'isSystemIsolate': isSystemIsolate ?? false,
+ 'isolateGroupId': isolateGroupId ?? '',
'isolateFlags': isolateFlags?.map((f) => f.toJson()).toList(),
- 'startTime': startTime,
- 'runnable': runnable,
- 'livePorts': livePorts,
- 'pauseOnExit': pauseOnExit,
+ 'startTime': startTime ?? -1,
+ 'runnable': runnable ?? false,
+ 'livePorts': livePorts ?? -1,
+ 'pauseOnExit': pauseOnExit ?? false,
'pauseEvent': pauseEvent?.toJson(),
'libraries': libraries?.map((f) => f.toJson()).toList(),
'breakpoints': breakpoints?.map((f) => f.toJson()).toList(),
- 'exceptionPauseMode': exceptionPauseMode,
+ 'exceptionPauseMode': exceptionPauseMode ?? '',
});
_setIfNotNull(json, 'rootLib', rootLib?.toJson());
_setIfNotNull(json, 'error', error?.toJson());
@@ -5826,8 +5826,8 @@
Map<String, dynamic> toJson() {
final json = <String, dynamic>{};
json.addAll({
- 'name': name,
- 'valueAsString': valueAsString,
+ 'name': name ?? '',
+ 'valueAsString': valueAsString ?? '',
});
return json;
}
@@ -5877,10 +5877,10 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'id': id,
- 'number': number,
- 'name': name,
- 'isSystemIsolateGroup': isSystemIsolateGroup,
+ 'id': id ?? '',
+ 'number': number ?? '',
+ 'name': name ?? '',
+ 'isSystemIsolateGroup': isSystemIsolateGroup ?? false,
});
return json;
}
@@ -5941,10 +5941,10 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'id': id,
- 'number': number,
- 'name': name,
- 'isSystemIsolateGroup': isSystemIsolateGroup,
+ 'id': id ?? '',
+ 'number': number ?? '',
+ 'name': name ?? '',
+ 'isSystemIsolateGroup': isSystemIsolateGroup ?? false,
'isolates': isolates?.map((f) => f.toJson()).toList(),
});
return json;
@@ -6070,7 +6070,7 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'totalCount': totalCount,
+ 'totalCount': totalCount ?? -1,
'instances': instances?.map((f) => f.toJson()).toList(),
});
return json;
@@ -6112,8 +6112,8 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'name': name,
- 'uri': uri,
+ 'name': name ?? '',
+ 'uri': uri ?? '',
});
return json;
}
@@ -6198,9 +6198,9 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'name': name,
- 'uri': uri,
- 'debuggable': debuggable,
+ 'name': name ?? '',
+ 'uri': uri ?? '',
+ 'debuggable': debuggable ?? false,
'dependencies': dependencies?.map((f) => f.toJson()).toList(),
'scripts': scripts?.map((f) => f.toJson()).toList(),
'variables': variables?.map((f) => f.toJson()).toList(),
@@ -6264,9 +6264,9 @@
Map<String, dynamic> toJson() {
final json = <String, dynamic>{};
json.addAll({
- 'isImport': isImport,
- 'isDeferred': isDeferred,
- 'prefix': prefix,
+ 'isImport': isImport ?? false,
+ 'isDeferred': isDeferred ?? false,
+ 'prefix': prefix ?? '',
'target': target?.toJson(),
});
_setIfNotNull(json, 'shows', shows?.map((f) => f).toList());
@@ -6346,9 +6346,9 @@
json['type'] = type;
json.addAll({
'message': message?.toJson(),
- 'time': time,
- 'level': level,
- 'sequenceNumber': sequenceNumber,
+ 'time': time ?? -1,
+ 'level': level ?? -1,
+ 'sequenceNumber': sequenceNumber ?? -1,
'loggerName': loggerName?.toJson(),
'zone': zone?.toJson(),
'error': error?.toJson(),
@@ -6439,9 +6439,9 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'externalUsage': externalUsage,
- 'heapCapacity': heapCapacity,
- 'heapUsage': heapUsage,
+ 'externalUsage': externalUsage ?? -1,
+ 'heapCapacity': heapCapacity ?? -1,
+ 'heapUsage': heapUsage ?? -1,
});
return json;
}
@@ -6507,10 +6507,10 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'index': index,
- 'name': name,
- 'messageObjectId': messageObjectId,
- 'size': size,
+ 'index': index ?? -1,
+ 'name': name ?? '',
+ 'messageObjectId': messageObjectId ?? '',
+ 'size': size ?? -1,
});
_setIfNotNull(json, 'handler', handler?.toJson());
_setIfNotNull(json, 'location', location?.toJson());
@@ -6542,7 +6542,7 @@
Map<String, dynamic> toJson() {
final json = <String, dynamic>{};
json.addAll({
- 'name': name,
+ 'name': name ?? '',
});
return json;
}
@@ -6588,7 +6588,7 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'valueAsString': valueAsString,
+ 'valueAsString': valueAsString ?? '',
});
return json;
}
@@ -6640,7 +6640,7 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'valueAsString': valueAsString,
+ 'valueAsString': valueAsString ?? '',
});
return json;
}
@@ -6687,7 +6687,7 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'id': id,
+ 'id': id ?? '',
});
_setIfNotNull(json, 'fixedId', fixedId);
return json;
@@ -6761,7 +6761,7 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'id': id,
+ 'id': id ?? '',
});
_setIfNotNull(json, 'fixedId', fixedId);
_setIfNotNull(json, 'class', classRef?.toJson());
@@ -6817,7 +6817,7 @@
final json = <String, dynamic>{};
json.addAll({
'parameterType': parameterType?.toJson(),
- 'fixed': fixed,
+ 'fixed': fixed ?? false,
});
_setIfNotNull(json, 'name', name);
_setIfNotNull(json, 'required', required);
@@ -6907,10 +6907,10 @@
Map<String, dynamic> toJson() {
final json = <String, dynamic>{};
json.addAll({
- 'kind': kind,
- 'inclusiveTicks': inclusiveTicks,
- 'exclusiveTicks': exclusiveTicks,
- 'resolvedUrl': resolvedUrl,
+ 'kind': kind ?? '',
+ 'inclusiveTicks': inclusiveTicks ?? -1,
+ 'exclusiveTicks': exclusiveTicks ?? -1,
+ 'resolvedUrl': resolvedUrl ?? '',
'function': function?.toJson(),
});
return json;
@@ -6987,9 +6987,9 @@
Map<String, dynamic> toJson() {
final json = <String, dynamic>{};
json.addAll({
- 'protocolName': protocolName,
- 'major': major,
- 'minor': minor,
+ 'protocolName': protocolName ?? '',
+ 'major': major ?? -1,
+ 'minor': minor ?? -1,
});
return json;
}
@@ -7068,9 +7068,9 @@
Map<String, dynamic> toJson() {
final json = <String, dynamic>{};
json.addAll({
- 'name': name,
- 'description': description,
- 'size': size,
+ 'name': name ?? '',
+ 'description': description ?? '',
+ 'size': size ?? -1,
'children': children?.map((f) => f.toJson()).toList(),
});
return json;
@@ -7104,7 +7104,7 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'success': success,
+ 'success': success ?? false,
});
return json;
}
@@ -7200,8 +7200,8 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'length': length,
- 'gcRootType': gcRootType,
+ 'length': length ?? -1,
+ 'gcRootType': gcRootType ?? '',
'elements': elements?.map((f) => f.toJson()).toList(),
});
return json;
@@ -7270,8 +7270,8 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'kind': kind,
- 'valueAsString': valueAsString,
+ 'kind': kind ?? '',
+ 'valueAsString': valueAsString ?? '',
});
return json;
}
@@ -7307,7 +7307,7 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'uri': uri,
+ 'uri': uri ?? '',
});
return json;
}
@@ -7436,7 +7436,7 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'uri': uri,
+ 'uri': uri ?? '',
'library': library?.toJson(),
});
_setIfNotNull(json, 'lineOffset', lineOffset);
@@ -7538,7 +7538,7 @@
json['type'] = type;
json.addAll({
'script': script?.toJson(),
- 'tokenPos': tokenPos,
+ 'tokenPos': tokenPos ?? -1,
});
_setIfNotNull(json, 'endTokenPos', endTokenPos);
_setIfNotNull(json, 'line', line);
@@ -7714,10 +7714,10 @@
Map<String, dynamic> toJson() {
final json = <String, dynamic>{};
json.addAll({
- 'scriptIndex': scriptIndex,
- 'startPos': startPos,
- 'endPos': endPos,
- 'compiled': compiled,
+ 'scriptIndex': scriptIndex ?? -1,
+ 'startPos': startPos ?? -1,
+ 'endPos': endPos ?? -1,
+ 'compiled': compiled ?? false,
});
_setIfNotNull(json, 'error', error?.toJson());
_setIfNotNull(json, 'coverage', coverage?.toJson());
@@ -7799,7 +7799,7 @@
json.addAll({
'frames': frames?.map((f) => f.toJson()).toList(),
'messages': messages?.map((f) => f.toJson()).toList(),
- 'truncated': truncated,
+ 'truncated': truncated ?? false,
});
_setIfNotNull(json, 'asyncCausalFrames',
asyncCausalFrames?.map((f) => f.toJson()).toList());
@@ -7874,8 +7874,8 @@
json['type'] = type;
json.addAll({
'traceEvents': traceEvents?.map((f) => f.toJson()).toList(),
- 'timeOriginMicros': timeOriginMicros,
- 'timeExtentMicros': timeExtentMicros,
+ 'timeOriginMicros': timeOriginMicros ?? -1,
+ 'timeExtentMicros': timeExtentMicros ?? -1,
});
return json;
}
@@ -7944,7 +7944,7 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'recorderName': recorderName,
+ 'recorderName': recorderName ?? '',
'availableStreams': availableStreams?.map((f) => f).toList(),
'recordedStreams': recordedStreams?.map((f) => f).toList(),
});
@@ -7979,7 +7979,7 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'timestamp': timestamp,
+ 'timestamp': timestamp ?? -1,
});
return json;
}
@@ -8015,7 +8015,7 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'name': name,
+ 'name': name ?? '',
});
return json;
}
@@ -8065,7 +8065,7 @@
final json = super.toJson();
json['type'] = type;
json.addAll({
- 'name': name,
+ 'name': name ?? '',
'types': types?.map((f) => f.toJson()).toList(),
});
return json;
@@ -8258,8 +8258,8 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'major': major,
- 'minor': minor,
+ 'major': major ?? -1,
+ 'minor': minor ?? -1,
});
return json;
}
@@ -8291,7 +8291,7 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'name': name,
+ 'name': name ?? '',
});
return json;
}
@@ -8389,14 +8389,14 @@
final json = <String, dynamic>{};
json['type'] = type;
json.addAll({
- 'name': name,
- 'architectureBits': architectureBits,
- 'hostCPU': hostCPU,
- 'operatingSystem': operatingSystem,
- 'targetCPU': targetCPU,
- 'version': version,
- 'pid': pid,
- 'startTime': startTime,
+ 'name': name ?? '',
+ 'architectureBits': architectureBits ?? -1,
+ 'hostCPU': hostCPU ?? '',
+ 'operatingSystem': operatingSystem ?? '',
+ 'targetCPU': targetCPU ?? '',
+ 'version': version ?? '',
+ 'pid': pid ?? -1,
+ 'startTime': startTime ?? -1,
'isolates': isolates?.map((f) => f.toJson()).toList(),
'isolateGroups': isolateGroups?.map((f) => f.toJson()).toList(),
'systemIsolates': systemIsolates?.map((f) => f.toJson()).toList(),
diff --git a/pkg/vm_service/tool/dart/generate_dart.dart b/pkg/vm_service/tool/dart/generate_dart.dart
index f972a69..e4b26fd 100644
--- a/pkg/vm_service/tool/dart/generate_dart.dart
+++ b/pkg/vm_service/tool/dart/generate_dart.dart
@@ -1397,38 +1397,8 @@
} else {
gen.write("${field.generatableName} = json['${field.name}']");
}
- if (field.defaultValue != null) {
- gen.write(' ?? ${field.defaultValue}');
- } else if (!field.optional) {
- // If a default isn't provided and the field is required, generate a
- // sane default initializer to avoid TypeErrors at runtime when
- // running in a null-safe context.
- dynamic defaultValue;
- switch (field.type.name) {
- case 'int':
- case 'num':
- case 'double':
- defaultValue = -1;
- break;
- case 'bool':
- defaultValue = false;
- break;
- case 'String':
- defaultValue = "''";
- break;
- case 'ByteData':
- defaultValue = "ByteData(0)";
- break;
- default:
- {
- if (field.type.isEnum) {
- // TODO(bkonyi): Figure out if there's a more correct way to
- // determine a default value for enums.
- defaultValue = "''";
- }
- break;
- }
- }
+ final defaultValue = field.defaultValue;
+ if (defaultValue != null) {
gen.write(' ?? $defaultValue');
}
gen.writeln(';');
@@ -1674,8 +1644,9 @@
void generateSerializedFieldAccess(TypeField field, DartGenerator gen) {
if (field.type.isSimple || field.type.isEnum) {
gen.write('${field.generatableName}');
- if (field.defaultValue != null) {
- gen.write(' ?? ${field.defaultValue}');
+ final defaultValue = field.defaultValue;
+ if (defaultValue != null) {
+ gen.write(' ?? $defaultValue');
}
} else if (name == 'Event' && field.name == 'extensionData') {
// Special case `Event.extensionData`.
@@ -1785,7 +1756,7 @@
MemberType type = MemberType();
String? name;
bool optional = false;
- String? defaultValue;
+ String? _defaultValue;
bool overrides = false;
TypeField(this.parent, this._docs);
@@ -1806,6 +1777,40 @@
return _nameRemap[name] != null ? _nameRemap[name] : name;
}
+ set defaultValue(String? value) {
+ _defaultValue = value;
+ }
+
+ String? get defaultValue {
+ if (_defaultValue != null) {
+ return _defaultValue;
+ }
+ if (optional) {
+ return null;
+ }
+ // If a default isn't provided and the field is required, generate a sane
+ // default initializer to avoid TypeErrors at runtime when running in a
+ // null-safe context.
+ switch (type.name) {
+ case 'int':
+ case 'num':
+ case 'double':
+ return '-1';
+ case 'bool':
+ return 'false';
+ case 'String':
+ return "''";
+ case 'ByteData':
+ return "ByteData(0)";
+ }
+ if (type.isEnum) {
+ // TODO(bkonyi): Figure out if there's a more correct way to determine a
+ // default value for enums.
+ return "''";
+ }
+ return null;
+ }
+
void generate(DartGenerator gen) {
if (docs!.isNotEmpty) gen.writeDocs(docs);
if (optional) gen.write('@optional ');