cmd/compile: don't implicitly dereference pointer to arrays for real/imag

Fixes #20602.

Change-Id: Iac1589484dec626c018314e0cea7efce091fd87d
Reviewed-on: https://go-review.googlesource.com/45075
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
Robert Griesemer 2017-06-07 13:10:05 -07:00
parent ef0f7fb92b
commit 660200528a
2 changed files with 17 additions and 1 deletions

View 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 {

View file

@ -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"