diff options
| author | Mel <einebeere@gmail.com> | 2022-05-20 21:04:37 +0200 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2022-05-20 21:04:37 +0200 |
| commit | 3f4efe745a0404953266476ec52db54b182de2f8 (patch) | |
| tree | 107542d587c97b99f749c537870e84d196058210 /pkg/lang/vm/value | |
| parent | 25eb5ca1b0a8b9b35f36deedec4901bca02bf43e (diff) | |
| download | jinx-3f4efe745a0404953266476ec52db54b182de2f8.tar.zst jinx-3f4efe745a0404953266476ec52db54b182de2f8.zip | |
Call and return from functions
Diffstat (limited to 'pkg/lang/vm/value')
| -rw-r--r-- | pkg/lang/vm/value/data.go | 12 | ||||
| -rw-r--r-- | pkg/lang/vm/value/value.go | 5 |
2 files changed, 14 insertions, 3 deletions
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("<fn %d>", 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 { |
