From 7f3bf7cc738d02fde80d4fde9f32cbbe72896b87 Mon Sep 17 00:00:00 2001 From: Lenard Pratt Date: Sat, 30 Mar 2019 10:50:00 +0000 Subject: Added defWithBody --- crates/ra_hir/src/expr/scope.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'crates/ra_hir/src/expr') diff --git a/crates/ra_hir/src/expr/scope.rs b/crates/ra_hir/src/expr/scope.rs index ed005c9f7..539da06c3 100644 --- a/crates/ra_hir/src/expr/scope.rs +++ b/crates/ra_hir/src/expr/scope.rs @@ -10,7 +10,7 @@ use ra_syntax::{ use ra_arena::{Arena, RawId, impl_arena_id}; use crate::{ - Name, AsName, Function, + Name, AsName, Function,DefWithBody, expr::{PatId, ExprId, Pat, Expr, Body, Statement, BodySourceMap}, HirDatabase, }; @@ -40,8 +40,8 @@ pub struct ScopeData { impl ExprScopes { // FIXME: This should take something more general than Function - pub(crate) fn expr_scopes_query(db: &impl HirDatabase, function: Function) -> Arc { - let body = db.body_hir(function); + pub(crate) fn expr_scopes_query(db: &impl HirDatabase, def: DefWithBody) -> Arc { + let body = db.body_hir(def); let res = ExprScopes::new(body); Arc::new(res) } -- cgit v1.2.3 From 88e22e9d70ac3a35989ad1d45386f86697877c4c Mon Sep 17 00:00:00 2001 From: Lenard Pratt Date: Sat, 30 Mar 2019 11:17:31 +0000 Subject: Added const bodies and static body to the ast and added inference the inference test reduce code duplication --- crates/ra_hir/src/expr/scope.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'crates/ra_hir/src/expr') diff --git a/crates/ra_hir/src/expr/scope.rs b/crates/ra_hir/src/expr/scope.rs index 539da06c3..9d6b1eb2b 100644 --- a/crates/ra_hir/src/expr/scope.rs +++ b/crates/ra_hir/src/expr/scope.rs @@ -10,7 +10,7 @@ use ra_syntax::{ use ra_arena::{Arena, RawId, impl_arena_id}; use crate::{ - Name, AsName, Function,DefWithBody, + Name, AsName,DefWithBody, expr::{PatId, ExprId, Pat, Expr, Body, Statement, BodySourceMap}, HirDatabase, }; @@ -297,6 +297,7 @@ mod tests { use ra_syntax::{SourceFile, algo::find_node_at_offset}; use test_utils::{extract_offset, assert_eq_text}; use ra_arena::ArenaId; + use crate::{Function}; use crate::expr; -- cgit v1.2.3 From b9d2c2c21fe8880fe1ca29b70b03db1d3faac554 Mon Sep 17 00:00:00 2001 From: Lenard Pratt Date: Tue, 2 Apr 2019 19:21:08 +0100 Subject: made ExprCollector pub(crate) and moved collect_fn_body_syntax --- crates/ra_hir/src/expr/scope.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'crates/ra_hir/src/expr') diff --git a/crates/ra_hir/src/expr/scope.rs b/crates/ra_hir/src/expr/scope.rs index 9d6b1eb2b..48283907b 100644 --- a/crates/ra_hir/src/expr/scope.rs +++ b/crates/ra_hir/src/expr/scope.rs @@ -297,9 +297,9 @@ mod tests { use ra_syntax::{SourceFile, algo::find_node_at_offset}; use test_utils::{extract_offset, assert_eq_text}; use ra_arena::ArenaId; - use crate::{Function}; + use crate::Function; - use crate::expr; + use crate::expr::{ExprCollector}; use super::*; @@ -317,7 +317,7 @@ mod tests { let marker: &ast::PathExpr = find_node_at_offset(file.syntax(), off).unwrap(); let fn_def: &ast::FnDef = find_node_at_offset(file.syntax(), off).unwrap(); let irrelevant_function = Function { id: crate::ids::FunctionId::from_raw(0.into()) }; - let (body, source_map) = expr::collect_fn_body_syntax(irrelevant_function, fn_def); + let (body, source_map) = collect_fn_body_syntax(irrelevant_function, fn_def); let scopes = ExprScopes::new(Arc::new(body)); let scopes = ScopesWithSourceMap { scopes: Arc::new(scopes), source_map: Arc::new(source_map) }; @@ -406,6 +406,12 @@ mod tests { ); } + fn collect_fn_body_syntax(function: Function, node: &ast::FnDef) -> (Body, BodySourceMap) { + let mut collector = ExprCollector::new(DefWithBody::Function(function)); + collector.collect_fn_body(node); + collector.finish() + } + fn do_check_local_name(code: &str, expected_offset: u32) { let (off, code) = extract_offset(code); let file = SourceFile::parse(&code); @@ -416,7 +422,7 @@ mod tests { let name_ref: &ast::NameRef = find_node_at_offset(file.syntax(), off).unwrap(); let irrelevant_function = Function { id: crate::ids::FunctionId::from_raw(0.into()) }; - let (body, source_map) = expr::collect_fn_body_syntax(irrelevant_function, fn_def); + let (body, source_map) = collect_fn_body_syntax(irrelevant_function, fn_def); let scopes = ExprScopes::new(Arc::new(body)); let scopes = ScopesWithSourceMap { scopes: Arc::new(scopes), source_map: Arc::new(source_map) }; -- cgit v1.2.3