diff options
Diffstat (limited to 'crates/ra_ide/src/completion/completion_context.rs')
-rw-r--r-- | crates/ra_ide/src/completion/completion_context.rs | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/crates/ra_ide/src/completion/completion_context.rs b/crates/ra_ide/src/completion/completion_context.rs index 7688a1483..8e1f6dd98 100644 --- a/crates/ra_ide/src/completion/completion_context.rs +++ b/crates/ra_ide/src/completion/completion_context.rs | |||
@@ -53,6 +53,8 @@ pub(crate) struct CompletionContext<'a> { | |||
53 | pub(super) after_if: bool, | 53 | pub(super) after_if: bool, |
54 | /// `true` if we are a statement or a last expr in the block. | 54 | /// `true` if we are a statement or a last expr in the block. |
55 | pub(super) can_be_stmt: bool, | 55 | pub(super) can_be_stmt: bool, |
56 | /// `true` if we expect an expression at the cursor position. | ||
57 | pub(super) can_be_expr: bool, | ||
56 | /// Something is typed at the "top" level, in module or impl/trait. | 58 | /// Something is typed at the "top" level, in module or impl/trait. |
57 | pub(super) is_new_item: bool, | 59 | pub(super) is_new_item: bool, |
58 | /// The receiver if this is a field or method access, i.e. writing something.<|> | 60 | /// The receiver if this is a field or method access, i.e. writing something.<|> |
@@ -127,6 +129,7 @@ impl<'a> CompletionContext<'a> { | |||
127 | path_prefix: None, | 129 | path_prefix: None, |
128 | after_if: false, | 130 | after_if: false, |
129 | can_be_stmt: false, | 131 | can_be_stmt: false, |
132 | can_be_expr: false, | ||
130 | is_new_item: false, | 133 | is_new_item: false, |
131 | dot_receiver: None, | 134 | dot_receiver: None, |
132 | is_call: false, | 135 | is_call: false, |
@@ -403,6 +406,7 @@ impl<'a> CompletionContext<'a> { | |||
403 | None | 406 | None |
404 | }) | 407 | }) |
405 | .unwrap_or(false); | 408 | .unwrap_or(false); |
409 | self.can_be_expr = path.syntax().parent().and_then(ast::PathExpr::cast).is_some(); | ||
406 | 410 | ||
407 | if let Some(off) = name_ref.syntax().text_range().start().checked_sub(2.into()) { | 411 | if let Some(off) = name_ref.syntax().text_range().start().checked_sub(2.into()) { |
408 | if let Some(if_expr) = | 412 | if let Some(if_expr) = |