fix do wrap bugs

This commit is contained in:
2023-03-11 02:06:36 +00:00
parent 597be4e0df
commit f5d8eb6d70
5 changed files with 18 additions and 16 deletions

View File

@@ -94,11 +94,7 @@ func runCall(c call, stack stack) (any, ArErr) {
level[param] = args[i]
}
resp, err := runVal(x.run, append(x.stack, level))
switch x := resp.(type) {
case PassBackJumpStatment:
resp = x.value
}
return resp, err
return openJump(resp), err
}
return nil, ArErr{"Runtime Error", "type '" + typeof(callable) + "' is not callable", c.line, c.path, c.code, true}
}

View File

@@ -18,7 +18,7 @@ func isDoWrap(code UNPARSEcode) bool {
}
func parseDoWrap(code UNPARSEcode, index int, codelines []UNPARSEcode) (any, bool, ArErr, int) {
currentindent := len(code.code) - len(strings.TrimLeft(code.code, " "))
currentindent := len(code.realcode) - len(strings.TrimLeft(code.realcode, " "))
var setindent int = -1
var i = index + 1
translated := []any{}

View File

@@ -30,7 +30,7 @@ func parseReturn(code UNPARSEcode, index int, codeline []UNPARSEcode) (CallJumpS
realcode: code.realcode,
line: code.line,
path: code.path,
}, index, codeline, 0)
}, index, codeline, 1)
return CallJumpStatment{
TYPE: "return",
value: resp,
@@ -57,3 +57,12 @@ func runJumpStatment(code CallJumpStatment, stack stack) (any, ArErr) {
path: code.path,
}, ArErr{}
}
func openJump(resp any) any {
switch x := resp.(type) {
case PassBackJumpStatment:
return x.value
default:
return resp
}
}

View File

@@ -193,11 +193,7 @@ func setVariableValue(v setVariable, stack stack) (any, ArErr) {
if err.EXISTS {
return nil, err
}
switch x := respp.(type) {
case PassBackJumpStatment:
respp = x.value
}
resp = respp
resp = openJump(respp)
}
if v.TYPE == "let" {