diff options
Diffstat (limited to 'pkg/lang/vm/value')
| -rw-r--r-- | pkg/lang/vm/value/data.go | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/pkg/lang/vm/value/data.go b/pkg/lang/vm/value/data.go index 6c3d762..6ec7be9 100644 --- a/pkg/lang/vm/value/data.go +++ b/pkg/lang/vm/value/data.go @@ -180,6 +180,17 @@ func (t TypeRefData) TypeRef() mem.Ptr { return t.typeRef } +func (t TypeRefData) GetMethod(m mem.Mem, name string) (bool, FunctionData, error) { + cell, err := m.Get(t.typeRef) + if err != nil { + return false, FunctionData{}, err + } + + typ := cell.(TypeCell).Get() + method, ok := typ.Methods[name] + return ok, method, nil +} + func (t TypeRefData) AddMethod(m mem.Mem, name string, method FunctionData) error { cell, err := m.Get(t.typeRef) if err != nil { |
