mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-15 16:33:40 +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
|
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 {
|
func (t Type) String() string {
|
||||||
return "T"
|
return "T"
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+7
@@ -265,6 +265,13 @@ func main() {
|
|||||||
println("type assertion failed (but should succeed)")
|
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")
|
println("\nstruct tags")
|
||||||
TestStructTag()
|
TestStructTag()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user