Switch LSP formatter to not fetch resolved ASTs that aren't used
Change-Id: Id9ec4b9977a6e721085aae4b9f81645e41fc7893
Reviewed-on: https://dart-review.googlesource.com/c/89505
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_format_on_type.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_format_on_type.dart
index a2a1218..37d6a9d 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_format_on_type.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_format_on_type.dart
@@ -6,11 +6,11 @@
import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/src/lsp/constants.dart';
import 'package:analysis_server/src/lsp/handlers/handlers.dart';
import 'package:analysis_server/src/lsp/lsp_analysis_server.dart';
import 'package:analysis_server/src/lsp/mapping.dart';
import 'package:analysis_server/src/lsp/source_edits.dart';
-import 'package:analyzer/dart/analysis/results.dart';
class FormatOnTypeHandler
extends MessageHandler<DocumentOnTypeFormattingParams, List<TextEdit>> {
@@ -21,17 +21,19 @@
DocumentOnTypeFormattingParams convertParams(Map<String, dynamic> json) =>
DocumentOnTypeFormattingParams.fromJson(json);
- ErrorOr<List<TextEdit>> formatFile(String path, ResolvedUnitResult unit) {
- final unformattedSource =
- server.resourceProvider.getFile(path).readAsStringSync();
+ ErrorOr<List<TextEdit>> formatFile(String path) {
+ final file = server.resourceProvider.getFile(path);
+ if (!file.exists) {
+ return error(ServerErrorCodes.InvalidFilePath, 'Invalid file path', path);
+ }
+ final unformattedSource = file.readAsStringSync();
return success(generateEditsForFormatting(unformattedSource));
}
Future<ErrorOr<List<TextEdit>>> handle(
DocumentOnTypeFormattingParams params) async {
final path = pathOfDoc(params.textDocument);
- final unit = await path.mapResult(requireResolvedUnit);
- return unit.mapResult((unit) => formatFile(path.result, unit));
+ return path.mapResult((path) => formatFile(path));
}
}
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_formatting.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_formatting.dart
index 0d4cb66..b4e0b60 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_formatting.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_formatting.dart
@@ -6,11 +6,11 @@
import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/src/lsp/constants.dart';
import 'package:analysis_server/src/lsp/handlers/handlers.dart';
import 'package:analysis_server/src/lsp/lsp_analysis_server.dart';
import 'package:analysis_server/src/lsp/mapping.dart';
import 'package:analysis_server/src/lsp/source_edits.dart';
-import 'package:analyzer/dart/analysis/results.dart';
class FormattingHandler
extends MessageHandler<DocumentFormattingParams, List<TextEdit>> {
@@ -21,17 +21,19 @@
DocumentFormattingParams convertParams(Map<String, dynamic> json) =>
DocumentFormattingParams.fromJson(json);
- ErrorOr<List<TextEdit>> formatFile(String path, ResolvedUnitResult unit) {
- final unformattedSource =
- server.resourceProvider.getFile(path).readAsStringSync();
+ ErrorOr<List<TextEdit>> formatFile(String path) {
+ final file = server.resourceProvider.getFile(path);
+ if (!file.exists) {
+ return error(ServerErrorCodes.InvalidFilePath, 'Invalid file path', path);
+ }
+ final unformattedSource = file.readAsStringSync();
return success(generateEditsForFormatting(unformattedSource));
}
Future<ErrorOr<List<TextEdit>>> handle(
DocumentFormattingParams params) async {
final path = pathOfDoc(params.textDocument);
- final unit = await path.mapResult(requireResolvedUnit);
- return unit.mapResult((unit) => formatFile(path.result, unit));
+ return path.mapResult((path) => formatFile(path));
}
}