Simplified ssa package
All checks were successful
/ test (push) Successful in 15s

This commit is contained in:
Eduard Urbach 2025-07-03 22:54:30 +02:00
parent b77d876ebb
commit ca9595d1fb
Signed by: akyoto
GPG key ID: 49226B848C78F6C8
28 changed files with 179 additions and 649 deletions

View file

@ -1,18 +1,21 @@
package ssa
import (
"strconv"
"strings"
"fmt"
"git.urbach.dev/cli/q/src/types"
)
type Return struct {
Id
Arguments
Source
}
func (v *Return) AddUser(Value) { panic("return can not be used as a dependency") }
func (v *Return) IsConst() bool { return false }
func (v *Return) Type() types.Type { return types.Void }
func (v *Return) Users() []Value { return nil }
func (a *Return) Equals(v Value) bool {
b, sameType := v.(*Return)
@ -33,38 +36,10 @@ func (a *Return) Equals(v Value) bool {
return true
}
func (v *Return) IsConst() bool {
return false
}
func (v *Return) Debug(expand bool) string {
func (v *Return) String() string {
if len(v.Arguments) == 0 {
return "return"
}
tmp := strings.Builder{}
tmp.WriteString("return ")
for i, arg := range v.Arguments {
if expand {
tmp.WriteString(arg.String())
} else {
tmp.WriteString("%")
tmp.WriteString(strconv.Itoa(arg.ID()))
}
if i != len(v.Arguments)-1 {
tmp.WriteString(", ")
}
}
return tmp.String()
}
func (v *Return) String() string {
return v.Debug(true)
}
func (v *Return) Type() types.Type {
return types.Void
return fmt.Sprintf("return %s", v.Arguments.String())
}