From 2bd391ed2a43a53d8849d3cbad3827568549e4f5 Mon Sep 17 00:00:00 2001 From: Elliott Brooks <21270878+elliette@users.noreply.github.com> Date: Thu, 16 Jan 2025 16:25:17 -0800 Subject: [PATCH 1/3] Text document can be null --- packages/devtools_app/lib/src/shared/editor/api_classes.dart | 2 +- .../devtools_app/lib/src/shared/editor/editor_client.dart | 4 ++-- .../property_editor/property_editor_controller.dart | 4 ++++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/devtools_app/lib/src/shared/editor/api_classes.dart b/packages/devtools_app/lib/src/shared/editor/api_classes.dart index b982f043f5b..19d55432885 100644 --- a/packages/devtools_app/lib/src/shared/editor/api_classes.dart +++ b/packages/devtools_app/lib/src/shared/editor/api_classes.dart @@ -317,7 +317,7 @@ class ActiveLocationChangedEvent extends EditorEvent { ); final List selections; - final TextDocument textDocument; + final TextDocument? textDocument; @override EditorEventKind get kind => EditorEventKind.activeLocationChanged; diff --git a/packages/devtools_app/lib/src/shared/editor/editor_client.dart b/packages/devtools_app/lib/src/shared/editor/editor_client.dart index 196bb03b99c..5e75b83b265 100644 --- a/packages/devtools_app/lib/src/shared/editor/editor_client.dart +++ b/packages/devtools_app/lib/src/shared/editor/editor_client.dart @@ -232,14 +232,14 @@ class EditorClient extends DisposableController /// Gets the editable arguments from the Analysis Server. Future getEditableArguments({ - required TextDocument textDocument, + required TextDocument? textDocument, required CursorPosition position, }) async { final response = await _callLspApi( LspMethod.editableArguments, params: { 'type': 'Object', // This is required by DTD. - 'textDocument': textDocument.toJson(), + 'textDocument': textDocument?.toJson(), 'position': position.toJson(), }, ); diff --git a/packages/devtools_app/lib/src/standalone_ui/ide_shared/property_editor/property_editor_controller.dart b/packages/devtools_app/lib/src/standalone_ui/ide_shared/property_editor/property_editor_controller.dart index ebb1280b68e..1c991ea1568 100644 --- a/packages/devtools_app/lib/src/standalone_ui/ide_shared/property_editor/property_editor_controller.dart +++ b/packages/devtools_app/lib/src/standalone_ui/ide_shared/property_editor/property_editor_controller.dart @@ -27,6 +27,10 @@ class PropertyEditorController extends DisposableController editorClient.activeLocationChangedStream.listen((event) async { final textDocument = event.textDocument; final cursorPosition = event.selections.first.active; + // Don't do anything if the text document is null. + if (textDocument == null) { + return; + } // Don't do anything if the event corresponds to the current position. if (textDocument == _currentDocument && cursorPosition == _currentCursorPosition) { From c7cbe0eddbc9c311e12047d249b9d42b82124625 Mon Sep 17 00:00:00 2001 From: Elliott Brooks <21270878+elliette@users.noreply.github.com> Date: Thu, 16 Jan 2025 16:42:13 -0800 Subject: [PATCH 2/3] Undo changes to getEditableArguments request --- .../devtools_app/lib/src/shared/editor/editor_client.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/devtools_app/lib/src/shared/editor/editor_client.dart b/packages/devtools_app/lib/src/shared/editor/editor_client.dart index 5e75b83b265..196bb03b99c 100644 --- a/packages/devtools_app/lib/src/shared/editor/editor_client.dart +++ b/packages/devtools_app/lib/src/shared/editor/editor_client.dart @@ -232,14 +232,14 @@ class EditorClient extends DisposableController /// Gets the editable arguments from the Analysis Server. Future getEditableArguments({ - required TextDocument? textDocument, + required TextDocument textDocument, required CursorPosition position, }) async { final response = await _callLspApi( LspMethod.editableArguments, params: { 'type': 'Object', // This is required by DTD. - 'textDocument': textDocument?.toJson(), + 'textDocument': textDocument.toJson(), 'position': position.toJson(), }, ); From aa4febb291a980781428b8ad62e77ec9fa7709aa Mon Sep 17 00:00:00 2001 From: Elliott Brooks <21270878+elliette@users.noreply.github.com> Date: Thu, 16 Jan 2025 16:45:23 -0800 Subject: [PATCH 3/3] Make text document version nullable as well --- packages/devtools_app/lib/src/shared/editor/api_classes.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/devtools_app/lib/src/shared/editor/api_classes.dart b/packages/devtools_app/lib/src/shared/editor/api_classes.dart index 19d55432885..aaaea3ba0f7 100644 --- a/packages/devtools_app/lib/src/shared/editor/api_classes.dart +++ b/packages/devtools_app/lib/src/shared/editor/api_classes.dart @@ -341,11 +341,11 @@ class TextDocument with Serializable { TextDocument.fromJson(Map map) : this( uriAsString: map[Field.uri] as String, - version: map[Field.version] as int, + version: map[Field.version] as int?, ); final String uriAsString; - final int version; + final int? version; @override Map toJson() => {