summaryrefslogtreecommitdiff
path: root/src/pkg/exp/eval
diff options
context:
space:
mode:
authorOndřej Surý <ondrej@sury.org>2011-02-14 13:23:51 +0100
committerOndřej Surý <ondrej@sury.org>2011-02-14 13:23:51 +0100
commit758ff64c69e34965f8af5b2d6ffd65e8d7ab2150 (patch)
tree6d6b34f8c678862fe9b56c945a7b63f68502c245 /src/pkg/exp/eval
parent3e45412327a2654a77944249962b3652e6142299 (diff)
downloadgolang-upstream/2011-02-01.1.tar.gz
Imported Upstream version 2011-02-01.1upstream/2011-02-01.1
Diffstat (limited to 'src/pkg/exp/eval')
-rw-r--r--src/pkg/exp/eval/Makefile2
-rw-r--r--src/pkg/exp/eval/bridge.go2
-rw-r--r--src/pkg/exp/eval/eval_test.go6
-rw-r--r--src/pkg/exp/eval/expr.go2
-rwxr-xr-xsrc/pkg/exp/eval/expr1.go37
-rw-r--r--src/pkg/exp/eval/gen.go2
-rw-r--r--src/pkg/exp/eval/stmt.go2
-rw-r--r--src/pkg/exp/eval/type.go10
-rw-r--r--src/pkg/exp/eval/value.go10
9 files changed, 10 insertions, 63 deletions
diff --git a/src/pkg/exp/eval/Makefile b/src/pkg/exp/eval/Makefile
index 2b716b14c..872316cad 100644
--- a/src/pkg/exp/eval/Makefile
+++ b/src/pkg/exp/eval/Makefile
@@ -30,7 +30,7 @@ eval: main.$O
gen.$O: gen.go
$(GC) $<
-generate: gen.$O $(pkgdir)/$(TARG).a
+generate: gen.$O
$(LD) -o $@ $<;\
./generate > expr1.go;\
gofmt -w expr1.go
diff --git a/src/pkg/exp/eval/bridge.go b/src/pkg/exp/eval/bridge.go
index 3fa498d68..12835c4c0 100644
--- a/src/pkg/exp/eval/bridge.go
+++ b/src/pkg/exp/eval/bridge.go
@@ -43,8 +43,6 @@ func TypeFromNative(t reflect.Type) Type {
et = Float32Type
case reflect.Float64:
et = Float64Type
- case reflect.Float:
- et = FloatType
}
case *reflect.IntType:
switch t.Kind() {
diff --git a/src/pkg/exp/eval/eval_test.go b/src/pkg/exp/eval/eval_test.go
index 6bfe9089d..ff28cf1a9 100644
--- a/src/pkg/exp/eval/eval_test.go
+++ b/src/pkg/exp/eval/eval_test.go
@@ -173,8 +173,8 @@ func toValue(val interface{}) Value {
return &r
case *big.Int:
return &idealIntV{val}
- case float:
- r := floatV(val)
+ case float64:
+ r := float64V(val)
return &r
case *big.Rat:
return &idealFloatV{val}
@@ -244,7 +244,7 @@ func newTestWorld() *World {
def("i", IntType, 1)
def("i2", IntType, 2)
def("u", UintType, uint(1))
- def("f", FloatType, 1.0)
+ def("f", Float64Type, 1.0)
def("s", StringType, "abc")
def("t", NewStructType([]StructField{{"a", IntType, false}}), vstruct{1})
def("ai", NewArrayType(2, IntType), varray{1, 2})
diff --git a/src/pkg/exp/eval/expr.go b/src/pkg/exp/eval/expr.go
index 70f63cf2d..e65f47617 100644
--- a/src/pkg/exp/eval/expr.go
+++ b/src/pkg/exp/eval/expr.go
@@ -1981,7 +1981,7 @@ func (a *expr) extractEffect(b *block, errOp string) (func(*Thread), *expr) {
case tempType.isInteger():
tempType = IntType
case tempType.isFloat():
- tempType = FloatType
+ tempType = Float64Type
default:
log.Panicf("unexpected ideal type %v", tempType)
}
diff --git a/src/pkg/exp/eval/expr1.go b/src/pkg/exp/eval/expr1.go
index ae0cfc723..5d0e50000 100755
--- a/src/pkg/exp/eval/expr1.go
+++ b/src/pkg/exp/eval/expr1.go
@@ -9,8 +9,8 @@ import (
)
/*
-* "As" functions. These retrieve evaluator functions from an
-* expr, panicking if the requested evaluator has the wrong type.
+ * "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)
@@ -90,7 +90,7 @@ func (a *expr) asInterface() func(*Thread) interface{} {
}
/*
-* Operator generators.
+ * Operator generators.
*/
func (a *expr) genConstant(v Value) {
@@ -392,13 +392,6 @@ func (a *expr) genBinOpAdd(l, r *expr) {
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))
- }
default:
log.Panicf("unexpected size %d in type %v at %v", t.Bits, t, a.pos)
}
@@ -528,13 +521,6 @@ func (a *expr) genBinOpSub(l, r *expr) {
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))
- }
default:
log.Panicf("unexpected size %d in type %v at %v", t.Bits, t, a.pos)
}
@@ -657,13 +643,6 @@ func (a *expr) genBinOpMul(l, r *expr) {
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))
- }
default:
log.Panicf("unexpected size %d in type %v at %v", t.Bits, t, a.pos)
}
@@ -822,16 +801,6 @@ func (a *expr) genBinOpQuo(l, r *expr) {
ret = l / r
return float64(float64(ret))
}
- case 0:
- a.eval = func(t *Thread) float64 {
- l, r := lf(t), rf(t)
- var ret float64
- if r == 0 {
- t.Abort(DivByZeroError{})
- }
- ret = l / r
- return float64(float(ret))
- }
default:
log.Panicf("unexpected size %d in type %v at %v", t.Bits, t, a.pos)
}
diff --git a/src/pkg/exp/eval/gen.go b/src/pkg/exp/eval/gen.go
index 81863dd6f..a2b119846 100644
--- a/src/pkg/exp/eval/gen.go
+++ b/src/pkg/exp/eval/gen.go
@@ -47,7 +47,7 @@ var (
}
idealIntType = &Type{Repr: "*idealIntType", Value: "IdealIntValue", Native: "*big.Int", As: "asIdealInt", IsIdeal: true}
floatType = &Type{Repr: "*floatType", Value: "FloatValue", Native: "float64", As: "asFloat",
- Sizes: []Size{{32, "float32"}, {64, "float64"}, {0, "float"}},
+ Sizes: []Size{{32, "float32"}, {64, "float64"}},
}
idealFloatType = &Type{Repr: "*idealFloatType", Value: "IdealFloatValue", Native: "*big.Rat", As: "asIdealFloat", IsIdeal: true}
stringType = &Type{Repr: "*stringType", Value: "StringValue", Native: "string", As: "asString"}
diff --git a/src/pkg/exp/eval/stmt.go b/src/pkg/exp/eval/stmt.go
index b9ffa94fa..77ff066d0 100644
--- a/src/pkg/exp/eval/stmt.go
+++ b/src/pkg/exp/eval/stmt.go
@@ -602,7 +602,7 @@ func (a *stmtCompiler) doAssign(lhs []ast.Expr, rhs []ast.Expr, tok token.Token,
case ac.rmt.Elems[i].isInteger():
lt = IntType
case ac.rmt.Elems[i].isFloat():
- lt = FloatType
+ lt = Float64Type
default:
log.Panicf("unexpected ideal type %v", rs[i].t)
}
diff --git a/src/pkg/exp/eval/type.go b/src/pkg/exp/eval/type.go
index db77ab198..3f272ce4b 100644
--- a/src/pkg/exp/eval/type.go
+++ b/src/pkg/exp/eval/type.go
@@ -372,7 +372,6 @@ type floatType struct {
var (
Float32Type = universe.DefineType("float32", universePos, &floatType{commonType{}, 32, "float32"})
Float64Type = universe.DefineType("float64", universePos, &floatType{commonType{}, 64, "float64"})
- FloatType = universe.DefineType("float", universePos, &floatType{commonType{}, 0, "float"})
)
func (t *floatType) compat(o Type, conv bool) bool {
@@ -394,9 +393,6 @@ func (t *floatType) Zero() Value {
case 64:
res := float64V(0)
return &res
- case 0:
- res := floatV(0)
- return &res
}
panic("unexpected float bit count")
}
@@ -408,9 +404,6 @@ var minFloat64Val *big.Rat
func (t *floatType) minVal() *big.Rat {
bits := t.Bits
- if bits == 0 {
- bits = uint(8 * unsafe.Sizeof(float(0)))
- }
switch bits {
case 32:
return minFloat32Val
@@ -423,9 +416,6 @@ func (t *floatType) minVal() *big.Rat {
func (t *floatType) maxVal() *big.Rat {
bits := t.Bits
- if bits == 0 {
- bits = uint(8 * unsafe.Sizeof(float(0)))
- }
switch bits {
case 32:
return maxFloat32Val
diff --git a/src/pkg/exp/eval/value.go b/src/pkg/exp/eval/value.go
index cace2fd37..daa691897 100644
--- a/src/pkg/exp/eval/value.go
+++ b/src/pkg/exp/eval/value.go
@@ -307,16 +307,6 @@ func (v *float64V) Get(*Thread) float64 { return float64(*v) }
func (v *float64V) Set(t *Thread, x float64) { *v = float64V(x) }
-type floatV float
-
-func (v *floatV) String() string { return fmt.Sprint(*v) }
-
-func (v *floatV) Assign(t *Thread, o Value) { *v = floatV(o.(FloatValue).Get(t)) }
-
-func (v *floatV) Get(*Thread) float64 { return float64(*v) }
-
-func (v *floatV) Set(t *Thread, x float64) { *v = floatV(x) }
-
/*
* Ideal float
*/