Make sure that the lack of an lvalue doesn't
cause extra side-effects.
Updates #18661
Updates #18739
Change-Id: I52eb4b4a5c6f8ff5cddd2115455f853c18112c19
Reviewed-on: https://go-review.googlesource.com/36126
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-// compile
+// run
// Copyright 2017 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.
-package p
+package main
+
+import (
+ "fmt"
+ "os"
+)
var (
e interface{}
if obj != struct{ a *string }{} {
}
}
+
+var x int
+
+func f() [2]string {
+ x++
+ return [2]string{"abc", "def"}
+}
+
+func main() {
+ var e interface{} = [2]string{"abc", "def"}
+ _ = e == f()
+ if x != 1 {
+ fmt.Println("x=", x)
+ os.Exit(1)
+ }
+}