]> Cypherpunks.ru repositories - gostls13.git/commitdiff
cmd/compile: don't implicitly dereference pointer to arrays for real/imag
authorRobert Griesemer <gri@golang.org>
Wed, 7 Jun 2017 20:10:05 +0000 (13:10 -0700)
committerRobert Griesemer <gri@golang.org>
Wed, 7 Jun 2017 21:22:58 +0000 (21:22 +0000)
Fixes #20602.

Change-Id: Iac1589484dec626c018314e0cea7efce091fd87d
Reviewed-on: https://go-review.googlesource.com/45075
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/gc/typecheck.go
test/fixedbugs/issue20602.go [new file with mode: 0644]

index b02bc659be365af3806872ef496ba180f0987a7d..04efcc3d823219f64f76714980048b7d65c2e349 100644 (file)
@@ -1349,7 +1349,9 @@ OpSwitch:
                }
                n.Left = typecheck(n.Left, Erv)
                n.Left = defaultlit(n.Left, nil)
-               n.Left = implicitstar(n.Left)
+               if n.Op == OCAP || n.Op == OLEN {
+                       n.Left = implicitstar(n.Left)
+               }
                l := n.Left
                t := l.Type
                if t == nil {
diff --git a/test/fixedbugs/issue20602.go b/test/fixedbugs/issue20602.go
new file mode 100644 (file)
index 0000000..ca4ce09
--- /dev/null
@@ -0,0 +1,14 @@
+// errorcheck
+
+// 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.
+
+// Verify that the correct (not implicitly dereferenced)
+// type is reported in the error message.
+
+package p
+
+var p = &[1]complex128{0}
+var _ = real(p)  // ERROR "type \*\[1\]complex128"
+var _ = imag(p)         // ERROR "type \*\[1\]complex128"