mirror of
https://github.com/robertkrimen/otto
synced 2025-09-28 18:45:22 +08:00
parent
7dfbf6ab13
commit
89e26f042e
|
@ -150,17 +150,21 @@ func (self *_runtime) evaluateFor(node *_forNode) Value {
|
|||
return self.breakEvaluate(_labelSet, func() Value {
|
||||
result := emptyValue()
|
||||
for {
|
||||
testResult := self.evaluate(test)
|
||||
testResultValue := self.GetValue(testResult)
|
||||
if (toBoolean(testResultValue) == false) {
|
||||
break
|
||||
if test != nil {
|
||||
testResult := self.evaluate(test)
|
||||
testResultValue := self.GetValue(testResult)
|
||||
if (toBoolean(testResultValue) == false) {
|
||||
break
|
||||
}
|
||||
}
|
||||
value, _ := self.continueEvaluate(body, _labelSet)
|
||||
if !value.isEmpty() {
|
||||
result = value
|
||||
}
|
||||
updateResult := self.evaluate(update)
|
||||
self.GetValue(updateResult) // Side-effect trigger
|
||||
if update != nil {
|
||||
updateResult := self.evaluate(update)
|
||||
self.GetValue(updateResult) // Side-effect trigger
|
||||
}
|
||||
}
|
||||
return result
|
||||
})
|
||||
|
|
29
otto_test.go
29
otto_test.go
|
@ -773,6 +773,34 @@ func TestFor(t *testing.T) {
|
|||
}
|
||||
`)
|
||||
test("result", "9")
|
||||
|
||||
test(`
|
||||
abc = 0
|
||||
for (;;) {
|
||||
abc += 1
|
||||
if (abc == 3)
|
||||
break
|
||||
}
|
||||
abc
|
||||
`, "3")
|
||||
|
||||
test(`
|
||||
for (abc = 0; ;) {
|
||||
abc += 1
|
||||
if (abc == 3)
|
||||
break
|
||||
}
|
||||
abc
|
||||
`, "3")
|
||||
|
||||
test(`
|
||||
for (abc = 0; ; abc+=1) {
|
||||
abc += 1
|
||||
if (abc == 3)
|
||||
break
|
||||
}
|
||||
abc
|
||||
`, "3")
|
||||
}
|
||||
|
||||
func TestArguments(t *testing.T) {
|
||||
|
@ -1844,3 +1872,4 @@ func TestAPI(t *testing.T) {
|
|||
result, _ = object.Value().Call(def, 3)
|
||||
Is(result, "30")
|
||||
}
|
||||
|
||||
|
|
|
@ -637,7 +637,6 @@ func TestParseSuccess(t *testing.T) {
|
|||
---
|
||||
{ @ xyzzy { <throw> { <new> TypeError "Nothing happens." } } }
|
||||
`)
|
||||
|
||||
}
|
||||
|
||||
func TestParseFailure(t *testing.T) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user