This commit is contained in:
parent
0db420aae4
commit
7245af0438
5 changed files with 35 additions and 30 deletions
|
|
@ -3,6 +3,7 @@ package core
|
|||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"slices"
|
||||
"strings"
|
||||
)
|
||||
|
||||
|
|
@ -116,8 +117,7 @@ func (e CompilerError) Format() string {
|
|||
|
||||
b.WriteString("\nsource trace:")
|
||||
// print import stack trace
|
||||
for i := len(e.Trace) - 1; i >= 0; i-- {
|
||||
p := e.Trace[i]
|
||||
for i, p := range slices.Backward(e.Trace) {
|
||||
b.WriteString(fmt.Sprintf("\n[%d] %s", i, p))
|
||||
}
|
||||
|
||||
|
|
@ -180,20 +180,20 @@ func (c *Compiler) Compile(p *Program) (TypeSignature, error) {
|
|||
}
|
||||
|
||||
func EscapeString(in string) string {
|
||||
out := ""
|
||||
var out strings.Builder
|
||||
escaped := false
|
||||
|
||||
for _, ch := range in {
|
||||
if escaped {
|
||||
switch ch {
|
||||
case 'n':
|
||||
out += "\n"
|
||||
out.WriteRune('\n')
|
||||
case 't':
|
||||
out += "\t"
|
||||
out.WriteRune('\t')
|
||||
case 'r':
|
||||
out += "\r"
|
||||
out.WriteRune('\r')
|
||||
default:
|
||||
out += string(ch)
|
||||
out.WriteString(string(ch))
|
||||
}
|
||||
escaped = false
|
||||
continue
|
||||
|
|
@ -203,11 +203,11 @@ func EscapeString(in string) string {
|
|||
case '\\':
|
||||
escaped = true
|
||||
default:
|
||||
out += string(ch)
|
||||
out.WriteString(string(ch))
|
||||
}
|
||||
}
|
||||
|
||||
return out
|
||||
return out.String()
|
||||
}
|
||||
|
||||
func (c *Compiler) resolveType(value TypeSignature) TypeSignature {
|
||||
|
|
@ -968,8 +968,8 @@ func (c *Compiler) compileAssignFromStack(to Node, sig TypeSignature, declare bo
|
|||
c.add(InstructionDestructureTuple)
|
||||
|
||||
// iterate from top to bottom
|
||||
for i := len(t.items) - 1; i >= 0; i-- {
|
||||
_, err := c.compileAssignFromStack(t.items[i], tsig.Contents[i], declare)
|
||||
for i, v := range slices.Backward(t.items) {
|
||||
_, err := c.compileAssignFromStack(v, tsig.Contents[i], declare)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue