aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide/src/completion/presentation.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_ide/src/completion/presentation.rs')
-rw-r--r--crates/ra_ide/src/completion/presentation.rs207
1 files changed, 101 insertions, 106 deletions
diff --git a/crates/ra_ide/src/completion/presentation.rs b/crates/ra_ide/src/completion/presentation.rs
index 6a6ddc7bd..7633cd7fd 100644
--- a/crates/ra_ide/src/completion/presentation.rs
+++ b/crates/ra_ide/src/completion/presentation.rs
@@ -15,12 +15,7 @@ use crate::{
15}; 15};
16 16
17impl Completions { 17impl Completions {
18 pub(crate) fn add_field( 18 pub(crate) fn add_field(&mut self, ctx: &CompletionContext, field: hir::Field, ty: &Type) {
19 &mut self,
20 ctx: &CompletionContext,
21 field: hir::StructField,
22 ty: &Type,
23 ) {
24 let is_deprecated = is_deprecated(field, ctx.db); 19 let is_deprecated = is_deprecated(field, ctx.db);
25 let ty = ty.display(ctx.db).to_string(); 20 let ty = ty.display(ctx.db).to_string();
26 let name = field.name(ctx.db); 21 let name = field.name(ctx.db);
@@ -452,8 +447,8 @@ mod tests {
452 [ 447 [
453 CompletionItem { 448 CompletionItem {
454 label: "Foo", 449 label: "Foo",
455 source_range: [121; 123), 450 source_range: 121..123,
456 delete: [121; 123), 451 delete: 121..123,
457 insert: "Foo", 452 insert: "Foo",
458 kind: EnumVariant, 453 kind: EnumVariant,
459 detail: "{ x: i32, y: i32 }", 454 detail: "{ x: i32, y: i32 }",
@@ -478,8 +473,8 @@ mod tests {
478 [ 473 [
479 CompletionItem { 474 CompletionItem {
480 label: "Foo(…)", 475 label: "Foo(…)",
481 source_range: [115; 117), 476 source_range: 115..117,
482 delete: [115; 117), 477 delete: 115..117,
483 insert: "Foo($0)", 478 insert: "Foo($0)",
484 kind: EnumVariant, 479 kind: EnumVariant,
485 lookup: "Foo", 480 lookup: "Foo",
@@ -506,8 +501,8 @@ mod tests {
506 [ 501 [
507 CompletionItem { 502 CompletionItem {
508 label: "Foo", 503 label: "Foo",
509 source_range: [104; 106), 504 source_range: 104..106,
510 delete: [104; 106), 505 delete: 104..106,
511 insert: "Foo", 506 insert: "Foo",
512 kind: EnumVariant, 507 kind: EnumVariant,
513 detail: "()", 508 detail: "()",
@@ -534,8 +529,8 @@ mod tests {
534 [ 529 [
535 CompletionItem { 530 CompletionItem {
536 label: "main()", 531 label: "main()",
537 source_range: [203; 206), 532 source_range: 203..206,
538 delete: [203; 206), 533 delete: 203..206,
539 insert: "main()$0", 534 insert: "main()$0",
540 kind: Function, 535 kind: Function,
541 lookup: "main", 536 lookup: "main",
@@ -543,8 +538,8 @@ mod tests {
543 }, 538 },
544 CompletionItem { 539 CompletionItem {
545 label: "something_deprecated()", 540 label: "something_deprecated()",
546 source_range: [203; 206), 541 source_range: 203..206,
547 delete: [203; 206), 542 delete: 203..206,
548 insert: "something_deprecated()$0", 543 insert: "something_deprecated()$0",
549 kind: Function, 544 kind: Function,
550 lookup: "something_deprecated", 545 lookup: "something_deprecated",
@@ -553,8 +548,8 @@ mod tests {
553 }, 548 },
554 CompletionItem { 549 CompletionItem {
555 label: "something_else_deprecated()", 550 label: "something_else_deprecated()",
556 source_range: [203; 206), 551 source_range: 203..206,
557 delete: [203; 206), 552 delete: 203..206,
558 insert: "something_else_deprecated()$0", 553 insert: "something_else_deprecated()$0",
559 kind: Function, 554 kind: Function,
560 lookup: "something_else_deprecated", 555 lookup: "something_else_deprecated",
@@ -580,8 +575,8 @@ mod tests {
580 [ 575 [
581 CompletionItem { 576 CompletionItem {
582 label: "main()", 577 label: "main()",
583 source_range: [61; 64), 578 source_range: 61..64,
584 delete: [61; 64), 579 delete: 61..64,
585 insert: "main()$0", 580 insert: "main()$0",
586 kind: Function, 581 kind: Function,
587 lookup: "main", 582 lookup: "main",
@@ -589,8 +584,8 @@ mod tests {
589 }, 584 },
590 CompletionItem { 585 CompletionItem {
591 label: "no_args()", 586 label: "no_args()",
592 source_range: [61; 64), 587 source_range: 61..64,
593 delete: [61; 64), 588 delete: 61..64,
594 insert: "no_args()$0", 589 insert: "no_args()$0",
595 kind: Function, 590 kind: Function,
596 lookup: "no_args", 591 lookup: "no_args",
@@ -610,8 +605,8 @@ mod tests {
610 [ 605 [
611 CompletionItem { 606 CompletionItem {
612 label: "main()", 607 label: "main()",
613 source_range: [80; 85), 608 source_range: 80..85,
614 delete: [80; 85), 609 delete: 80..85,
615 insert: "main()$0", 610 insert: "main()$0",
616 kind: Function, 611 kind: Function,
617 lookup: "main", 612 lookup: "main",
@@ -619,8 +614,8 @@ mod tests {
619 }, 614 },
620 CompletionItem { 615 CompletionItem {
621 label: "with_args(…)", 616 label: "with_args(…)",
622 source_range: [80; 85), 617 source_range: 80..85,
623 delete: [80; 85), 618 delete: 80..85,
624 insert: "with_args(${1:x}, ${2:y})$0", 619 insert: "with_args(${1:x}, ${2:y})$0",
625 kind: Function, 620 kind: Function,
626 lookup: "with_args", 621 lookup: "with_args",
@@ -646,8 +641,8 @@ mod tests {
646 [ 641 [
647 CompletionItem { 642 CompletionItem {
648 label: "foo()", 643 label: "foo()",
649 source_range: [163; 164), 644 source_range: 163..164,
650 delete: [163; 164), 645 delete: 163..164,
651 insert: "foo()$0", 646 insert: "foo()$0",
652 kind: Method, 647 kind: Method,
653 lookup: "foo", 648 lookup: "foo",
@@ -674,23 +669,23 @@ mod tests {
674 [ 669 [
675 CompletionItem { 670 CompletionItem {
676 label: "None", 671 label: "None",
677 source_range: [144; 147), 672 source_range: 144..147,
678 delete: [144; 147), 673 delete: 144..147,
679 insert: "None", 674 insert: "None",
680 kind: EnumVariant, 675 kind: EnumVariant,
681 detail: "()", 676 detail: "()",
682 }, 677 },
683 CompletionItem { 678 CompletionItem {
684 label: "Option", 679 label: "Option",
685 source_range: [144; 147), 680 source_range: 144..147,
686 delete: [144; 147), 681 delete: 144..147,
687 insert: "Option", 682 insert: "Option",
688 kind: Enum, 683 kind: Enum,
689 }, 684 },
690 CompletionItem { 685 CompletionItem {
691 label: "Some(…)", 686 label: "Some(…)",
692 source_range: [144; 147), 687 source_range: 144..147,
693 delete: [144; 147), 688 delete: 144..147,
694 insert: "Some($0)", 689 insert: "Some($0)",
695 kind: EnumVariant, 690 kind: EnumVariant,
696 lookup: "Some", 691 lookup: "Some",
@@ -699,8 +694,8 @@ mod tests {
699 }, 694 },
700 CompletionItem { 695 CompletionItem {
701 label: "main()", 696 label: "main()",
702 source_range: [144; 147), 697 source_range: 144..147,
703 delete: [144; 147), 698 delete: 144..147,
704 insert: "main()$0", 699 insert: "main()$0",
705 kind: Function, 700 kind: Function,
706 lookup: "main", 701 lookup: "main",
@@ -725,23 +720,23 @@ mod tests {
725 [ 720 [
726 CompletionItem { 721 CompletionItem {
727 label: "None", 722 label: "None",
728 source_range: [185; 188), 723 source_range: 185..188,
729 delete: [185; 188), 724 delete: 185..188,
730 insert: "None", 725 insert: "None",
731 kind: EnumVariant, 726 kind: EnumVariant,
732 detail: "()", 727 detail: "()",
733 }, 728 },
734 CompletionItem { 729 CompletionItem {
735 label: "Option", 730 label: "Option",
736 source_range: [185; 188), 731 source_range: 185..188,
737 delete: [185; 188), 732 delete: 185..188,
738 insert: "Option", 733 insert: "Option",
739 kind: Enum, 734 kind: Enum,
740 }, 735 },
741 CompletionItem { 736 CompletionItem {
742 label: "Some(…)", 737 label: "Some(…)",
743 source_range: [185; 188), 738 source_range: 185..188,
744 delete: [185; 188), 739 delete: 185..188,
745 insert: "Some($0)", 740 insert: "Some($0)",
746 kind: EnumVariant, 741 kind: EnumVariant,
747 lookup: "Some", 742 lookup: "Some",
@@ -771,8 +766,8 @@ mod tests {
771 [ 766 [
772 CompletionItem { 767 CompletionItem {
773 label: "foo(…)", 768 label: "foo(…)",
774 source_range: [171; 172), 769 source_range: 171..172,
775 delete: [171; 172), 770 delete: 171..172,
776 insert: "foo(${1:x})$0", 771 insert: "foo(${1:x})$0",
777 kind: Method, 772 kind: Method,
778 lookup: "foo", 773 lookup: "foo",
@@ -806,8 +801,8 @@ mod tests {
806 [ 801 [
807 CompletionItem { 802 CompletionItem {
808 label: "foo(…)", 803 label: "foo(…)",
809 source_range: [171; 172), 804 source_range: 171..172,
810 delete: [171; 172), 805 delete: 171..172,
811 insert: "foo($0)", 806 insert: "foo($0)",
812 kind: Method, 807 kind: Method,
813 lookup: "foo", 808 lookup: "foo",
@@ -833,8 +828,8 @@ mod tests {
833 [ 828 [
834 CompletionItem { 829 CompletionItem {
835 label: "foo", 830 label: "foo",
836 source_range: [40; 41), 831 source_range: 40..41,
837 delete: [40; 41), 832 delete: 40..41,
838 insert: "foo", 833 insert: "foo",
839 kind: Function, 834 kind: Function,
840 detail: "pub fn foo()", 835 detail: "pub fn foo()",
@@ -860,16 +855,16 @@ mod tests {
860 [ 855 [
861 CompletionItem { 856 CompletionItem {
862 label: "frobnicate", 857 label: "frobnicate",
863 source_range: [35; 39), 858 source_range: 35..39,
864 delete: [35; 39), 859 delete: 35..39,
865 insert: "frobnicate", 860 insert: "frobnicate",
866 kind: Function, 861 kind: Function,
867 detail: "fn frobnicate()", 862 detail: "fn frobnicate()",
868 }, 863 },
869 CompletionItem { 864 CompletionItem {
870 label: "main", 865 label: "main",
871 source_range: [35; 39), 866 source_range: 35..39,
872 delete: [35; 39), 867 delete: 35..39,
873 insert: "main", 868 insert: "main",
874 kind: Function, 869 kind: Function,
875 detail: "fn main()", 870 detail: "fn main()",
@@ -892,8 +887,8 @@ mod tests {
892 [ 887 [
893 CompletionItem { 888 CompletionItem {
894 label: "new", 889 label: "new",
895 source_range: [67; 69), 890 source_range: 67..69,
896 delete: [67; 69), 891 delete: 67..69,
897 insert: "new", 892 insert: "new",
898 kind: Function, 893 kind: Function,
899 detail: "fn new() -> Foo", 894 detail: "fn new() -> Foo",
@@ -917,16 +912,16 @@ mod tests {
917 [ 912 [
918 CompletionItem { 913 CompletionItem {
919 label: "Vec<…>", 914 label: "Vec<…>",
920 source_range: [61; 63), 915 source_range: 61..63,
921 delete: [61; 63), 916 delete: 61..63,
922 insert: "Vec<$0>", 917 insert: "Vec<$0>",
923 kind: Struct, 918 kind: Struct,
924 lookup: "Vec", 919 lookup: "Vec",
925 }, 920 },
926 CompletionItem { 921 CompletionItem {
927 label: "foo(…)", 922 label: "foo(…)",
928 source_range: [61; 63), 923 source_range: 61..63,
929 delete: [61; 63), 924 delete: 61..63,
930 insert: "foo(${1:xs})$0", 925 insert: "foo(${1:xs})$0",
931 kind: Function, 926 kind: Function,
932 lookup: "foo", 927 lookup: "foo",
@@ -947,16 +942,16 @@ mod tests {
947 [ 942 [
948 CompletionItem { 943 CompletionItem {
949 label: "Vec<…>", 944 label: "Vec<…>",
950 source_range: [64; 66), 945 source_range: 64..66,
951 delete: [64; 66), 946 delete: 64..66,
952 insert: "Vec<$0>", 947 insert: "Vec<$0>",
953 kind: TypeAlias, 948 kind: TypeAlias,
954 lookup: "Vec", 949 lookup: "Vec",
955 }, 950 },
956 CompletionItem { 951 CompletionItem {
957 label: "foo(…)", 952 label: "foo(…)",
958 source_range: [64; 66), 953 source_range: 64..66,
959 delete: [64; 66), 954 delete: 64..66,
960 insert: "foo(${1:xs})$0", 955 insert: "foo(${1:xs})$0",
961 kind: Function, 956 kind: Function,
962 lookup: "foo", 957 lookup: "foo",
@@ -977,15 +972,15 @@ mod tests {
977 [ 972 [
978 CompletionItem { 973 CompletionItem {
979 label: "Vec", 974 label: "Vec",
980 source_range: [68; 70), 975 source_range: 68..70,
981 delete: [68; 70), 976 delete: 68..70,
982 insert: "Vec", 977 insert: "Vec",
983 kind: Struct, 978 kind: Struct,
984 }, 979 },
985 CompletionItem { 980 CompletionItem {
986 label: "foo(…)", 981 label: "foo(…)",
987 source_range: [68; 70), 982 source_range: 68..70,
988 delete: [68; 70), 983 delete: 68..70,
989 insert: "foo(${1:xs})$0", 984 insert: "foo(${1:xs})$0",
990 kind: Function, 985 kind: Function,
991 lookup: "foo", 986 lookup: "foo",
@@ -1006,15 +1001,15 @@ mod tests {
1006 [ 1001 [
1007 CompletionItem { 1002 CompletionItem {
1008 label: "Vec", 1003 label: "Vec",
1009 source_range: [61; 63), 1004 source_range: 61..63,
1010 delete: [61; 63), 1005 delete: 61..63,
1011 insert: "Vec", 1006 insert: "Vec",
1012 kind: Struct, 1007 kind: Struct,
1013 }, 1008 },
1014 CompletionItem { 1009 CompletionItem {
1015 label: "foo(…)", 1010 label: "foo(…)",
1016 source_range: [61; 63), 1011 source_range: 61..63,
1017 delete: [61; 63), 1012 delete: 61..63,
1018 insert: "foo(${1:xs})$0", 1013 insert: "foo(${1:xs})$0",
1019 kind: Function, 1014 kind: Function,
1020 lookup: "foo", 1015 lookup: "foo",
@@ -1046,8 +1041,8 @@ mod tests {
1046 [ 1041 [
1047 CompletionItem { 1042 CompletionItem {
1048 label: "frobnicate!", 1043 label: "frobnicate!",
1049 source_range: [9; 9), 1044 source_range: 9..9,
1050 delete: [9; 9), 1045 delete: 9..9,
1051 insert: "frobnicate", 1046 insert: "frobnicate",
1052 kind: Macro, 1047 kind: Macro,
1053 detail: "#[macro_export]\nmacro_rules! frobnicate", 1048 detail: "#[macro_export]\nmacro_rules! frobnicate",
@@ -1072,16 +1067,16 @@ mod tests {
1072 [ 1067 [
1073 CompletionItem { 1068 CompletionItem {
1074 label: "frobnicate!", 1069 label: "frobnicate!",
1075 source_range: [56; 60), 1070 source_range: 56..60,
1076 delete: [56; 60), 1071 delete: 56..60,
1077 insert: "frobnicate", 1072 insert: "frobnicate",
1078 kind: Macro, 1073 kind: Macro,
1079 detail: "macro_rules! frobnicate", 1074 detail: "macro_rules! frobnicate",
1080 }, 1075 },
1081 CompletionItem { 1076 CompletionItem {
1082 label: "main()", 1077 label: "main()",
1083 source_range: [56; 60), 1078 source_range: 56..60,
1084 delete: [56; 60), 1079 delete: 56..60,
1085 insert: "main()$0", 1080 insert: "main()$0",
1086 kind: Function, 1081 kind: Function,
1087 lookup: "main", 1082 lookup: "main",
@@ -1109,24 +1104,24 @@ mod tests {
1109 [ 1104 [
1110 CompletionItem { 1105 CompletionItem {
1111 label: "another_field", 1106 label: "another_field",
1112 source_range: [201; 201), 1107 source_range: 201..201,
1113 delete: [201; 201), 1108 delete: 201..201,
1114 insert: "another_field", 1109 insert: "another_field",
1115 kind: Field, 1110 kind: Field,
1116 detail: "i64", 1111 detail: "i64",
1117 }, 1112 },
1118 CompletionItem { 1113 CompletionItem {
1119 label: "my_string", 1114 label: "my_string",
1120 source_range: [201; 201), 1115 source_range: 201..201,
1121 delete: [201; 201), 1116 delete: 201..201,
1122 insert: "my_string", 1117 insert: "my_string",
1123 kind: Field, 1118 kind: Field,
1124 detail: "{unknown}", 1119 detail: "{unknown}",
1125 }, 1120 },
1126 CompletionItem { 1121 CompletionItem {
1127 label: "the_field", 1122 label: "the_field",
1128 source_range: [201; 201), 1123 source_range: 201..201,
1129 delete: [201; 201), 1124 delete: 201..201,
1130 insert: "the_field", 1125 insert: "the_field",
1131 kind: Field, 1126 kind: Field,
1132 detail: "u32", 1127 detail: "u32",
@@ -1153,16 +1148,16 @@ mod tests {
1153 [ 1148 [
1154 CompletionItem { 1149 CompletionItem {
1155 label: "another_field", 1150 label: "another_field",
1156 source_range: [208; 208), 1151 source_range: 208..208,
1157 delete: [208; 208), 1152 delete: 208..208,
1158 insert: "another_field", 1153 insert: "another_field",
1159 kind: Field, 1154 kind: Field,
1160 detail: "i64", 1155 detail: "i64",
1161 }, 1156 },
1162 CompletionItem { 1157 CompletionItem {
1163 label: "another_good_type", 1158 label: "another_good_type",
1164 source_range: [208; 208), 1159 source_range: 208..208,
1165 delete: [208; 208), 1160 delete: 208..208,
1166 insert: "another_good_type", 1161 insert: "another_good_type",
1167 kind: Field, 1162 kind: Field,
1168 detail: "u32", 1163 detail: "u32",
@@ -1170,8 +1165,8 @@ mod tests {
1170 }, 1165 },
1171 CompletionItem { 1166 CompletionItem {
1172 label: "the_field", 1167 label: "the_field",
1173 source_range: [208; 208), 1168 source_range: 208..208,
1174 delete: [208; 208), 1169 delete: 208..208,
1175 insert: "the_field", 1170 insert: "the_field",
1176 kind: Field, 1171 kind: Field,
1177 detail: "u32", 1172 detail: "u32",
@@ -1201,16 +1196,16 @@ mod tests {
1201 [ 1196 [
1202 CompletionItem { 1197 CompletionItem {
1203 label: "another_field", 1198 label: "another_field",
1204 source_range: [270; 270), 1199 source_range: 270..270,
1205 delete: [270; 270), 1200 delete: 270..270,
1206 insert: "another_field", 1201 insert: "another_field",
1207 kind: Field, 1202 kind: Field,
1208 detail: "i64", 1203 detail: "i64",
1209 }, 1204 },
1210 CompletionItem { 1205 CompletionItem {
1211 label: "another_good_type", 1206 label: "another_good_type",
1212 source_range: [270; 270), 1207 source_range: 270..270,
1213 delete: [270; 270), 1208 delete: 270..270,
1214 insert: "another_good_type", 1209 insert: "another_good_type",
1215 kind: Field, 1210 kind: Field,
1216 detail: "u32", 1211 detail: "u32",
@@ -1218,8 +1213,8 @@ mod tests {
1218 }, 1213 },
1219 CompletionItem { 1214 CompletionItem {
1220 label: "the_field", 1215 label: "the_field",
1221 source_range: [270; 270), 1216 source_range: 270..270,
1222 delete: [270; 270), 1217 delete: 270..270,
1223 insert: "the_field", 1218 insert: "the_field",
1224 kind: Field, 1219 kind: Field,
1225 detail: "u32", 1220 detail: "u32",
@@ -1249,8 +1244,8 @@ mod tests {
1249 [ 1244 [
1250 CompletionItem { 1245 CompletionItem {
1251 label: "another_field", 1246 label: "another_field",
1252 source_range: [336; 336), 1247 source_range: 336..336,
1253 delete: [336; 336), 1248 delete: 336..336,
1254 insert: "another_field", 1249 insert: "another_field",
1255 kind: Field, 1250 kind: Field,
1256 detail: "i64", 1251 detail: "i64",
@@ -1258,16 +1253,16 @@ mod tests {
1258 }, 1253 },
1259 CompletionItem { 1254 CompletionItem {
1260 label: "another_good_type", 1255 label: "another_good_type",
1261 source_range: [336; 336), 1256 source_range: 336..336,
1262 delete: [336; 336), 1257 delete: 336..336,
1263 insert: "another_good_type", 1258 insert: "another_good_type",
1264 kind: Field, 1259 kind: Field,
1265 detail: "u32", 1260 detail: "u32",
1266 }, 1261 },
1267 CompletionItem { 1262 CompletionItem {
1268 label: "the_field", 1263 label: "the_field",
1269 source_range: [336; 336), 1264 source_range: 336..336,
1270 delete: [336; 336), 1265 delete: 336..336,
1271 insert: "the_field", 1266 insert: "the_field",
1272 kind: Field, 1267 kind: Field,
1273 detail: "u32", 1268 detail: "u32",
@@ -1296,16 +1291,16 @@ mod tests {
1296 [ 1291 [
1297 CompletionItem { 1292 CompletionItem {
1298 label: "another_field", 1293 label: "another_field",
1299 source_range: [328; 328), 1294 source_range: 328..328,
1300 delete: [328; 328), 1295 delete: 328..328,
1301 insert: "another_field", 1296 insert: "another_field",
1302 kind: Field, 1297 kind: Field,
1303 detail: "i64", 1298 detail: "i64",
1304 }, 1299 },
1305 CompletionItem { 1300 CompletionItem {
1306 label: "another_good_type", 1301 label: "another_good_type",
1307 source_range: [328; 328), 1302 source_range: 328..328,
1308 delete: [328; 328), 1303 delete: 328..328,
1309 insert: "another_good_type", 1304 insert: "another_good_type",
1310 kind: Field, 1305 kind: Field,
1311 detail: "u32", 1306 detail: "u32",
@@ -1313,8 +1308,8 @@ mod tests {
1313 }, 1308 },
1314 CompletionItem { 1309 CompletionItem {
1315 label: "the_field", 1310 label: "the_field",
1316 source_range: [328; 328), 1311 source_range: 328..328,
1317 delete: [328; 328), 1312 delete: 328..328,
1318 insert: "the_field", 1313 insert: "the_field",
1319 kind: Field, 1314 kind: Field,
1320 detail: "u32", 1315 detail: "u32",