diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json index 8bd78518f79..87d1ada8f42 100644 --- a/.dart_tool/package_config.json +++ b/.dart_tool/package_config.json @@ -427,12 +427,12 @@ "name": "observatory", "rootUri": "../runtime/observatory", "packageUri": "lib/", - "languageVersion": "2.9" + "languageVersion": "2.2" }, { "name": "observatory_test_package", "rootUri": "../runtime/observatory/tests/service/observatory_test_package", - "languageVersion": "2.9" + "languageVersion": "2.7" }, { "name": "package_config", diff --git a/pkg/test_runner/lib/src/compiler_configuration.dart b/pkg/test_runner/lib/src/compiler_configuration.dart index 8113cc5c7fb..97be6bd17fd 100644 --- a/pkg/test_runner/lib/src/compiler_configuration.dart +++ b/pkg/test_runner/lib/src/compiler_configuration.dart @@ -962,6 +962,7 @@ class AnalyzerCompilerConfiguration extends CompilerConfiguration { "ffi_2", "language_2", "lib_2", + "service", "standalone_2" }; diff --git a/runtime/observatory/BUILD.gn b/runtime/observatory/BUILD.gn index 053164ecd54..1762e1aee03 100644 --- a/runtime/observatory/BUILD.gn +++ b/runtime/observatory/BUILD.gn @@ -37,7 +37,6 @@ prebuilt_dart2js_action("build_observatory") { "-o", rebase_path(output), "--packages=" + rebase_path("../../.packages"), - "--enable-experiment=non-nullable", ] if (is_debug) { args += [ "--enable-asserts" ] diff --git a/runtime/observatory/analysis_options.yaml b/runtime/observatory/analysis_options.yaml index 13bad8a6816..6babf28a427 100644 --- a/runtime/observatory/analysis_options.yaml +++ b/runtime/observatory/analysis_options.yaml @@ -1,10 +1,7 @@ analyzer: - enable-experiment: - - non-nullable errors: dead_code: ignore unused_local_variable: ignore - getter_not_subtype_setter_types: ignore exclude: - tests/service/bad_reload/v2/main.dart - tests/service/complex_reload/v2/main.dart diff --git a/runtime/observatory/bin/heap_snapshot.dart b/runtime/observatory/bin/heap_snapshot.dart index b5aaf93fafd..22d3ce53f14 100644 --- a/runtime/observatory/bin/heap_snapshot.dart +++ b/runtime/observatory/bin/heap_snapshot.dart @@ -22,14 +22,14 @@ Future load(String uri) async { reader.onProgress.listen(print); - ws.listen((dynamic dynResponse) { - if (dynResponse is String) { - final response = json.decode(dynResponse); + ws.listen((dynamic response) { + if (response is String) { + response = json.decode(response); if (response['id'] == 1) { getVM.complete(response['result']['isolates'][0]['id']); } - } else if (dynResponse is List) { - final response = new Uint8List.fromList(dynResponse); + } else if (response is List) { + response = new Uint8List.fromList(response); final dataOffset = new ByteData.view(response.buffer).getUint32(0, Endian.little); dynamic metadata = new Uint8List.view(response.buffer, 4, dataOffset - 4); diff --git a/runtime/observatory/bin/shell.dart b/runtime/observatory/bin/shell.dart index d6c551fef7d..a0cb274be4a 100644 --- a/runtime/observatory/bin/shell.dart +++ b/runtime/observatory/bin/shell.dart @@ -30,7 +30,7 @@ void repl(VM vm, Isolate isolate, String lastResult) { void main() { String addr = 'ws://localhost:8181/ws'; new WebSocketVM(new WebSocketVMTarget(addr)).load().then((serviceObject) { - VM vm = serviceObject as VM; + VM vm = serviceObject; Isolate isolate = vm.isolates.first; repl(vm, isolate, 'isolate ${isolate.id}'); }); diff --git a/runtime/observatory/lib/event.dart b/runtime/observatory/lib/event.dart index 71bed827806..e79b16b3c61 100644 --- a/runtime/observatory/lib/event.dart +++ b/runtime/observatory/lib/event.dart @@ -108,7 +108,7 @@ class PauseBreakpointEvent implements M.PauseBreakpointEvent { final bool atAsyncSuspension; /// [optional] - final M.Breakpoint? breakpoint; + final M.Breakpoint breakpoint; PauseBreakpointEvent( this.timestamp, this.isolate, @@ -128,7 +128,7 @@ class PauseBreakpointEvent implements M.PauseBreakpointEvent { class PauseInterruptedEvent implements M.PauseInterruptedEvent { final DateTime timestamp; final M.IsolateRef isolate; - final M.Frame? topFrame; + final M.Frame topFrame; final bool atAsyncSuspension; PauseInterruptedEvent( this.timestamp, this.isolate, this.topFrame, this.atAsyncSuspension) { @@ -141,7 +141,7 @@ class PauseInterruptedEvent implements M.PauseInterruptedEvent { class PausePostRequestEvent implements M.PausePostRequestEvent { final DateTime timestamp; final M.IsolateRef isolate; - final M.Frame? topFrame; + final M.Frame topFrame; final bool atAsyncSuspension; PausePostRequestEvent( this.timestamp, this.isolate, this.topFrame, this.atAsyncSuspension) { @@ -168,7 +168,7 @@ class PauseExceptionEvent implements M.PauseExceptionEvent { class ResumeEvent implements M.ResumeEvent { final DateTime timestamp; final M.IsolateRef isolate; - final M.Frame? topFrame; + final M.Frame topFrame; ResumeEvent(this.timestamp, this.isolate, this.topFrame) { assert(timestamp != null); assert(isolate != null); @@ -309,71 +309,69 @@ class ServiceUnregisteredEvent implements M.ServiceUnregisteredEvent { } } -M.Event? createEventFromServiceEvent(S.ServiceEvent event) { +M.Event createEventFromServiceEvent(S.ServiceEvent event) { switch (event.kind) { case S.ServiceEvent.kVMUpdate: - return new VMUpdateEvent(event.timestamp!, event.vm); + return new VMUpdateEvent(event.timestamp, event.vm); case S.ServiceEvent.kIsolateStart: - return new IsolateStartEvent(event.timestamp!, event.isolate!); + return new IsolateStartEvent(event.timestamp, event.isolate); case S.ServiceEvent.kIsolateRunnable: - return new IsolateRunnableEvent(event.timestamp!, event.isolate!); + return new IsolateRunnableEvent(event.timestamp, event.isolate); case S.ServiceEvent.kIsolateUpdate: - return new IsolateUpdateEvent(event.timestamp!, event.isolate!); + return new IsolateUpdateEvent(event.timestamp, event.isolate); case S.ServiceEvent.kIsolateReload: return new IsolateReloadEvent( - event.timestamp!, event.isolate!, event.error!); + event.timestamp, event.isolate, event.error); case S.ServiceEvent.kIsolateExit: - return new IsolateExitEvent(event.timestamp!, event.isolate!); + return new IsolateExitEvent(event.timestamp, event.isolate); case S.ServiceEvent.kBreakpointAdded: return new BreakpointAddedEvent( - event.timestamp!, event.isolate!, event.breakpoint!); + event.timestamp, event.isolate, event.breakpoint); case S.ServiceEvent.kBreakpointResolved: return new BreakpointResolvedEvent( - event.timestamp!, event.isolate!, event.breakpoint!); + event.timestamp, event.isolate, event.breakpoint); case S.ServiceEvent.kBreakpointRemoved: return new BreakpointRemovedEvent( - event.timestamp!, event.isolate!, event.breakpoint!); + event.timestamp, event.isolate, event.breakpoint); case S.ServiceEvent.kDebuggerSettingsUpdate: - return new DebuggerSettingsUpdateEvent(event.timestamp!, event.isolate!); + return new DebuggerSettingsUpdateEvent(event.timestamp, event.isolate); case S.ServiceEvent.kResume: - return new ResumeEvent(event.timestamp!, event.isolate!, event.topFrame); + return new ResumeEvent(event.timestamp, event.isolate, event.topFrame); case S.ServiceEvent.kPauseStart: - return new PauseStartEvent(event.timestamp!, event.isolate!); + return new PauseStartEvent(event.timestamp, event.isolate); case S.ServiceEvent.kPauseExit: - return new PauseExitEvent(event.timestamp!, event.isolate!); + return new PauseExitEvent(event.timestamp, event.isolate); case S.ServiceEvent.kPausePostRequest: - return new PausePostRequestEvent(event.timestamp!, event.isolate!, - event.topFrame, event.atAsyncSuspension!); + return new PausePostRequestEvent(event.timestamp, event.isolate, + event.topFrame, event.atAsyncSuspension); case S.ServiceEvent.kPauseBreakpoint: return new PauseBreakpointEvent( - event.timestamp!, - event.isolate!, - event.pauseBreakpoints!, - event.topFrame!, - event.atAsyncSuspension!, + event.timestamp, + event.isolate, + event.pauseBreakpoints, + event.topFrame, + event.atAsyncSuspension, event.breakpoint); case S.Isolate.kLoggingStream: - return new LoggingEvent( - event.timestamp!, event.isolate!, event.logRecord!); + return new LoggingEvent(event.timestamp, event.isolate, event.logRecord); case S.ServiceEvent.kPauseInterrupted: - return new PauseInterruptedEvent(event.timestamp!, event.isolate!, - event.topFrame, event.atAsyncSuspension!); + return new PauseInterruptedEvent(event.timestamp, event.isolate, + event.topFrame, event.atAsyncSuspension); case S.ServiceEvent.kPauseException: return new PauseExceptionEvent( - event.timestamp!, event.isolate!, event.topFrame!, event.exception!); + event.timestamp, event.isolate, event.topFrame, event.exception); case S.ServiceEvent.kInspect: - return new InspectEvent( - event.timestamp!, event.isolate!, event.inspectee!); + return new InspectEvent(event.timestamp, event.isolate, event.inspectee); case S.ServiceEvent.kGC: - return new GCEvent(event.timestamp!, event.isolate!); + return new GCEvent(event.timestamp, event.isolate); case S.ServiceEvent.kServiceRegistered: return new ServiceRegisteredEvent( - event.timestamp!, event.service!, event.method!, event.alias!); + event.timestamp, event.service, event.method, event.alias); case S.ServiceEvent.kServiceUnregistered: return new ServiceUnregisteredEvent( - event.timestamp!, event.service!, event.method!); + event.timestamp, event.service, event.method); case S.ServiceEvent.kNone: - return new NoneEvent(event.timestamp!, event.isolate!); + return new NoneEvent(event.timestamp, event.isolate); default: // Ignore unrecognized events. Logger.root.severe('Unrecognized event: $event'); diff --git a/runtime/observatory/lib/object_graph.dart b/runtime/observatory/lib/object_graph.dart index 8a62d01eeb2..ce48c8bf694 100644 --- a/runtime/observatory/lib/object_graph.dart +++ b/runtime/observatory/lib/object_graph.dart @@ -22,7 +22,7 @@ abstract class SnapshotReader { class _SnapshotReader implements SnapshotReader { bool _closed = false; - List? _chunks = []; + var _chunks = []; final _onProgress = new StreamController.broadcast(); final _done = new Completer(); @@ -32,8 +32,8 @@ class _SnapshotReader implements SnapshotReader { if (_closed) { throw new StateError("Stream is closed"); } - _chunks!.add(chunk); - _onProgress.add("Receiving snapshot chunk ${_chunks!.length}..."); + _chunks.add(chunk); + _onProgress.add("Receiving snapshot chunk ${_chunks.length}..."); // TODO(rmacnak): Incremental loading. } @@ -45,7 +45,7 @@ class _SnapshotReader implements SnapshotReader { _closed = true; var graph = new _SnapshotGraph._new(); - var chunks = _chunks!; + var chunks = _chunks; _chunks = null; // Let the binary chunks be GCable. _done.complete(graph._load(chunks, _onProgress)); return _done.future; @@ -270,39 +270,39 @@ class _SnapshotObject implements SnapshotObject { int get hashCode => _id ^ _graph.hashCode; int get shallowSize => internalSize + externalSize; - int get internalSize => _graph._internalSizes![_id]; - int get externalSize => _graph._externalSizes![_id]; - int get retainedSize => _graph._retainedSizes![_id]; + int get internalSize => _graph._internalSizes[_id]; + int get externalSize => _graph._externalSizes[_id]; + int get retainedSize => _graph._retainedSizes[_id]; String get description => _graph._describeObject(_id); - SnapshotClass get klass => _graph._classes![_graph._cids![_id]]!; + SnapshotClass get klass => _graph._classes[_graph._cids[_id]]; Iterable get successors sync* { final id = _id; - final cid = _graph._cids![id]; - final startSuccIndex = _graph._firstSuccs![id]; - final limitSuccIndex = _graph._firstSuccs![id + 1]; + final cid = _graph._cids[id]; + final startSuccIndex = _graph._firstSuccs[id]; + final limitSuccIndex = _graph._firstSuccs[id + 1]; for (var nextSuccIndex = startSuccIndex; nextSuccIndex < limitSuccIndex; nextSuccIndex++) { final index = nextSuccIndex - startSuccIndex; - final succId = _graph._succs![nextSuccIndex]; + final succId = _graph._succs[nextSuccIndex]; final name = _graph._edgeName(cid, index); yield _SnapshotObject._new(succId, _graph, name); } } Iterable get predecessors sync* { - var firstSuccs = _graph._firstSuccs!; - var succs = _graph._succs!; + var firstSuccs = _graph._firstSuccs; + var succs = _graph._succs; var id = _id; - var N = _graph._N!; + var N = _graph._N; for (var predId = 1; predId <= N; predId++) { var base = firstSuccs[predId]; var limit = firstSuccs[predId + 1]; for (var i = base; i < limit; i++) { if (succs[i] == id) { - var cid = _graph._cids![predId]; + var cid = _graph._cids[predId]; var name = _graph._edgeName(cid, i - base); yield _SnapshotObject._new(predId, _graph, name); } @@ -314,12 +314,12 @@ class _SnapshotObject implements SnapshotObject { if (_id == _ROOT) { return this; } - return _SnapshotObject._new(_graph._doms![_id], _graph, ""); + return _SnapshotObject._new(_graph._doms[_id], _graph, ""); } Iterable get children sync* { - var N = _graph._N!; - var doms = _graph._doms!; + var N = _graph._N; + var doms = _graph._doms; var parentId = _id; for (var childId = _ROOT; childId <= N; childId++) { if (doms[childId] == parentId) { @@ -374,7 +374,7 @@ abstract class SnapshotMergedDominator { class _SnapshotMergedDominator implements SnapshotMergedDominator { final int _id; final _SnapshotGraph _graph; - final _SnapshotMergedDominator? _parent; + final _SnapshotMergedDominator _parent; _SnapshotMergedDominator._new(this._id, this._graph, this._parent); @@ -389,78 +389,70 @@ class _SnapshotMergedDominator implements SnapshotMergedDominator { String get description => "$instanceCount instances of ${klass.name}"; - SnapshotClass get klass => _graph._classes![_graph._cids![_id]]!; + SnapshotClass get klass => _graph._classes[_graph._cids[_id]]; int get shallowSize => internalSize + externalSize; int get internalSize { - var cids = _graph._cids!; - var internalSizes = _graph._internalSizes!; - var mergedDomNext = _graph._mergedDomNext!; + var cids = _graph._cids; var size = 0; var sibling = _id; while (sibling != _SENTINEL && cids[sibling] == cids[_id]) { - size += internalSizes[sibling]; - sibling = mergedDomNext[sibling]; + size += _graph._internalSizes[sibling]; + sibling = _graph._mergedDomNext[sibling]; } return size; } int get externalSize { - var cids = _graph._cids!; - var externalSizes = _graph._externalSizes!; - var mergedDomNext = _graph._mergedDomNext!; + var cids = _graph._cids; var size = 0; var sibling = _id; while (sibling != _SENTINEL && cids[sibling] == cids[_id]) { - size += externalSizes[sibling]; - sibling = mergedDomNext[sibling]; + size += _graph._externalSizes[sibling]; + sibling = _graph._mergedDomNext[sibling]; } return size; } int get retainedSize { - var cids = _graph._cids!; - var retainedSizes = _graph._retainedSizes!; - var mergedDomNext = _graph._mergedDomNext!; + var cids = _graph._cids; var size = 0; var sibling = _id; while (sibling != _SENTINEL && cids[sibling] == cids[_id]) { - size += retainedSizes[sibling]; - sibling = mergedDomNext[sibling]; + size += _graph._retainedSizes[sibling]; + sibling = _graph._mergedDomNext[sibling]; } return size; } int get instanceCount { - var cids = _graph._cids!; - var mergedDomNext = _graph._mergedDomNext!; + var cids = _graph._cids; var count = 0; var sibling = _id; while (sibling != _SENTINEL && cids[sibling] == cids[_id]) { count++; - sibling = mergedDomNext[sibling]; + sibling = _graph._mergedDomNext[sibling]; } return count; } Iterable get objects sync* { - var cids = _graph._cids!; - var mergedDomNext = _graph._mergedDomNext!; + var cids = _graph._cids; var sibling = _id; while (sibling != _SENTINEL && cids[sibling] == cids[_id]) { yield _SnapshotObject._new(sibling, _graph, ""); - sibling = mergedDomNext[sibling]; + sibling = _graph._mergedDomNext[sibling]; } } SnapshotMergedDominator get parent => _parent ?? this; Iterable get children sync* { - var next = _graph._mergedDomNext!; - var cids = _graph._cids!; + var next = _graph._mergedDomNext; + var cids = _graph._cids; var prev = _SENTINEL; - var child = _graph._mergedDomHead![_id]; + var child = _graph._mergedDomHead[_id]; // Walk the list of children and look for the representative objects, i.e. // the first sibling of each cid. while (child != _SENTINEL) { @@ -512,11 +504,9 @@ class _SnapshotClass implements SnapshotClass { int get instanceCount => liveInstanceCount; Iterable get instances sync* { - final N = _graph._N!; - final cids = _graph._cids!; - final retainedSizes = _graph._retainedSizes!; + final N = _graph._N; for (var id = 1; id <= N; id++) { - if (cids[id] == _cid && retainedSizes[id] > 0) { + if (_graph._cids[id] == _cid && _graph._retainedSizes[id] > 0) { yield _SnapshotObject._new(id, _graph, ""); } } @@ -566,27 +556,26 @@ const _kRootName = "Root"; const _kUnknownFieldName = ""; class _SnapshotGraph implements SnapshotGraph { - List? _chunks; - List get chunks => _chunks!; + List _chunks; + List get chunks => _chunks; _SnapshotGraph._new(); - String get description => _description!; + String get description => _description; - int get size => _liveInternalSize! + _liveExternalSize!; - int get internalSize => _liveInternalSize!; - int get externalSize => _liveExternalSize!; - int get capacity => _capacity!; + int get size => _liveInternalSize + _liveExternalSize; + int get internalSize => _liveInternalSize; + int get externalSize => _liveExternalSize; + int get capacity => _capacity; SnapshotObject get root => _SnapshotObject._new(_ROOT, this, "Root"); SnapshotMergedDominator get mergedRoot => _SnapshotMergedDominator._new(_ROOT, this, null); Iterable get objects sync* { - final N = _N!; - final retainedSizes = _retainedSizes!; + final N = _N; for (var id = 1; id <= N; id++) { - if (retainedSizes[id] > 0) { + if (_retainedSizes[id] > 0) { yield _SnapshotObject._new(id, this, ""); } } @@ -600,7 +589,7 @@ class _SnapshotGraph implements SnapshotGraph { return _kRootName; } var cls = _className(oid); - var data = _nonReferenceData![oid]; + var data = _nonReferenceData[oid]; if (data == null) { return cls; } else { @@ -609,8 +598,8 @@ class _SnapshotGraph implements SnapshotGraph { } String _className(int oid) { - var cid = _cids![oid]; - var cls = _classes![cid]; + var cid = _cids[oid]; + var cls = _classes[cid]; if (cls == null) { return "Class$cid"; } @@ -618,7 +607,7 @@ class _SnapshotGraph implements SnapshotGraph { } String _edgeName(int cid, int index) { - var c = _classes![cid]; + var c = _classes[cid]; if (c == null) { return _kUnknownFieldName; } @@ -630,7 +619,7 @@ class _SnapshotGraph implements SnapshotGraph { } Iterable get classes sync* { - for (final c in _classes!) { + for (final c in _classes) { // Not all CIDs are occupied. if (c != null) { yield c; @@ -641,9 +630,9 @@ class _SnapshotGraph implements SnapshotGraph { final processPartitions = new Map(); Future _load( - List? chunks, StreamController onProgress) async { + List chunks, StreamController onProgress) async { _chunks = chunks; - _ReadStream? stream = _ReadStream._new(chunks!); + var stream = _ReadStream._new(chunks); chunks = null; // The phases of loading are placed in explicit `new Future(compuation)` so @@ -651,16 +640,16 @@ class _SnapshotGraph implements SnapshotGraph { // defer to the microtask loop. onProgress.add("Loading classes..."); - await new Future(() => _readClasses(stream!)); + await new Future(() => _readClasses(stream)); onProgress.add("Loading objects..."); - await new Future(() => _readObjects(stream!)); + await new Future(() => _readObjects(stream)); onProgress.add("Loading external properties..."); - await new Future(() => _readExternalProperties(stream!)); + await new Future(() => _readExternalProperties(stream)); onProgress.add("Loading process partitions..."); - await new Future(() => _readProcessPartitions(stream!)); + await new Future(() => _readProcessPartitions(stream)); stream = null; onProgress.add("Compute class table..."); @@ -706,46 +695,46 @@ class _SnapshotGraph implements SnapshotGraph { return this; } - Uint8List? _encoded; + Uint8List _encoded; - String? _description; + String _description; - int? _kStackCid; - int? _kFieldCid; - int? _numCids; - int? _N; // Objects in the snapshot. - int? _Nconnected; // Objects reachable from root. - int? _E; // References in the snapshot. + int _kStackCid; + int _kFieldCid; + int _numCids; + int _N; // Objects in the snapshot. + int _Nconnected; // Objects reachable from root. + int _E; // References in the snapshot. - int? _capacity; - int? _liveInternalSize; - int? _liveExternalSize; - int? _totalInternalSize; - int? _totalExternalSize; + int _capacity; + int _liveInternalSize; + int _liveExternalSize; + int _totalInternalSize; + int _totalExternalSize; - List<_SnapshotClass?>? _classes; + List<_SnapshotClass> _classes; // Indexed by node id, with id 0 representing invalid/uninitialized. // From snapshot. - List? _nonReferenceData; - Uint16List? _cids; - Uint32List? _internalSizes; - Uint32List? _externalSizes; - Uint32List? _firstSuccs; - Uint32List? _succs; + List _nonReferenceData; + Uint16List _cids; + Uint32List _internalSizes; + Uint32List _externalSizes; + Uint32List _firstSuccs; + Uint32List _succs; // Intermediates. - Uint32List? _vertex; - Uint32List? _parent; - Uint32List? _semi; - Uint32List? _firstPreds; // Offset into preds. - Uint32List? _preds; + Uint32List _vertex; + Uint32List _parent; + Uint32List _semi; + Uint32List _firstPreds; // Offset into preds. + Uint32List _preds; // Outputs. - Uint32List? _doms; - Uint32List? _retainedSizes; - Uint32List? _mergedDomHead; - Uint32List? _mergedDomNext; + Uint32List _doms; + Uint32List _retainedSizes; + Uint32List _mergedDomHead; + Uint32List _mergedDomNext; void _readClasses(_ReadStream stream) { for (var i = 0; i < 8; i++) { @@ -759,7 +748,7 @@ class _SnapshotGraph implements SnapshotGraph { _totalExternalSize = stream.readUnsigned(); var K = stream.readUnsigned(); - var classes = new List<_SnapshotClass?>.filled(K + 1, null); + var classes = new List<_SnapshotClass>.filled(K + 1, null); classes[0] = _SnapshotClass._new(this, 0, "Root", "", ""); for (var cid = 1; cid <= K; cid++) { @@ -802,7 +791,7 @@ class _SnapshotGraph implements SnapshotGraph { var internalSizes = _newUint32Array(N + 1); var cids = _newUint16Array(N + 1); - var nonReferenceData = new List.filled(N + 1, null); + var nonReferenceData = new List(N + 1); var firstSuccs = _newUint32Array(N + 2); var succs = _newUint32Array(E); var eid = 0; @@ -878,7 +867,7 @@ class _SnapshotGraph implements SnapshotGraph { } void _readExternalProperties(_ReadStream stream) { - final N = _N!; + final N = _N; final externalPropertyCount = stream.readUnsigned(); final externalSizes = _newUint32Array(N + 1); @@ -904,11 +893,11 @@ class _SnapshotGraph implements SnapshotGraph { } void _computeClassTable() { - final N = _N!; - final classes = _classes!; - final cids = _cids!; - final internalSizes = _internalSizes!; - final externalSizes = _externalSizes!; + final N = _N; + final classes = _classes; + final cids = _cids; + final internalSizes = _internalSizes; + final externalSizes = _externalSizes; var totalInternalSize = 0; var totalExternalSize = 0; @@ -919,7 +908,7 @@ class _SnapshotGraph implements SnapshotGraph { var externalSize = externalSizes[oid]; totalExternalSize += externalSize; - var cls = classes[cids[oid]]!; + var cls = classes[cids[oid]]; cls.totalInternalSize += internalSize; cls.totalExternalSize += externalSize; cls.totalInstanceCount++; @@ -930,9 +919,9 @@ class _SnapshotGraph implements SnapshotGraph { } void _dfs() { - final N = _N!; - final firstSuccs = _firstSuccs!; - final succs = _succs!; + final N = _N; + final firstSuccs = _firstSuccs; + final succs = _succs; final stackNodes = _newUint32Array(N); final stackCurrentEdgePos = _newUint32Array(N); @@ -1020,11 +1009,11 @@ class _SnapshotGraph implements SnapshotGraph { } void _buildPredecessors() { - final N = _N!; - final Nconnected = _Nconnected!; - final E = _E!; - final firstSuccs = _firstSuccs!; - final succs = _succs!; + final N = _N; + final Nconnected = _Nconnected; + final E = _E; + final firstSuccs = _firstSuccs; + final succs = _succs; // This is first filled with the predecessor counts, then reused to hold the // offset to the first predecessor (see alias below). @@ -1079,17 +1068,17 @@ class _SnapshotGraph implements SnapshotGraph { // Fold the size of any object with in-degree(1) into its parent. // Requires the DFS numbering and predecessor lists. void _buildOwnedSizes() { - final N = _N!; - final Nconnected = _Nconnected!; + final N = _N; + final Nconnected = _Nconnected; final kStackCid = _kStackCid; final kFieldCid = _kFieldCid; - final cids = _cids!; - final internalSizes = _internalSizes!; - final externalSizes = _externalSizes!; - final vertex = _vertex!; - final firstPreds = _firstPreds!; - final preds = _preds!; + final cids = _cids; + final internalSizes = _internalSizes; + final externalSizes = _externalSizes; + final vertex = _vertex; + final firstPreds = _firstPreds; + final preds = _preds; final ownedSizes = _newUint32Array(N + 1); for (var i = 1; i <= Nconnected; i++) { @@ -1134,11 +1123,11 @@ class _SnapshotGraph implements SnapshotGraph { // TODO(rmacnak): Maybe keep the per-objects sizes to be able to provide // examples of large owners for each class. - final classes = _classes!; + final classes = _classes; for (var i = 1; i <= Nconnected; i++) { final v = vertex[i]; final cid = cids[v]; - final cls = classes[cid]!; + final cls = classes[cid]; cls.ownedSize += ownedSizes[v]; } } @@ -1220,14 +1209,14 @@ class _SnapshotGraph implements SnapshotGraph { // T. Lengauer and R. E. Tarjan. "A Fast Algorithm for Finding Dominators // in a Flowgraph." void _buildDominators() { - final N = _N!; - final Nconnected = _Nconnected!; + final N = _N; + final Nconnected = _Nconnected; - final vertex = _vertex!; - final semi = _semi!; - final parent = _parent!; - final firstPreds = _firstPreds!; - final preds = _preds!; + final vertex = _vertex; + final semi = _semi; + final parent = _parent; + final firstPreds = _firstPreds; + final preds = _preds; final dom = _newUint32Array(N + 1); @@ -1236,7 +1225,7 @@ class _SnapshotGraph implements SnapshotGraph { for (var i = 1; i <= N; i++) { label[i] = i; } - final buckets = new List.filled(N + 1, null); + final buckets = new List(N + 1); final child = _newUint32Array(N + 1); final size = _newUint32Array(N + 1); for (var i = 1; i <= N; i++) { @@ -1263,7 +1252,7 @@ class _SnapshotGraph implements SnapshotGraph { // w.semi.bucket.add(w); var tmp = vertex[semi[w]]; if (buckets[tmp] == null) { - buckets[tmp] = []; + buckets[tmp] = new List(); } buckets[tmp].add(w); @@ -1295,17 +1284,17 @@ class _SnapshotGraph implements SnapshotGraph { } void _calculateRetainedSizes() { - final N = _N!; - final Nconnected = _Nconnected!; + final N = _N; + final Nconnected = _Nconnected; var liveInternalSize = 0; var liveExternalSize = 0; - final classes = _classes!; - final cids = _cids!; - final internalSizes = _internalSizes!; - final externalSizes = _externalSizes!; - final vertex = _vertex!; - final doms = _doms!; + final classes = _classes; + final cids = _cids; + final internalSizes = _internalSizes; + final externalSizes = _externalSizes; + final vertex = _vertex; + final doms = _doms; // Sum internal and external sizes. for (var i = 1; i <= Nconnected; i++) { @@ -1315,7 +1304,7 @@ class _SnapshotGraph implements SnapshotGraph { liveInternalSize += internalSize; liveExternalSize += externalSize; - var cls = classes[cids[v]]!; + var cls = classes[cids[v]]; cls.liveInternalSize += internalSize; cls.liveExternalSize += externalSize; cls.liveInstanceCount++; @@ -1346,18 +1335,18 @@ class _SnapshotGraph implements SnapshotGraph { _liveInternalSize = liveInternalSize; _liveExternalSize = liveExternalSize; - print("internal-garbage: ${_totalInternalSize! - _liveInternalSize!}"); - print("external-garbage: ${_totalExternalSize! - _liveExternalSize!}"); - print("fragmentation: ${_capacity! - _totalInternalSize!}"); - assert(_liveInternalSize! <= _totalInternalSize!); - assert(_liveExternalSize! <= _totalExternalSize!); - assert(_totalInternalSize! <= _capacity!); + print("internal-garbage: ${_totalInternalSize - _liveInternalSize}"); + print("external-garbage: ${_totalExternalSize - _liveExternalSize}"); + print("fragmentation: ${_capacity - _totalInternalSize}"); + assert(_liveInternalSize <= _totalInternalSize); + assert(_liveExternalSize <= _totalExternalSize); + assert(_totalInternalSize <= _capacity); } // Build linked lists of the children for each node in the dominator tree. void _linkDominatorChildren() { - final N = _N!; - final doms = _doms!; + final N = _N; + final doms = _doms; final head = _newUint32Array(N + 1); final next = _newUint32Array(N + 1); @@ -1411,10 +1400,10 @@ class _SnapshotGraph implements SnapshotGraph { } void _sortDominatorChildren() { - final N = _N!; - final cids = _cids!; - final head = _mergedDomHead!; - final next = _mergedDomNext!; + final N = _N; + final cids = _cids; + final head = _mergedDomHead; + final next = _mergedDomNext; // Returns the new head of the sorted list. int sort(int head) { @@ -1448,10 +1437,10 @@ class _SnapshotGraph implements SnapshotGraph { } void _mergeDominatorSiblings() { - var N = _N!; - var cids = _cids!; - var head = _mergedDomHead!; - var next = _mergedDomNext!; + var N = _N; + var cids = _cids; + var head = _mergedDomHead; + var next = _mergedDomNext; var workStack = _newUint32Array(N); var workStackTop = 0; diff --git a/runtime/observatory/lib/service_common.dart b/runtime/observatory/lib/service_common.dart index 2dd171811ca..f0748918b72 100644 --- a/runtime/observatory/lib/service_common.dart +++ b/runtime/observatory/lib/service_common.dart @@ -26,9 +26,9 @@ class WebSocketVMTarget implements M.Target { bool get standalone => !chrome; // User defined name. - late String name; + String name; // Network address of VM. - late String networkAddress; + String networkAddress; WebSocketVMTarget(this.networkAddress) { name = networkAddress; @@ -89,7 +89,7 @@ abstract class CommonWebSocketVM extends VM { String get displayName => '${name}@${target.name}'; - CommonWebSocket? _webSocket; + CommonWebSocket _webSocket; CommonWebSocketVM(this.target, this._webSocket) { assert(target != null); @@ -120,7 +120,7 @@ abstract class CommonWebSocketVM extends VM { void disconnect({String reason: 'WebSocket closed'}) { if (_hasInitiatedConnect) { if (_webSocket != null) { - _webSocket!.close(); + _webSocket.close(); } } // We don't need to cancel requests and notify here. These @@ -135,7 +135,7 @@ abstract class CommonWebSocketVM extends VM { if (!_hasInitiatedConnect) { _hasInitiatedConnect = true; try { - _webSocket!.connect( + _webSocket.connect( target.networkAddress, _onOpen, _onMessage, _onError, _onClose); } catch (_, stack) { _webSocket = null; @@ -150,7 +150,7 @@ abstract class CommonWebSocketVM extends VM { } String serial = (_requestSerial++).toString(); var request = new _WebSocketRequest(method, params); - if ((_webSocket != null) && _webSocket!.isOpen) { + if ((_webSocket != null) && _webSocket.isOpen) { // Already connected, send request immediately. _sendRequest(serial, request); } else { @@ -180,7 +180,7 @@ abstract class CommonWebSocketVM extends VM { _notifyConnect(); } - Map? _parseJSON(String message) { + Map _parseJSON(String message) { var map; try { map = json.decode(message); @@ -198,7 +198,7 @@ abstract class CommonWebSocketVM extends VM { } void _onBinaryMessage(dynamic data) { - _webSocket!.nonStringToByteData(data).then((ByteData bytes) { + _webSocket.nonStringToByteData(data).then((ByteData bytes) { var metadataOffset = 4; var dataOffset = bytes.getUint32(0, Endian.little); var metadataLength = dataOffset - metadataOffset; @@ -292,7 +292,7 @@ abstract class CommonWebSocketVM extends VM { /// Send all delayed requests. void _sendAllDelayedRequests() { - assert(_webSocket!.isOpen); + assert(_webSocket.isOpen); if (_delayedRequests.length == 0) { return; } @@ -305,7 +305,7 @@ abstract class CommonWebSocketVM extends VM { /// Send the request over WebSocket. void _sendRequest(String serial, _WebSocketRequest request) { - assert(_webSocket!.isOpen); + assert(_webSocket.isOpen); // Mark request as pending. assert(_pendingRequests.containsKey(serial) == false); _pendingRequests[serial] = request; @@ -332,7 +332,7 @@ abstract class CommonWebSocketVM extends VM { 'GET [${serial}] ${request.method}(${request.params}) from ${target.networkAddress}'); } // Send message. - _webSocket!.send(message); + _webSocket.send(message); } String toString() => displayName; diff --git a/runtime/observatory/lib/service_html.dart b/runtime/observatory/lib/service_html.dart index ad22944927e..ddc42f5d2d3 100644 --- a/runtime/observatory/lib/service_html.dart +++ b/runtime/observatory/lib/service_html.dart @@ -14,26 +14,25 @@ import 'package:observatory/service_common.dart'; export 'package:observatory/service_common.dart'; class _HtmlWebSocket implements CommonWebSocket { - WebSocket? _webSocket; + WebSocket _webSocket; void connect(String address, void onOpen(), void onMessage(dynamic data), void onError(), void onClose()) { - var socket = new WebSocket(address); - socket.onClose.listen((CloseEvent) => onClose()); - socket.onError.listen((Event) => onError()); - socket.onOpen.listen((Event) => onOpen()); - socket.onMessage.listen((MessageEvent event) => onMessage(event.data)); - _webSocket = socket; + _webSocket = new WebSocket(address); + _webSocket.onClose.listen((CloseEvent) => onClose()); + _webSocket.onError.listen((Event) => onError()); + _webSocket.onOpen.listen((Event) => onOpen()); + _webSocket.onMessage.listen((MessageEvent event) => onMessage(event.data)); } - bool get isOpen => _webSocket!.readyState == WebSocket.OPEN; + bool get isOpen => _webSocket.readyState == WebSocket.OPEN; void send(dynamic data) { - _webSocket!.send(data); + _webSocket.send(data); } void close() { - _webSocket!.close(); + _webSocket.close(); } Future nonStringToByteData(dynamic data) { diff --git a/runtime/observatory/lib/service_io.dart b/runtime/observatory/lib/service_io.dart index 987f6781817..2ecbbf11391 100644 --- a/runtime/observatory/lib/service_io.dart +++ b/runtime/observatory/lib/service_io.dart @@ -15,13 +15,13 @@ import 'package:observatory/service_common.dart'; export 'package:observatory/service_common.dart'; class _IOWebSocket implements CommonWebSocket { - WebSocket? _webSocket; + WebSocket _webSocket; void connect(String address, void onOpen(), void onMessage(dynamic data), void onError(), void onClose()) { WebSocket.connect(address).then((WebSocket socket) { _webSocket = socket; - socket.listen(onMessage, + _webSocket.listen(onMessage, onError: (dynamic) => onError(), onDone: onClose, cancelOnError: true); @@ -32,14 +32,16 @@ class _IOWebSocket implements CommonWebSocket { } bool get isOpen => - (_webSocket != null) && (_webSocket!.readyState == WebSocket.open); + (_webSocket != null) && (_webSocket.readyState == WebSocket.open); void send(dynamic data) { - _webSocket!.add(data); + _webSocket.add(data); } void close() { - _webSocket?.close(); + if (_webSocket != null) { + _webSocket.close(); + } } Future nonStringToByteData(dynamic data) { diff --git a/runtime/observatory/lib/src/allocation_profile/allocation_profile.dart b/runtime/observatory/lib/src/allocation_profile/allocation_profile.dart index 0ec7fa15d5c..c1e7aa1e9c9 100644 --- a/runtime/observatory/lib/src/allocation_profile/allocation_profile.dart +++ b/runtime/observatory/lib/src/allocation_profile/allocation_profile.dart @@ -6,16 +6,15 @@ part of allocation_profiler; class AllocationProfile implements M.AllocationProfile { static const _lastServiceGC = 'dateLastServiceGC'; - final DateTime? lastServiceGC; + final DateTime lastServiceGC; static const _lastAccumulatorReset = 'dateLastAccumulatorReset'; - final DateTime? lastAccumulatorReset; + final DateTime lastAccumulatorReset; final S.HeapSpace newSpace; final S.HeapSpace oldSpace; final S.HeapSpace totalSpace; final Iterable members; - AllocationProfile(S.ServiceMap map, - {Map/*>*/ ? defaults}) + AllocationProfile(S.ServiceMap map, {Map/*>*/ defaults}) : lastAccumulatorReset = _intString2DateTime(map[_lastAccumulatorReset]), lastServiceGC = _intString2DateTime(map[_lastServiceGC]), oldSpace = new S.HeapSpace()..update(map['_heaps']['old']), @@ -26,7 +25,7 @@ class AllocationProfile implements M.AllocationProfile { totalSpace.add(newSpace); } - static DateTime? _intString2DateTime(String milliseconds) { + static DateTime _intString2DateTime(String milliseconds) { if ((milliseconds == null) || milliseconds == '') { return null; } @@ -39,7 +38,7 @@ class AllocationProfile implements M.AllocationProfile { } static List _convertMembers(Iterable/**/ raw, - {Map/*>*/ ? defaults}) { + {Map/*>*/ defaults}) { final List members = raw.map(_convertMember).toList(); if (defaults == null) { @@ -50,26 +49,26 @@ class AllocationProfile implements M.AllocationProfile { final Map> accumulators = >{}; defaults.forEach((/*String*/ key, /*List*/ values) { - final classes = aliases[key]!; + final classes = aliases[key]; accumulators.addAll(new Map.fromIterable(values, value: (_) => classes)); }); final List result = []; members.forEach((M.ClassHeapStats member) { - if (accumulators.containsKey(member.clazz!.id)) { - accumulators[member.clazz!.id]!.add(member as ClassHeapStats); + if (accumulators.containsKey(member.clazz.id)) { + accumulators[member.clazz.id].add(member); } else { - result.add(member as ClassHeapStats); + result.add(member); } }); return result ..addAll( - aliases.keys.map((key) => new ClassesHeapStats(key, aliases[key]!))); + aliases.keys.map((key) => new ClassesHeapStats(key, aliases[key]))); } } class ClassHeapStats implements M.ClassHeapStats { - final S.Class? clazz; - final String? displayName = null; + final S.Class clazz; + final String displayName = null; final S.Allocations newSpace; final S.Allocations oldSpace; @@ -80,8 +79,8 @@ class ClassHeapStats implements M.ClassHeapStats { } class ClassesHeapStats implements M.ClassHeapStats { - final S.Class? clazz = null; - final String? displayName; + final S.Class clazz = null; + final String displayName; final S.Allocations newSpace; final S.Allocations oldSpace; diff --git a/runtime/observatory/lib/src/app/application.dart b/runtime/observatory/lib/src/app/application.dart index 4311b6bf256..e3c4d7bc016 100644 --- a/runtime/observatory/lib/src/app/application.dart +++ b/runtime/observatory/lib/src/app/application.dart @@ -7,30 +7,30 @@ part of app; /// The observatory application. Instances of this are created and owned /// by the observatory_application custom element. class ObservatoryApplication { - static late ObservatoryApplication app; + static ObservatoryApplication app; final RenderingQueue queue = new RenderingQueue(); final TargetRepository targets = new TargetRepository(isConnectedVMTarget); final EventRepository events = new EventRepository(); final NotificationRepository notifications = new NotificationRepository(); final _pageRegistry = []; - late LocationManager _locationManager; + LocationManager _locationManager; LocationManager get locationManager => _locationManager; - Page? currentPage; + Page currentPage; bool _vmConnected = false; - VM? _vm; - VM get vm => _vm!; + VM _vm; + VM get vm => _vm; static bool isConnectedVMTarget(M.Target target) { if (app._vm is CommonWebSocketVM) { if ((app._vm as CommonWebSocketVM).target == target) { - return app._vm!.isConnected; + return app._vm.isConnected; } } return false; } - _switchVM(VM? newVM) { - final VM? oldVM = _vm; + _switchVM(VM newVM) { + final VM oldVM = _vm; Logger.root.info('_switchVM from:${oldVM} to:${newVM}'); @@ -89,14 +89,14 @@ class ObservatoryApplication { _vm = newVM; } - StreamSubscription? _gcSubscription; - StreamSubscription? _loggingSubscription; + StreamSubscription _gcSubscription; + StreamSubscription _loggingSubscription; Future startGCEventListener() async { if (_gcSubscription != null || _vm == null) { return; } - _gcSubscription = await _vm!.listenEventStream(VM.kGCStream, _onEvent); + _gcSubscription = await _vm.listenEventStream(VM.kGCStream, _onEvent); } Future startLoggingEventListener() async { @@ -104,14 +104,14 @@ class ObservatoryApplication { return; } _loggingSubscription = - await _vm!.listenEventStream(Isolate.kLoggingStream, _onEvent); + await _vm.listenEventStream(Isolate.kLoggingStream, _onEvent); } Future stopGCEventListener() async { if (_gcSubscription == null) { return; } - _gcSubscription!.cancel(); + _gcSubscription.cancel(); _gcSubscription = null; } @@ -119,15 +119,16 @@ class ObservatoryApplication { if (_loggingSubscription == null) { return; } - _loggingSubscription!.cancel(); + _loggingSubscription.cancel(); _loggingSubscription = null; } final ObservatoryApplicationElement rootElement; - ServiceObject? lastErrorOrException; + ServiceObject lastErrorOrException; void _initOnce() { + assert(app == null); app = this; _registerPages(); Analytics.initialize(); @@ -145,7 +146,7 @@ class ObservatoryApplication { void _onEvent(ServiceEvent event) { assert(event.kind != ServiceEvent.kNone); - M.Event? e = createEventFromServiceEvent(event); + M.Event e = createEventFromServiceEvent(event); if (e != null) { events.add(e); } @@ -178,7 +179,7 @@ class ObservatoryApplication { _pageRegistry.add(new ErrorPage(this)); } - void _visit(Uri uri, Map internalArguments) { + void _visit(Uri uri, Map internalArguments) { if (internalArguments['trace'] != null) { var traceArg = internalArguments['trace']; if (traceArg == 'on') { @@ -188,7 +189,7 @@ class ObservatoryApplication { } } if (Tracer.current != null) { - Tracer.current!.reset(); + Tracer.current.reset(); } for (var i = 0; i < _pageRegistry.length; i++) { var page = _pageRegistry[i]; @@ -210,7 +211,7 @@ class ObservatoryApplication { } if (currentPage != null) { Logger.root.info('Uninstalling page: $currentPage'); - currentPage!.onUninstall(); + currentPage.onUninstall(); // Clear children. rootElement.children.clear(); } @@ -221,7 +222,7 @@ class ObservatoryApplication { Logger.root.severe('Failed to install page: $e'); } // Add new page. - rootElement.children.add(page.element!); + rootElement.children.add(page.element); // Remember page. currentPage = page; @@ -238,22 +239,22 @@ class ObservatoryApplication { _switchVM(null); } else { final bool currentTarget = - (_vm as WebSocketVM?)?.target == targets.current; - final bool currentTargetConnected = (_vm != null) && _vm!.isConnected; + (_vm as WebSocketVM)?.target == targets.current; + final bool currentTargetConnected = (_vm != null) && _vm.isConnected; if (!currentTarget || !currentTargetConnected) { - _switchVM(new WebSocketVM(targets.current!)); - _vm!.onConnect.then((_) { + _switchVM(new WebSocketVM(targets.current)); + _vm.onConnect.then((_) { app.locationManager.go(Uris.vm()); }); - _vm!.load(); + _vm.load(); } else if (currentTargetConnected) { app.locationManager.go(Uris.vm()); } } }); - Logger.root.info('Setting initial target to ${targets.current!.name}'); - _switchVM(new WebSocketVM(targets.current!)); + Logger.root.info('Setting initial target to ${targets.current.name}'); + _switchVM(new WebSocketVM(targets.current)); _initOnce(); // delete pause events. diff --git a/runtime/observatory/lib/src/app/location_manager.dart b/runtime/observatory/lib/src/app/location_manager.dart index 2f231d83337..a0e1af123e0 100644 --- a/runtime/observatory/lib/src/app/location_manager.dart +++ b/runtime/observatory/lib/src/app/location_manager.dart @@ -11,11 +11,11 @@ class LocationManager { /// application URL. final Map internalArguments = new Map(); - Uri? _uri; + Uri _uri; /// [uri] is the application uri. Application uris consist of a path and /// the queryParameters map. - Uri get uri => _uri!; + Uri get uri => _uri; LocationManager(this._app) { window.onPopState.listen(_onBrowserNavigation); @@ -90,14 +90,13 @@ class LocationManager { /// Notify the current page that something has changed. _visit() { - Chain.capture(() => _app._visit(_uri!, internalArguments), - onError: (e, st) { + Chain.capture(() => _app._visit(_uri, internalArguments), onError: (e, st) { if (e is IsolateNotFound) { var newPath = ((_app.vm == null || _app.vm.isDisconnected) ? '/vm-connect' : '/isolate-reconnect'); var parameters = {}; - parameters.addAll(_uri!.queryParameters); + parameters.addAll(_uri.queryParameters); parameters['originalUri'] = _uri.toString(); parameters['isolateId'] = parameters['isolateId']; var generatedUri = new Uri(path: newPath, queryParameters: parameters); @@ -127,7 +126,7 @@ class LocationManager { } makeLinkReplacingParameters(Map updatedParameters) { - var parameters = new Map.from(_uri!.queryParameters); + var parameters = new Map.from(_uri.queryParameters); updatedParameters.forEach((k, v) { parameters[k] = v; }); @@ -142,7 +141,7 @@ class LocationManager { } makeLinkForwardingParameters(String newPath) { - var parameters = _uri!.queryParameters; + var parameters = _uri.queryParameters; var generatedUri = new Uri(path: newPath, queryParameters: parameters); return makeLink(generatedUri.toString()); } @@ -162,7 +161,7 @@ class LocationManager { event.preventDefault(); // 'currentTarget' is the dom element that would process the event. // If we use 'target' we might get an element or somesuch. - Element target = event.currentTarget as Element; - go(target.attributes['href']!); + Element target = event.currentTarget; + go(target.attributes['href']); } } diff --git a/runtime/observatory/lib/src/app/notification.dart b/runtime/observatory/lib/src/app/notification.dart index 933cdb9fadc..1f5f9d76f9e 100644 --- a/runtime/observatory/lib/src/app/notification.dart +++ b/runtime/observatory/lib/src/app/notification.dart @@ -8,7 +8,7 @@ class ExceptionNotification implements M.ExceptionNotification { final exception; /// [optional] - final StackTrace? stacktrace; + final StackTrace stacktrace; ExceptionNotification(this.exception, {this.stacktrace}); } diff --git a/runtime/observatory/lib/src/app/page.dart b/runtime/observatory/lib/src/app/page.dart index 410676dfbc3..5018e021480 100644 --- a/runtime/observatory/lib/src/app/page.dart +++ b/runtime/observatory/lib/src/app/page.dart @@ -55,7 +55,7 @@ RetainingPathRepository _retainingPathRepository = abstract class Page { final ObservatoryApplication app; final Map internalArguments = {}; - HtmlElement? element; + HtmlElement element; Page(this.app); @@ -70,7 +70,7 @@ abstract class Page { } /// Called when the page should update its state based on [uri]. - void visit(Uri uri, Map internalArguments) { + void visit(Uri uri, Map internalArguments) { this.internalArguments.clear(); this.internalArguments.addAll(internalArguments); Analytics.reportPageView(uri); @@ -96,7 +96,7 @@ abstract class MatchingPage extends Page { Future getIsolate(Uri uri) { var isolateId = uri.queryParameters['isolateId']; - return app.vm.getIsolate(isolateId!).then((isolate) { + return app.vm.getIsolate(isolateId).then((isolate) { if (isolate == null) { throw new IsolateNotFound(isolateId); } @@ -107,6 +107,7 @@ abstract class MatchingPage extends Page { EditorRepository getEditor(Uri uri) { final editor = uri.queryParameters['editor']; return new EditorRepository(app.vm, editor: editor); + return null; } bool canVisit(Uri uri) => uri.path == path; @@ -119,7 +120,7 @@ class SimplePage extends MatchingPage { void onInstall() { if (element == null) { - element = new Element.tag(elementTagName) as HtmlElement; + element = new Element.tag(elementTagName); } } } @@ -169,7 +170,7 @@ class VMPage extends MatchingPage { return; } app.vm.reload().then((serviceObject) { - VM vm = serviceObject as VM; + VM vm = serviceObject; container.children = [ new VMViewElement( vm, @@ -257,7 +258,7 @@ class InspectPage extends MatchingPage { container.children = [ new ClassViewElement( app.vm, - obj.isolate as Isolate, + obj.isolate, obj, app.events, app.notifications, @@ -280,7 +281,7 @@ class InspectPage extends MatchingPage { container.children = [ new CodeViewElement( app.vm, - obj.isolate as Isolate, + obj.isolate, obj, app.events, app.notifications, @@ -296,7 +297,7 @@ class InspectPage extends MatchingPage { container.children = [ new ContextViewElement( app.vm, - obj.isolate as Isolate, + obj.isolate, obj, app.events, app.notifications, @@ -317,7 +318,7 @@ class InspectPage extends MatchingPage { container.children = [ new FieldViewElement( app.vm, - obj.isolate as Isolate, + obj.isolate, obj, app.events, app.notifications, @@ -336,7 +337,7 @@ class InspectPage extends MatchingPage { container.children = [ new InstanceViewElement( app.vm, - obj.isolate as Isolate, + obj.isolate, obj, app.events, app.notifications, @@ -374,7 +375,7 @@ class InspectPage extends MatchingPage { container.children = [ new FunctionViewElement( app.vm, - obj.isolate as Isolate, + obj.isolate, obj, app.events, app.notifications, @@ -393,7 +394,7 @@ class InspectPage extends MatchingPage { container.children = [ new ICDataViewElement( app.vm, - obj.isolate as Isolate, + obj.isolate, obj, app.events, app.notifications, @@ -410,7 +411,7 @@ class InspectPage extends MatchingPage { container.children = [ new SingleTargetCacheViewElement( app.vm, - obj.isolate as Isolate, + obj.isolate, obj, app.events, app.notifications, @@ -427,7 +428,7 @@ class InspectPage extends MatchingPage { container.children = [ new SubtypeTestCacheViewElement( app.vm, - obj.isolate as Isolate, + obj.isolate, obj, app.events, app.notifications, @@ -444,7 +445,7 @@ class InspectPage extends MatchingPage { container.children = [ new UnlinkedCallViewElement( app.vm, - obj.isolate as Isolate, + obj.isolate, obj, app.events, app.notifications, @@ -461,7 +462,7 @@ class InspectPage extends MatchingPage { container.children = [ new LibraryViewElement( app.vm, - obj.isolate as Isolate, + obj.isolate, obj, app.events, app.notifications, @@ -481,7 +482,7 @@ class InspectPage extends MatchingPage { container.children = [ new MegamorphicCacheViewElement( app.vm, - obj.isolate as Isolate, + obj.isolate, obj, app.events, app.notifications, @@ -498,7 +499,7 @@ class InspectPage extends MatchingPage { container.children = [ new ObjectPoolViewElement( app.vm, - obj.isolate as Isolate, + obj.isolate, obj, app.events, app.notifications, @@ -515,13 +516,13 @@ class InspectPage extends MatchingPage { var pos; if (app.locationManager.internalArguments['pos'] != null) { try { - pos = int.parse(app.locationManager.internalArguments['pos']!); + pos = int.parse(app.locationManager.internalArguments['pos']); } catch (_) {} } container.children = [ new ScriptViewElement( app.vm, - obj.isolate as Isolate, + obj.isolate, obj, app.events, app.notifications, @@ -539,7 +540,7 @@ class InspectPage extends MatchingPage { container.children = [ new ObjectViewElement( app.vm, - obj.isolate as Isolate, + obj.isolate, obj, app.events, app.notifications, @@ -553,8 +554,8 @@ class InspectPage extends MatchingPage { ]; } else if (obj is Sentinel) { container.children = [ - new SentinelViewElement(app.vm, obj.isolate as Isolate, obj, app.events, - app.notifications, + new SentinelViewElement( + app.vm, obj.isolate, obj, app.events, app.notifications, queue: app.queue) .element ]; @@ -911,8 +912,8 @@ class IsolateReconnectPage extends Page { app.vm, app.events, app.notifications, - uri.queryParameters['isolateId']!, - Uri.parse(uri.queryParameters['originalUri']!)) + uri.queryParameters['isolateId'], + Uri.parse(uri.queryParameters['originalUri'])) .element ]; assert(element != null); @@ -927,7 +928,7 @@ class MetricsPage extends MatchingPage { final DivElement container = new DivElement(); - Isolate? lastIsolate; + Isolate lastIsolate; void _visit(Uri uri) { super._visit(uri); @@ -953,7 +954,7 @@ class MetricsPage extends MatchingPage { @override void onUninstall() { super.onUninstall(); - _metricRepository.stopSampling(lastIsolate!); + _metricRepository.stopSampling(lastIsolate); container.children = const []; } } diff --git a/runtime/observatory/lib/src/cli/command.dart b/runtime/observatory/lib/src/cli/command.dart index 7beb26f5a8d..0a0fc425572 100644 --- a/runtime/observatory/lib/src/cli/command.dart +++ b/runtime/observatory/lib/src/cli/command.dart @@ -46,8 +46,8 @@ abstract class _CommandBase { // A command may optionally have sub-commands. List _children = []; - _CommandBase? _parent; - int get _depth => (_parent == null ? 0 : _parent!._depth + 1); + _CommandBase _parent; + int get _depth => (_parent == null ? 0 : _parent._depth + 1); // Override in subclasses to provide command-specific argument completion. // @@ -115,7 +115,7 @@ abstract class _CommandBase { // The root of a tree of commands. class RootCommand extends _CommandBase { - RootCommand(List children, [List? history]) + RootCommand(List children, [List history]) : this._(children, history ?? ['']); RootCommand._(List children, List history) @@ -161,7 +161,7 @@ class RootCommand extends _CommandBase { // If we are showing all possiblities, also include local // completions for the parent command. return commands[0] - ._parent! + ._parent ._buildCompletions(args, false) .then((localCompletions) { completions.addAll(localCompletions); @@ -232,7 +232,7 @@ class RootCommand extends _CommandBase { throw 'should-not-execute-the-root-command'; } - String toString() => 'RootCommand'; + toString() => 'RootCommand'; } // A node in the command tree. @@ -240,18 +240,18 @@ abstract class Command extends _CommandBase { Command(this.name, List children) : super(children); final String name; - String? alias; + String alias; String get fullName { if (_parent is RootCommand) { return name; } else { - Command parent = _parent as Command; + Command parent = _parent; return '${parent.fullName} $name'; } } - String toString() => 'Command(${name})'; + toString() => 'Command(${name})'; } abstract class CommandException implements Exception {} diff --git a/runtime/observatory/lib/src/debugger/debugger.dart b/runtime/observatory/lib/src/debugger/debugger.dart index f243e021112..fb297c79982 100644 --- a/runtime/observatory/lib/src/debugger/debugger.dart +++ b/runtime/observatory/lib/src/debugger/debugger.dart @@ -8,7 +8,7 @@ part of debugger; abstract class Debugger { VM get vm; Isolate get isolate; - M.ObjectRepository? objects; - ServiceMap? get stack; - int? get currentFrame; + M.ObjectRepository objects; + ServiceMap get stack; + int get currentFrame; } diff --git a/runtime/observatory/lib/src/debugger/debugger_location.dart b/runtime/observatory/lib/src/debugger/debugger_location.dart index 344a010a516..a186fd4be11 100644 --- a/runtime/observatory/lib/src/debugger/debugger_location.dart +++ b/runtime/observatory/lib/src/debugger/debugger_location.dart @@ -50,12 +50,12 @@ class DebuggerLocation { new DebuggerLocation.error("Invalid source location '${locDesc}'")); } - static Future _currentFrame(Debugger debugger) async { - ServiceMap? stack = debugger.stack; + static Future _currentFrame(Debugger debugger) async { + ServiceMap stack = debugger.stack; if (stack == null || stack['frames'].length == 0) { return null; } - return stack['frames'][debugger.currentFrame] as Frame?; + return stack['frames'][debugger.currentFrame]; } static Future _currentLocation(Debugger debugger) async { @@ -64,10 +64,10 @@ class DebuggerLocation { return new DebuggerLocation.error( 'A script must be provided when the stack is empty'); } - Script script = frame.location!.script; + Script script = frame.location.script; await script.load(); - var line = script.tokenToLine(frame.location!.tokenPos); - var col = script.tokenToCol(frame.location!.tokenPos); + var line = script.tokenToLine(frame.location.tokenPos); + var col = script.tokenToCol(frame.location.tokenPos); return new DebuggerLocation.file(script, line, col); } @@ -87,7 +87,7 @@ class DebuggerLocation { if (colStr != null) { colStr = colStr.substring(1); } - var line = int.tryParse(lineStr!) ?? -1; + var line = int.tryParse(lineStr) ?? -1; var col = (colStr != null ? int.tryParse(colStr) ?? -1 : null); if (line == -1) { return new Future.value( @@ -121,7 +121,7 @@ class DebuggerLocation { return new Future.value(new DebuggerLocation.error( 'A script must be provided when the stack is empty')); } - Script script = frame.location!.script; + Script script = frame.location.script; await script.load(); return new DebuggerLocation.file(script, line, col); } @@ -139,7 +139,7 @@ class DebuggerLocation { var matches =