aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_def
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2020-10-17 23:45:32 +0100
committerGitHub <[email protected]>2020-10-17 23:45:32 +0100
commitaed7b6d98aab8c222124d336b69f83ed4f1dfb2d (patch)
tree425f5c6dda7b123b0654534387cb6dd351868847 /crates/hir_def
parent63956e509eea1aba1a303c58bf60d068863a61dd (diff)
parent13451d3dc4477cc1dab38d6d66643de4bd4aa59e (diff)
Merge #6271
6271: Complete methods when receiver is a macro r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
Diffstat (limited to 'crates/hir_def')
-rw-r--r--crates/hir_def/src/body.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/crates/hir_def/src/body.rs b/crates/hir_def/src/body.rs
index 9a9a605dd..d51036e4f 100644
--- a/crates/hir_def/src/body.rs
+++ b/crates/hir_def/src/body.rs
@@ -105,14 +105,16 @@ impl Expander {
105 105
106 let macro_call = InFile::new(self.current_file_id, &macro_call); 106 let macro_call = InFile::new(self.current_file_id, &macro_call);
107 107
108 if let Some(call_id) = macro_call.as_call_id(db, self.crate_def_map.krate, |path| { 108 let resolver = |path: ModPath| -> Option<MacroDefId> {
109 if let Some(local_scope) = local_scope { 109 if let Some(local_scope) = local_scope {
110 if let Some(def) = path.as_ident().and_then(|n| local_scope.get_legacy_macro(n)) { 110 if let Some(def) = path.as_ident().and_then(|n| local_scope.get_legacy_macro(n)) {
111 return Some(def); 111 return Some(def);
112 } 112 }
113 } 113 }
114 self.resolve_path_as_macro(db, &path) 114 self.resolve_path_as_macro(db, &path)
115 }) { 115 };
116
117 if let Some(call_id) = macro_call.as_call_id(db, self.crate_def_map.krate, resolver) {
116 let file_id = call_id.as_file(); 118 let file_id = call_id.as_file();
117 if let Some(node) = db.parse_or_expand(file_id) { 119 if let Some(node) = db.parse_or_expand(file_id) {
118 if let Some(expr) = T::cast(node) { 120 if let Some(expr) = T::cast(node) {