diff --git a/runtime/observatory/tests/service/unused_changes_in_last_reload_test.dart b/runtime/observatory/tests/service/unused_changes_in_last_reload_test.dart index 2036bd6175a..e3612bfa972 100644 --- a/runtime/observatory/tests/service/unused_changes_in_last_reload_test.dart +++ b/runtime/observatory/tests/service/unused_changes_in_last_reload_test.dart @@ -54,9 +54,9 @@ var tests = [ print(e); }); - // Reload to v2. + // Reload to v1 (null change). var response = await childIsolate.reloadSources( - rootLibUri: v2Uri.toString(), + rootLibUri: v1Uri.toString(), ); print(response); expect(response['success'], isTrue); @@ -65,6 +65,19 @@ var tests = [ response = await childIsolate.invokeRpc("_getUnusedChangesInLastReload", {}); print(response); var unused = response['unused'].map((ea) => ea.toString()); + expect(unused, unorderedEquals([])); + + // Reload to v2. + response = await childIsolate.reloadSources( + rootLibUri: v2Uri.toString(), + ); + print(response); + expect(response['success'], isTrue); + + // Fetch unused. + response = await childIsolate.invokeRpc("_getUnusedChangesInLastReload", {}); + print(response); + unused = response['unused'].map((ea) => ea.toString()); expect(unused, unorderedEquals([ 'Class(C)', 'Class(NewClass)', diff --git a/runtime/vm/isolate_reload.cc b/runtime/vm/isolate_reload.cc index 28cbbc2f930..830d30d0b7a 100644 --- a/runtime/vm/isolate_reload.cc +++ b/runtime/vm/isolate_reload.cc @@ -600,6 +600,9 @@ void IsolateReloadContext::Reload(bool force_reload, if (!modified_libs_->Contains(old_root_lib.index())) { ASSERT(modified_libs_->IsEmpty()); reload_skipped_ = true; + // Inform GetUnusedChangesInLastReload that a reload has happened. + I->object_store()->set_changed_in_last_reload( + GrowableObjectArray::Handle(GrowableObjectArray::New())); ReportOnJSON(js_); TIR_Print("---- SKIPPING RELOAD (No libraries were modified)\n"); return; diff --git a/runtime/vm/json_stream.cc b/runtime/vm/json_stream.cc index bb42fa7918c..9fcadd852db 100644 --- a/runtime/vm/json_stream.cc +++ b/runtime/vm/json_stream.cc @@ -138,6 +138,10 @@ static const char* GetJSONRpcErrorMessage(intptr_t code) { return "Feature is disabled"; case kCannotAddBreakpoint: return "Cannot add breakpoint"; + case kStreamAlreadySubscribed: + return "Stream already subscribed"; + case kStreamNotSubscribed: + return "Stream not subscribed"; case kIsolateMustBeRunnable: return "Isolate must be runnable"; case kIsolateMustBePaused: @@ -146,14 +150,16 @@ static const char* GetJSONRpcErrorMessage(intptr_t code) { return "Cannot resume execution"; case kIsolateIsReloading: return "Isolate is reloading"; + case kIsolateReloadBarred: + return "Isolate cannot be reloaded"; + case kIsolateMustHaveReloaded: + return "Isolate must have reloaded"; case kFileSystemAlreadyExists: return "File system already exists"; case kFileSystemDoesNotExist: return "File system does not exist"; case kFileDoesNotExist: return "File does not exist"; - case kIsolateReloadBarred: - return "Isolate cannot be reloaded"; default: return "Extension error"; }