Skip to content

Commit 0d6ba64

Browse files
committed
add tests
Note: the following def kinds were already handled correctly (deprecated=true): - Variant - Function - Macro
1 parent eed5b46 commit 0d6ba64

1 file changed

Lines changed: 307 additions & 3 deletions

File tree

crates/ide-completion/src/render.rs

Lines changed: 307 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1560,6 +1560,31 @@ fn main() { let _: m::Spam = S$0 }
15601560
check(
15611561
r#"
15621562
#[deprecated]
1563+
mod something_deprecated {}
1564+
1565+
fn main() { som$0 }
1566+
"#,
1567+
SymbolKind::Module,
1568+
expect![[r#"
1569+
[
1570+
CompletionItem {
1571+
label: "something_deprecated",
1572+
detail_left: None,
1573+
detail_right: None,
1574+
source_range: 55..58,
1575+
delete: 55..58,
1576+
insert: "something_deprecated",
1577+
kind: SymbolKind(
1578+
Module,
1579+
),
1580+
},
1581+
]
1582+
"#]],
1583+
);
1584+
1585+
check(
1586+
r#"
1587+
#[deprecated]
15631588
fn something_deprecated() {}
15641589
15651590
fn main() { som$0 }
@@ -1602,10 +1627,289 @@ fn main() { som$0 }
16021627
"#]],
16031628
);
16041629

1630+
check(
1631+
r#"
1632+
#[deprecated]
1633+
struct A;
1634+
1635+
fn main() { A$0 }
1636+
"#,
1637+
SymbolKind::Struct,
1638+
expect![[r#"
1639+
[
1640+
CompletionItem {
1641+
label: "A",
1642+
detail_left: None,
1643+
detail_right: Some(
1644+
"A",
1645+
),
1646+
source_range: 37..38,
1647+
delete: 37..38,
1648+
insert: "A",
1649+
kind: SymbolKind(
1650+
Struct,
1651+
),
1652+
detail: "A",
1653+
},
1654+
]
1655+
"#]],
1656+
);
1657+
1658+
check(
1659+
r#"
1660+
#[deprecated]
1661+
enum A {}
1662+
1663+
fn main() { A$0 }
1664+
"#,
1665+
SymbolKind::Enum,
1666+
expect![[r#"
1667+
[
1668+
CompletionItem {
1669+
label: "A",
1670+
detail_left: None,
1671+
detail_right: Some(
1672+
"A",
1673+
),
1674+
source_range: 37..38,
1675+
delete: 37..38,
1676+
insert: "A",
1677+
kind: SymbolKind(
1678+
Enum,
1679+
),
1680+
detail: "A",
1681+
},
1682+
]
1683+
"#]],
1684+
);
1685+
1686+
check(
1687+
r#"
1688+
enum A {
1689+
Okay,
1690+
#[deprecated]
1691+
Old,
1692+
}
1693+
1694+
fn main() { A::$0 }
1695+
"#,
1696+
SymbolKind::Variant,
1697+
expect![[r#"
1698+
[
1699+
CompletionItem {
1700+
label: "Okay",
1701+
detail_left: None,
1702+
detail_right: Some(
1703+
"Okay",
1704+
),
1705+
source_range: 64..64,
1706+
delete: 64..64,
1707+
insert: "Okay$0",
1708+
kind: SymbolKind(
1709+
Variant,
1710+
),
1711+
detail: "Okay",
1712+
relevance: CompletionRelevance {
1713+
exact_name_match: false,
1714+
type_match: None,
1715+
is_local: false,
1716+
trait_: None,
1717+
is_name_already_imported: false,
1718+
requires_import: false,
1719+
is_private_editable: false,
1720+
postfix_match: None,
1721+
function: Some(
1722+
CompletionRelevanceFn {
1723+
has_params: false,
1724+
has_self_param: false,
1725+
return_type: DirectConstructor,
1726+
},
1727+
),
1728+
is_skipping_completion: false,
1729+
has_local_inherent_impl: false,
1730+
},
1731+
trigger_call_info: true,
1732+
},
1733+
CompletionItem {
1734+
label: "Old",
1735+
detail_left: None,
1736+
detail_right: Some(
1737+
"Old",
1738+
),
1739+
source_range: 64..64,
1740+
delete: 64..64,
1741+
insert: "Old$0",
1742+
kind: SymbolKind(
1743+
Variant,
1744+
),
1745+
detail: "Old",
1746+
deprecated: true,
1747+
relevance: CompletionRelevance {
1748+
exact_name_match: false,
1749+
type_match: None,
1750+
is_local: false,
1751+
trait_: None,
1752+
is_name_already_imported: false,
1753+
requires_import: false,
1754+
is_private_editable: false,
1755+
postfix_match: None,
1756+
function: Some(
1757+
CompletionRelevanceFn {
1758+
has_params: false,
1759+
has_self_param: false,
1760+
return_type: DirectConstructor,
1761+
},
1762+
),
1763+
is_skipping_completion: false,
1764+
has_local_inherent_impl: false,
1765+
},
1766+
trigger_call_info: true,
1767+
},
1768+
]
1769+
"#]],
1770+
);
1771+
1772+
check(
1773+
r#"
1774+
#[deprecated]
1775+
const A: i32 = 0;
1776+
1777+
fn main() { A$0 }
1778+
"#,
1779+
SymbolKind::Const,
1780+
expect![[r#"
1781+
[
1782+
CompletionItem {
1783+
label: "A",
1784+
detail_left: None,
1785+
detail_right: Some(
1786+
"i32",
1787+
),
1788+
source_range: 45..46,
1789+
delete: 45..46,
1790+
insert: "A",
1791+
kind: SymbolKind(
1792+
Const,
1793+
),
1794+
detail: "i32",
1795+
},
1796+
]
1797+
"#]],
1798+
);
1799+
1800+
check(
1801+
r#"
1802+
#[deprecated]
1803+
static A: i32 = 0;
1804+
1805+
fn main() { A$0 }
1806+
"#,
1807+
SymbolKind::Static,
1808+
expect![[r#"
1809+
[
1810+
CompletionItem {
1811+
label: "A",
1812+
detail_left: None,
1813+
detail_right: Some(
1814+
"i32",
1815+
),
1816+
source_range: 46..47,
1817+
delete: 46..47,
1818+
insert: "A",
1819+
kind: SymbolKind(
1820+
Static,
1821+
),
1822+
detail: "i32",
1823+
},
1824+
]
1825+
"#]],
1826+
);
1827+
1828+
check(
1829+
r#"
1830+
#[deprecated]
1831+
trait A {}
1832+
1833+
impl A$0
1834+
"#,
1835+
SymbolKind::Trait,
1836+
expect![[r#"
1837+
[
1838+
CompletionItem {
1839+
label: "A",
1840+
detail_left: None,
1841+
detail_right: None,
1842+
source_range: 31..32,
1843+
delete: 31..32,
1844+
insert: "A",
1845+
kind: SymbolKind(
1846+
Trait,
1847+
),
1848+
},
1849+
]
1850+
"#]],
1851+
);
1852+
1853+
check(
1854+
r#"
1855+
#[deprecated]
1856+
type A = i32;
1857+
1858+
fn main() { A$0 }
1859+
"#,
1860+
SymbolKind::TypeAlias,
1861+
expect![[r#"
1862+
[
1863+
CompletionItem {
1864+
label: "A",
1865+
detail_left: None,
1866+
detail_right: None,
1867+
source_range: 41..42,
1868+
delete: 41..42,
1869+
insert: "A",
1870+
kind: SymbolKind(
1871+
TypeAlias,
1872+
),
1873+
},
1874+
]
1875+
"#]],
1876+
);
1877+
1878+
check(
1879+
r#"
1880+
#[deprecated]
1881+
macro_rules! a { _ => {}}
1882+
1883+
fn main() { a$0 }
1884+
"#,
1885+
SymbolKind::Macro,
1886+
expect![[r#"
1887+
[
1888+
CompletionItem {
1889+
label: "a!(…)",
1890+
detail_left: None,
1891+
detail_right: Some(
1892+
"macro_rules! a",
1893+
),
1894+
source_range: 53..54,
1895+
delete: 53..54,
1896+
insert: "a!($0)",
1897+
kind: SymbolKind(
1898+
Macro,
1899+
),
1900+
lookup: "a!",
1901+
detail: "macro_rules! a",
1902+
deprecated: true,
1903+
},
1904+
]
1905+
"#]],
1906+
);
1907+
16051908
check(
16061909
r#"
16071910
struct A { #[deprecated] the_field: u32 }
1608-
fn foo() { A { the$0 } }
1911+
1912+
fn main() { A { the$0 } }
16091913
"#,
16101914
SymbolKind::Field,
16111915
expect![[r#"
@@ -1616,8 +1920,8 @@ fn foo() { A { the$0 } }
16161920
detail_right: Some(
16171921
"u32",
16181922
),
1619-
source_range: 57..60,
1620-
delete: 57..60,
1923+
source_range: 59..62,
1924+
delete: 59..62,
16211925
insert: "the_field",
16221926
kind: SymbolKind(
16231927
Field,

0 commit comments

Comments
 (0)