From 4992d2bf79e9da6db759eb8e1715f90f31ec7eb9 Mon Sep 17 00:00:00 2001 From: oxalica Date: Fri, 29 Nov 2019 03:10:16 +0800 Subject: Infer range types --- crates/ra_hir_def/src/expr.rs | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) (limited to 'crates/ra_hir_def/src/expr.rs') diff --git a/crates/ra_hir_def/src/expr.rs b/crates/ra_hir_def/src/expr.rs index 04c1d8f69..115090218 100644 --- a/crates/ra_hir_def/src/expr.rs +++ b/crates/ra_hir_def/src/expr.rs @@ -130,6 +130,24 @@ pub enum Expr { rhs: ExprId, op: Option, }, + RangeFull, + RangeFrom { + lhs: ExprId, + }, + RangeTo { + rhs: ExprId, + }, + Range { + lhs: ExprId, + rhs: ExprId, + }, + RangeToInclusive { + rhs: ExprId, + }, + RangeInclusive { + lhs: ExprId, + rhs: ExprId, + }, Index { base: ExprId, index: ExprId, @@ -284,7 +302,9 @@ impl Expr { Expr::Lambda { body, .. } => { f(*body); } - Expr::BinaryOp { lhs, rhs, .. } => { + Expr::BinaryOp { lhs, rhs, .. } + | Expr::Range { lhs, rhs } + | Expr::RangeInclusive { lhs, rhs } => { f(*lhs); f(*rhs); } @@ -292,7 +312,11 @@ impl Expr { f(*base); f(*index); } - Expr::Field { expr, .. } + Expr::RangeFull => {} + Expr::RangeFrom { lhs: expr } + | Expr::RangeTo { rhs: expr } + | Expr::RangeToInclusive { rhs: expr } + | Expr::Field { expr, .. } | Expr::Await { expr } | Expr::Try { expr } | Expr::Cast { expr, .. } -- cgit v1.2.3