diff options
Diffstat (limited to 'src/pkg/exp/eval/expr1.go')
-rw-r--r-- | src/pkg/exp/eval/expr1.go | 1764 |
1 files changed, 882 insertions, 882 deletions
diff --git a/src/pkg/exp/eval/expr1.go b/src/pkg/exp/eval/expr1.go index ed2081c71..a77e40fb0 100644 --- a/src/pkg/exp/eval/expr1.go +++ b/src/pkg/exp/eval/expr1.go @@ -4,19 +4,19 @@ package eval import ( - "bignum"; - "log"; + "bignum" + "log" ) /* * "As" functions. These retrieve evaluator functions from an * expr, panicking if the requested evaluator has the wrong type. */ -func (a *expr) asBool() (func(*Thread) bool) { return a.eval.(func(*Thread) bool) } +func (a *expr) asBool() (func(*Thread) bool) { return a.eval.(func(*Thread) bool) } func (a *expr) asUint() (func(*Thread) uint64) { return a.eval.(func(*Thread) uint64) } -func (a *expr) asInt() (func(*Thread) int64) { return a.eval.(func(*Thread) int64) } +func (a *expr) asInt() (func(*Thread) int64) { return a.eval.(func(*Thread) int64) } func (a *expr) asIdealInt() (func() *bignum.Integer) { return a.eval.(func() *bignum.Integer) } @@ -35,12 +35,12 @@ func (a *expr) asArray() (func(*Thread) ArrayValue) { func (a *expr) asStruct() (func(*Thread) StructValue) { return a.eval.(func(*Thread) StructValue) } -func (a *expr) asPtr() (func(*Thread) Value) { return a.eval.(func(*Thread) Value) } -func (a *expr) asFunc() (func(*Thread) Func) { return a.eval.(func(*Thread) Func) } +func (a *expr) asPtr() (func(*Thread) Value) { return a.eval.(func(*Thread) Value) } +func (a *expr) asFunc() (func(*Thread) Func) { return a.eval.(func(*Thread) Func) } func (a *expr) asSlice() (func(*Thread) Slice) { return a.eval.(func(*Thread) Slice) } -func (a *expr) asMap() (func(*Thread) Map) { return a.eval.(func(*Thread) Map) } +func (a *expr) asMap() (func(*Thread) Map) { return a.eval.(func(*Thread) Map) } func (a *expr) asMulti() (func(*Thread) []Value) { return a.eval.(func(*Thread) []Value) } @@ -76,7 +76,7 @@ func (a *expr) asInterface() (func(*Thread) interface{}) { default: log.Crashf("unexpected expression node type %T at %v", a.eval, a.pos) } - panic(); + panic() } /* @@ -92,13 +92,13 @@ func (a *expr) genConstant(v Value) { case *intType: a.eval = func(t *Thread) int64 { return v.(IntValue).Get(t) } case *idealIntType: - val := v.(IdealIntValue).Get(); - a.eval = func() *bignum.Integer { return val }; + val := v.(IdealIntValue).Get() + a.eval = func() *bignum.Integer { return val } case *floatType: a.eval = func(t *Thread) float64 { return v.(FloatValue).Get(t) } case *idealFloatType: - val := v.(IdealFloatValue).Get(); - a.eval = func() *bignum.Rational { return val }; + val := v.(IdealFloatValue).Get() + a.eval = func() *bignum.Rational { return val } case *stringType: a.eval = func(t *Thread) string { return v.(StringValue).Get(t) } case *ArrayType: @@ -119,7 +119,7 @@ func (a *expr) genConstant(v Value) { } func (a *expr) genIdentOp(level, index int) { - a.evalAddr = func(t *Thread) Value { return t.f.Get(level, index) }; + a.evalAddr = func(t *Thread) Value { return t.f.Get(level, index) } switch a.t.lit().(type) { case *boolType: a.eval = func(t *Thread) bool { return t.f.Get(level, index).(BoolValue).Get(t) } @@ -149,7 +149,7 @@ func (a *expr) genIdentOp(level, index int) { } func (a *expr) genFuncCall(call func(t *Thread) []Value) { - a.exec = func(t *Thread) { call(t) }; + a.exec = func(t *Thread) { call(t) } switch a.t.lit().(type) { case *boolType: a.eval = func(t *Thread) bool { return call(t)[0].(BoolValue).Get(t) } @@ -181,7 +181,7 @@ func (a *expr) genFuncCall(call func(t *Thread) []Value) { } func (a *expr) genValue(vf func(*Thread) Value) { - a.evalAddr = vf; + a.evalAddr = vf switch a.t.lit().(type) { case *boolType: a.eval = func(t *Thread) bool { return vf(t).(BoolValue).Get(t) } @@ -213,31 +213,31 @@ func (a *expr) genValue(vf func(*Thread) Value) { func (a *expr) genUnaryOpNeg(v *expr) { switch a.t.lit().(type) { case *uintType: - vf := v.asUint(); + vf := v.asUint() a.eval = func(t *Thread) uint64 { - v := vf(t); - return -v; - }; + v := vf(t) + return -v + } case *intType: - vf := v.asInt(); + vf := v.asInt() a.eval = func(t *Thread) int64 { - v := vf(t); - return -v; - }; + v := vf(t) + return -v + } case *idealIntType: - v := v.asIdealInt()(); - val := v.Neg(); - a.eval = func() *bignum.Integer { return val }; + v := v.asIdealInt()() + val := v.Neg() + a.eval = func() *bignum.Integer { return val } case *floatType: - vf := v.asFloat(); + vf := v.asFloat() a.eval = func(t *Thread) float64 { - v := vf(t); - return -v; - }; + v := vf(t) + return -v + } case *idealFloatType: - v := v.asIdealFloat()(); - val := v.Neg(); - a.eval = func() *bignum.Rational { return val }; + v := v.asIdealFloat()() + val := v.Neg() + a.eval = func() *bignum.Rational { return val } default: log.Crashf("unexpected type %v at %v", a.t, a.pos) } @@ -246,11 +246,11 @@ func (a *expr) genUnaryOpNeg(v *expr) { func (a *expr) genUnaryOpNot(v *expr) { switch a.t.lit().(type) { case *boolType: - vf := v.asBool(); + vf := v.asBool() a.eval = func(t *Thread) bool { - v := vf(t); - return !v; - }; + v := vf(t) + return !v + } default: log.Crashf("unexpected type %v at %v", a.t, a.pos) } @@ -259,169 +259,169 @@ func (a *expr) genUnaryOpNot(v *expr) { func (a *expr) genUnaryOpXor(v *expr) { switch a.t.lit().(type) { case *uintType: - vf := v.asUint(); + vf := v.asUint() a.eval = func(t *Thread) uint64 { - v := vf(t); - return ^v; - }; + v := vf(t) + return ^v + } case *intType: - vf := v.asInt(); + vf := v.asInt() a.eval = func(t *Thread) int64 { - v := vf(t); - return ^v; - }; + v := vf(t) + return ^v + } case *idealIntType: - v := v.asIdealInt()(); - val := v.Neg().Sub(bignum.Int(1)); - a.eval = func() *bignum.Integer { return val }; + v := v.asIdealInt()() + val := v.Neg().Sub(bignum.Int(1)) + a.eval = func() *bignum.Integer { return val } default: log.Crashf("unexpected type %v at %v", a.t, a.pos) } } func (a *expr) genBinOpLogAnd(l, r *expr) { - lf := l.asBool(); - rf := r.asBool(); - a.eval = func(t *Thread) bool { return lf(t) && rf(t) }; + lf := l.asBool() + rf := r.asBool() + a.eval = func(t *Thread) bool { return lf(t) && rf(t) } } func (a *expr) genBinOpLogOr(l, r *expr) { - lf := l.asBool(); - rf := r.asBool(); - a.eval = func(t *Thread) bool { return lf(t) || rf(t) }; + lf := l.asBool() + rf := r.asBool() + a.eval = func(t *Thread) bool { return lf(t) || rf(t) } } func (a *expr) genBinOpAdd(l, r *expr) { switch t := l.t.lit().(type) { case *uintType: - lf := l.asUint(); - rf := r.asUint(); + lf := l.asUint() + rf := r.asUint() switch t.Bits { case 8: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l + r; - return uint64(uint8(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l + r + return uint64(uint8(ret)) } case 16: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l + r; - return uint64(uint16(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l + r + return uint64(uint16(ret)) } case 32: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l + r; - return uint64(uint32(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l + r + return uint64(uint32(ret)) } case 64: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l + r; - return uint64(uint64(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l + r + return uint64(uint64(ret)) } case 0: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l + r; - return uint64(uint(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l + r + return uint64(uint(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *intType: - lf := l.asInt(); - rf := r.asInt(); + lf := l.asInt() + rf := r.asInt() switch t.Bits { case 8: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l + r; - return int64(int8(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l + r + return int64(int8(ret)) } case 16: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l + r; - return int64(int16(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l + r + return int64(int16(ret)) } case 32: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l + r; - return int64(int32(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l + r + return int64(int32(ret)) } case 64: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l + r; - return int64(int64(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l + r + return int64(int64(ret)) } case 0: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l + r; - return int64(int(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l + r + return int64(int(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *idealIntType: - l := l.asIdealInt()(); - r := r.asIdealInt()(); - val := l.Add(r); - a.eval = func() *bignum.Integer { return val }; + l := l.asIdealInt()() + r := r.asIdealInt()() + val := l.Add(r) + a.eval = func() *bignum.Integer { return val } case *floatType: - lf := l.asFloat(); - rf := r.asFloat(); + lf := l.asFloat() + rf := r.asFloat() switch t.Bits { case 32: a.eval = func(t *Thread) float64 { - l, r := lf(t), rf(t); - var ret float64; - ret = l + r; - return float64(float32(ret)); + l, r := lf(t), rf(t) + var ret float64 + ret = l + r + return float64(float32(ret)) } case 64: a.eval = func(t *Thread) float64 { - l, r := lf(t), rf(t); - var ret float64; - ret = l + r; - return float64(float64(ret)); + l, r := lf(t), rf(t) + var ret float64 + ret = l + r + return float64(float64(ret)) } case 0: a.eval = func(t *Thread) float64 { - l, r := lf(t), rf(t); - var ret float64; - ret = l + r; - return float64(float(ret)); + l, r := lf(t), rf(t) + var ret float64 + ret = l + r + return float64(float(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *idealFloatType: - l := l.asIdealFloat()(); - r := r.asIdealFloat()(); - val := l.Add(r); - a.eval = func() *bignum.Rational { return val }; + l := l.asIdealFloat()() + r := r.asIdealFloat()() + val := l.Add(r) + a.eval = func() *bignum.Rational { return val } case *stringType: - lf := l.asString(); - rf := r.asString(); + lf := l.asString() + rf := r.asString() a.eval = func(t *Thread) string { - l, r := lf(t), rf(t); - return l + r; - }; + l, r := lf(t), rf(t) + return l + r + } default: log.Crashf("unexpected type %v at %v", l.t, a.pos) } @@ -430,127 +430,127 @@ func (a *expr) genBinOpAdd(l, r *expr) { func (a *expr) genBinOpSub(l, r *expr) { switch t := l.t.lit().(type) { case *uintType: - lf := l.asUint(); - rf := r.asUint(); + lf := l.asUint() + rf := r.asUint() switch t.Bits { case 8: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l - r; - return uint64(uint8(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l - r + return uint64(uint8(ret)) } case 16: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l - r; - return uint64(uint16(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l - r + return uint64(uint16(ret)) } case 32: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l - r; - return uint64(uint32(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l - r + return uint64(uint32(ret)) } case 64: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l - r; - return uint64(uint64(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l - r + return uint64(uint64(ret)) } case 0: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l - r; - return uint64(uint(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l - r + return uint64(uint(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *intType: - lf := l.asInt(); - rf := r.asInt(); + lf := l.asInt() + rf := r.asInt() switch t.Bits { case 8: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l - r; - return int64(int8(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l - r + return int64(int8(ret)) } case 16: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l - r; - return int64(int16(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l - r + return int64(int16(ret)) } case 32: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l - r; - return int64(int32(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l - r + return int64(int32(ret)) } case 64: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l - r; - return int64(int64(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l - r + return int64(int64(ret)) } case 0: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l - r; - return int64(int(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l - r + return int64(int(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *idealIntType: - l := l.asIdealInt()(); - r := r.asIdealInt()(); - val := l.Sub(r); - a.eval = func() *bignum.Integer { return val }; + l := l.asIdealInt()() + r := r.asIdealInt()() + val := l.Sub(r) + a.eval = func() *bignum.Integer { return val } case *floatType: - lf := l.asFloat(); - rf := r.asFloat(); + lf := l.asFloat() + rf := r.asFloat() switch t.Bits { case 32: a.eval = func(t *Thread) float64 { - l, r := lf(t), rf(t); - var ret float64; - ret = l - r; - return float64(float32(ret)); + l, r := lf(t), rf(t) + var ret float64 + ret = l - r + return float64(float32(ret)) } case 64: a.eval = func(t *Thread) float64 { - l, r := lf(t), rf(t); - var ret float64; - ret = l - r; - return float64(float64(ret)); + l, r := lf(t), rf(t) + var ret float64 + ret = l - r + return float64(float64(ret)) } case 0: a.eval = func(t *Thread) float64 { - l, r := lf(t), rf(t); - var ret float64; - ret = l - r; - return float64(float(ret)); + l, r := lf(t), rf(t) + var ret float64 + ret = l - r + return float64(float(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *idealFloatType: - l := l.asIdealFloat()(); - r := r.asIdealFloat()(); - val := l.Sub(r); - a.eval = func() *bignum.Rational { return val }; + l := l.asIdealFloat()() + r := r.asIdealFloat()() + val := l.Sub(r) + a.eval = func() *bignum.Rational { return val } default: log.Crashf("unexpected type %v at %v", l.t, a.pos) } @@ -559,127 +559,127 @@ func (a *expr) genBinOpSub(l, r *expr) { func (a *expr) genBinOpMul(l, r *expr) { switch t := l.t.lit().(type) { case *uintType: - lf := l.asUint(); - rf := r.asUint(); + lf := l.asUint() + rf := r.asUint() switch t.Bits { case 8: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l * r; - return uint64(uint8(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l * r + return uint64(uint8(ret)) } case 16: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l * r; - return uint64(uint16(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l * r + return uint64(uint16(ret)) } case 32: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l * r; - return uint64(uint32(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l * r + return uint64(uint32(ret)) } case 64: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l * r; - return uint64(uint64(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l * r + return uint64(uint64(ret)) } case 0: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l * r; - return uint64(uint(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l * r + return uint64(uint(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *intType: - lf := l.asInt(); - rf := r.asInt(); + lf := l.asInt() + rf := r.asInt() switch t.Bits { case 8: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l * r; - return int64(int8(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l * r + return int64(int8(ret)) } case 16: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l * r; - return int64(int16(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l * r + return int64(int16(ret)) } case 32: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l * r; - return int64(int32(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l * r + return int64(int32(ret)) } case 64: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l * r; - return int64(int64(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l * r + return int64(int64(ret)) } case 0: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l * r; - return int64(int(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l * r + return int64(int(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *idealIntType: - l := l.asIdealInt()(); - r := r.asIdealInt()(); - val := l.Mul(r); - a.eval = func() *bignum.Integer { return val }; + l := l.asIdealInt()() + r := r.asIdealInt()() + val := l.Mul(r) + a.eval = func() *bignum.Integer { return val } case *floatType: - lf := l.asFloat(); - rf := r.asFloat(); + lf := l.asFloat() + rf := r.asFloat() switch t.Bits { case 32: a.eval = func(t *Thread) float64 { - l, r := lf(t), rf(t); - var ret float64; - ret = l * r; - return float64(float32(ret)); + l, r := lf(t), rf(t) + var ret float64 + ret = l * r + return float64(float32(ret)) } case 64: a.eval = func(t *Thread) float64 { - l, r := lf(t), rf(t); - var ret float64; - ret = l * r; - return float64(float64(ret)); + l, r := lf(t), rf(t) + var ret float64 + ret = l * r + return float64(float64(ret)) } case 0: a.eval = func(t *Thread) float64 { - l, r := lf(t), rf(t); - var ret float64; - ret = l * r; - return float64(float(ret)); + l, r := lf(t), rf(t) + var ret float64 + ret = l * r + return float64(float(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *idealFloatType: - l := l.asIdealFloat()(); - r := r.asIdealFloat()(); - val := l.Mul(r); - a.eval = func() *bignum.Rational { return val }; + l := l.asIdealFloat()() + r := r.asIdealFloat()() + val := l.Mul(r) + a.eval = func() *bignum.Rational { return val } default: log.Crashf("unexpected type %v at %v", l.t, a.pos) } @@ -688,166 +688,166 @@ func (a *expr) genBinOpMul(l, r *expr) { func (a *expr) genBinOpQuo(l, r *expr) { switch t := l.t.lit().(type) { case *uintType: - lf := l.asUint(); - rf := r.asUint(); + lf := l.asUint() + rf := r.asUint() switch t.Bits { case 8: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; + l, r := lf(t), rf(t) + var ret uint64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l / r; - return uint64(uint8(ret)); + ret = l / r + return uint64(uint8(ret)) } case 16: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; + l, r := lf(t), rf(t) + var ret uint64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l / r; - return uint64(uint16(ret)); + ret = l / r + return uint64(uint16(ret)) } case 32: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; + l, r := lf(t), rf(t) + var ret uint64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l / r; - return uint64(uint32(ret)); + ret = l / r + return uint64(uint32(ret)) } case 64: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; + l, r := lf(t), rf(t) + var ret uint64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l / r; - return uint64(uint64(ret)); + ret = l / r + return uint64(uint64(ret)) } case 0: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; + l, r := lf(t), rf(t) + var ret uint64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l / r; - return uint64(uint(ret)); + ret = l / r + return uint64(uint(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *intType: - lf := l.asInt(); - rf := r.asInt(); + lf := l.asInt() + rf := r.asInt() switch t.Bits { case 8: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; + l, r := lf(t), rf(t) + var ret int64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l / r; - return int64(int8(ret)); + ret = l / r + return int64(int8(ret)) } case 16: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; + l, r := lf(t), rf(t) + var ret int64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l / r; - return int64(int16(ret)); + ret = l / r + return int64(int16(ret)) } case 32: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; + l, r := lf(t), rf(t) + var ret int64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l / r; - return int64(int32(ret)); + ret = l / r + return int64(int32(ret)) } case 64: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; + l, r := lf(t), rf(t) + var ret int64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l / r; - return int64(int64(ret)); + ret = l / r + return int64(int64(ret)) } case 0: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; + l, r := lf(t), rf(t) + var ret int64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l / r; - return int64(int(ret)); + ret = l / r + return int64(int(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *idealIntType: - l := l.asIdealInt()(); - r := r.asIdealInt()(); - val := l.Quo(r); - a.eval = func() *bignum.Integer { return val }; + l := l.asIdealInt()() + r := r.asIdealInt()() + val := l.Quo(r) + a.eval = func() *bignum.Integer { return val } case *floatType: - lf := l.asFloat(); - rf := r.asFloat(); + lf := l.asFloat() + rf := r.asFloat() switch t.Bits { case 32: a.eval = func(t *Thread) float64 { - l, r := lf(t), rf(t); - var ret float64; + l, r := lf(t), rf(t) + var ret float64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l / r; - return float64(float32(ret)); + ret = l / r + return float64(float32(ret)) } case 64: a.eval = func(t *Thread) float64 { - l, r := lf(t), rf(t); - var ret float64; + l, r := lf(t), rf(t) + var ret float64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l / r; - return float64(float64(ret)); + ret = l / r + return float64(float64(ret)) } case 0: a.eval = func(t *Thread) float64 { - l, r := lf(t), rf(t); - var ret float64; + l, r := lf(t), rf(t) + var ret float64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l / r; - return float64(float(ret)); + ret = l / r + return float64(float(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *idealFloatType: - l := l.asIdealFloat()(); - r := r.asIdealFloat()(); - val := l.Quo(r); - a.eval = func() *bignum.Rational { return val }; + l := l.asIdealFloat()() + r := r.asIdealFloat()() + val := l.Quo(r) + a.eval = func() *bignum.Rational { return val } default: log.Crashf("unexpected type %v at %v", l.t, a.pos) } @@ -856,124 +856,124 @@ func (a *expr) genBinOpQuo(l, r *expr) { func (a *expr) genBinOpRem(l, r *expr) { switch t := l.t.lit().(type) { case *uintType: - lf := l.asUint(); - rf := r.asUint(); + lf := l.asUint() + rf := r.asUint() switch t.Bits { case 8: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; + l, r := lf(t), rf(t) + var ret uint64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l % r; - return uint64(uint8(ret)); + ret = l % r + return uint64(uint8(ret)) } case 16: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; + l, r := lf(t), rf(t) + var ret uint64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l % r; - return uint64(uint16(ret)); + ret = l % r + return uint64(uint16(ret)) } case 32: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; + l, r := lf(t), rf(t) + var ret uint64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l % r; - return uint64(uint32(ret)); + ret = l % r + return uint64(uint32(ret)) } case 64: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; + l, r := lf(t), rf(t) + var ret uint64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l % r; - return uint64(uint64(ret)); + ret = l % r + return uint64(uint64(ret)) } case 0: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; + l, r := lf(t), rf(t) + var ret uint64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l % r; - return uint64(uint(ret)); + ret = l % r + return uint64(uint(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *intType: - lf := l.asInt(); - rf := r.asInt(); + lf := l.asInt() + rf := r.asInt() switch t.Bits { case 8: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; + l, r := lf(t), rf(t) + var ret int64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l % r; - return int64(int8(ret)); + ret = l % r + return int64(int8(ret)) } case 16: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; + l, r := lf(t), rf(t) + var ret int64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l % r; - return int64(int16(ret)); + ret = l % r + return int64(int16(ret)) } case 32: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; + l, r := lf(t), rf(t) + var ret int64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l % r; - return int64(int32(ret)); + ret = l % r + return int64(int32(ret)) } case 64: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; + l, r := lf(t), rf(t) + var ret int64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l % r; - return int64(int64(ret)); + ret = l % r + return int64(int64(ret)) } case 0: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; + l, r := lf(t), rf(t) + var ret int64 if r == 0 { t.Abort(DivByZeroError{}) } - ret = l % r; - return int64(int(ret)); + ret = l % r + return int64(int(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *idealIntType: - l := l.asIdealInt()(); - r := r.asIdealInt()(); - val := l.Rem(r); - a.eval = func() *bignum.Integer { return val }; + l := l.asIdealInt()() + r := r.asIdealInt()() + val := l.Rem(r) + a.eval = func() *bignum.Integer { return val } default: log.Crashf("unexpected type %v at %v", l.t, a.pos) } @@ -982,94 +982,94 @@ func (a *expr) genBinOpRem(l, r *expr) { func (a *expr) genBinOpAnd(l, r *expr) { switch t := l.t.lit().(type) { case *uintType: - lf := l.asUint(); - rf := r.asUint(); + lf := l.asUint() + rf := r.asUint() switch t.Bits { case 8: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l & r; - return uint64(uint8(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l & r + return uint64(uint8(ret)) } case 16: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l & r; - return uint64(uint16(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l & r + return uint64(uint16(ret)) } case 32: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l & r; - return uint64(uint32(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l & r + return uint64(uint32(ret)) } case 64: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l & r; - return uint64(uint64(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l & r + return uint64(uint64(ret)) } case 0: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l & r; - return uint64(uint(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l & r + return uint64(uint(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *intType: - lf := l.asInt(); - rf := r.asInt(); + lf := l.asInt() + rf := r.asInt() switch t.Bits { case 8: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l & r; - return int64(int8(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l & r + return int64(int8(ret)) } case 16: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l & r; - return int64(int16(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l & r + return int64(int16(ret)) } case 32: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l & r; - return int64(int32(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l & r + return int64(int32(ret)) } case 64: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l & r; - return int64(int64(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l & r + return int64(int64(ret)) } case 0: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l & r; - return int64(int(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l & r + return int64(int(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *idealIntType: - l := l.asIdealInt()(); - r := r.asIdealInt()(); - val := l.And(r); - a.eval = func() *bignum.Integer { return val }; + l := l.asIdealInt()() + r := r.asIdealInt()() + val := l.And(r) + a.eval = func() *bignum.Integer { return val } default: log.Crashf("unexpected type %v at %v", l.t, a.pos) } @@ -1078,94 +1078,94 @@ func (a *expr) genBinOpAnd(l, r *expr) { func (a *expr) genBinOpOr(l, r *expr) { switch t := l.t.lit().(type) { case *uintType: - lf := l.asUint(); - rf := r.asUint(); + lf := l.asUint() + rf := r.asUint() switch t.Bits { case 8: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l | r; - return uint64(uint8(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l | r + return uint64(uint8(ret)) } case 16: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l | r; - return uint64(uint16(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l | r + return uint64(uint16(ret)) } case 32: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l | r; - return uint64(uint32(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l | r + return uint64(uint32(ret)) } case 64: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l | r; - return uint64(uint64(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l | r + return uint64(uint64(ret)) } case 0: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l | r; - return uint64(uint(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l | r + return uint64(uint(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *intType: - lf := l.asInt(); - rf := r.asInt(); + lf := l.asInt() + rf := r.asInt() switch t.Bits { case 8: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l | r; - return int64(int8(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l | r + return int64(int8(ret)) } case 16: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l | r; - return int64(int16(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l | r + return int64(int16(ret)) } case 32: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l | r; - return int64(int32(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l | r + return int64(int32(ret)) } case 64: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l | r; - return int64(int64(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l | r + return int64(int64(ret)) } case 0: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l | r; - return int64(int(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l | r + return int64(int(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *idealIntType: - l := l.asIdealInt()(); - r := r.asIdealInt()(); - val := l.Or(r); - a.eval = func() *bignum.Integer { return val }; + l := l.asIdealInt()() + r := r.asIdealInt()() + val := l.Or(r) + a.eval = func() *bignum.Integer { return val } default: log.Crashf("unexpected type %v at %v", l.t, a.pos) } @@ -1174,94 +1174,94 @@ func (a *expr) genBinOpOr(l, r *expr) { func (a *expr) genBinOpXor(l, r *expr) { switch t := l.t.lit().(type) { case *uintType: - lf := l.asUint(); - rf := r.asUint(); + lf := l.asUint() + rf := r.asUint() switch t.Bits { case 8: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l ^ r; - return uint64(uint8(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l ^ r + return uint64(uint8(ret)) } case 16: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l ^ r; - return uint64(uint16(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l ^ r + return uint64(uint16(ret)) } case 32: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l ^ r; - return uint64(uint32(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l ^ r + return uint64(uint32(ret)) } case 64: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l ^ r; - return uint64(uint64(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l ^ r + return uint64(uint64(ret)) } case 0: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l ^ r; - return uint64(uint(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l ^ r + return uint64(uint(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *intType: - lf := l.asInt(); - rf := r.asInt(); + lf := l.asInt() + rf := r.asInt() switch t.Bits { case 8: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l ^ r; - return int64(int8(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l ^ r + return int64(int8(ret)) } case 16: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l ^ r; - return int64(int16(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l ^ r + return int64(int16(ret)) } case 32: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l ^ r; - return int64(int32(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l ^ r + return int64(int32(ret)) } case 64: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l ^ r; - return int64(int64(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l ^ r + return int64(int64(ret)) } case 0: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l ^ r; - return int64(int(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l ^ r + return int64(int(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *idealIntType: - l := l.asIdealInt()(); - r := r.asIdealInt()(); - val := l.Xor(r); - a.eval = func() *bignum.Integer { return val }; + l := l.asIdealInt()() + r := r.asIdealInt()() + val := l.Xor(r) + a.eval = func() *bignum.Integer { return val } default: log.Crashf("unexpected type %v at %v", l.t, a.pos) } @@ -1270,94 +1270,94 @@ func (a *expr) genBinOpXor(l, r *expr) { func (a *expr) genBinOpAndNot(l, r *expr) { switch t := l.t.lit().(type) { case *uintType: - lf := l.asUint(); - rf := r.asUint(); + lf := l.asUint() + rf := r.asUint() switch t.Bits { case 8: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l &^ r; - return uint64(uint8(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l &^ r + return uint64(uint8(ret)) } case 16: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l &^ r; - return uint64(uint16(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l &^ r + return uint64(uint16(ret)) } case 32: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l &^ r; - return uint64(uint32(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l &^ r + return uint64(uint32(ret)) } case 64: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l &^ r; - return uint64(uint64(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l &^ r + return uint64(uint64(ret)) } case 0: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l &^ r; - return uint64(uint(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l &^ r + return uint64(uint(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *intType: - lf := l.asInt(); - rf := r.asInt(); + lf := l.asInt() + rf := r.asInt() switch t.Bits { case 8: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l &^ r; - return int64(int8(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l &^ r + return int64(int8(ret)) } case 16: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l &^ r; - return int64(int16(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l &^ r + return int64(int16(ret)) } case 32: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l &^ r; - return int64(int32(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l &^ r + return int64(int32(ret)) } case 64: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l &^ r; - return int64(int64(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l &^ r + return int64(int64(ret)) } case 0: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l &^ r; - return int64(int(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l &^ r + return int64(int(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *idealIntType: - l := l.asIdealInt()(); - r := r.asIdealInt()(); - val := l.AndNot(r); - a.eval = func() *bignum.Integer { return val }; + l := l.asIdealInt()() + r := r.asIdealInt()() + val := l.AndNot(r) + a.eval = func() *bignum.Integer { return val } default: log.Crashf("unexpected type %v at %v", l.t, a.pos) } @@ -1366,85 +1366,85 @@ func (a *expr) genBinOpAndNot(l, r *expr) { func (a *expr) genBinOpShl(l, r *expr) { switch t := l.t.lit().(type) { case *uintType: - lf := l.asUint(); - rf := r.asUint(); + lf := l.asUint() + rf := r.asUint() switch t.Bits { case 8: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l << r; - return uint64(uint8(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l << r + return uint64(uint8(ret)) } case 16: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l << r; - return uint64(uint16(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l << r + return uint64(uint16(ret)) } case 32: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l << r; - return uint64(uint32(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l << r + return uint64(uint32(ret)) } case 64: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l << r; - return uint64(uint64(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l << r + return uint64(uint64(ret)) } case 0: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l << r; - return uint64(uint(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l << r + return uint64(uint(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *intType: - lf := l.asInt(); - rf := r.asUint(); + lf := l.asInt() + rf := r.asUint() switch t.Bits { case 8: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l << r; - return int64(int8(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l << r + return int64(int8(ret)) } case 16: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l << r; - return int64(int16(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l << r + return int64(int16(ret)) } case 32: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l << r; - return int64(int32(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l << r + return int64(int32(ret)) } case 64: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l << r; - return int64(int64(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l << r + return int64(int64(ret)) } case 0: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l << r; - return int64(int(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l << r + return int64(int(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) @@ -1457,85 +1457,85 @@ func (a *expr) genBinOpShl(l, r *expr) { func (a *expr) genBinOpShr(l, r *expr) { switch t := l.t.lit().(type) { case *uintType: - lf := l.asUint(); - rf := r.asUint(); + lf := l.asUint() + rf := r.asUint() switch t.Bits { case 8: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l >> r; - return uint64(uint8(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l >> r + return uint64(uint8(ret)) } case 16: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l >> r; - return uint64(uint16(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l >> r + return uint64(uint16(ret)) } case 32: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l >> r; - return uint64(uint32(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l >> r + return uint64(uint32(ret)) } case 64: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l >> r; - return uint64(uint64(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l >> r + return uint64(uint64(ret)) } case 0: a.eval = func(t *Thread) uint64 { - l, r := lf(t), rf(t); - var ret uint64; - ret = l >> r; - return uint64(uint(ret)); + l, r := lf(t), rf(t) + var ret uint64 + ret = l >> r + return uint64(uint(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } case *intType: - lf := l.asInt(); - rf := r.asUint(); + lf := l.asInt() + rf := r.asUint() switch t.Bits { case 8: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l >> r; - return int64(int8(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l >> r + return int64(int8(ret)) } case 16: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l >> r; - return int64(int16(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l >> r + return int64(int16(ret)) } case 32: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l >> r; - return int64(int32(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l >> r + return int64(int32(ret)) } case 64: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l >> r; - return int64(int64(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l >> r + return int64(int64(ret)) } case 0: a.eval = func(t *Thread) int64 { - l, r := lf(t), rf(t); - var ret int64; - ret = l >> r; - return int64(int(ret)); + l, r := lf(t), rf(t) + var ret int64 + ret = l >> r + return int64(int(ret)) } default: log.Crashf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) @@ -1548,43 +1548,43 @@ func (a *expr) genBinOpShr(l, r *expr) { func (a *expr) genBinOpLss(l, r *expr) { switch t := l.t.lit().(type) { case *uintType: - lf := l.asUint(); - rf := r.asUint(); + lf := l.asUint() + rf := r.asUint() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l < r; - }; + l, r := lf(t), rf(t) + return l < r + } case *intType: - lf := l.asInt(); - rf := r.asInt(); + lf := l.asInt() + rf := r.asInt() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l < r; - }; + l, r := lf(t), rf(t) + return l < r + } case *idealIntType: - l := l.asIdealInt()(); - r := r.asIdealInt()(); - val := l.Cmp(r) < 0; - a.eval = func(t *Thread) bool { return val }; + l := l.asIdealInt()() + r := r.asIdealInt()() + val := l.Cmp(r) < 0 + a.eval = func(t *Thread) bool { return val } case *floatType: - lf := l.asFloat(); - rf := r.asFloat(); + lf := l.asFloat() + rf := r.asFloat() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l < r; - }; + l, r := lf(t), rf(t) + return l < r + } case *idealFloatType: - l := l.asIdealFloat()(); - r := r.asIdealFloat()(); - val := l.Cmp(r) < 0; - a.eval = func(t *Thread) bool { return val }; + l := l.asIdealFloat()() + r := r.asIdealFloat()() + val := l.Cmp(r) < 0 + a.eval = func(t *Thread) bool { return val } case *stringType: - lf := l.asString(); - rf := r.asString(); + lf := l.asString() + rf := r.asString() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l < r; - }; + l, r := lf(t), rf(t) + return l < r + } default: log.Crashf("unexpected type %v at %v", l.t, a.pos) } @@ -1593,43 +1593,43 @@ func (a *expr) genBinOpLss(l, r *expr) { func (a *expr) genBinOpGtr(l, r *expr) { switch t := l.t.lit().(type) { case *uintType: - lf := l.asUint(); - rf := r.asUint(); + lf := l.asUint() + rf := r.asUint() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l > r; - }; + l, r := lf(t), rf(t) + return l > r + } case *intType: - lf := l.asInt(); - rf := r.asInt(); + lf := l.asInt() + rf := r.asInt() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l > r; - }; + l, r := lf(t), rf(t) + return l > r + } case *idealIntType: - l := l.asIdealInt()(); - r := r.asIdealInt()(); - val := l.Cmp(r) > 0; - a.eval = func(t *Thread) bool { return val }; + l := l.asIdealInt()() + r := r.asIdealInt()() + val := l.Cmp(r) > 0 + a.eval = func(t *Thread) bool { return val } case *floatType: - lf := l.asFloat(); - rf := r.asFloat(); + lf := l.asFloat() + rf := r.asFloat() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l > r; - }; + l, r := lf(t), rf(t) + return l > r + } case *idealFloatType: - l := l.asIdealFloat()(); - r := r.asIdealFloat()(); - val := l.Cmp(r) > 0; - a.eval = func(t *Thread) bool { return val }; + l := l.asIdealFloat()() + r := r.asIdealFloat()() + val := l.Cmp(r) > 0 + a.eval = func(t *Thread) bool { return val } case *stringType: - lf := l.asString(); - rf := r.asString(); + lf := l.asString() + rf := r.asString() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l > r; - }; + l, r := lf(t), rf(t) + return l > r + } default: log.Crashf("unexpected type %v at %v", l.t, a.pos) } @@ -1638,43 +1638,43 @@ func (a *expr) genBinOpGtr(l, r *expr) { func (a *expr) genBinOpLeq(l, r *expr) { switch t := l.t.lit().(type) { case *uintType: - lf := l.asUint(); - rf := r.asUint(); + lf := l.asUint() + rf := r.asUint() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l <= r; - }; + l, r := lf(t), rf(t) + return l <= r + } case *intType: - lf := l.asInt(); - rf := r.asInt(); + lf := l.asInt() + rf := r.asInt() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l <= r; - }; + l, r := lf(t), rf(t) + return l <= r + } case *idealIntType: - l := l.asIdealInt()(); - r := r.asIdealInt()(); - val := l.Cmp(r) <= 0; - a.eval = func(t *Thread) bool { return val }; + l := l.asIdealInt()() + r := r.asIdealInt()() + val := l.Cmp(r) <= 0 + a.eval = func(t *Thread) bool { return val } case *floatType: - lf := l.asFloat(); - rf := r.asFloat(); + lf := l.asFloat() + rf := r.asFloat() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l <= r; - }; + l, r := lf(t), rf(t) + return l <= r + } case *idealFloatType: - l := l.asIdealFloat()(); - r := r.asIdealFloat()(); - val := l.Cmp(r) <= 0; - a.eval = func(t *Thread) bool { return val }; + l := l.asIdealFloat()() + r := r.asIdealFloat()() + val := l.Cmp(r) <= 0 + a.eval = func(t *Thread) bool { return val } case *stringType: - lf := l.asString(); - rf := r.asString(); + lf := l.asString() + rf := r.asString() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l <= r; - }; + l, r := lf(t), rf(t) + return l <= r + } default: log.Crashf("unexpected type %v at %v", l.t, a.pos) } @@ -1683,43 +1683,43 @@ func (a *expr) genBinOpLeq(l, r *expr) { func (a *expr) genBinOpGeq(l, r *expr) { switch t := l.t.lit().(type) { case *uintType: - lf := l.asUint(); - rf := r.asUint(); + lf := l.asUint() + rf := r.asUint() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l >= r; - }; + l, r := lf(t), rf(t) + return l >= r + } case *intType: - lf := l.asInt(); - rf := r.asInt(); + lf := l.asInt() + rf := r.asInt() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l >= r; - }; + l, r := lf(t), rf(t) + return l >= r + } case *idealIntType: - l := l.asIdealInt()(); - r := r.asIdealInt()(); - val := l.Cmp(r) >= 0; - a.eval = func(t *Thread) bool { return val }; + l := l.asIdealInt()() + r := r.asIdealInt()() + val := l.Cmp(r) >= 0 + a.eval = func(t *Thread) bool { return val } case *floatType: - lf := l.asFloat(); - rf := r.asFloat(); + lf := l.asFloat() + rf := r.asFloat() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l >= r; - }; + l, r := lf(t), rf(t) + return l >= r + } case *idealFloatType: - l := l.asIdealFloat()(); - r := r.asIdealFloat()(); - val := l.Cmp(r) >= 0; - a.eval = func(t *Thread) bool { return val }; + l := l.asIdealFloat()() + r := r.asIdealFloat()() + val := l.Cmp(r) >= 0 + a.eval = func(t *Thread) bool { return val } case *stringType: - lf := l.asString(); - rf := r.asString(); + lf := l.asString() + rf := r.asString() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l >= r; - }; + l, r := lf(t), rf(t) + return l >= r + } default: log.Crashf("unexpected type %v at %v", l.t, a.pos) } @@ -1728,71 +1728,71 @@ func (a *expr) genBinOpGeq(l, r *expr) { func (a *expr) genBinOpEql(l, r *expr) { switch t := l.t.lit().(type) { case *boolType: - lf := l.asBool(); - rf := r.asBool(); + lf := l.asBool() + rf := r.asBool() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l == r; - }; + l, r := lf(t), rf(t) + return l == r + } case *uintType: - lf := l.asUint(); - rf := r.asUint(); + lf := l.asUint() + rf := r.asUint() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l == r; - }; + l, r := lf(t), rf(t) + return l == r + } case *intType: - lf := l.asInt(); - rf := r.asInt(); + lf := l.asInt() + rf := r.asInt() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l == r; - }; + l, r := lf(t), rf(t) + return l == r + } case *idealIntType: - l := l.asIdealInt()(); - r := r.asIdealInt()(); - val := l.Cmp(r) == 0; - a.eval = func(t *Thread) bool { return val }; + l := l.asIdealInt()() + r := r.asIdealInt()() + val := l.Cmp(r) == 0 + a.eval = func(t *Thread) bool { return val } case *floatType: - lf := l.asFloat(); - rf := r.asFloat(); + lf := l.asFloat() + rf := r.asFloat() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l == r; - }; + l, r := lf(t), rf(t) + return l == r + } case *idealFloatType: - l := l.asIdealFloat()(); - r := r.asIdealFloat()(); - val := l.Cmp(r) == 0; - a.eval = func(t *Thread) bool { return val }; + l := l.asIdealFloat()() + r := r.asIdealFloat()() + val := l.Cmp(r) == 0 + a.eval = func(t *Thread) bool { return val } case *stringType: - lf := l.asString(); - rf := r.asString(); + lf := l.asString() + rf := r.asString() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l == r; - }; + l, r := lf(t), rf(t) + return l == r + } case *PtrType: - lf := l.asPtr(); - rf := r.asPtr(); + lf := l.asPtr() + rf := r.asPtr() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l == r; - }; + l, r := lf(t), rf(t) + return l == r + } case *FuncType: - lf := l.asFunc(); - rf := r.asFunc(); + lf := l.asFunc() + rf := r.asFunc() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l == r; - }; + l, r := lf(t), rf(t) + return l == r + } case *MapType: - lf := l.asMap(); - rf := r.asMap(); + lf := l.asMap() + rf := r.asMap() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l == r; - }; + l, r := lf(t), rf(t) + return l == r + } default: log.Crashf("unexpected type %v at %v", l.t, a.pos) } @@ -1801,71 +1801,71 @@ func (a *expr) genBinOpEql(l, r *expr) { func (a *expr) genBinOpNeq(l, r *expr) { switch t := l.t.lit().(type) { case *boolType: - lf := l.asBool(); - rf := r.asBool(); + lf := l.asBool() + rf := r.asBool() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l != r; - }; + l, r := lf(t), rf(t) + return l != r + } case *uintType: - lf := l.asUint(); - rf := r.asUint(); + lf := l.asUint() + rf := r.asUint() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l != r; - }; + l, r := lf(t), rf(t) + return l != r + } case *intType: - lf := l.asInt(); - rf := r.asInt(); + lf := l.asInt() + rf := r.asInt() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l != r; - }; + l, r := lf(t), rf(t) + return l != r + } case *idealIntType: - l := l.asIdealInt()(); - r := r.asIdealInt()(); - val := l.Cmp(r) != 0; - a.eval = func(t *Thread) bool { return val }; + l := l.asIdealInt()() + r := r.asIdealInt()() + val := l.Cmp(r) != 0 + a.eval = func(t *Thread) bool { return val } case *floatType: - lf := l.asFloat(); - rf := r.asFloat(); + lf := l.asFloat() + rf := r.asFloat() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l != r; - }; + l, r := lf(t), rf(t) + return l != r + } case *idealFloatType: - l := l.asIdealFloat()(); - r := r.asIdealFloat()(); - val := l.Cmp(r) != 0; - a.eval = func(t *Thread) bool { return val }; + l := l.asIdealFloat()() + r := r.asIdealFloat()() + val := l.Cmp(r) != 0 + a.eval = func(t *Thread) bool { return val } case *stringType: - lf := l.asString(); - rf := r.asString(); + lf := l.asString() + rf := r.asString() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l != r; - }; + l, r := lf(t), rf(t) + return l != r + } case *PtrType: - lf := l.asPtr(); - rf := r.asPtr(); + lf := l.asPtr() + rf := r.asPtr() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l != r; - }; + l, r := lf(t), rf(t) + return l != r + } case *FuncType: - lf := l.asFunc(); - rf := r.asFunc(); + lf := l.asFunc() + rf := r.asFunc() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l != r; - }; + l, r := lf(t), rf(t) + return l != r + } case *MapType: - lf := l.asMap(); - rf := r.asMap(); + lf := l.asMap() + rf := r.asMap() a.eval = func(t *Thread) bool { - l, r := lf(t), rf(t); - return l != r; - }; + l, r := lf(t), rf(t) + return l != r + } default: log.Crashf("unexpected type %v at %v", l.t, a.pos) } @@ -1874,40 +1874,40 @@ func (a *expr) genBinOpNeq(l, r *expr) { func genAssign(lt Type, r *expr) (func(lv Value, t *Thread)) { switch lt.lit().(type) { case *boolType: - rf := r.asBool(); - return func(lv Value, t *Thread) { lv.(BoolValue).Set(t, rf(t)) }; + rf := r.asBool() + return func(lv Value, t *Thread) { lv.(BoolValue).Set(t, rf(t)) } case *uintType: - rf := r.asUint(); - return func(lv Value, t *Thread) { lv.(UintValue).Set(t, rf(t)) }; + rf := r.asUint() + return func(lv Value, t *Thread) { lv.(UintValue).Set(t, rf(t)) } case *intType: - rf := r.asInt(); - return func(lv Value, t *Thread) { lv.(IntValue).Set(t, rf(t)) }; + rf := r.asInt() + return func(lv Value, t *Thread) { lv.(IntValue).Set(t, rf(t)) } case *floatType: - rf := r.asFloat(); - return func(lv Value, t *Thread) { lv.(FloatValue).Set(t, rf(t)) }; + rf := r.asFloat() + return func(lv Value, t *Thread) { lv.(FloatValue).Set(t, rf(t)) } case *stringType: - rf := r.asString(); - return func(lv Value, t *Thread) { lv.(StringValue).Set(t, rf(t)) }; + rf := r.asString() + return func(lv Value, t *Thread) { lv.(StringValue).Set(t, rf(t)) } case *ArrayType: - rf := r.asArray(); - return func(lv Value, t *Thread) { lv.Assign(t, rf(t)) }; + rf := r.asArray() + return func(lv Value, t *Thread) { lv.Assign(t, rf(t)) } case *StructType: - rf := r.asStruct(); - return func(lv Value, t *Thread) { lv.Assign(t, rf(t)) }; + rf := r.asStruct() + return func(lv Value, t *Thread) { lv.Assign(t, rf(t)) } case *PtrType: - rf := r.asPtr(); - return func(lv Value, t *Thread) { lv.(PtrValue).Set(t, rf(t)) }; + rf := r.asPtr() + return func(lv Value, t *Thread) { lv.(PtrValue).Set(t, rf(t)) } case *FuncType: - rf := r.asFunc(); - return func(lv Value, t *Thread) { lv.(FuncValue).Set(t, rf(t)) }; + rf := r.asFunc() + return func(lv Value, t *Thread) { lv.(FuncValue).Set(t, rf(t)) } case *SliceType: - rf := r.asSlice(); - return func(lv Value, t *Thread) { lv.(SliceValue).Set(t, rf(t)) }; + rf := r.asSlice() + return func(lv Value, t *Thread) { lv.(SliceValue).Set(t, rf(t)) } case *MapType: - rf := r.asMap(); - return func(lv Value, t *Thread) { lv.(MapValue).Set(t, rf(t)) }; + rf := r.asMap() + return func(lv Value, t *Thread) { lv.(MapValue).Set(t, rf(t)) } default: log.Crashf("unexpected left operand type %v at %v", lt, r.pos) } - panic(); + panic() } |