diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2011-05-20 00:18:15 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2011-05-20 00:18:15 +0000 |
commit | 9ff56c9570642711d5b7ab29920ecf5dbff14a27 (patch) | |
tree | c891bdec1e6f073f73fedeef23718bc3ac30d499 /libgo/go/exp/eval/bridge.go | |
parent | 37cb25ed7acdb844b218231130e54b8b7a0ff6e6 (diff) | |
download | gcc-9ff56c9570642711d5b7ab29920ecf5dbff14a27.zip gcc-9ff56c9570642711d5b7ab29920ecf5dbff14a27.tar.gz gcc-9ff56c9570642711d5b7ab29920ecf5dbff14a27.tar.bz2 |
Update to current version of Go library.
From-SVN: r173931
Diffstat (limited to 'libgo/go/exp/eval/bridge.go')
-rw-r--r-- | libgo/go/exp/eval/bridge.go | 93 |
1 files changed, 44 insertions, 49 deletions
diff --git a/libgo/go/exp/eval/bridge.go b/libgo/go/exp/eval/bridge.go index 12835c4..f31d9ab 100644 --- a/libgo/go/exp/eval/bridge.go +++ b/libgo/go/exp/eval/bridge.go @@ -34,54 +34,49 @@ func TypeFromNative(t reflect.Type) Type { } var et Type - switch t := t.(type) { - case *reflect.BoolType: + switch t.Kind() { + case reflect.Bool: et = BoolType - case *reflect.FloatType: - switch t.Kind() { - case reflect.Float32: - et = Float32Type - case reflect.Float64: - et = Float64Type - } - case *reflect.IntType: - switch t.Kind() { - case reflect.Int16: - et = Int16Type - case reflect.Int32: - et = Int32Type - case reflect.Int64: - et = Int64Type - case reflect.Int8: - et = Int8Type - case reflect.Int: - et = IntType - } - case *reflect.UintType: - switch t.Kind() { - case reflect.Uint16: - et = Uint16Type - case reflect.Uint32: - et = Uint32Type - case reflect.Uint64: - et = Uint64Type - case reflect.Uint8: - et = Uint8Type - case reflect.Uint: - et = UintType - case reflect.Uintptr: - et = UintptrType - } - case *reflect.StringType: + + case reflect.Float32: + et = Float32Type + case reflect.Float64: + et = Float64Type + + case reflect.Int16: + et = Int16Type + case reflect.Int32: + et = Int32Type + case reflect.Int64: + et = Int64Type + case reflect.Int8: + et = Int8Type + case reflect.Int: + et = IntType + + case reflect.Uint16: + et = Uint16Type + case reflect.Uint32: + et = Uint32Type + case reflect.Uint64: + et = Uint64Type + case reflect.Uint8: + et = Uint8Type + case reflect.Uint: + et = UintType + case reflect.Uintptr: + et = UintptrType + + case reflect.String: et = StringType - case *reflect.ArrayType: + case reflect.Array: et = NewArrayType(int64(t.Len()), TypeFromNative(t.Elem())) - case *reflect.ChanType: + case reflect.Chan: log.Panicf("%T not implemented", t) - case *reflect.FuncType: + case reflect.Func: nin := t.NumIn() // Variadic functions have DotDotDotType at the end - variadic := t.DotDotDot() + variadic := t.IsVariadic() if variadic { nin-- } @@ -94,15 +89,15 @@ func TypeFromNative(t reflect.Type) Type { out[i] = TypeFromNative(t.Out(i)) } et = NewFuncType(in, variadic, out) - case *reflect.InterfaceType: + case reflect.Interface: log.Panicf("%T not implemented", t) - case *reflect.MapType: + case reflect.Map: log.Panicf("%T not implemented", t) - case *reflect.PtrType: + case reflect.Ptr: et = NewPtrType(TypeFromNative(t.Elem())) - case *reflect.SliceType: + case reflect.Slice: et = NewSliceType(TypeFromNative(t.Elem())) - case *reflect.StructType: + case reflect.Struct: n := t.NumField() fields := make([]StructField, n) for i := 0; i < n; i++ { @@ -113,7 +108,7 @@ func TypeFromNative(t reflect.Type) Type { fields[i].Anonymous = sf.Anonymous } et = NewStructType(fields) - case *reflect.UnsafePointerType: + case reflect.UnsafePointer: log.Panicf("%T not implemented", t) default: log.Panicf("unexpected reflect.Type: %T", t) @@ -133,7 +128,7 @@ func TypeFromNative(t reflect.Type) Type { } // TypeOfNative returns the interpreter Type of a regular Go value. -func TypeOfNative(v interface{}) Type { return TypeFromNative(reflect.Typeof(v)) } +func TypeOfNative(v interface{}) Type { return TypeFromNative(reflect.TypeOf(v)) } /* * Function bridging |