// run | |
// Copyright 2011 The Go Authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style | |
// license that can be found in the LICENSE file. | |
// Test evaluation order. | |
package main | |
var calledf int | |
func f() int { | |
calledf++ | |
return 0 | |
} | |
func g() int { | |
return calledf | |
} | |
var xy string | |
func x() bool { | |
for false { | |
} // no inlining | |
xy += "x" | |
return false | |
} | |
func y() string { | |
for false { | |
} // no inlining | |
xy += "y" | |
return "abc" | |
} | |
func main() { | |
if f() == g() { | |
panic("wrong f,g order") | |
} | |
if x() == (y() == "abc") { | |
panic("wrong compare") | |
} | |
if xy != "xy" { | |
panic("wrong x,y order") | |
} | |
} |