From 2f0f6c782a881b19a183b368c11a0b74ef10566c Mon Sep 17 00:00:00 2001 From: Marijn Haverbeke Date: Wed, 25 Jan 2012 13:19:32 +0100 Subject: [PATCH] Add bit-shifting ops to ast_util::eval_const_expr Closes #1659 --- src/comp/syntax/ast_util.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/comp/syntax/ast_util.rs b/src/comp/syntax/ast_util.rs index 7a88359d26c..7d5e07d7950 100644 --- a/src/comp/syntax/ast_util.rs +++ b/src/comp/syntax/ast_util.rs @@ -265,6 +265,8 @@ fn eval_const_expr(e: @expr) -> const_val { mul { const_int(a * b) } div { const_int(a / b) } rem { const_int(a % b) } and | bitand { const_int(a & b) } or | bitor { const_int(a | b) } bitxor { const_int(a ^ b) } + lsl { const_int(a << b) } lsr { const_int(a >> b) } + asr { const_int(a >>> b) } eq { fromb(a == b) } lt { fromb(a < b) } le { fromb(a <= b) } ne { fromb(a != b) } ge { fromb(a >= b) } gt { fromb(a > b) } @@ -276,6 +278,8 @@ fn eval_const_expr(e: @expr) -> const_val { mul { const_uint(a * b) } div { const_uint(a / b) } rem { const_uint(a % b) } and | bitand { const_uint(a & b) } or | bitor { const_uint(a | b) } bitxor { const_uint(a ^ b) } + lsl { const_int(a << b as i64) } lsr { const_int(a >> b as i64) } + asr { const_int(a >>> b as i64) } eq { fromb(a == b) } lt { fromb(a < b) } le { fromb(a <= b) } ne { fromb(a != b) } ge { fromb(a >= b) } gt { fromb(a > b) }