From e7e85c60d2c225eacc80184a7918ecf6c8ab0563 Mon Sep 17 00:00:00 2001
From: Aleksey Kladov <aleksey.kladov@gmail.com>
Date: Thu, 14 Nov 2019 09:41:46 +0300
Subject: [PATCH] Move original_file to Expander

---
 crates/ra_hir_def/src/body.rs       |  8 +++++++-
 crates/ra_hir_def/src/body/lower.rs | 12 ++++--------
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/crates/ra_hir_def/src/body.rs b/crates/ra_hir_def/src/body.rs
index 5d8c299ba5f..1c9c864490f 100644
--- a/crates/ra_hir_def/src/body.rs
+++ b/crates/ra_hir_def/src/body.rs
@@ -18,6 +18,7 @@ use crate::{
 
 pub struct Expander {
     crate_def_map: Arc<CrateDefMap>,
+    original_file_id: HirFileId,
     current_file_id: HirFileId,
     module: ModuleId,
 }
@@ -25,7 +26,12 @@ pub struct Expander {
 impl Expander {
     pub fn new(db: &impl DefDatabase2, current_file_id: HirFileId, module: ModuleId) -> Expander {
         let crate_def_map = db.crate_def_map(module.krate);
-        Expander { crate_def_map, current_file_id, module }
+        Expander { crate_def_map, original_file_id: current_file_id, current_file_id, module }
+    }
+
+    // FIXME: remove this.
+    fn is_in_expansion(&self) -> bool {
+        self.original_file_id != self.current_file_id
     }
 
     fn resolve_path_as_macro(&self, db: &impl DefDatabase2, path: &Path) -> Option<MacroDefId> {
diff --git a/crates/ra_hir_def/src/body/lower.rs b/crates/ra_hir_def/src/body/lower.rs
index cc4bbe11acc..602bcb220bd 100644
--- a/crates/ra_hir_def/src/body/lower.rs
+++ b/crates/ra_hir_def/src/body/lower.rs
@@ -4,7 +4,7 @@ use hir_expand::{
     either::Either,
     hygiene::Hygiene,
     name::{self, AsName, Name},
-    AstId, HirFileId, MacroCallLoc, MacroFileKind, Source,
+    AstId, MacroCallLoc, MacroFileKind, Source,
 };
 use ra_arena::Arena;
 use ra_syntax::{
@@ -34,12 +34,9 @@ pub(super) fn lower(
     params: Option<ast::ParamList>,
     body: Option<ast::Expr>,
 ) -> (Body, BodySourceMap) {
-    let original_file_id = expander.current_file_id;
-
     ExprCollector {
         expander,
         db,
-        original_file_id,
         source_map: BodySourceMap::default(),
         body: Body {
             exprs: Arena::default(),
@@ -54,7 +51,6 @@ pub(super) fn lower(
 struct ExprCollector<DB> {
     db: DB,
     expander: Expander,
-    original_file_id: HirFileId,
 
     body: Body,
     source_map: BodySourceMap,
@@ -100,7 +96,7 @@ where
     fn alloc_expr(&mut self, expr: Expr, ptr: AstPtr<ast::Expr>) -> ExprId {
         let ptr = Either::A(ptr);
         let id = self.body.exprs.alloc(expr);
-        if self.expander.current_file_id == self.original_file_id {
+        if !self.expander.is_in_expansion() {
             self.source_map.expr_map.insert(ptr, id);
         }
         self.source_map
@@ -116,7 +112,7 @@ where
     fn alloc_expr_field_shorthand(&mut self, expr: Expr, ptr: AstPtr<ast::RecordField>) -> ExprId {
         let ptr = Either::B(ptr);
         let id = self.body.exprs.alloc(expr);
-        if self.expander.current_file_id == self.original_file_id {
+        if !self.expander.is_in_expansion() {
             self.source_map.expr_map.insert(ptr, id);
         }
         self.source_map
@@ -126,7 +122,7 @@ where
     }
     fn alloc_pat(&mut self, pat: Pat, ptr: PatPtr) -> PatId {
         let id = self.body.pats.alloc(pat);
-        if self.expander.current_file_id == self.original_file_id {
+        if !self.expander.is_in_expansion() {
             self.source_map.pat_map.insert(ptr, id);
         }
         self.source_map