Add tests for resolving types in core and std preludes

This commit is contained in:
Matthias Einwag 2019-11-09 17:38:08 -08:00
parent 799903ba16
commit 8baa05666c
2 changed files with 93 additions and 0 deletions

View File

@ -463,6 +463,37 @@ fn values_dont_shadow_extern_crates() {
"###);
}
#[test]
fn std_prelude_takes_precedence_above_core_prelude() {
let map = def_map(
r#"
//- /main.rs crate:main deps:core,std
use {Foo, Bar};
//- /std.rs crate:std deps:core
#[prelude_import]
pub use self::prelude::*;
mod prelude {
pub struct Foo;
pub use core::prelude::Bar;
}
//- /core.rs crate:core
#[prelude_import]
pub use self::prelude::*;
mod prelude {
pub struct Bar;
}
"#,
);
assert_snapshot!(map, @r###"
crate
Bar: t v
Foo: t v
"###);
}
#[test]
fn cfg_not_test() {
let map = def_map(

View File

@ -597,6 +597,68 @@ mod tests {
);
}
#[test]
fn completes_std_prelude_if_core_is_defined() {
assert_debug_snapshot!(
do_reference_completion(
"
//- /main.rs
fn foo() { let x: <|> }
//- /core/lib.rs
#[prelude_import]
use prelude::*;
mod prelude {
struct Option;
}
//- /std/lib.rs
#[prelude_import]
use prelude::*;
mod prelude {
struct String;
}
"
),
@r###"
[
CompletionItem {
label: "String",
source_range: [18; 18),
delete: [18; 18),
insert: "String",
kind: Struct,
},
CompletionItem {
label: "core",
source_range: [18; 18),
delete: [18; 18),
insert: "core",
kind: Module,
},
CompletionItem {
label: "foo()",
source_range: [18; 18),
delete: [18; 18),
insert: "foo()$0",
kind: Function,
lookup: "foo",
detail: "fn foo()",
},
CompletionItem {
label: "std",
source_range: [18; 18),
delete: [18; 18),
insert: "std",
kind: Module,
},
]
"###
);
}
#[test]
fn completes_macros_as_value() {
assert_debug_snapshot!(