diff --git a/_test/bin4.go b/_test/bin4.go new file mode 100644 index 00000000..5d9c4fe5 --- /dev/null +++ b/_test/bin4.go @@ -0,0 +1,18 @@ +package main + +import ( + "fmt" + "strings" +) + +func Bar(s string) bool { + a := strings.HasPrefix("fas", "f") + b := strings.HasPrefix("aaaaa", "a") + a_and_b := strings.HasPrefix("fas", "f") && strings.HasPrefix("aaaaa", "a") + fmt.Println(a, b, a && b, a_and_b) + return a && b +} + +func main() { + println(Bar("kung")) +} diff --git a/interp/run.go b/interp/run.go index 33980228..ef1a0080 100644 --- a/interp/run.go +++ b/interp/run.go @@ -933,13 +933,16 @@ func callBin(n *node) { } case fnext != nil: // Handle branching according to boolean result. + index := n.findex n.exec = func(f *frame) bltn { in := make([]reflect.Value, l) for i, v := range values { in[i] = v(f) } res := value(f).Call(in) - if res[0].Bool() { + b := res[0].Bool() + f.data[index].SetBool(b) + if b { return tnext } return fnext