aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/ra_hir/src/code_model.rs4
-rw-r--r--crates/ra_ide/src/hover.rs580
-rw-r--r--xtask/tests/tidy.rs7
3 files changed, 423 insertions, 168 deletions
diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs
index 5d88c5c64..8284ab757 100644
--- a/crates/ra_hir/src/code_model.rs
+++ b/crates/ra_hir/src/code_model.rs
@@ -212,9 +212,7 @@ impl ModuleDef {
212 ModuleDef::EnumVariant(ev) => { 212 ModuleDef::EnumVariant(ev) => {
213 GenericDefId::from(GenericDef::from(ev.clone())).resolver(db) 213 GenericDefId::from(GenericDef::from(ev.clone())).resolver(db)
214 } 214 }
215 ModuleDef::Const(c) => { 215 ModuleDef::Const(c) => GenericDefId::from(GenericDef::from(c.clone())).resolver(db),
216 GenericDefId::from(GenericDef::from(c.clone())).resolver(db)
217 }
218 ModuleDef::Static(s) => StaticId::from(s.clone()).resolver(db), 216 ModuleDef::Static(s) => StaticId::from(s.clone()).resolver(db),
219 ModuleDef::Trait(t) => TraitId::from(t.clone()).resolver(db), 217 ModuleDef::Trait(t) => TraitId::from(t.clone()).resolver(db),
220 ModuleDef::TypeAlias(t) => ModuleId::from(t.module(db)).resolver(db), 218 ModuleDef::TypeAlias(t) => ModuleId::from(t.module(db)).resolver(db),
diff --git a/crates/ra_ide/src/hover.rs b/crates/ra_ide/src/hover.rs
index 02099b05d..a82fe6714 100644
--- a/crates/ra_ide/src/hover.rs
+++ b/crates/ra_ide/src/hover.rs
@@ -704,9 +704,10 @@ fn main() {
704"#, 704"#,
705 expect![[r#" 705 expect![[r#"
706 *iter* 706 *iter*
707 ```rust 707
708 ````rust
708 Iter<Scan<OtherStruct<OtherStruct<i32>>, |&mut u32, &u32, &mut u32| -> Option<u32>, u32>> 709 Iter<Scan<OtherStruct<OtherStruct<i32>>, |&mut u32, &u32, &mut u32| -> Option<u32>, u32>>
709 ``` 710 ````
710 "#]], 711 "#]],
711 ); 712 );
712 } 713 }
@@ -722,9 +723,14 @@ fn main() { let foo_test = fo<|>o(); }
722"#, 723"#,
723 expect![[r#" 724 expect![[r#"
724 *foo* 725 *foo*
725 ```rust 726
727 ````rust
728 test
729 ````
730
731 ````rust
726 pub fn foo() -> u32 732 pub fn foo() -> u32
727 ``` 733 ````
728 "#]], 734 "#]],
729 ); 735 );
730 736
@@ -766,9 +772,14 @@ fn main() { let foo_test = fo<|>o(); }
766 "#, 772 "#,
767 expect![[r#" 773 expect![[r#"
768 *foo* 774 *foo*
769 ```rust 775
776 ````rust
777 test
778 ````
779
780 ````rust
770 pub fn foo<'a, T: AsRef<str>>(b: &'a T) -> &'a str 781 pub fn foo<'a, T: AsRef<str>>(b: &'a T) -> &'a str
771 ``` 782 ````
772 "#]], 783 "#]],
773 ); 784 );
774 } 785 }
@@ -783,9 +794,14 @@ fn main() { }
783"#, 794"#,
784 expect![[r#" 795 expect![[r#"
785 *foo* 796 *foo*
786 ```rust 797
798 ````rust
799 test
800 ````
801
802 ````rust
787 pub fn foo(a: u32, b: u32) -> u32 803 pub fn foo(a: u32, b: u32) -> u32
788 ``` 804 ````
789 "#]], 805 "#]],
790 ); 806 );
791 } 807 }
@@ -803,13 +819,14 @@ fn main() {
803"#, 819"#,
804 expect![[r#" 820 expect![[r#"
805 *field_a* 821 *field_a*
806 ```rust
807 Foo
808 ```
809 822
810 ```rust 823 ````rust
824 test::Foo
825 ````
826
827 ````rust
811 field_a: u32 828 field_a: u32
812 ``` 829 ````
813 "#]], 830 "#]],
814 ); 831 );
815 832
@@ -824,13 +841,14 @@ fn main() {
824"#, 841"#,
825 expect![[r#" 842 expect![[r#"
826 *field_a* 843 *field_a*
827 ```rust
828 Foo
829 ```
830 844
831 ```rust 845 ````rust
846 test::Foo
847 ````
848
849 ````rust
832 field_a: u32 850 field_a: u32
833 ``` 851 ````
834 "#]], 852 "#]],
835 ); 853 );
836 } 854 }
@@ -841,18 +859,28 @@ fn main() {
841 r#"const foo<|>: u32 = 0;"#, 859 r#"const foo<|>: u32 = 0;"#,
842 expect![[r#" 860 expect![[r#"
843 *foo* 861 *foo*
844 ```rust 862
863 ````rust
864 test
865 ````
866
867 ````rust
845 const foo: u32 868 const foo: u32
846 ``` 869 ````
847 "#]], 870 "#]],
848 ); 871 );
849 check( 872 check(
850 r#"static foo<|>: u32 = 0;"#, 873 r#"static foo<|>: u32 = 0;"#,
851 expect![[r#" 874 expect![[r#"
852 *foo* 875 *foo*
853 ```rust 876
877 ````rust
878 test
879 ````
880
881 ````rust
854 static foo: u32 882 static foo: u32
855 ``` 883 ````
856 "#]], 884 "#]],
857 ); 885 );
858 } 886 }
@@ -868,9 +896,10 @@ fn main() {
868}"#, 896}"#,
869 expect![[r#" 897 expect![[r#"
870 *zz* 898 *zz*
871 ```rust 899
900 ````rust
872 Test<i32, u8> 901 Test<i32, u8>
873 ``` 902 ````
874 "#]], 903 "#]],
875 ); 904 );
876 } 905 }
@@ -886,13 +915,14 @@ fn main() { So<|>me(12); }
886"#, 915"#,
887 expect![[r#" 916 expect![[r#"
888 *Some* 917 *Some*
889 ```rust
890 Option
891 ```
892 918
893 ```rust 919 ````rust
920 test::Option
921 ````
922
923 ````rust
894 Some 924 Some
895 ``` 925 ````
896 "#]], 926 "#]],
897 ); 927 );
898 928
@@ -905,9 +935,10 @@ fn main() { let b<|>ar = Some(12); }
905"#, 935"#,
906 expect![[r#" 936 expect![[r#"
907 *bar* 937 *bar*
908 ```rust 938
939 ````rust
909 Option<i32> 940 Option<i32>
910 ``` 941 ````
911 "#]], 942 "#]],
912 ); 943 );
913 } 944 }
@@ -923,14 +954,16 @@ enum Option<T> {
923"#, 954"#,
924 expect![[r#" 955 expect![[r#"
925 *None* 956 *None*
926 ```rust
927 Option
928 ```
929 957
930 ```rust 958 ````rust
959 test::Option
960 ````
961
962 ````rust
931 None 963 None
932 ``` 964 ````
933 ___ 965
966 ---
934 967
935 The None variant 968 The None variant
936 "#]], 969 "#]],
@@ -948,14 +981,16 @@ fn main() {
948"#, 981"#,
949 expect![[r#" 982 expect![[r#"
950 *Some* 983 *Some*
951 ```rust
952 Option
953 ```
954 984
955 ```rust 985 ````rust
986 test::Option
987 ````
988
989 ````rust
956 Some 990 Some
957 ``` 991 ````
958 ___ 992
993 ---
959 994
960 The Some variant 995 The Some variant
961 "#]], 996 "#]],
@@ -968,9 +1003,10 @@ fn main() {
968 r#"fn func(foo: i32) { fo<|>o; }"#, 1003 r#"fn func(foo: i32) { fo<|>o; }"#,
969 expect![[r#" 1004 expect![[r#"
970 *foo* 1005 *foo*
971 ```rust 1006
1007 ````rust
972 i32 1008 i32
973 ``` 1009 ````
974 "#]], 1010 "#]],
975 ) 1011 )
976 } 1012 }
@@ -981,9 +1017,10 @@ fn main() {
981 r#"fn func(fo<|>o: i32) {}"#, 1017 r#"fn func(fo<|>o: i32) {}"#,
982 expect![[r#" 1018 expect![[r#"
983 *foo* 1019 *foo*
984 ```rust 1020
1021 ````rust
985 i32 1022 i32
986 ``` 1023 ````
987 "#]], 1024 "#]],
988 ) 1025 )
989 } 1026 }
@@ -994,9 +1031,10 @@ fn main() {
994 r#"fn func(foo: i32) { if true { <|>foo; }; }"#, 1031 r#"fn func(foo: i32) { if true { <|>foo; }; }"#,
995 expect![[r#" 1032 expect![[r#"
996 *foo* 1033 *foo*
997 ```rust 1034
1035 ````rust
998 i32 1036 i32
999 ``` 1037 ````
1000 "#]], 1038 "#]],
1001 ) 1039 )
1002 } 1040 }
@@ -1007,9 +1045,10 @@ fn main() {
1007 r#"fn func(<|>foo: i32) {}"#, 1045 r#"fn func(<|>foo: i32) {}"#,
1008 expect![[r#" 1046 expect![[r#"
1009 *foo* 1047 *foo*
1010 ```rust 1048
1049 ````rust
1011 i32 1050 i32
1012 ``` 1051 ````
1013 "#]], 1052 "#]],
1014 ) 1053 )
1015 } 1054 }
@@ -1028,9 +1067,10 @@ fn main() { let foo_<|>test = Thing::new(); }
1028 "#, 1067 "#,
1029 expect![[r#" 1068 expect![[r#"
1030 *foo_test* 1069 *foo_test*
1031 ```rust 1070
1071 ````rust
1032 Thing 1072 Thing
1033 ``` 1073 ````
1034 "#]], 1074 "#]],
1035 ) 1075 )
1036 } 1076 }
@@ -1051,13 +1091,14 @@ fn main() { let foo_test = wrapper::Thing::new<|>(); }
1051"#, 1091"#,
1052 expect![[r#" 1092 expect![[r#"
1053 *new* 1093 *new*
1054 ```rust
1055 wrapper::Thing
1056 ```
1057 1094
1058 ```rust 1095 ````rust
1096 test::wrapper::Thing
1097 ````
1098
1099 ````rust
1059 fn new() -> Thing 1100 fn new() -> Thing
1060 ``` 1101 ````
1061 "#]], 1102 "#]],
1062 ) 1103 )
1063 } 1104 }
@@ -1081,9 +1122,14 @@ fn main() {
1081"#, 1122"#,
1082 expect![[r#" 1123 expect![[r#"
1083 *C* 1124 *C*
1084 ```rust 1125
1126 ````rust
1127 test
1128 ````
1129
1130 ````rust
1085 const C: u32 1131 const C: u32
1086 ``` 1132 ````
1087 "#]], 1133 "#]],
1088 ) 1134 )
1089 } 1135 }
@@ -1158,9 +1204,10 @@ fn y() {
1158"#, 1204"#,
1159 expect![[r#" 1205 expect![[r#"
1160 *x* 1206 *x*
1161 ```rust 1207
1208 ````rust
1162 i32 1209 i32
1163 ``` 1210 ````
1164 "#]], 1211 "#]],
1165 ) 1212 )
1166 } 1213 }
@@ -1175,9 +1222,14 @@ fn f() { fo<|>o!(); }
1175"#, 1222"#,
1176 expect![[r#" 1223 expect![[r#"
1177 *foo* 1224 *foo*
1178 ```rust 1225
1226 ````rust
1227 test
1228 ````
1229
1230 ````rust
1179 macro_rules! foo 1231 macro_rules! foo
1180 ``` 1232 ````
1181 "#]], 1233 "#]],
1182 ) 1234 )
1183 } 1235 }
@@ -1205,9 +1257,14 @@ id! {
1205"#, 1257"#,
1206 expect![[r#" 1258 expect![[r#"
1207 *foo* 1259 *foo*
1208 ```rust 1260
1261 ````rust
1262 test
1263 ````
1264
1265 ````rust
1209 fn foo() 1266 fn foo()
1210 ``` 1267 ````
1211 "#]], 1268 "#]],
1212 ); 1269 );
1213 } 1270 }
@@ -1221,9 +1278,10 @@ fn foo(bar:u32) { let a = id!(ba<|>r); }
1221"#, 1278"#,
1222 expect![[r#" 1279 expect![[r#"
1223 *bar* 1280 *bar*
1224 ```rust 1281
1282 ````rust
1225 u32 1283 u32
1226 ``` 1284 ````
1227 "#]], 1285 "#]],
1228 ); 1286 );
1229 } 1287 }
@@ -1238,9 +1296,10 @@ fn foo(bar:u32) { let a = id!(ba<|>r); }
1238"#, 1296"#,
1239 expect![[r#" 1297 expect![[r#"
1240 *bar* 1298 *bar*
1241 ```rust 1299
1300 ````rust
1242 u32 1301 u32
1243 ``` 1302 ````
1244 "#]], 1303 "#]],
1245 ); 1304 );
1246 } 1305 }
@@ -1296,9 +1355,14 @@ fn foo() {
1296"#, 1355"#,
1297 expect![[r#" 1356 expect![[r#"
1298 *bar* 1357 *bar*
1299 ```rust 1358
1359 ````rust
1360 test
1361 ````
1362
1363 ````rust
1300 fn bar() -> bool 1364 fn bar() -> bool
1301 ``` 1365 ````
1302 "#]], 1366 "#]],
1303 ); 1367 );
1304 } 1368 }
@@ -1328,12 +1392,18 @@ fn bar() { fo<|>o(); }
1328", 1392",
1329 expect![[r#" 1393 expect![[r#"
1330 *foo* 1394 *foo*
1331 ```rust 1395
1396 ````rust
1397 test
1398 ````
1399
1400 ````rust
1332 fn foo() 1401 fn foo()
1333 ``` 1402 ````
1334 ___ 1403
1404 ---
1335 1405
1336 <- ` ` here 1406 \<- ` ` here
1337 "#]], 1407 "#]],
1338 ); 1408 );
1339 } 1409 }
@@ -1344,27 +1414,42 @@ fn bar() { fo<|>o(); }
1344 r#"async fn foo<|>() {}"#, 1414 r#"async fn foo<|>() {}"#,
1345 expect![[r#" 1415 expect![[r#"
1346 *foo* 1416 *foo*
1347 ```rust 1417
1418 ````rust
1419 test
1420 ````
1421
1422 ````rust
1348 async fn foo() 1423 async fn foo()
1349 ``` 1424 ````
1350 "#]], 1425 "#]],
1351 ); 1426 );
1352 check( 1427 check(
1353 r#"pub const unsafe fn foo<|>() {}"#, 1428 r#"pub const unsafe fn foo<|>() {}"#,
1354 expect![[r#" 1429 expect![[r#"
1355 *foo* 1430 *foo*
1356 ```rust 1431
1432 ````rust
1433 test
1434 ````
1435
1436 ````rust
1357 pub const unsafe fn foo() 1437 pub const unsafe fn foo()
1358 ``` 1438 ````
1359 "#]], 1439 "#]],
1360 ); 1440 );
1361 check( 1441 check(
1362 r#"pub(crate) async unsafe extern "C" fn foo<|>() {}"#, 1442 r#"pub(crate) async unsafe extern "C" fn foo<|>() {}"#,
1363 expect![[r#" 1443 expect![[r#"
1364 *foo* 1444 *foo*
1365 ```rust 1445
1446 ````rust
1447 test
1448 ````
1449
1450 ````rust
1366 pub(crate) async unsafe extern "C" fn foo() 1451 pub(crate) async unsafe extern "C" fn foo()
1367 ``` 1452 ````
1368 "#]], 1453 "#]],
1369 ); 1454 );
1370 } 1455 }
@@ -1399,9 +1484,14 @@ fn my() {}
1399"#, 1484"#,
1400 expect![[r#" 1485 expect![[r#"
1401 *my* 1486 *my*
1402 ```rust 1487
1488 ````rust
1489 test
1490 ````
1491
1492 ````rust
1403 mod my 1493 mod my
1404 ``` 1494 ````
1405 "#]], 1495 "#]],
1406 ); 1496 );
1407 } 1497 }
@@ -1417,10 +1507,16 @@ fn foo() { let bar = Ba<|>r; }
1417"#, 1507"#,
1418 expect![[r#" 1508 expect![[r#"
1419 *Bar* 1509 *Bar*
1420 ```rust 1510
1511 ````rust
1512 test
1513 ````
1514
1515 ````rust
1421 struct Bar 1516 struct Bar
1422 ``` 1517 ````
1423 ___ 1518
1519 ---
1424 1520
1425 bar docs 1521 bar docs
1426 "#]], 1522 "#]],
@@ -1438,10 +1534,16 @@ fn foo() { let bar = Ba<|>r; }
1438"#, 1534"#,
1439 expect![[r#" 1535 expect![[r#"
1440 *Bar* 1536 *Bar*
1441 ```rust 1537
1538 ````rust
1539 test
1540 ````
1541
1542 ````rust
1442 struct Bar 1543 struct Bar
1443 ``` 1544 ````
1444 ___ 1545
1546 ---
1445 1547
1446 bar docs 1548 bar docs
1447 "#]], 1549 "#]],
@@ -1461,10 +1563,16 @@ fn foo() { let bar = Ba<|>r; }
1461"#, 1563"#,
1462 expect![[r#" 1564 expect![[r#"
1463 *Bar* 1565 *Bar*
1464 ```rust 1566
1567 ````rust
1568 test
1569 ````
1570
1571 ````rust
1465 struct Bar 1572 struct Bar
1466 ``` 1573 ````
1467 ___ 1574
1575 ---
1468 1576
1469 bar docs 0 1577 bar docs 0
1470 1578
@@ -1484,9 +1592,21 @@ fn foo() { let bar = Ba<|>r; }
1484 /// [Foo](struct.Foo.html) 1592 /// [Foo](struct.Foo.html)
1485 pub struct B<|>ar 1593 pub struct B<|>ar
1486 ", 1594 ",
1487 expect![[ 1595 expect![[r#"
1488 "pub struct Bar\n```\n___\n\n[Foo](https://docs.rs/test/*/test/struct.Foo.html)" 1596 *Bar*
1489 ]], 1597
1598 ````rust
1599 test
1600 ````
1601
1602 ````rust
1603 pub struct Bar
1604 ````
1605
1606 ---
1607
1608 [Foo](https://docs.rs/test/*/test/struct.Foo.html)
1609 "#]],
1490 ); 1610 );
1491 } 1611 }
1492 1612
@@ -1499,7 +1619,21 @@ fn foo() { let bar = Ba<|>r; }
1499 /// [struct Foo](struct.Foo.html) 1619 /// [struct Foo](struct.Foo.html)
1500 pub struct B<|>ar 1620 pub struct B<|>ar
1501 ", 1621 ",
1502 expect![["pub struct Bar\n```\n___\n\n[struct Foo](https://docs.rs/test/*/test/struct.Foo.html)"]], 1622 expect![[r#"
1623 *Bar*
1624
1625 ````rust
1626 test
1627 ````
1628
1629 ````rust
1630 pub struct Bar
1631 ````
1632
1633 ---
1634
1635 [struct Foo](https://docs.rs/test/*/test/struct.Foo.html)
1636 "#]],
1503 ); 1637 );
1504 } 1638 }
1505 1639
@@ -1514,7 +1648,21 @@ fn foo() { let bar = Ba<|>r; }
1514 /// [Foo](foo::Foo) 1648 /// [Foo](foo::Foo)
1515 pub struct B<|>ar 1649 pub struct B<|>ar
1516 ", 1650 ",
1517 expect![["pub struct Bar\n```\n___\n\n[Foo](https://docs.rs/test/*/test/foo/struct.Foo.html)"]], 1651 expect![[r#"
1652 *Bar*
1653
1654 ````rust
1655 test
1656 ````
1657
1658 ````rust
1659 pub struct Bar
1660 ````
1661
1662 ---
1663
1664 [Foo](https://docs.rs/test/*/test/foo/struct.Foo.html)
1665 "#]],
1518 ); 1666 );
1519 } 1667 }
1520 1668
@@ -1527,9 +1675,21 @@ fn foo() { let bar = Ba<|>r; }
1527 /// [Foo] 1675 /// [Foo]
1528 pub struct B<|>ar 1676 pub struct B<|>ar
1529 ", 1677 ",
1530 expect![[ 1678 expect![[r#"
1531 "pub struct Bar\n```\n___\n\n[Foo](https://docs.rs/test/*/test/struct.Foo.html)" 1679 *Bar*
1532 ]], 1680
1681 ````rust
1682 test
1683 ````
1684
1685 ````rust
1686 pub struct Bar
1687 ````
1688
1689 ---
1690
1691 [Foo](https://docs.rs/test/*/test/struct.Foo.html)
1692 "#]],
1533 ); 1693 );
1534 } 1694 }
1535 1695
@@ -1542,9 +1702,21 @@ fn foo() { let bar = Ba<|>r; }
1542 /// [`Foo`] 1702 /// [`Foo`]
1543 pub struct B<|>ar 1703 pub struct B<|>ar
1544 ", 1704 ",
1545 expect![[ 1705 expect![[r#"
1546 "pub struct Bar\n```\n___\n\n[`Foo`](https://docs.rs/test/*/test/struct.Foo.html)" 1706 *Bar*
1547 ]], 1707
1708 ````rust
1709 test
1710 ````
1711
1712 ````rust
1713 pub struct Bar
1714 ````
1715
1716 ---
1717
1718 [`Foo`](https://docs.rs/test/*/test/struct.Foo.html)
1719 "#]],
1548 ); 1720 );
1549 } 1721 }
1550 1722
@@ -1558,9 +1730,21 @@ fn foo() { let bar = Ba<|>r; }
1558 /// [Foo()] 1730 /// [Foo()]
1559 pub struct B<|>ar 1731 pub struct B<|>ar
1560 ", 1732 ",
1561 expect![[ 1733 expect![[r#"
1562 "pub struct Bar\n```\n___\n\n[Foo](https://docs.rs/test/*/test/struct.Foo.html)" 1734 *Bar*
1563 ]], 1735
1736 ````rust
1737 test
1738 ````
1739
1740 ````rust
1741 pub struct Bar
1742 ````
1743
1744 ---
1745
1746 [Foo](https://docs.rs/test/*/test/struct.Foo.html)
1747 "#]],
1564 ); 1748 );
1565 } 1749 }
1566 1750
@@ -1573,9 +1757,21 @@ fn foo() { let bar = Ba<|>r; }
1573 /// [`struct Foo`] 1757 /// [`struct Foo`]
1574 pub struct B<|>ar 1758 pub struct B<|>ar
1575 ", 1759 ",
1576 expect![[ 1760 expect![[r#"
1577 "pub struct Bar\n```\n___\n\n[`Foo`](https://docs.rs/test/*/test/struct.Foo.html)" 1761 *Bar*
1578 ]], 1762
1763 ````rust
1764 test
1765 ````
1766
1767 ````rust
1768 pub struct Bar
1769 ````
1770
1771 ---
1772
1773 [`Foo`](https://docs.rs/test/*/test/struct.Foo.html)
1774 "#]],
1579 ); 1775 );
1580 } 1776 }
1581 1777
@@ -1588,9 +1784,21 @@ fn foo() { let bar = Ba<|>r; }
1588 /// [`struct@Foo`] 1784 /// [`struct@Foo`]
1589 pub struct B<|>ar 1785 pub struct B<|>ar
1590 ", 1786 ",
1591 expect![[ 1787 expect![[r#"
1592 "pub struct Bar\n```\n___\n\n[`Foo`](https://docs.rs/test/*/test/struct.Foo.html)" 1788 *Bar*
1593 ]], 1789
1790 ````rust
1791 test
1792 ````
1793
1794 ````rust
1795 pub struct Bar
1796 ````
1797
1798 ---
1799
1800 [`Foo`](https://docs.rs/test/*/test/struct.Foo.html)
1801 "#]],
1594 ); 1802 );
1595 } 1803 }
1596 1804
@@ -1605,9 +1813,21 @@ fn foo() { let bar = Ba<|>r; }
1605 /// [foo]: Foo 1813 /// [foo]: Foo
1606 pub struct B<|>ar 1814 pub struct B<|>ar
1607 ", 1815 ",
1608 expect![[ 1816 expect![[r#"
1609 "pub struct Bar\n```\n___\n\n[my Foo](https://docs.rs/test/*/test/struct.Foo.html)" 1817 *Bar*
1610 ]], 1818
1819 ````rust
1820 test
1821 ````
1822
1823 ````rust
1824 pub struct Bar
1825 ````
1826
1827 ---
1828
1829 [my Foo](https://docs.rs/test/*/test/struct.Foo.html)
1830 "#]],
1611 ); 1831 );
1612 } 1832 }
1613 1833
@@ -1620,7 +1840,21 @@ fn foo() { let bar = Ba<|>r; }
1620 /// [external](https://www.google.com) 1840 /// [external](https://www.google.com)
1621 pub struct B<|>ar 1841 pub struct B<|>ar
1622 ", 1842 ",
1623 expect![["pub struct Bar\n```\n___\n\n[external](https://www.google.com)"]], 1843 expect![[r#"
1844 *Bar*
1845
1846 ````rust
1847 test
1848 ````
1849
1850 ````rust
1851 pub struct Bar
1852 ````
1853
1854 ---
1855
1856 [external](https://www.google.com)
1857 "#]],
1624 ); 1858 );
1625 } 1859 }
1626 1860
@@ -1634,7 +1868,21 @@ fn foo() { let bar = Ba<|>r; }
1634 /// [baz](Baz) 1868 /// [baz](Baz)
1635 pub struct B<|>ar 1869 pub struct B<|>ar
1636 ", 1870 ",
1637 expect![["pub struct Bar\n```\n___\n\n[baz](Baz)"]], 1871 expect![[r#"
1872 *Bar*
1873
1874 ````rust
1875 test
1876 ````
1877
1878 ````rust
1879 pub struct Bar
1880 ````
1881
1882 ---
1883
1884 [baz](Baz)
1885 "#]],
1638 ); 1886 );
1639 } 1887 }
1640 1888
@@ -1660,16 +1908,18 @@ fn foo() { let bar = Bar; bar.fo<|>o(); }
1660"#, 1908"#,
1661 expect![[r#" 1909 expect![[r#"
1662 *foo* 1910 *foo*
1663 ```rust
1664 Bar
1665 ```
1666 1911
1667 ```rust 1912 ````rust
1913 test::Bar
1914 ````
1915
1916 ````rust
1668 fn foo(&self) 1917 fn foo(&self)
1669 ``` 1918 ````
1670 ___ 1919
1920 ---
1671 1921
1672 Do the foo 1922 Do the foo
1673 "#]], 1923 "#]],
1674 ); 1924 );
1675 } 1925 }
@@ -1696,14 +1946,16 @@ fn foo() { let bar = Bar; bar.fo<|>o(); }
1696"#, 1946"#,
1697 expect![[r#" 1947 expect![[r#"
1698 *foo* 1948 *foo*
1699 ```rust
1700 Bar
1701 ```
1702 1949
1703 ```rust 1950 ````rust
1951 test::Bar
1952 ````
1953
1954 ````rust
1704 fn foo(&self) 1955 fn foo(&self)
1705 ``` 1956 ````
1706 ___ 1957
1958 ---
1707 1959
1708 Do the foo 1960 Do the foo
1709 "#]], 1961 "#]],
@@ -1878,7 +2130,7 @@ fn main() { let s<|>t = S{ f1:0 }; }
1878 GoToType( 2130 GoToType(
1879 [ 2131 [
1880 HoverGotoTypeData { 2132 HoverGotoTypeData {
1881 mod_path: "S", 2133 mod_path: "test::S",
1882 nav: NavigationTarget { 2134 nav: NavigationTarget {
1883 file_id: FileId( 2135 file_id: FileId(
1884 1, 2136 1,
@@ -1917,7 +2169,7 @@ fn main() { let s<|>t = S{ f1:Arg(0) }; }
1917 GoToType( 2169 GoToType(
1918 [ 2170 [
1919 HoverGotoTypeData { 2171 HoverGotoTypeData {
1920 mod_path: "S", 2172 mod_path: "test::S",
1921 nav: NavigationTarget { 2173 nav: NavigationTarget {
1922 file_id: FileId( 2174 file_id: FileId(
1923 1, 2175 1,
@@ -1936,7 +2188,7 @@ fn main() { let s<|>t = S{ f1:Arg(0) }; }
1936 }, 2188 },
1937 }, 2189 },
1938 HoverGotoTypeData { 2190 HoverGotoTypeData {
1939 mod_path: "Arg", 2191 mod_path: "test::Arg",
1940 nav: NavigationTarget { 2192 nav: NavigationTarget {
1941 file_id: FileId( 2193 file_id: FileId(
1942 1, 2194 1,
@@ -1975,7 +2227,7 @@ fn main() { let s<|>t = S{ f1: S{ f1: Arg(0) } }; }
1975 GoToType( 2227 GoToType(
1976 [ 2228 [
1977 HoverGotoTypeData { 2229 HoverGotoTypeData {
1978 mod_path: "S", 2230 mod_path: "test::S",
1979 nav: NavigationTarget { 2231 nav: NavigationTarget {
1980 file_id: FileId( 2232 file_id: FileId(
1981 1, 2233 1,
@@ -1994,7 +2246,7 @@ fn main() { let s<|>t = S{ f1: S{ f1: Arg(0) } }; }
1994 }, 2246 },
1995 }, 2247 },
1996 HoverGotoTypeData { 2248 HoverGotoTypeData {
1997 mod_path: "Arg", 2249 mod_path: "test::Arg",
1998 nav: NavigationTarget { 2250 nav: NavigationTarget {
1999 file_id: FileId( 2251 file_id: FileId(
2000 1, 2252 1,
@@ -2036,7 +2288,7 @@ fn main() { let s<|>t = (A(1), B(2), M::C(3) ); }
2036 GoToType( 2288 GoToType(
2037 [ 2289 [
2038 HoverGotoTypeData { 2290 HoverGotoTypeData {
2039 mod_path: "A", 2291 mod_path: "test::A",
2040 nav: NavigationTarget { 2292 nav: NavigationTarget {
2041 file_id: FileId( 2293 file_id: FileId(
2042 1, 2294 1,
@@ -2055,7 +2307,7 @@ fn main() { let s<|>t = (A(1), B(2), M::C(3) ); }
2055 }, 2307 },
2056 }, 2308 },
2057 HoverGotoTypeData { 2309 HoverGotoTypeData {
2058 mod_path: "B", 2310 mod_path: "test::B",
2059 nav: NavigationTarget { 2311 nav: NavigationTarget {
2060 file_id: FileId( 2312 file_id: FileId(
2061 1, 2313 1,
@@ -2074,7 +2326,7 @@ fn main() { let s<|>t = (A(1), B(2), M::C(3) ); }
2074 }, 2326 },
2075 }, 2327 },
2076 HoverGotoTypeData { 2328 HoverGotoTypeData {
2077 mod_path: "M::C", 2329 mod_path: "test::M::C",
2078 nav: NavigationTarget { 2330 nav: NavigationTarget {
2079 file_id: FileId( 2331 file_id: FileId(
2080 1, 2332 1,
@@ -2113,7 +2365,7 @@ fn main() { let s<|>t = foo(); }
2113 GoToType( 2365 GoToType(
2114 [ 2366 [
2115 HoverGotoTypeData { 2367 HoverGotoTypeData {
2116 mod_path: "Foo", 2368 mod_path: "test::Foo",
2117 nav: NavigationTarget { 2369 nav: NavigationTarget {
2118 file_id: FileId( 2370 file_id: FileId(
2119 1, 2371 1,
@@ -2153,7 +2405,7 @@ fn main() { let s<|>t = foo(); }
2153 GoToType( 2405 GoToType(
2154 [ 2406 [
2155 HoverGotoTypeData { 2407 HoverGotoTypeData {
2156 mod_path: "Foo", 2408 mod_path: "test::Foo",
2157 nav: NavigationTarget { 2409 nav: NavigationTarget {
2158 file_id: FileId( 2410 file_id: FileId(
2159 1, 2411 1,
@@ -2172,7 +2424,7 @@ fn main() { let s<|>t = foo(); }
2172 }, 2424 },
2173 }, 2425 },
2174 HoverGotoTypeData { 2426 HoverGotoTypeData {
2175 mod_path: "S", 2427 mod_path: "test::S",
2176 nav: NavigationTarget { 2428 nav: NavigationTarget {
2177 file_id: FileId( 2429 file_id: FileId(
2178 1, 2430 1,
@@ -2212,7 +2464,7 @@ fn main() { let s<|>t = foo(); }
2212 GoToType( 2464 GoToType(
2213 [ 2465 [
2214 HoverGotoTypeData { 2466 HoverGotoTypeData {
2215 mod_path: "Foo", 2467 mod_path: "test::Foo",
2216 nav: NavigationTarget { 2468 nav: NavigationTarget {
2217 file_id: FileId( 2469 file_id: FileId(
2218 1, 2470 1,
@@ -2231,7 +2483,7 @@ fn main() { let s<|>t = foo(); }
2231 }, 2483 },
2232 }, 2484 },
2233 HoverGotoTypeData { 2485 HoverGotoTypeData {
2234 mod_path: "Bar", 2486 mod_path: "test::Bar",
2235 nav: NavigationTarget { 2487 nav: NavigationTarget {
2236 file_id: FileId( 2488 file_id: FileId(
2237 1, 2489 1,
@@ -2274,7 +2526,7 @@ fn main() { let s<|>t = foo(); }
2274 GoToType( 2526 GoToType(
2275 [ 2527 [
2276 HoverGotoTypeData { 2528 HoverGotoTypeData {
2277 mod_path: "Foo", 2529 mod_path: "test::Foo",
2278 nav: NavigationTarget { 2530 nav: NavigationTarget {
2279 file_id: FileId( 2531 file_id: FileId(
2280 1, 2532 1,
@@ -2293,7 +2545,7 @@ fn main() { let s<|>t = foo(); }
2293 }, 2545 },
2294 }, 2546 },
2295 HoverGotoTypeData { 2547 HoverGotoTypeData {
2296 mod_path: "Bar", 2548 mod_path: "test::Bar",
2297 nav: NavigationTarget { 2549 nav: NavigationTarget {
2298 file_id: FileId( 2550 file_id: FileId(
2299 1, 2551 1,
@@ -2312,7 +2564,7 @@ fn main() { let s<|>t = foo(); }
2312 }, 2564 },
2313 }, 2565 },
2314 HoverGotoTypeData { 2566 HoverGotoTypeData {
2315 mod_path: "S1", 2567 mod_path: "test::S1",
2316 nav: NavigationTarget { 2568 nav: NavigationTarget {
2317 file_id: FileId( 2569 file_id: FileId(
2318 1, 2570 1,
@@ -2331,7 +2583,7 @@ fn main() { let s<|>t = foo(); }
2331 }, 2583 },
2332 }, 2584 },
2333 HoverGotoTypeData { 2585 HoverGotoTypeData {
2334 mod_path: "S2", 2586 mod_path: "test::S2",
2335 nav: NavigationTarget { 2587 nav: NavigationTarget {
2336 file_id: FileId( 2588 file_id: FileId(
2337 1, 2589 1,
@@ -2368,7 +2620,7 @@ fn foo(ar<|>g: &impl Foo) {}
2368 GoToType( 2620 GoToType(
2369 [ 2621 [
2370 HoverGotoTypeData { 2622 HoverGotoTypeData {
2371 mod_path: "Foo", 2623 mod_path: "test::Foo",
2372 nav: NavigationTarget { 2624 nav: NavigationTarget {
2373 file_id: FileId( 2625 file_id: FileId(
2374 1, 2626 1,
@@ -2408,7 +2660,7 @@ fn foo(ar<|>g: &impl Foo + Bar<S>) {}
2408 GoToType( 2660 GoToType(
2409 [ 2661 [
2410 HoverGotoTypeData { 2662 HoverGotoTypeData {
2411 mod_path: "Foo", 2663 mod_path: "test::Foo",
2412 nav: NavigationTarget { 2664 nav: NavigationTarget {
2413 file_id: FileId( 2665 file_id: FileId(
2414 1, 2666 1,
@@ -2427,7 +2679,7 @@ fn foo(ar<|>g: &impl Foo + Bar<S>) {}
2427 }, 2679 },
2428 }, 2680 },
2429 HoverGotoTypeData { 2681 HoverGotoTypeData {
2430 mod_path: "Bar", 2682 mod_path: "test::Bar",
2431 nav: NavigationTarget { 2683 nav: NavigationTarget {
2432 file_id: FileId( 2684 file_id: FileId(
2433 1, 2685 1,
@@ -2446,7 +2698,7 @@ fn foo(ar<|>g: &impl Foo + Bar<S>) {}
2446 }, 2698 },
2447 }, 2699 },
2448 HoverGotoTypeData { 2700 HoverGotoTypeData {
2449 mod_path: "S", 2701 mod_path: "test::S",
2450 nav: NavigationTarget { 2702 nav: NavigationTarget {
2451 file_id: FileId( 2703 file_id: FileId(
2452 1, 2704 1,
@@ -2484,7 +2736,7 @@ fn foo(ar<|>g: &impl Foo<S>) {}
2484 GoToType( 2736 GoToType(
2485 [ 2737 [
2486 HoverGotoTypeData { 2738 HoverGotoTypeData {
2487 mod_path: "Foo", 2739 mod_path: "test::Foo",
2488 nav: NavigationTarget { 2740 nav: NavigationTarget {
2489 file_id: FileId( 2741 file_id: FileId(
2490 1, 2742 1,
@@ -2503,7 +2755,7 @@ fn foo(ar<|>g: &impl Foo<S>) {}
2503 }, 2755 },
2504 }, 2756 },
2505 HoverGotoTypeData { 2757 HoverGotoTypeData {
2506 mod_path: "S", 2758 mod_path: "test::S",
2507 nav: NavigationTarget { 2759 nav: NavigationTarget {
2508 file_id: FileId( 2760 file_id: FileId(
2509 1, 2761 1,
@@ -2546,7 +2798,7 @@ fn main() { let s<|>t = foo(); }
2546 GoToType( 2798 GoToType(
2547 [ 2799 [
2548 HoverGotoTypeData { 2800 HoverGotoTypeData {
2549 mod_path: "B", 2801 mod_path: "test::B",
2550 nav: NavigationTarget { 2802 nav: NavigationTarget {
2551 file_id: FileId( 2803 file_id: FileId(
2552 1, 2804 1,
@@ -2565,7 +2817,7 @@ fn main() { let s<|>t = foo(); }
2565 }, 2817 },
2566 }, 2818 },
2567 HoverGotoTypeData { 2819 HoverGotoTypeData {
2568 mod_path: "Foo", 2820 mod_path: "test::Foo",
2569 nav: NavigationTarget { 2821 nav: NavigationTarget {
2570 file_id: FileId( 2822 file_id: FileId(
2571 1, 2823 1,
@@ -2602,7 +2854,7 @@ fn foo(ar<|>g: &dyn Foo) {}
2602 GoToType( 2854 GoToType(
2603 [ 2855 [
2604 HoverGotoTypeData { 2856 HoverGotoTypeData {
2605 mod_path: "Foo", 2857 mod_path: "test::Foo",
2606 nav: NavigationTarget { 2858 nav: NavigationTarget {
2607 file_id: FileId( 2859 file_id: FileId(
2608 1, 2860 1,
@@ -2640,7 +2892,7 @@ fn foo(ar<|>g: &dyn Foo<S>) {}
2640 GoToType( 2892 GoToType(
2641 [ 2893 [
2642 HoverGotoTypeData { 2894 HoverGotoTypeData {
2643 mod_path: "Foo", 2895 mod_path: "test::Foo",
2644 nav: NavigationTarget { 2896 nav: NavigationTarget {
2645 file_id: FileId( 2897 file_id: FileId(
2646 1, 2898 1,
@@ -2659,7 +2911,7 @@ fn foo(ar<|>g: &dyn Foo<S>) {}
2659 }, 2911 },
2660 }, 2912 },
2661 HoverGotoTypeData { 2913 HoverGotoTypeData {
2662 mod_path: "S", 2914 mod_path: "test::S",
2663 nav: NavigationTarget { 2915 nav: NavigationTarget {
2664 file_id: FileId( 2916 file_id: FileId(
2665 1, 2917 1,
@@ -2700,7 +2952,7 @@ fn foo(a<|>rg: &impl ImplTrait<B<dyn DynTrait<B<S>>>>) {}
2700 GoToType( 2952 GoToType(
2701 [ 2953 [
2702 HoverGotoTypeData { 2954 HoverGotoTypeData {
2703 mod_path: "ImplTrait", 2955 mod_path: "test::ImplTrait",
2704 nav: NavigationTarget { 2956 nav: NavigationTarget {
2705 file_id: FileId( 2957 file_id: FileId(
2706 1, 2958 1,
@@ -2719,7 +2971,7 @@ fn foo(a<|>rg: &impl ImplTrait<B<dyn DynTrait<B<S>>>>) {}
2719 }, 2971 },
2720 }, 2972 },
2721 HoverGotoTypeData { 2973 HoverGotoTypeData {
2722 mod_path: "B", 2974 mod_path: "test::B",
2723 nav: NavigationTarget { 2975 nav: NavigationTarget {
2724 file_id: FileId( 2976 file_id: FileId(
2725 1, 2977 1,
@@ -2738,7 +2990,7 @@ fn foo(a<|>rg: &impl ImplTrait<B<dyn DynTrait<B<S>>>>) {}
2738 }, 2990 },
2739 }, 2991 },
2740 HoverGotoTypeData { 2992 HoverGotoTypeData {
2741 mod_path: "DynTrait", 2993 mod_path: "test::DynTrait",
2742 nav: NavigationTarget { 2994 nav: NavigationTarget {
2743 file_id: FileId( 2995 file_id: FileId(
2744 1, 2996 1,
@@ -2757,7 +3009,7 @@ fn foo(a<|>rg: &impl ImplTrait<B<dyn DynTrait<B<S>>>>) {}
2757 }, 3009 },
2758 }, 3010 },
2759 HoverGotoTypeData { 3011 HoverGotoTypeData {
2760 mod_path: "S", 3012 mod_path: "test::S",
2761 nav: NavigationTarget { 3013 nav: NavigationTarget {
2762 file_id: FileId( 3014 file_id: FileId(
2763 1, 3015 1,
@@ -2805,7 +3057,7 @@ fn main() { let s<|>t = test().get(); }
2805 GoToType( 3057 GoToType(
2806 [ 3058 [
2807 HoverGotoTypeData { 3059 HoverGotoTypeData {
2808 mod_path: "Foo", 3060 mod_path: "test::Foo",
2809 nav: NavigationTarget { 3061 nav: NavigationTarget {
2810 file_id: FileId( 3062 file_id: FileId(
2811 1, 3063 1,
diff --git a/xtask/tests/tidy.rs b/xtask/tests/tidy.rs
index d65a2acbc..14f0c672d 100644
--- a/xtask/tests/tidy.rs
+++ b/xtask/tests/tidy.rs
@@ -53,9 +53,11 @@ fn rust_files_are_tidy() {
53fn check_licenses() { 53fn check_licenses() {
54 let expected = " 54 let expected = "
550BSD OR MIT OR Apache-2.0 550BSD OR MIT OR Apache-2.0
56Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT
56Apache-2.0 OR BSL-1.0 57Apache-2.0 OR BSL-1.0
57Apache-2.0 OR MIT 58Apache-2.0 OR MIT
58Apache-2.0/MIT 59Apache-2.0/MIT
60Apache-2.0
59BSD-2-Clause 61BSD-2-Clause
60BSD-3-Clause 62BSD-3-Clause
61CC0-1.0 63CC0-1.0
@@ -82,7 +84,10 @@ Zlib
82 .collect::<Vec<_>>(); 84 .collect::<Vec<_>>();
83 licenses.sort(); 85 licenses.sort();
84 licenses.dedup(); 86 licenses.dedup();
85 assert_eq!(licenses, expected); 87 assert_eq!(
88 licenses.iter().filter(|license| !expected.contains(license)).collect::<Vec<_>>(),
89 Vec::<&&str>::new()
90 );
86} 91}
87 92
88fn check_todo(path: &Path, text: &str) { 93fn check_todo(path: &Path, text: &str) {