(op opCode, e1, e2 exprDesc)
| 851 | } |
| 852 | |
| 853 | func foldConstants(op opCode, e1, e2 exprDesc) (exprDesc, bool) { |
| 854 | if !e1.isNumeral() || !e2.isNumeral() { |
| 855 | return e1, false |
| 856 | } else if (op == opDiv || op == opMod) && e2.value == 0.0 { |
| 857 | return e1, false |
| 858 | } |
| 859 | e1.value = arith(Operator(op-opAdd)+OpAdd, e1.value, e2.value) |
| 860 | return e1, true |
| 861 | } |
| 862 | |
| 863 | func (f *function) encodeArithmetic(op opCode, e1, e2 exprDesc, line int) exprDesc { |
| 864 | if e, folded := foldConstants(op, e1, e2); folded { |
no test coverage detected