24 lines
443 B
Go
24 lines
443 B
Go
package build
|
|
|
|
import (
|
|
"git.akyoto.dev/cli/q/src/build/expression"
|
|
"git.akyoto.dev/cli/q/src/build/token"
|
|
)
|
|
|
|
// CompileReturn compiles a return instruction.
|
|
func (f *Function) CompileReturn(tokens token.List) error {
|
|
defer f.assembler.Return()
|
|
|
|
if len(tokens) == 1 {
|
|
return nil
|
|
}
|
|
|
|
value := expression.Parse(tokens[1:])
|
|
|
|
if value == nil {
|
|
return nil
|
|
}
|
|
|
|
defer value.Close()
|
|
return f.ExpressionToRegister(value, f.cpu.Return[0])
|
|
}
|