50 lines
1.2 KiB
Rust
50 lines
1.2 KiB
Rust
|
use crate::diagnostics::{Diagnostic, DiagnosticsContext};
|
||
|
|
||
|
// Diagnostic: unresolved-extern-crate
|
||
|
//
|
||
|
// This diagnostic is triggered if rust-analyzer is unable to discover referred extern crate.
|
||
|
pub(super) 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::diagnostics::tests::check_diagnostics;
|
||
|
|
||
|
#[test]
|
||
|
fn unresolved_extern_crate() {
|
||
|
check_diagnostics(
|
||
|
r#"
|
||
|
//- /main.rs crate:main deps:core
|
||
|
extern crate core;
|
||
|
extern crate doesnotexist;
|
||
|
//^^^^^^^^^^^^^^^^^^^^^^^^^^ 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;
|
||
|
//^^^^^^^^^^^^^^^^^^^^^^^^^^ unresolved extern crate
|
||
|
// Should not error.
|
||
|
extern crate self as foo;
|
||
|
struct Foo;
|
||
|
use foo::Foo as Bar;
|
||
|
"#,
|
||
|
);
|
||
|
}
|
||
|
}
|