From 3f4efe745a0404953266476ec52db54b182de2f8 Mon Sep 17 00:00:00 2001 From: Mel Date: Fri, 20 May 2022 21:04:37 +0200 Subject: Call and return from functions --- pkg/lang/vm/value/data.go | 12 +++++++++++- pkg/lang/vm/value/value.go | 5 +++-- 2 files changed, 14 insertions(+), 3 deletions(-) (limited to 'pkg/lang/vm/value') diff --git a/pkg/lang/vm/value/data.go b/pkg/lang/vm/value/data.go index 6365f45..5d1398d 100644 --- a/pkg/lang/vm/value/data.go +++ b/pkg/lang/vm/value/data.go @@ -83,6 +83,16 @@ func (a ArrayData) Push(v Value) { type NullData struct{} -type FunctionData struct{} // TODO +type FunctionData struct { + pc int +} + +func (f FunctionData) Pc() int { + return f.pc +} + +func (f FunctionData) String() string { + return fmt.Sprintf("", f.pc) +} type ObjectData struct{} // TODO diff --git a/pkg/lang/vm/value/value.go b/pkg/lang/vm/value/value.go index daa17dd..93989cf 100644 --- a/pkg/lang/vm/value/value.go +++ b/pkg/lang/vm/value/value.go @@ -35,8 +35,9 @@ func NewNull() Value { return Value{t: t} } -func NewFunction() Value { - panic("not implemented") +func NewFunction(pc int) Value { + t := Type{Kind: FunctionType} + return Value{t: t, d: FunctionData{pc: pc}} } func NewObject() Value { -- cgit 1.4.1