aboutsummaryrefslogtreecommitdiff
path: root/pkg/lang/vm/value
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/lang/vm/value')
-rw-r--r--pkg/lang/vm/value/data.go11
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 {