diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_hover.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_hover.dart index 2ae6ef9d945..ae397b82fcd 100644 --- a/pkg/analysis_server/lib/src/lsp/handlers/handler_hover.dart +++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_hover.dart @@ -87,19 +87,23 @@ class HoverHandler ..writeln(); } - var containingClassDescription = hover.containingClassDescription; - if (containingClassDescription != null && - containingClassDescription.isNotEmpty) { - content - ..writeln('Declared in: `$containingClassDescription`') - ..writeln(); + var declaredInDescription = StringBuffer(); + if (hover.containingClassDescription?.isNotEmpty ?? false) { + declaredInDescription + ..write(' in `') + ..write(hover.containingClassDescription) + ..write('`'); + } + if (hover.containingLibraryName?.isNotEmpty ?? false) { + declaredInDescription + ..write(' in _') + ..write(hover.containingLibraryName) + ..write('_'); } - // Source library. - var containingLibraryName = hover.containingLibraryName; - if (containingLibraryName != null && containingLibraryName.isNotEmpty) { + if (declaredInDescription.isNotEmpty) { content - ..writeln('*$containingLibraryName*') + ..writeln('Declared$declaredInDescription.') ..writeln(); } diff --git a/pkg/analysis_server/test/integration/lsp/handle_test.dart b/pkg/analysis_server/test/integration/lsp/handle_test.dart index aab81220352..ec404ed48dd 100644 --- a/pkg/analysis_server/test/integration/lsp/handle_test.dart +++ b/pkg/analysis_server/test/integration/lsp/handle_test.dart @@ -94,7 +94,7 @@ class [!A^aa!] {} ```dart class Aaa ``` -*package:test/main.dart* +Declared in _package:test/main.dart_. --- This is my class. @@ -116,7 +116,7 @@ class [!A^aa!] {} ```dart class Aaa ``` -*package:test/main.dart* +Declared in _package:test/main.dart_. --- This is my class.'''; diff --git a/pkg/analysis_server/test/lsp/hover_test.dart b/pkg/analysis_server/test/lsp/hover_test.dart index aeeec88f4a2..4304776a53d 100644 --- a/pkg/analysis_server/test/lsp/hover_test.dart +++ b/pkg/analysis_server/test/lsp/hover_test.dart @@ -163,6 +163,54 @@ class HoverTest extends AbstractLspAnalysisServerTest { Future test_dartDocPreference_unset() => assertDocumentation(null, includesSummary: true, includesFull: true); + Future test_declaredIn_classAndLibrary() async { + var content = ''' +class A { + String? [!a^!]; +} +'''; + var expected = ''' +```dart +String? a +``` +Type: `String?` + +Declared in `A` in _package:test/main.dart_.'''; + await assertStringContents(content, equals(expected)); + } + + Future test_declaredIn_emptyClassName() async { + failTestOnErrorDiagnostic = false; + + var content = ''' +class { + String? [!a^!]; +} +'''; + var expected = ''' +```dart +String? a +``` +Type: `String?` + +Declared in _package:test/main.dart_.'''; + await assertStringContents(content, equals(expected)); + } + + Future test_declaredIn_onlyLibrary() async { + var content = ''' +class A {} + +[!A^!]? a; +'''; + var expected = ''' +```dart +class A +``` +Declared in _package:test/main.dart_.'''; + await assertStringContents(content, equals(expected)); + } + Future test_dotShorthand_constructor_named() async { var content = ''' class A { @@ -176,9 +224,7 @@ void f() { ```dart (new) A A.named() ``` -Declared in: `A` - -*package:test/main.dart*'''; +Declared in `A` in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -195,9 +241,7 @@ void f() { ```dart (const) A A.named() ``` -Declared in: `A` - -*package:test/main.dart*'''; +Declared in `A` in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -212,9 +256,7 @@ void f() { ```dart (new) A A() ``` -Declared in: `A` - -*package:test/main.dart*'''; +Declared in `A` in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -231,9 +273,7 @@ void f() { ```dart (const) A A() ``` -Declared in: `A` - -*package:test/main.dart*'''; +Declared in `A` in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -252,9 +292,7 @@ A method() ``` Type: `A Function()` -Declared in: `A` - -*package:test/main.dart*'''; +Declared in `A` in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -278,9 +316,7 @@ B method() ``` Type: `B Function()` -Declared in: `A` - -*package:test/main.dart*'''; +Declared in `A` in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -299,9 +335,7 @@ A get field ``` Type: `A` -Declared in: `A` - -*package:test/main.dart*'''; +Declared in `A` in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -318,9 +352,7 @@ A get one ``` Type: `A` -Declared in: `A` - -*package:test/main.dart*'''; +Declared in `A` in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -339,9 +371,7 @@ A get getter ``` Type: `A` -Declared in: `A` - -*package:test/main.dart*'''; +Declared in `A` in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -359,9 +389,7 @@ MyEnum get one ``` Type: `MyEnum` -Declared in: `MyEnum` - -*package:test/main.dart*'''; +Declared in `MyEnum` in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -379,9 +407,7 @@ List get values ``` Type: `List` -Declared in: `MyEnum` - -*package:test/main.dart*'''; +Declared in `MyEnum` in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -398,9 +424,7 @@ int get _ ``` Type: `int` -Declared in: `A` - -*package:test/main.dart*'''; +Declared in `A` in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -462,7 +486,7 @@ import 'dart:core' as [!l^ib!]; ```dart import 'dart:core' as lib; ``` -*package:test/main.dart*'''; +Declared in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -476,7 +500,7 @@ const bug = 'bug'; ```dart import '' as lib; ``` -*package:test/main.dart*'''; +Declared in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -494,7 +518,7 @@ import 'lib.dart' as [!l^ib!]; import 'dart:math' as lib; import 'lib.dart' as lib; ``` -*package:test/main.dart*'''; +Declared in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -510,7 +534,7 @@ import 'package:test/lib.dart' as [!l^ib!]; ```dart import 'package:test/lib.dart' as lib; ``` -*package:test/main.dart*'''; +Declared in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -524,7 +548,7 @@ import 'lib.dart' as [!l^ib!]; ```dart import 'lib.dart' as lib; ``` -*package:test/main.dart*'''; +Declared in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -542,7 +566,7 @@ import 'lib.dart' as lib; ```dart import 'lib.dart' as lib; ``` -*package:test/main.dart*'''; +Declared in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -582,7 +606,7 @@ String? abc ``` Type: `String?` -*package:test/main.dart* +Declared in _package:test/main.dart_. --- This is a string. @@ -648,9 +672,7 @@ int _() ``` Type: `int Function()` -Declared in: `A` - -*package:test/main.dart*'''; +Declared in `A` in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -688,7 +710,7 @@ String? abc ``` Type: `String?` -*package:test/main.dart* +Declared in _package:test/main.dart_. '''.trim(); await assertStringContents(content, equals(expectedHoverContent)); @@ -939,9 +961,7 @@ String? get myField ``` Type: `String?` -Declared in: `A` - -*package:test/main.dart* +Declared in `A` in _package:test/main.dart_. '''.trim(); await assertStringContents(content, equals(expectedHoverContent)); @@ -963,9 +983,7 @@ String get myGetter ``` Type: `String` -Declared in: `A` - -*package:test/main.dart* +Declared in `A` in _package:test/main.dart_. '''.trim(); await assertStringContents(content, equals(expectedHoverContent)); @@ -988,9 +1006,7 @@ String? get myGetter ``` Type: `String?` -Declared in: `A` - -*package:test/main.dart* +Declared in `A` in _package:test/main.dart_. '''.trim(); await assertStringContents(content, equals(expectedHoverContent)); @@ -1014,9 +1030,7 @@ set mySetter(String value) ``` Type: `String` -Declared in: `A` - -*package:test/main.dart* +Declared in `A` in _package:test/main.dart_. '''.trim(); await assertStringContents(content, equals(expectedHoverContent)); @@ -1040,9 +1054,7 @@ set mySetter(String value) ``` Type: `String` -Declared in: `A` - -*package:test/main.dart* +Declared in `A` in _package:test/main.dart_. '''.trim(); await assertStringContents(content, equals(expectedHoverContent)); @@ -1060,7 +1072,7 @@ String? abc ``` Type: `String?` -*package:test/main.dart* +Declared in _package:test/main.dart_. '''.trim(); await assertStringContents(content, equals(expectedHoverContent)); @@ -1101,7 +1113,7 @@ String? abc ``` Type: `String?` -*package:test/main.dart* +Declared in _package:test/main.dart_. --- This is a string.'''; @@ -1119,7 +1131,7 @@ int _() ``` Type: `int Function()` -*package:test/main.dart*'''; +Declared in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -1134,7 +1146,7 @@ int get _ ``` Type: `int` -*package:test/main.dart*'''; +Declared in _package:test/main.dart_.'''; await assertStringContents(content, equals(expected)); } @@ -1161,7 +1173,7 @@ class C<[!^_!]> {} ```dart library package:test/main.dart ``` -*package:test/main.dart* +Declared in _package:test/main.dart_. --- This is a string.'''; @@ -1179,7 +1191,7 @@ String? abc ``` Type: `String?` -*package:test/main.dart* +Declared in _package:test/main.dart_. --- This is a string.'''; diff --git a/pkg/analysis_server/test/lsp_over_legacy/hover_test.dart b/pkg/analysis_server/test/lsp_over_legacy/hover_test.dart index 563bb1597a0..a8b171a97b5 100644 --- a/pkg/analysis_server/test/lsp_over_legacy/hover_test.dart +++ b/pkg/analysis_server/test/lsp_over_legacy/hover_test.dart @@ -40,7 +40,7 @@ class [!A^aa!] {} ```dart class Aaa ``` -*package:test/test.dart* +Declared in _package:test/test.dart_. --- This is my class.