aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/ra_hir/src/code_model_api.rs10
-rw-r--r--crates/ra_hir/src/source_binder.rs10
-rw-r--r--crates/ra_hir/src/ty/tests.rs39
3 files changed, 23 insertions, 36 deletions
diff --git a/crates/ra_hir/src/code_model_api.rs b/crates/ra_hir/src/code_model_api.rs
index 3c1f7cd65..5179f719d 100644
--- a/crates/ra_hir/src/code_model_api.rs
+++ b/crates/ra_hir/src/code_model_api.rs
@@ -606,11 +606,6 @@ impl Const {
606 db.infer((*self).into()) 606 db.infer((*self).into())
607 } 607 }
608 608
609 #[cfg(test)]
610 pub(crate) fn body_source_map(&self, db: &impl HirDatabase) -> Arc<BodySourceMap> {
611 db.body_with_source_map((*self).into()).1
612 }
613
614 /// The containing impl block, if this is a method. 609 /// The containing impl block, if this is a method.
615 pub fn impl_block(&self, db: &impl DefDatabase) -> Option<ImplBlock> { 610 pub fn impl_block(&self, db: &impl DefDatabase) -> Option<ImplBlock> {
616 let module_impls = db.impls_in_module(self.module(db)); 611 let module_impls = db.impls_in_module(self.module(db));
@@ -679,11 +674,6 @@ impl Static {
679 pub fn infer(&self, db: &impl HirDatabase) -> Arc<InferenceResult> { 674 pub fn infer(&self, db: &impl HirDatabase) -> Arc<InferenceResult> {
680 db.infer((*self).into()) 675 db.infer((*self).into())
681 } 676 }
682
683 #[cfg(test)]
684 pub(crate) fn body_source_map(&self, db: &impl HirDatabase) -> Arc<BodySourceMap> {
685 db.body_with_source_map((*self).into()).1
686 }
687} 677}
688 678
689impl Docs for Static { 679impl Docs for Static {
diff --git a/crates/ra_hir/src/source_binder.rs b/crates/ra_hir/src/source_binder.rs
index 846394212..c3cb17882 100644
--- a/crates/ra_hir/src/source_binder.rs
+++ b/crates/ra_hir/src/source_binder.rs
@@ -343,4 +343,14 @@ impl SourceAnalyzer {
343 }; 343 };
344 Some(res) 344 Some(res)
345 } 345 }
346
347 #[cfg(test)]
348 pub(crate) fn body_source_map(&self) -> Arc<crate::expr::BodySourceMap> {
349 self.body_source_map.clone().unwrap()
350 }
351
352 #[cfg(test)]
353 pub(crate) fn inference_result(&self) -> Arc<crate::ty::InferenceResult> {
354 self.infer.clone().unwrap()
355 }
346} 356}
diff --git a/crates/ra_hir/src/ty/tests.rs b/crates/ra_hir/src/ty/tests.rs
index ecc63f376..87d6bcaec 100644
--- a/crates/ra_hir/src/ty/tests.rs
+++ b/crates/ra_hir/src/ty/tests.rs
@@ -4,7 +4,7 @@ use std::fmt::Write;
4use insta::assert_snapshot_matches; 4use insta::assert_snapshot_matches;
5 5
6use ra_db::{SourceDatabase, salsa::Database, FilePosition}; 6use ra_db::{SourceDatabase, salsa::Database, FilePosition};
7use ra_syntax::{algo, ast::{self, AstNode}}; 7use ra_syntax::{algo, ast::{self, AstNode}, SyntaxKind::*};
8use test_utils::covers; 8use test_utils::covers;
9 9
10use crate::{ 10use crate::{
@@ -12,7 +12,8 @@ use crate::{
12 mock::MockDatabase, 12 mock::MockDatabase,
13 ty::display::HirDisplay, 13 ty::display::HirDisplay,
14 ty::InferenceResult, 14 ty::InferenceResult,
15 expr::BodySourceMap 15 expr::BodySourceMap,
16 SourceAnalyzer,
16}; 17};
17 18
18// These tests compare the inference results for all expressions in a file 19// These tests compare the inference results for all expressions in a file
@@ -1862,14 +1863,14 @@ fn test() {
1862 @r###" 1863 @r###"
1863[49; 50) '0': u32 1864[49; 50) '0': u32
1864[80; 83) '101': u32 1865[80; 83) '101': u32
1865[126; 128) '99': u32
1866[95; 213) '{ ...NST; }': () 1866[95; 213) '{ ...NST; }': ()
1867[138; 139) 'x': {unknown} 1867[138; 139) 'x': {unknown}
1868[142; 153) 'LOCAL_CONST': {unknown} 1868[142; 153) 'LOCAL_CONST': {unknown}
1869[163; 164) 'z': u32 1869[163; 164) 'z': u32
1870[167; 179) 'GLOBAL_CONST': u32 1870[167; 179) 'GLOBAL_CONST': u32
1871[189; 191) 'id': u32 1871[189; 191) 'id': u32
1872[194; 210) 'Foo::A..._CONST': u32"### 1872[194; 210) 'Foo::A..._CONST': u32
1873[126; 128) '99': u32"###
1873 ); 1874 );
1874} 1875}
1875 1876
@@ -1891,8 +1892,6 @@ fn test() {
1891 @r###" 1892 @r###"
1892[29; 32) '101': u32 1893[29; 32) '101': u32
1893[70; 73) '101': u32 1894[70; 73) '101': u32
1894[118; 120) '99': u32
1895[161; 163) '99': u32
1896[85; 280) '{ ...MUT; }': () 1895[85; 280) '{ ...MUT; }': ()
1897[173; 174) 'x': {unknown} 1896[173; 174) 'x': {unknown}
1898[177; 189) 'LOCAL_STATIC': {unknown} 1897[177; 189) 'LOCAL_STATIC': {unknown}
@@ -1901,7 +1900,9 @@ fn test() {
1901[229; 230) 'z': u32 1900[229; 230) 'z': u32
1902[233; 246) 'GLOBAL_STATIC': u32 1901[233; 246) 'GLOBAL_STATIC': u32
1903[256; 257) 'w': u32 1902[256; 257) 'w': u32
1904[260; 277) 'GLOBAL...IC_MUT': u32"### 1903[260; 277) 'GLOBAL...IC_MUT': u32
1904[118; 120) '99': u32
1905[161; 163) '99': u32"###
1905 ); 1906 );
1906} 1907}
1907 1908
@@ -2350,25 +2351,11 @@ fn infer(content: &str) -> String {
2350 } 2351 }
2351 }; 2352 };
2352 2353
2353 for const_def in source_file.syntax().descendants().filter_map(ast::ConstDef::cast) { 2354 for node in source_file.syntax().descendants() {
2354 let konst = source_binder::const_from_source(&db, file_id, const_def).unwrap(); 2355 if node.kind() == FN_DEF || node.kind() == CONST_DEF || node.kind() == STATIC_DEF {
2355 let inference_result = konst.infer(&db); 2356 let analyzer = SourceAnalyzer::new(&db, file_id, node, None);
2356 let body_source_map = konst.body_source_map(&db); 2357 infer_def(analyzer.inference_result(), analyzer.body_source_map());
2357 infer_def(inference_result, body_source_map) 2358 }
2358 }
2359
2360 for static_def in source_file.syntax().descendants().filter_map(ast::StaticDef::cast) {
2361 let static_ = source_binder::static_from_source(&db, file_id, static_def).unwrap();
2362 let inference_result = static_.infer(&db);
2363 let body_source_map = static_.body_source_map(&db);
2364 infer_def(inference_result, body_source_map)
2365 }
2366
2367 for fn_def in source_file.syntax().descendants().filter_map(ast::FnDef::cast) {
2368 let func = source_binder::function_from_source(&db, file_id, fn_def).unwrap();
2369 let inference_result = func.infer(&db);
2370 let body_source_map = func.body_source_map(&db);
2371 infer_def(inference_result, body_source_map)
2372 } 2359 }
2373 2360
2374 acc.truncate(acc.trim_end().len()); 2361 acc.truncate(acc.trim_end().len());