diff options
author | Florian Diebold <[email protected]> | 2019-01-05 12:42:47 +0000 |
---|---|---|
committer | Florian Diebold <[email protected]> | 2019-01-05 21:41:12 +0000 |
commit | a6f33b4ca5e70a056c60b24cb8cb3283d8209624 (patch) | |
tree | f92f6f5b9431c4047163cbec6db23c57447d8aa8 /crates/ra_hir/src/source_binder.rs | |
parent | 3e42a158787955ff9f2e81be43479dbe8f2b1bb6 (diff) |
Add test for invalidation of inferred types when typing inside function
This currently fails, but should work once we have hir::Expr.
Diffstat (limited to 'crates/ra_hir/src/source_binder.rs')
-rw-r--r-- | crates/ra_hir/src/source_binder.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/crates/ra_hir/src/source_binder.rs b/crates/ra_hir/src/source_binder.rs index 85bd84469..551f44d4e 100644 --- a/crates/ra_hir/src/source_binder.rs +++ b/crates/ra_hir/src/source_binder.rs | |||
@@ -87,6 +87,20 @@ fn module_from_source( | |||
87 | Ok(Some(Module::new(db, source_root_id, module_id)?)) | 87 | Ok(Some(Module::new(db, source_root_id, module_id)?)) |
88 | } | 88 | } |
89 | 89 | ||
90 | pub fn function_from_position( | ||
91 | db: &impl HirDatabase, | ||
92 | position: FilePosition, | ||
93 | ) -> Cancelable<Option<Function>> { | ||
94 | let file = db.source_file(position.file_id); | ||
95 | let fn_def = if let Some(f) = find_node_at_offset::<ast::FnDef>(file.syntax(), position.offset) | ||
96 | { | ||
97 | f | ||
98 | } else { | ||
99 | return Ok(None); | ||
100 | }; | ||
101 | function_from_source(db, position.file_id, fn_def) | ||
102 | } | ||
103 | |||
90 | pub fn function_from_source( | 104 | pub fn function_from_source( |
91 | db: &impl HirDatabase, | 105 | db: &impl HirDatabase, |
92 | file_id: FileId, | 106 | file_id: FileId, |