move eface demo to cl/_testrt
This commit is contained in:
@@ -26,14 +26,12 @@ import (
|
|||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
type goTypes struct {
|
type goTypes struct {
|
||||||
typs map[unsafe.Pointer]unsafe.Pointer
|
typs map[unsafe.Pointer]unsafe.Pointer
|
||||||
named map[*types.Named]*types.Named // named => raw
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func newGoTypes() goTypes {
|
func newGoTypes() goTypes {
|
||||||
typs := make(map[unsafe.Pointer]unsafe.Pointer)
|
typs := make(map[unsafe.Pointer]unsafe.Pointer)
|
||||||
named := make(map[*types.Named]*types.Named)
|
return goTypes{typs}
|
||||||
return goTypes{typs, named}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type Background int
|
type Background int
|
||||||
@@ -118,13 +116,6 @@ func (p goTypes) cvtNamed(t *types.Named) (raw *types.Named, cvt bool) {
|
|||||||
cvt = t != raw
|
cvt = t != raw
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer func() {
|
|
||||||
p.typs[unsafe.Pointer(t)] = unsafe.Pointer(raw)
|
|
||||||
}()
|
|
||||||
if named, ok := p.named[t]; ok {
|
|
||||||
return named, false
|
|
||||||
}
|
|
||||||
|
|
||||||
n := t.NumMethods()
|
n := t.NumMethods()
|
||||||
methods := make([]*types.Func, n)
|
methods := make([]*types.Func, n)
|
||||||
for i := 0; i < n; i++ {
|
for i := 0; i < n; i++ {
|
||||||
@@ -132,8 +123,7 @@ func (p goTypes) cvtNamed(t *types.Named) (raw *types.Named, cvt bool) {
|
|||||||
methods[i] = m
|
methods[i] = m
|
||||||
}
|
}
|
||||||
named := types.NewNamed(t.Obj(), types.Typ[types.Int], methods)
|
named := types.NewNamed(t.Obj(), types.Typ[types.Int], methods)
|
||||||
p.named[t] = named
|
p.typs[unsafe.Pointer(t)] = unsafe.Pointer(named)
|
||||||
defer delete(p.named, t)
|
|
||||||
if tund, cvt := p.cvtType(t.Underlying()); cvt {
|
if tund, cvt := p.cvtType(t.Underlying()); cvt {
|
||||||
named.SetUnderlying(tund)
|
named.SetUnderlying(tund)
|
||||||
return named, true
|
return named, true
|
||||||
|
|||||||
Reference in New Issue
Block a user