mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-03 02:27:48 +00:00
reflect: implement PtrTo
This commit is contained in:
committed by
Ron Evans
parent
36db75b366
commit
3010466c55
@@ -133,6 +133,14 @@ func TypeOf(i interface{}) Type {
|
||||
return ValueOf(i).typecode
|
||||
}
|
||||
|
||||
func PtrTo(t Type) Type {
|
||||
ptrType := t<<5 | 5 // 0b0101 == 5
|
||||
if ptrType>>5 != t {
|
||||
panic("reflect: PtrTo type does not fit")
|
||||
}
|
||||
return ptrType
|
||||
}
|
||||
|
||||
func (t Type) String() string {
|
||||
return "T"
|
||||
}
|
||||
|
||||
Vendored
+7
@@ -265,6 +265,13 @@ func main() {
|
||||
println("type assertion failed (but should succeed)")
|
||||
}
|
||||
|
||||
if reflect.TypeOf(new(myint)) != reflect.PtrTo(reflect.TypeOf(myint(0))) {
|
||||
println("PtrTo failed for type myint")
|
||||
}
|
||||
if reflect.TypeOf(new(myslice)) != reflect.PtrTo(reflect.TypeOf(make(myslice, 0))) {
|
||||
println("PtrTo failed for type myslice")
|
||||
}
|
||||
|
||||
println("\nstruct tags")
|
||||
TestStructTag()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user