.filter_map(SyntaxElement::into_token)
.take_while(|tok| tok != cursor);
- ast::Path::parse(&path_tokens.chain(iter::once(cursor.clone())).join("")).ok()
+ syntax::hacks::parse_expr_from_str(&path_tokens.chain(iter::once(cursor.clone())).join(""))
+ .and_then(|expr| match expr {
+ ast::Expr::PathExpr(it) => it.path(),
+ _ => None,
+ })
}
/// Parses and resolves the path at the cursor position in the given attribute, if it is a derive.
let paths = input_expressions
.into_iter()
.filter_map(|(is_sep, group)| (!is_sep).then(|| group))
- .filter_map(|mut tokens| ast::Path::parse(&tokens.join("")).ok())
+ .filter_map(|mut tokens| {
+ syntax::hacks::parse_expr_from_str(&tokens.join("")).and_then(|expr| match expr {
+ ast::Expr::PathExpr(it) => it.path(),
+ _ => None,
+ })
+ })
.collect();
Some(paths)
}