From a142beaf013a016a48eb9f193b55e0cbcb80b6a9 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Wed, 23 Dec 2020 12:24:24 +0100 Subject: Implement const block inference --- crates/hir_ty/src/infer/expr.rs | 2 +- crates/hir_ty/src/tests/simple.rs | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'crates/hir_ty') diff --git a/crates/hir_ty/src/infer/expr.rs b/crates/hir_ty/src/infer/expr.rs index 2cdce2cef..744569e6e 100644 --- a/crates/hir_ty/src/infer/expr.rs +++ b/crates/hir_ty/src/infer/expr.rs @@ -155,7 +155,7 @@ impl<'a> InferenceContext<'a> { } None => self.infer_block(statements, *tail, expected), }, - Expr::Unsafe { body } => self.infer_expr(*body, expected), + Expr::Unsafe { body } | Expr::Const { body } => self.infer_expr(*body, expected), Expr::TryBlock { body } => { let _inner = self.infer_expr(*body, expected); // FIXME should be std::result::Result<{inner}, _> diff --git a/crates/hir_ty/src/tests/simple.rs b/crates/hir_ty/src/tests/simple.rs index a569223b4..a61282d5a 100644 --- a/crates/hir_ty/src/tests/simple.rs +++ b/crates/hir_ty/src/tests/simple.rs @@ -1894,6 +1894,7 @@ fn effects_smoke_test() { let x = unsafe { 92 }; let y = async { async { () }.await }; let z = try { () }; + let w = const { 92 }; let t = 'a: { 92 }; } @@ -1905,7 +1906,7 @@ fn effects_smoke_test() { } "#, expect![[r#" - 16..136 '{ ...2 }; }': () + 16..162 '{ ...2 }; }': () 26..27 'x': i32 30..43 'unsafe { 92 }': i32 37..43 '{ 92 }': i32 @@ -1921,9 +1922,13 @@ fn effects_smoke_test() { 99..109 'try { () }': {unknown} 103..109 '{ () }': () 105..107 '()': () - 119..120 't': i32 - 127..133 '{ 92 }': i32 - 129..131 '92': i32 + 119..120 'w': i32 + 123..135 'const { 92 }': i32 + 129..135 '{ 92 }': i32 + 131..133 '92': i32 + 145..146 't': i32 + 153..159 '{ 92 }': i32 + 155..157 '92': i32 "#]], ) } -- cgit v1.2.3