[DAS] Fixes hover for try/catch error/stack
Fixes: https://github.com/dart-lang/sdk/issues/55907
Change-Id: I385483eaf5cba4fbac10b402cdb87ace51e9b020
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/456400
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Auto-Submit: Felipe Morschel <git@fmorschel.dev>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
diff --git a/pkg/analysis_server/lib/src/computer/computer_hover.dart b/pkg/analysis_server/lib/src/computer/computer_hover.dart
index 283944e..1030b96 100644
--- a/pkg/analysis_server/lib/src/computer/computer_hover.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_hover.dart
@@ -46,6 +46,7 @@
}
if (node is CompilationUnitMember ||
+ node is CatchClauseParameter ||
node is Expression ||
node is FormalParameter ||
node is MethodDeclaration ||
@@ -188,6 +189,7 @@
/// Returns `null` if there is no valid entity for this hover.
SyntacticEntity? _locationEntity(AstNode node) {
return switch (node) {
+ CatchClauseParameter() => node.name,
NamedCompilationUnitMember() => node.name,
Expression() => node,
ExtensionDeclaration() => node.name,
diff --git a/pkg/analysis_server/test/lsp/hover_test.dart b/pkg/analysis_server/test/lsp/hover_test.dart
index 9ff3e39..ab4f87d 100644
--- a/pkg/analysis_server/test/lsp/hover_test.dart
+++ b/pkg/analysis_server/test/lsp/hover_test.dart
@@ -1244,6 +1244,34 @@
await assertStringContents(content, equals(expected));
}
+ Future<void> test_tryCatch_error() async {
+ var content = '''
+void foo() {
+ try {} on Exception catch ([!err^or!], stack) {}
+}
+''';
+ var expected = '''
+```dart
+Exception error
+```
+Type: `Exception`''';
+ await assertStringContents(content, equals(expected));
+ }
+
+ Future<void> test_tryCatch_stack() async {
+ var content = '''
+void foo() {
+ try {} on Exception catch (error, [!stac^k!]) {}
+}
+''';
+ var expected = '''
+```dart
+StackTrace stack
+```
+Type: `StackTrace`''';
+ await assertStringContents(content, equals(expected));
+ }
+
Future<void> test_typeParameter() async {
var content = '''
class C<[!^T!]> {}