aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_ty/src
diff options
context:
space:
mode:
Diffstat (limited to 'crates/hir_ty/src')
-rw-r--r--crates/hir_ty/src/diagnostics/decl_check.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/crates/hir_ty/src/diagnostics/decl_check.rs b/crates/hir_ty/src/diagnostics/decl_check.rs
index 4b3e2fa8f..724bad867 100644
--- a/crates/hir_ty/src/diagnostics/decl_check.rs
+++ b/crates/hir_ty/src/diagnostics/decl_check.rs
@@ -87,6 +87,10 @@ impl<'a, 'b> DeclValidator<'a, 'b> {
87 87
88 fn validate_func(&mut self, db: &dyn HirDatabase, func: FunctionId) { 88 fn validate_func(&mut self, db: &dyn HirDatabase, func: FunctionId) {
89 let data = db.function_data(func); 89 let data = db.function_data(func);
90 if data.is_extern {
91 return;
92 }
93
90 let body = db.body(func.into()); 94 let body = db.body(func.into());
91 95
92 // Recursively validate inner scope items, such as static variables and constants. 96 // Recursively validate inner scope items, such as static variables and constants.
@@ -648,6 +652,9 @@ impl<'a, 'b> DeclValidator<'a, 'b> {
648 652
649 fn validate_static(&mut self, db: &dyn HirDatabase, static_id: StaticId) { 653 fn validate_static(&mut self, db: &dyn HirDatabase, static_id: StaticId) {
650 let data = db.static_data(static_id); 654 let data = db.static_data(static_id);
655 if data.is_extern {
656 return;
657 }
651 658
652 if self.allowed(db, static_id.into(), allow::NON_UPPER_CASE_GLOBAL) { 659 if self.allowed(db, static_id.into(), allow::NON_UPPER_CASE_GLOBAL) {
653 return; 660 return;
@@ -920,4 +927,16 @@ fn main() {
920 "#, 927 "#,
921 ); 928 );
922 } 929 }
930
931 #[test]
932 fn ignores_extern_items() {
933 check_diagnostics(
934 r#"
935extern {
936 fn NonSnakeCaseName(SOME_VAR: u8) -> u8;
937 pub static SomeStatic: u8 = 10;
938}
939 "#,
940 );
941 }
923} 942}