Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(119)

Side by Side Diff: pkg/analysis_server/test/analysis/notification_highlights_test.dart

Issue 1227143003: Update Analysis Server highlight API and implementation. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Fixes for review comments. Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library test.analysis.notification.highlights; 5 library test.analysis.notification.highlights;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analysis_server/src/constants.dart'; 9 import 'package:analysis_server/src/constants.dart';
10 import 'package:analysis_server/src/protocol.dart'; 10 import 'package:analysis_server/src/protocol.dart';
(...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 test_DIRECTIVE_partOf() { 562 test_DIRECTIVE_partOf() {
563 addTestFile(''' 563 addTestFile('''
564 part of lib; 564 part of lib;
565 '''); 565 ''');
566 _addLibraryForTestPart(); 566 _addLibraryForTestPart();
567 return prepareHighlights().then((_) { 567 return prepareHighlights().then((_) {
568 assertHasStringRegion(HighlightRegionType.DIRECTIVE, "part of lib;"); 568 assertHasStringRegion(HighlightRegionType.DIRECTIVE, "part of lib;");
569 }); 569 });
570 } 570 }
571 571
572 test_DYNAMIC_TYPE() { 572 test_DYNAMIC_VARIABLE_field() {
573 addTestFile('''
574 class A {
575 var f;
576 m() {
577 f = 1;
578 }
579 }
580 ''');
581 return prepareHighlights().then((_) {
582 assertHasRegion(HighlightRegionType.INSTANCE_FIELD_DECLARATION, 'f;');
583 assertHasRegion(HighlightRegionType.INSTANCE_FIELD_REFERENCE, 'f = 1');
584 });
585 }
586
587 test_DYNAMIC_VARIABLE_local() {
573 addTestFile(''' 588 addTestFile('''
574 f() {} 589 f() {}
575 main(p) { 590 main(p) {
576 print(p); 591 print(p);
577 var v1 = f(); 592 var v1 = f();
578 int v2; 593 int v2;
579 var v3 = v2; 594 var v3 = v2;
580 } 595 }
581 '''); 596 ''');
582 return prepareHighlights().then((_) { 597 return prepareHighlights().then((_) {
583 assertHasRegion(HighlightRegionType.DYNAMIC_TYPE, 'p)'); 598 assertHasRegion(HighlightRegionType.DYNAMIC_VARIABLE, 'p)');
584 assertHasRegion(HighlightRegionType.DYNAMIC_TYPE, 'v1 ='); 599 assertHasRegion(HighlightRegionType.DYNAMIC_VARIABLE, 'v1 =');
585 assertNoRegion(HighlightRegionType.DYNAMIC_TYPE, 'v2;'); 600 assertNoRegion(HighlightRegionType.DYNAMIC_VARIABLE, 'v2;');
586 assertNoRegion(HighlightRegionType.DYNAMIC_TYPE, 'v3 ='); 601 assertNoRegion(HighlightRegionType.DYNAMIC_VARIABLE, 'v3 =');
587 }); 602 });
588 } 603 }
589 604
590 test_ENUM() { 605 test_ENUM() {
591 addTestFile(''' 606 addTestFile('''
592 enum MyEnum {A, B, C} 607 enum MyEnum {A, B, C}
593 MyEnum value; 608 MyEnum value;
594 '''); 609 ''');
595 return prepareHighlights().then((_) { 610 return prepareHighlights().then((_) {
596 assertHasRegion(HighlightRegionType.ENUM, 'MyEnum {'); 611 assertHasRegion(HighlightRegionType.ENUM, 'MyEnum {');
(...skipping 10 matching lines...) Expand all
607 } 622 }
608 '''); 623 ''');
609 return prepareHighlights().then((_) { 624 return prepareHighlights().then((_) {
610 assertHasRegion(HighlightRegionType.ENUM_CONSTANT, 'AAA, '); 625 assertHasRegion(HighlightRegionType.ENUM_CONSTANT, 'AAA, ');
611 assertHasRegion(HighlightRegionType.ENUM_CONSTANT, 'BBB}'); 626 assertHasRegion(HighlightRegionType.ENUM_CONSTANT, 'BBB}');
612 assertHasRegion(HighlightRegionType.ENUM_CONSTANT, 'AAA);'); 627 assertHasRegion(HighlightRegionType.ENUM_CONSTANT, 'AAA);');
613 assertHasRegion(HighlightRegionType.ENUM_CONSTANT, 'BBB);'); 628 assertHasRegion(HighlightRegionType.ENUM_CONSTANT, 'BBB);');
614 }); 629 });
615 } 630 }
616 631
617 test_FIELD() {
618 addTestFile('''
619 class A {
620 int aaa = 1;
621 int bbb = 2;
622 A([this.bbb = 3]);
623 }
624 main(A a) {
625 a.aaa = 4;
626 a.bbb = 5;
627 }
628 ''');
629 return prepareHighlights().then((_) {
630 assertHasRegion(HighlightRegionType.FIELD, 'aaa = 1');
631 assertHasRegion(HighlightRegionType.FIELD, 'bbb = 2');
632 assertHasRegion(HighlightRegionType.FIELD, 'bbb = 3');
633 assertHasRegion(HighlightRegionType.FIELD, 'aaa = 4');
634 assertHasRegion(HighlightRegionType.FIELD, 'bbb = 5');
635 });
636 }
637
638 test_FIELD_STATIC() {
639 addTestFile('''
640 class A {
641 static aaa = 1;
642 static get bbb => null;
643 static set ccc(x) {}
644 }
645 main() {
646 A.aaa = 2;
647 A.bbb;
648 A.ccc = 3;
649 }
650 ''');
651 return prepareHighlights().then((_) {
652 assertHasRegion(HighlightRegionType.FIELD_STATIC, 'aaa = 1');
653 assertHasRegion(HighlightRegionType.FIELD_STATIC, 'aaa = 2');
654 assertHasRegion(HighlightRegionType.FIELD_STATIC, 'bbb;');
655 assertHasRegion(HighlightRegionType.FIELD_STATIC, 'ccc = 3');
656 });
657 }
658
659 test_FUNCTION() {
660 addTestFile('''
661 fff(p) {}
662 main() {
663 fff(42);
664 }
665 ''');
666 return prepareHighlights().then((_) {
667 assertHasRegion(HighlightRegionType.FUNCTION_DECLARATION, 'fff(p) {}');
668 assertHasRegion(HighlightRegionType.FUNCTION, 'fff(42)');
669 });
670 }
671
672 test_FUNCTION_TYPE_ALIAS() { 632 test_FUNCTION_TYPE_ALIAS() {
673 addTestFile(''' 633 addTestFile('''
674 typedef FFF(p); 634 typedef FFF(p);
675 main(FFF fff) { 635 main(FFF fff) {
676 } 636 }
677 '''); 637 ''');
678 return prepareHighlights().then((_) { 638 return prepareHighlights().then((_) {
679 assertHasRegion(HighlightRegionType.FUNCTION_TYPE_ALIAS, 'FFF(p)'); 639 assertHasRegion(HighlightRegionType.FUNCTION_TYPE_ALIAS, 'FFF(p)');
680 assertHasRegion(HighlightRegionType.FUNCTION_TYPE_ALIAS, 'FFF fff)'); 640 assertHasRegion(HighlightRegionType.FUNCTION_TYPE_ALIAS, 'FFF fff)');
681 }); 641 });
682 } 642 }
683 643
684 test_GETTER_DECLARATION() { 644 test_GETTER() {
685 addTestFile(''' 645 addTestFile('''
686 get aaa => null; 646 get aaa => null;
687 class A { 647 class A {
688 get bbb => null; 648 get bbb => null;
649 static get ccc => null;
689 } 650 }
690 main(A a) { 651 main(A a) {
691 aaa; 652 aaa;
692 a.bbb; 653 a.bbb;
654 A.ccc;
693 } 655 }
694 '''); 656 ''');
695 return prepareHighlights().then((_) { 657 return prepareHighlights().then((_) {
696 assertHasRegion(HighlightRegionType.GETTER_DECLARATION, 'aaa => null'); 658 assertHasRegion(
697 assertHasRegion(HighlightRegionType.GETTER_DECLARATION, 'bbb => null'); 659 HighlightRegionType.TOP_LEVEL_GETTER_DECLARATION, 'aaa => null');
698 assertHasRegion(HighlightRegionType.TOP_LEVEL_VARIABLE, 'aaa;'); 660 assertHasRegion(
699 assertHasRegion(HighlightRegionType.FIELD, 'bbb;'); 661 HighlightRegionType.INSTANCE_GETTER_DECLARATION, 'bbb => null');
662 assertHasRegion(
663 HighlightRegionType.STATIC_GETTER_DECLARATION, 'ccc => null');
664 assertHasRegion(HighlightRegionType.TOP_LEVEL_VARIABLE_REFERENCE, 'aaa;');
665 assertHasRegion(HighlightRegionType.INSTANCE_FIELD_REFERENCE, 'bbb;');
666 assertHasRegion(HighlightRegionType.STATIC_FIELD_REFERENCE, 'ccc;');
700 }); 667 });
701 } 668 }
702 669
703 test_IDENTIFIER_DEFAULT() { 670 test_IDENTIFIER_DEFAULT() {
704 addTestFile(''' 671 addTestFile('''
705 main() { 672 main() {
706 aaa = 42; 673 aaa = 42;
707 bbb(84); 674 bbb(84);
708 CCC ccc; 675 CCC ccc;
709 } 676 }
(...skipping 11 matching lines...) Expand all
721 main() { 688 main() {
722 ma.max(1, 2); 689 ma.max(1, 2);
723 } 690 }
724 '''); 691 ''');
725 return prepareHighlights().then((_) { 692 return prepareHighlights().then((_) {
726 assertHasRegion(HighlightRegionType.IMPORT_PREFIX, 'ma;'); 693 assertHasRegion(HighlightRegionType.IMPORT_PREFIX, 'ma;');
727 assertHasRegion(HighlightRegionType.IMPORT_PREFIX, 'ma.max'); 694 assertHasRegion(HighlightRegionType.IMPORT_PREFIX, 'ma.max');
728 }); 695 });
729 } 696 }
730 697
698 test_INSTANCE_FIELD() {
699 addTestFile('''
700 class A {
701 int aaa = 1;
702 int bbb = 2;
703 A([this.bbb = 3]);
704 }
705 main(A a) {
706 a.aaa = 4;
707 a.bbb = 5;
708 }
709 ''');
710 return prepareHighlights().then((_) {
711 assertHasRegion(
712 HighlightRegionType.INSTANCE_FIELD_DECLARATION, 'aaa = 1');
713 assertHasRegion(
714 HighlightRegionType.INSTANCE_FIELD_DECLARATION, 'bbb = 2');
715 assertHasRegion(HighlightRegionType.INSTANCE_FIELD_REFERENCE, 'bbb = 3');
716 assertHasRegion(HighlightRegionType.INSTANCE_FIELD_REFERENCE, 'aaa = 4');
717 assertHasRegion(HighlightRegionType.INSTANCE_FIELD_REFERENCE, 'bbb = 5');
718 });
719 }
720
731 test_KEYWORD() { 721 test_KEYWORD() {
732 addTestFile(''' 722 addTestFile('''
733 main() { 723 main() {
734 assert(true); 724 assert(true);
735 for (;;) break; 725 for (;;) break;
736 switch (0) { 726 switch (0) {
737 case 0: break; 727 case 0: break;
738 default: break; 728 default: break;
739 } 729 }
740 try {} catch (e) {} 730 try {} catch (e) {}
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
855 } 845 }
856 846
857 test_LITERAL_STRING() { 847 test_LITERAL_STRING() {
858 addTestFile('var V = "abc";'); 848 addTestFile('var V = "abc";');
859 return prepareHighlights().then((_) { 849 return prepareHighlights().then((_) {
860 assertHasRegion( 850 assertHasRegion(
861 HighlightRegionType.LITERAL_STRING, '"abc";', '"abc"'.length); 851 HighlightRegionType.LITERAL_STRING, '"abc";', '"abc"'.length);
862 }); 852 });
863 } 853 }
864 854
855 test_LOCAL_FUNCTION() {
856 addTestFile('''
857 main() {
858 fff() {}
859 fff();
860 fff;
861 }
862 ''');
863 return prepareHighlights().then((_) {
864 assertHasRegion(
865 HighlightRegionType.LOCAL_FUNCTION_DECLARATION, 'fff() {}');
866 assertHasRegion(HighlightRegionType.LOCAL_FUNCTION_REFERENCE, 'fff();');
867 assertHasRegion(HighlightRegionType.LOCAL_FUNCTION_REFERENCE, 'fff;');
868 });
869 }
870
865 test_LOCAL_VARIABLE() { 871 test_LOCAL_VARIABLE() {
866 addTestFile(''' 872 addTestFile('''
867 main() { 873 main() {
868 int vvv = 0; 874 int vvv = 0;
869 vvv; 875 vvv;
870 vvv = 1; 876 vvv = 1;
871 } 877 }
872 '''); 878 ''');
873 return prepareHighlights().then((_) { 879 return prepareHighlights().then((_) {
874 assertHasRegion( 880 assertHasRegion(
875 HighlightRegionType.LOCAL_VARIABLE_DECLARATION, 'vvv = 0'); 881 HighlightRegionType.LOCAL_VARIABLE_DECLARATION, 'vvv = 0');
876 assertHasRegion(HighlightRegionType.LOCAL_VARIABLE, 'vvv;'); 882 assertHasRegion(HighlightRegionType.LOCAL_VARIABLE_REFERENCE, 'vvv;');
877 assertHasRegion(HighlightRegionType.LOCAL_VARIABLE, 'vvv = 1;'); 883 assertHasRegion(HighlightRegionType.LOCAL_VARIABLE_REFERENCE, 'vvv = 1;');
878 }); 884 });
879 } 885 }
880 886
881 test_METHOD() { 887 test_METHOD() {
882 addTestFile(''' 888 addTestFile('''
883 class A { 889 class A {
884 aaa() {} 890 aaa() {}
885 static bbb() {} 891 static bbb() {}
886 } 892 }
887 main(A a) { 893 main(A a) {
888 a.aaa(); 894 a.aaa();
889 a.aaa; 895 a.aaa;
890 A.bbb(); 896 A.bbb();
891 A.bbb; 897 A.bbb;
892 } 898 }
893 '''); 899 ''');
894 return prepareHighlights().then((_) { 900 return prepareHighlights().then((_) {
895 assertHasRegion(HighlightRegionType.METHOD_DECLARATION, 'aaa() {}');
896 assertHasRegion( 901 assertHasRegion(
897 HighlightRegionType.METHOD_DECLARATION_STATIC, 'bbb() {}'); 902 HighlightRegionType.INSTANCE_METHOD_DECLARATION, 'aaa() {}');
898 assertHasRegion(HighlightRegionType.METHOD, 'aaa();'); 903 assertHasRegion(
899 assertHasRegion(HighlightRegionType.METHOD, 'aaa;'); 904 HighlightRegionType.STATIC_METHOD_DECLARATION, 'bbb() {}');
900 assertHasRegion(HighlightRegionType.METHOD_STATIC, 'bbb();'); 905 assertHasRegion(HighlightRegionType.INSTANCE_METHOD_REFERENCE, 'aaa();');
901 assertHasRegion(HighlightRegionType.METHOD_STATIC, 'bbb;'); 906 assertHasRegion(HighlightRegionType.INSTANCE_METHOD_REFERENCE, 'aaa;');
907 assertHasRegion(HighlightRegionType.STATIC_METHOD_REFERENCE, 'bbb();');
908 assertHasRegion(HighlightRegionType.STATIC_METHOD_REFERENCE, 'bbb;');
902 }); 909 });
903 } 910 }
904 911
905 test_METHOD_bestType() { 912 test_METHOD_bestType() {
906 addTestFile(''' 913 addTestFile('''
907 main(p) { 914 main(p) {
908 if (p is List) { 915 if (p is List) {
909 p.add(null); 916 p.add(null);
910 } 917 }
911 } 918 }
912 '''); 919 ''');
913 return prepareHighlights().then((_) { 920 return prepareHighlights().then((_) {
914 assertHasRegion(HighlightRegionType.METHOD, 'add(null)'); 921 assertHasRegion(
922 HighlightRegionType.INSTANCE_METHOD_REFERENCE, 'add(null)');
915 }); 923 });
916 } 924 }
917 925
918 test_PARAMETER() { 926 test_PARAMETER() {
919 addTestFile(''' 927 addTestFile('''
920 main(int p) { 928 main(int p) {
921 p; 929 p;
922 p = 42; 930 p = 42;
923 } 931 }
924 '''); 932 ''');
925 return prepareHighlights().then((_) { 933 return prepareHighlights().then((_) {
926 assertHasRegion(HighlightRegionType.PARAMETER, 'p) {'); 934 assertHasRegion(HighlightRegionType.PARAMETER_DECLARATION, 'p) {');
927 assertHasRegion(HighlightRegionType.PARAMETER, 'p;'); 935 assertHasRegion(HighlightRegionType.PARAMETER_REFERENCE, 'p;');
928 assertHasRegion(HighlightRegionType.PARAMETER, 'p = 42'); 936 assertHasRegion(HighlightRegionType.PARAMETER_REFERENCE, 'p = 42');
929 }); 937 });
930 } 938 }
931 939
932 test_SETTER_DECLARATION() { 940 test_SETTER_DECLARATION() {
933 addTestFile(''' 941 addTestFile('''
934 set aaa(x) {} 942 set aaa(x) {}
935 class A { 943 class A {
936 set bbb(x) {} 944 set bbb(x) {}
945 static set ccc(x) {}
937 } 946 }
938 main(A a) { 947 main(A a) {
939 aaa = 1; 948 aaa = 1;
940 a.bbb = 2; 949 a.bbb = 2;
950 A.ccc = 3;
941 } 951 }
942 '''); 952 ''');
943 return prepareHighlights().then((_) { 953 return prepareHighlights().then((_) {
944 assertHasRegion(HighlightRegionType.SETTER_DECLARATION, 'aaa(x)'); 954 assertHasRegion(
945 assertHasRegion(HighlightRegionType.SETTER_DECLARATION, 'bbb(x)'); 955 HighlightRegionType.TOP_LEVEL_SETTER_DECLARATION, 'aaa(x)');
946 assertHasRegion(HighlightRegionType.TOP_LEVEL_VARIABLE, 'aaa = 1'); 956 assertHasRegion(
947 assertHasRegion(HighlightRegionType.FIELD, 'bbb = 2'); 957 HighlightRegionType.INSTANCE_SETTER_DECLARATION, 'bbb(x)');
958 assertHasRegion(HighlightRegionType.STATIC_SETTER_DECLARATION, 'ccc(x)');
959 assertHasRegion(
960 HighlightRegionType.TOP_LEVEL_VARIABLE_REFERENCE, 'aaa = 1');
961 assertHasRegion(HighlightRegionType.INSTANCE_FIELD_REFERENCE, 'bbb = 2');
962 assertHasRegion(HighlightRegionType.STATIC_FIELD_REFERENCE, 'ccc = 3');
948 }); 963 });
949 } 964 }
950 965
966 test_STATIC_FIELD() {
967 addTestFile('''
968 class A {
969 static aaa = 1;
970 static get bbb => null;
971 static set ccc(x) {}
972 }
973 main() {
974 A.aaa = 2;
975 A.bbb;
976 A.ccc = 3;
977 }
978 ''');
979 return prepareHighlights().then((_) {
980 assertHasRegion(HighlightRegionType.STATIC_FIELD_DECLARATION, 'aaa = 1');
981 assertHasRegion(HighlightRegionType.STATIC_FIELD_REFERENCE, 'aaa = 2');
982 assertHasRegion(HighlightRegionType.STATIC_FIELD_REFERENCE, 'bbb;');
983 assertHasRegion(HighlightRegionType.STATIC_FIELD_REFERENCE, 'ccc = 3');
984 });
985 }
986
987 test_TOP_LEVEL_FUNCTION() {
988 addTestFile('''
989 fff(p) {}
990 main() {
991 fff(42);
992 }
993 ''');
994 return prepareHighlights().then((_) {
995 assertHasRegion(
996 HighlightRegionType.TOP_LEVEL_FUNCTION_DECLARATION, 'fff(p) {}');
997 assertHasRegion(
998 HighlightRegionType.TOP_LEVEL_FUNCTION_REFERENCE, 'fff(42)');
999 });
1000 }
1001
951 test_TOP_LEVEL_VARIABLE() { 1002 test_TOP_LEVEL_VARIABLE() {
952 addTestFile(''' 1003 addTestFile('''
953 const VVV = 0; 1004 const VVV = 0;
954 @VVV // annotation 1005 @VVV // annotation
955 main() { 1006 main() {
956 print(VVV); 1007 print(VVV);
957 VVV = 1; 1008 VVV = 1;
958 } 1009 }
959 '''); 1010 ''');
960 return prepareHighlights().then((_) { 1011 return prepareHighlights().then((_) {
961 assertHasRegion(HighlightRegionType.TOP_LEVEL_VARIABLE, 'VVV = 0');
962 assertHasRegion( 1012 assertHasRegion(
963 HighlightRegionType.TOP_LEVEL_VARIABLE, 'VVV // annotation'); 1013 HighlightRegionType.TOP_LEVEL_VARIABLE_DECLARATION, 'VVV = 0');
964 assertHasRegion(HighlightRegionType.TOP_LEVEL_VARIABLE, 'VVV);'); 1014 assertHasRegion(HighlightRegionType.TOP_LEVEL_VARIABLE_REFERENCE,
965 assertHasRegion(HighlightRegionType.TOP_LEVEL_VARIABLE, 'VVV = 1'); 1015 'VVV // annotation');
1016 assertHasRegion(
1017 HighlightRegionType.TOP_LEVEL_VARIABLE_REFERENCE, 'VVV);');
1018 assertHasRegion(
1019 HighlightRegionType.TOP_LEVEL_VARIABLE_REFERENCE, 'VVV = 1');
966 }); 1020 });
967 } 1021 }
968 1022
969 test_TYPE_NAME_DYNAMIC() { 1023 test_TYPE_NAME_DYNAMIC() {
970 addTestFile(''' 1024 addTestFile('''
971 dynamic main() { 1025 dynamic main() {
972 dynamic = 42; 1026 dynamic = 42;
973 } 1027 }
974 '''); 1028 ''');
975 return prepareHighlights().then((_) { 1029 return prepareHighlights().then((_) {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1012 void test_toString() { 1066 void test_toString() {
1013 expect(HighlightRegionType.CLASS.toString(), 'HighlightRegionType.CLASS'); 1067 expect(HighlightRegionType.CLASS.toString(), 'HighlightRegionType.CLASS');
1014 } 1068 }
1015 1069
1016 void test_valueOf_unknown() { 1070 void test_valueOf_unknown() {
1017 expect(() { 1071 expect(() {
1018 new HighlightRegionType('no-such-type'); 1072 new HighlightRegionType('no-such-type');
1019 }, throws); 1073 }, throws);
1020 } 1074 }
1021 } 1075 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698