cmd/gc: fix invalid indirect error at statement level

Fixes #4429.

R=golang-dev, remyoudompheng, daniel.morsing, rsc
CC=golang-dev
https://golang.org/cl/6850097
This commit is contained in:
Shenghou Ma 2012-11-27 01:46:54 +08:00
parent 2637777527
commit 7c295f3f0c
2 changed files with 17 additions and 1 deletions

View File

@ -482,7 +482,7 @@ reswitch:
n->left = N; n->left = N;
goto ret; goto ret;
} }
if((top & Erv) && !isptr[t->etype]) { if((top & (Erv | Etop)) && !isptr[t->etype]) {
yyerror("invalid indirect of %lN", n->left); yyerror("invalid indirect of %lN", n->left);
goto error; goto error;
} }

View File

@ -0,0 +1,16 @@
// errorcheck
// Copyright 2012 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
type a struct {
a int
}
func main() {
av := a{};
*a(av); // ERROR "invalid indirect"
}