|
2964 | 2964 | <a href="#2963" id="2963">2963</a> |
2965 | 2965 | <a href="#2964" id="2964">2964</a> |
2966 | 2966 | <a href="#2965" id="2965">2965</a> |
2967 | | -<a href="#2966" id="2966">2966</a> |
2968 | | -<a href="#2967" id="2967">2967</a> |
2969 | | -<a href="#2968" id="2968">2968</a> |
2970 | | -<a href="#2969" id="2969">2969</a> |
2971 | | -<a href="#2970" id="2970">2970</a> |
2972 | | -<a href="#2971" id="2971">2971</a> |
2973 | 2967 | </pre></div><pre class="rust"><code><span class="kw">use </span>std::iter; |
2974 | 2968 |
|
2975 | 2969 | <span class="kw">use </span>arrayvec::ArrayVec; |
|
4780 | 4774 |
|
4781 | 4775 | <span class="kw">_ </span>=> <span class="kw">match </span>(left_value, right_value) { |
4782 | 4776 | (Literal::I32(a), Literal::I32(b)) => Literal::I32(<span class="kw">match </span>op { |
4783 | | - BinaryOperator::Add => a.checked_add(b).ok_or_else(|| { |
4784 | | - ConstantEvaluatorError::Overflow(<span class="string">"addition"</span>.into()) |
4785 | | - })<span class="question-mark">?</span>, |
4786 | | - BinaryOperator::Subtract => a.checked_sub(b).ok_or_else(|| { |
4787 | | - ConstantEvaluatorError::Overflow(<span class="string">"subtraction"</span>.into()) |
4788 | | - })<span class="question-mark">?</span>, |
4789 | | - BinaryOperator::Multiply => a.checked_mul(b).ok_or_else(|| { |
4790 | | - ConstantEvaluatorError::Overflow(<span class="string">"multiplication"</span>.into()) |
4791 | | - })<span class="question-mark">?</span>, |
4792 | | - BinaryOperator::Divide => a.checked_div(b).ok_or_else(|| { |
| 4777 | + BinaryOperator::Add => a.wrapping_add(b), |
| 4778 | + BinaryOperator::Subtract => a.wrapping_sub(b), |
| 4779 | + BinaryOperator::Multiply => a.wrapping_mul(b), |
| 4780 | + BinaryOperator::Divide => { |
4793 | 4781 | <span class="kw">if </span>b == <span class="number">0 </span>{ |
4794 | | - ConstantEvaluatorError::DivisionByZero |
| 4782 | + <span class="kw">return </span><span class="prelude-val">Err</span>(ConstantEvaluatorError::DivisionByZero); |
4795 | 4783 | } <span class="kw">else </span>{ |
4796 | | - ConstantEvaluatorError::Overflow(<span class="string">"division"</span>.into()) |
| 4784 | + a.wrapping_div(b) |
4797 | 4785 | } |
4798 | | - })<span class="question-mark">?</span>, |
4799 | | - BinaryOperator::Modulo => a.checked_rem(b).ok_or_else(|| { |
| 4786 | + } |
| 4787 | + BinaryOperator::Modulo => { |
4800 | 4788 | <span class="kw">if </span>b == <span class="number">0 </span>{ |
4801 | | - ConstantEvaluatorError::RemainderByZero |
| 4789 | + <span class="kw">return </span><span class="prelude-val">Err</span>(ConstantEvaluatorError::RemainderByZero); |
4802 | 4790 | } <span class="kw">else </span>{ |
4803 | | - ConstantEvaluatorError::Overflow(<span class="string">"remainder"</span>.into()) |
| 4791 | + a.wrapping_rem(b) |
4804 | 4792 | } |
4805 | | - })<span class="question-mark">?</span>, |
| 4793 | + } |
4806 | 4794 | BinaryOperator::And => a & b, |
4807 | 4795 | BinaryOperator::ExclusiveOr => a ^ b, |
4808 | 4796 | BinaryOperator::InclusiveOr => a | b, |
|
0 commit comments