Skip to content

Commit 18ad86f

Browse files
committed
Add tests for enum completion
Adds tests for completion of enum variants in match arms, if-let statements, and basic expressions.
1 parent 8664509 commit 18ad86f

File tree

1 file changed

+178
-0
lines changed

1 file changed

+178
-0
lines changed

crates/ra_ide/src/completion/complete_unqualified_path.rs

Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1130,4 +1130,182 @@ mod tests {
11301130
"###
11311131
);
11321132
}
1133+
#[test]
1134+
fn completes_enum_variant_matcharm() {
1135+
assert_debug_snapshot!(
1136+
do_reference_completion(
1137+
r"
1138+
enum Foo {
1139+
Bar,
1140+
Baz,
1141+
Quux
1142+
}
1143+
1144+
fn main() {
1145+
let foo = Foo::Quux;
1146+
1147+
match foo {
1148+
Qu<|>
1149+
}
1150+
}
1151+
"
1152+
),
1153+
@r###"
1154+
[
1155+
CompletionItem {
1156+
label: "Foo",
1157+
source_range: [248; 250),
1158+
delete: [248; 250),
1159+
insert: "Foo",
1160+
kind: Enum,
1161+
},
1162+
CompletionItem {
1163+
label: "Foo::Bar",
1164+
source_range: [248; 250),
1165+
delete: [248; 250),
1166+
insert: "Foo::Bar",
1167+
kind: EnumVariant,
1168+
detail: "()",
1169+
},
1170+
CompletionItem {
1171+
label: "Foo::Baz",
1172+
source_range: [248; 250),
1173+
delete: [248; 250),
1174+
insert: "Foo::Baz",
1175+
kind: EnumVariant,
1176+
detail: "()",
1177+
},
1178+
CompletionItem {
1179+
label: "Foo::Quux",
1180+
source_range: [248; 250),
1181+
delete: [248; 250),
1182+
insert: "Foo::Quux",
1183+
kind: EnumVariant,
1184+
detail: "()",
1185+
},
1186+
]
1187+
"###
1188+
)
1189+
}
1190+
1191+
#[test]
1192+
fn completes_enum_variant_iflet() {
1193+
assert_debug_snapshot!(
1194+
do_reference_completion(
1195+
r"
1196+
enum Foo {
1197+
Bar,
1198+
Baz,
1199+
Quux
1200+
}
1201+
1202+
fn main() {
1203+
let foo = Foo::Quux;
1204+
1205+
if let Qu<|> = foo {
1206+
1207+
}
1208+
}
1209+
"
1210+
),
1211+
@r###"
1212+
[
1213+
CompletionItem {
1214+
label: "Foo",
1215+
source_range: [219; 221),
1216+
delete: [219; 221),
1217+
insert: "Foo",
1218+
kind: Enum,
1219+
},
1220+
CompletionItem {
1221+
label: "Foo::Bar",
1222+
source_range: [219; 221),
1223+
delete: [219; 221),
1224+
insert: "Foo::Bar",
1225+
kind: EnumVariant,
1226+
detail: "()",
1227+
},
1228+
CompletionItem {
1229+
label: "Foo::Baz",
1230+
source_range: [219; 221),
1231+
delete: [219; 221),
1232+
insert: "Foo::Baz",
1233+
kind: EnumVariant,
1234+
detail: "()",
1235+
},
1236+
CompletionItem {
1237+
label: "Foo::Quux",
1238+
source_range: [219; 221),
1239+
delete: [219; 221),
1240+
insert: "Foo::Quux",
1241+
kind: EnumVariant,
1242+
detail: "()",
1243+
},
1244+
]
1245+
"###
1246+
)
1247+
}
1248+
1249+
#[test]
1250+
fn completes_enum_variant_basic_expr() {
1251+
assert_debug_snapshot!(
1252+
do_reference_completion(
1253+
r"
1254+
enum Foo {
1255+
Bar,
1256+
Baz,
1257+
Quux
1258+
}
1259+
1260+
fn main() {
1261+
let foo: Foo = Q<|>
1262+
}
1263+
"
1264+
),
1265+
@r###"
1266+
[
1267+
CompletionItem {
1268+
label: "Foo",
1269+
source_range: [185; 186),
1270+
delete: [185; 186),
1271+
insert: "Foo",
1272+
kind: Enum,
1273+
},
1274+
CompletionItem {
1275+
label: "Foo::Bar",
1276+
source_range: [185; 186),
1277+
delete: [185; 186),
1278+
insert: "Foo::Bar",
1279+
kind: EnumVariant,
1280+
detail: "()",
1281+
},
1282+
CompletionItem {
1283+
label: "Foo::Baz",
1284+
source_range: [185; 186),
1285+
delete: [185; 186),
1286+
insert: "Foo::Baz",
1287+
kind: EnumVariant,
1288+
detail: "()",
1289+
},
1290+
CompletionItem {
1291+
label: "Foo::Quux",
1292+
source_range: [185; 186),
1293+
delete: [185; 186),
1294+
insert: "Foo::Quux",
1295+
kind: EnumVariant,
1296+
detail: "()",
1297+
},
1298+
CompletionItem {
1299+
label: "main()",
1300+
source_range: [185; 186),
1301+
delete: [185; 186),
1302+
insert: "main()$0",
1303+
kind: Function,
1304+
lookup: "main",
1305+
detail: "fn main()",
1306+
},
1307+
]
1308+
"###
1309+
)
1310+
}
11331311
}

0 commit comments

Comments
 (0)