[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;