]> git.lizzy.rs Git - rust.git/commitdiff
Remove deprecated Path::from_ast
authorAleksey Kladov <aleksey.kladov@gmail.com>
Sat, 15 Aug 2020 16:22:16 +0000 (18:22 +0200)
committerAleksey Kladov <aleksey.kladov@gmail.com>
Sat, 15 Aug 2020 16:22:16 +0000 (18:22 +0200)
Long term, we probably should make hir::Path private to hir.

crates/assists/src/ast_transform.rs
crates/hir_def/src/path.rs

index 4c41c16d86cd0c3c483659a6aff937059a591940..5216862ba52d2f767ba0a3350f7d8d1e88d2bc93 100644 (file)
@@ -7,6 +7,17 @@
     ast::{self, AstNode},
 };
 
+pub fn apply<'a, N: AstNode>(transformer: &dyn AstTransform<'a>, node: N) -> N {
+    SyntaxRewriter::from_fn(|element| match element {
+        syntax::SyntaxElement::Node(n) => {
+            let replacement = transformer.get_substitution(&n)?;
+            Some(replacement.into())
+        }
+        _ => None,
+    })
+    .rewrite_ast(&node)
+}
+
 pub trait AstTransform<'a> {
     fn get_substitution(&self, node: &syntax::SyntaxNode) -> Option<syntax::SyntaxNode>;
 
@@ -107,10 +118,7 @@ fn get_substitution_inner(&self, node: &syntax::SyntaxNode) -> Option<syntax::Sy
             ast::Type::PathType(path_type) => path_type.path()?,
             _ => return None,
         };
-        // FIXME: use `hir::Path::from_src` instead.
-        #[allow(deprecated)]
-        let path = hir::Path::from_ast(path)?;
-        let resolution = self.source_scope.resolve_hir_path(&path)?;
+        let resolution = self.source_scope.speculative_resolve(&path)?;
         match resolution {
             hir::PathResolution::TypeParam(tp) => Some(self.substs.get(&tp)?.syntax().clone()),
             _ => None,
@@ -146,10 +154,7 @@ fn get_substitution_inner(&self, node: &syntax::SyntaxNode) -> Option<syntax::Sy
             // don't try to qualify `Fn(Foo) -> Bar` paths, they are in prelude anyway
             return None;
         }
-        // FIXME: use `hir::Path::from_src` instead.
-        #[allow(deprecated)]
-        let hir_path = hir::Path::from_ast(p.clone());
-        let resolution = self.source_scope.resolve_hir_path(&hir_path?)?;
+        let resolution = self.source_scope.speculative_resolve(&p)?;
         match resolution {
             PathResolution::Def(def) => {
                 let found_path = from.find_use_path(self.source_scope.db.upcast(), def)?;
@@ -175,17 +180,6 @@ fn get_substitution_inner(&self, node: &syntax::SyntaxNode) -> Option<syntax::Sy
     }
 }
 
-pub fn apply<'a, N: AstNode>(transformer: &dyn AstTransform<'a>, node: N) -> N {
-    SyntaxRewriter::from_fn(|element| match element {
-        syntax::SyntaxElement::Node(n) => {
-            let replacement = transformer.get_substitution(&n)?;
-            Some(replacement.into())
-        }
-        _ => None,
-    })
-    .rewrite_ast(&node)
-}
-
 impl<'a> AstTransform<'a> for QualifyPaths<'a> {
     fn get_substitution(&self, node: &syntax::SyntaxNode) -> Option<syntax::SyntaxNode> {
         self.get_substitution_inner(node).or_else(|| self.previous.get_substitution(node))
index 74d26f08b37d71ba84558832c9d287c99f12aa16..99395667defcde5c9e23fc5d2ffa5ee48cd3f62f 100644 (file)
@@ -153,12 +153,6 @@ pub enum GenericArg {
 }
 
 impl Path {
-    /// Converts an `ast::Path` to `Path`. Works with use trees.
-    #[deprecated = "Doesn't handle hygiene, don't add new calls, remove old ones"]
-    pub fn from_ast(path: ast::Path) -> Option<Path> {
-        lower::lower_path(path, &Hygiene::new_unhygienic())
-    }
-
     /// Converts an `ast::Path` to `Path`. Works with use trees.
     /// It correctly handles `$crate` based path from macro call.
     pub fn from_src(path: ast::Path, hygiene: &Hygiene) -> Option<Path> {