50 lines
1.2 KiB
Rust
50 lines
1.2 KiB
Rust
use crate::{Diagnostic, DiagnosticsContext};
|
|
|
|
// Diagnostic: unresolved-extern-crate
|
|
//
|
|
// This diagnostic is triggered if rust-analyzer is unable to discover referred extern crate.
|
|
pub(crate) fn unresolved_extern_crate(
|
|
ctx: &DiagnosticsContext<'_>,
|
|
d: &hir::UnresolvedExternCrate,
|
|
) -> Diagnostic {
|
|
Diagnostic::new(
|
|
"unresolved-extern-crate",
|
|
"unresolved extern crate",
|
|
ctx.sema.diagnostics_display_range(d.decl.clone().map(|it| it.into())).range,
|
|
)
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use crate::tests::check_diagnostics;
|
|
|
|
#[test]
|
|
fn unresolved_extern_crate() {
|
|
check_diagnostics(
|
|
r#"
|
|
//- /main.rs crate:main deps:core
|
|
extern crate core;
|
|
extern crate doesnotexist;
|
|
//^^^^^^^^^^^^^^^^^^^^^^^^^^ error: unresolved extern crate
|
|
//- /lib.rs crate:core
|
|
"#,
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn extern_crate_self_as() {
|
|
cov_mark::check!(extern_crate_self_as);
|
|
check_diagnostics(
|
|
r#"
|
|
//- /lib.rs
|
|
extern crate doesnotexist;
|
|
//^^^^^^^^^^^^^^^^^^^^^^^^^^ error: unresolved extern crate
|
|
// Should not error.
|
|
extern crate self as foo;
|
|
struct Foo;
|
|
use foo::Foo as Bar;
|
|
"#,
|
|
);
|
|
}
|
|
}
|