[analysis_server] Base, interface, and final class and mixin semantic highlighting. Change-Id: I7262dd6d12787b1cf3f2a0ee6873273f3455423d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/280076 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Kallen Tu <kallentu@google.com>
diff --git a/pkg/analysis_server/lib/src/computer/computer_highlights.dart b/pkg/analysis_server/lib/src/computer/computer_highlights.dart index 49a378e..ad3a4c4 100644 --- a/pkg/analysis_server/lib/src/computer/computer_highlights.dart +++ b/pkg/analysis_server/lib/src/computer/computer_highlights.dart
@@ -690,6 +690,10 @@ computer._addRegion_token( node.abstractKeyword, HighlightRegionType.BUILT_IN); computer._addRegion_token(node.sealedKeyword, HighlightRegionType.BUILT_IN); + computer._addRegion_token(node.baseKeyword, HighlightRegionType.BUILT_IN); + computer._addRegion_token( + node.interfaceKeyword, HighlightRegionType.BUILT_IN); + computer._addRegion_token(node.finalKeyword, HighlightRegionType.BUILT_IN); computer._addRegion_token(node.mixinKeyword, HighlightRegionType.BUILT_IN); computer._addRegion_token(node.classKeyword, HighlightRegionType.KEYWORD); computer._addRegion_token(node.name, HighlightRegionType.CLASS); @@ -701,6 +705,10 @@ computer._addRegion_token( node.abstractKeyword, HighlightRegionType.BUILT_IN); computer._addRegion_token(node.sealedKeyword, HighlightRegionType.BUILT_IN); + computer._addRegion_token(node.baseKeyword, HighlightRegionType.BUILT_IN); + computer._addRegion_token( + node.interfaceKeyword, HighlightRegionType.BUILT_IN); + computer._addRegion_token(node.finalKeyword, HighlightRegionType.BUILT_IN); computer._addRegion_token(node.mixinKeyword, HighlightRegionType.BUILT_IN); super.visitClassTypeAlias(node); } @@ -1127,6 +1135,10 @@ @override void visitMixinDeclaration(MixinDeclaration node) { computer._addRegion_token(node.sealedKeyword, HighlightRegionType.BUILT_IN); + computer._addRegion_token(node.baseKeyword, HighlightRegionType.BUILT_IN); + computer._addRegion_token( + node.interfaceKeyword, HighlightRegionType.BUILT_IN); + computer._addRegion_token(node.finalKeyword, HighlightRegionType.BUILT_IN); computer._addRegion_token(node.mixinKeyword, HighlightRegionType.BUILT_IN); super.visitMixinDeclaration(node); }
diff --git a/pkg/analysis_server/test/analysis/notification_highlights2_test.dart b/pkg/analysis_server/test/analysis/notification_highlights2_test.dart index a7893c3..2417e3e 100644 --- a/pkg/analysis_server/test/analysis/notification_highlights2_test.dart +++ b/pkg/analysis_server/test/analysis/notification_highlights2_test.dart
@@ -173,6 +173,22 @@ assertHasRegion(HighlightRegionType.KEYWORD, 'in'); } + Future<void> test_BUILT_IN_base() async { + addTestFile(''' +base class A {} +base mixin M {} +base class B = Object with M; +void f() { + var base = 42; +} +'''); + await prepareHighlights(); + assertHasRegion(HighlightRegionType.BUILT_IN, 'base class A'); + assertHasRegion(HighlightRegionType.BUILT_IN, 'base mixin M'); + assertHasRegion(HighlightRegionType.BUILT_IN, 'base class B'); + assertNoRegion(HighlightRegionType.BUILT_IN, 'base = 42'); + } + Future<void> test_BUILT_IN_deferred() async { addTestFile(''' import 'dart:math' deferred as math; @@ -225,6 +241,22 @@ assertNoRegion(HighlightRegionType.BUILT_IN, 'factory = 42'); } + Future<void> test_BUILT_IN_final() async { + addTestFile(''' +final class A {} +final mixin M {} +final class B = Object with M; +void f() { + var final = 42; +} +'''); + await prepareHighlights(); + assertHasRegion(HighlightRegionType.BUILT_IN, 'final class A'); + assertHasRegion(HighlightRegionType.BUILT_IN, 'final mixin M'); + assertHasRegion(HighlightRegionType.BUILT_IN, 'final class B'); + assertNoRegion(HighlightRegionType.BUILT_IN, 'final = 42'); + } + Future<void> test_BUILT_IN_Function() async { addTestFile(''' typedef F = void Function(); @@ -286,6 +318,22 @@ assertNoRegion(HighlightRegionType.BUILT_IN, 'import = 42'); } + Future<void> test_BUILT_IN_interface() async { + addTestFile(''' +interface class A {} +interface mixin M {} +interface class B = Object with M; +void f() { + var interface = 42; +} +'''); + await prepareHighlights(); + assertHasRegion(HighlightRegionType.BUILT_IN, 'interface class A'); + assertHasRegion(HighlightRegionType.BUILT_IN, 'interface mixin M'); + assertHasRegion(HighlightRegionType.BUILT_IN, 'interface class B'); + assertNoRegion(HighlightRegionType.BUILT_IN, 'interface = 42'); + } + Future<void> test_BUILT_IN_library() async { addTestFile(''' library lib;