mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-26 20:09:19 +00:00
Make FnScopes use hir::Expr
This was a bit complicated. I've added a wrapper type for now that does the LocalSyntaxPtr <-> ExprId translation; we might want to get rid of that or give it a nicer interface.
This commit is contained in:
parent
136aba1cf3
commit
8e3e5ab2c8
13 changed files with 533 additions and 313 deletions
|
@ -927,12 +927,7 @@ pub enum Expr<'a> {
|
|||
BlockExpr(BlockExpr<'a>),
|
||||
ReturnExpr(ReturnExpr<'a>),
|
||||
MatchExpr(MatchExpr<'a>),
|
||||
MatchArmList(MatchArmList<'a>),
|
||||
MatchArm(MatchArm<'a>),
|
||||
MatchGuard(MatchGuard<'a>),
|
||||
StructLit(StructLit<'a>),
|
||||
NamedFieldList(NamedFieldList<'a>),
|
||||
NamedField(NamedField<'a>),
|
||||
CallExpr(CallExpr<'a>),
|
||||
IndexExpr(IndexExpr<'a>),
|
||||
MethodCallExpr(MethodCallExpr<'a>),
|
||||
|
@ -964,12 +959,7 @@ impl<'a> AstNode<'a> for Expr<'a> {
|
|||
BLOCK_EXPR => Some(Expr::BlockExpr(BlockExpr { syntax })),
|
||||
RETURN_EXPR => Some(Expr::ReturnExpr(ReturnExpr { syntax })),
|
||||
MATCH_EXPR => Some(Expr::MatchExpr(MatchExpr { syntax })),
|
||||
MATCH_ARM_LIST => Some(Expr::MatchArmList(MatchArmList { syntax })),
|
||||
MATCH_ARM => Some(Expr::MatchArm(MatchArm { syntax })),
|
||||
MATCH_GUARD => Some(Expr::MatchGuard(MatchGuard { syntax })),
|
||||
STRUCT_LIT => Some(Expr::StructLit(StructLit { syntax })),
|
||||
NAMED_FIELD_LIST => Some(Expr::NamedFieldList(NamedFieldList { syntax })),
|
||||
NAMED_FIELD => Some(Expr::NamedField(NamedField { syntax })),
|
||||
CALL_EXPR => Some(Expr::CallExpr(CallExpr { syntax })),
|
||||
INDEX_EXPR => Some(Expr::IndexExpr(IndexExpr { syntax })),
|
||||
METHOD_CALL_EXPR => Some(Expr::MethodCallExpr(MethodCallExpr { syntax })),
|
||||
|
@ -1001,12 +991,7 @@ impl<'a> AstNode<'a> for Expr<'a> {
|
|||
Expr::BlockExpr(inner) => inner.syntax(),
|
||||
Expr::ReturnExpr(inner) => inner.syntax(),
|
||||
Expr::MatchExpr(inner) => inner.syntax(),
|
||||
Expr::MatchArmList(inner) => inner.syntax(),
|
||||
Expr::MatchArm(inner) => inner.syntax(),
|
||||
Expr::MatchGuard(inner) => inner.syntax(),
|
||||
Expr::StructLit(inner) => inner.syntax(),
|
||||
Expr::NamedFieldList(inner) => inner.syntax(),
|
||||
Expr::NamedField(inner) => inner.syntax(),
|
||||
Expr::CallExpr(inner) => inner.syntax(),
|
||||
Expr::IndexExpr(inner) => inner.syntax(),
|
||||
Expr::MethodCallExpr(inner) => inner.syntax(),
|
||||
|
@ -4155,7 +4140,15 @@ impl<R: TreeRoot<RaTypes>> TupleStructPatNode<R> {
|
|||
}
|
||||
|
||||
|
||||
impl<'a> TupleStructPat<'a> {}
|
||||
impl<'a> TupleStructPat<'a> {
|
||||
pub fn args(self) -> impl Iterator<Item = Pat<'a>> + 'a {
|
||||
super::children(self)
|
||||
}
|
||||
|
||||
pub fn path(self) -> Option<Path<'a>> {
|
||||
super::child_opt(self)
|
||||
}
|
||||
}
|
||||
|
||||
// TupleType
|
||||
#[derive(Debug, Clone, Copy,)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue