mirror of
https://github.com/golang/go
synced 2024-11-05 18:36:08 +00:00
cmd/gc: fix inlining bug with receive operator.
The receive operator was given incorrect precedence resulting in incorrect deletion of parentheses. Fixes #3843. R=rsc CC=golang-dev, remy https://golang.org/cl/6442049
This commit is contained in:
parent
cbc3268d1d
commit
b6ea905ed9
4 changed files with 33 additions and 1 deletions
|
@ -964,7 +964,6 @@ static int opprec[] = {
|
|||
[OPAREN] = 8,
|
||||
[OPRINTN] = 8,
|
||||
[OPRINT] = 8,
|
||||
[ORECV] = 8,
|
||||
[ORUNESTR] = 8,
|
||||
[OSTRARRAYBYTE] = 8,
|
||||
[OSTRARRAYRUNE] = 8,
|
||||
|
@ -996,6 +995,7 @@ static int opprec[] = {
|
|||
[OMINUS] = 7,
|
||||
[OADDR] = 7,
|
||||
[OIND] = 7,
|
||||
[ORECV] = 7,
|
||||
|
||||
[OMUL] = 6,
|
||||
[ODIV] = 6,
|
||||
|
|
11
test/fixedbugs/bug448.dir/pkg1.go
Normal file
11
test/fixedbugs/bug448.dir/pkg1.go
Normal file
|
@ -0,0 +1,11 @@
|
|||
// 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 pkg1
|
||||
|
||||
var x = make(chan interface{})
|
||||
|
||||
func Do() int {
|
||||
return (<-x).(int)
|
||||
}
|
14
test/fixedbugs/bug448.dir/pkg2.go
Normal file
14
test/fixedbugs/bug448.dir/pkg2.go
Normal file
|
@ -0,0 +1,14 @@
|
|||
// 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.
|
||||
|
||||
// Issue 3843: inlining bug due to wrong receive operator precedence.
|
||||
|
||||
package pkg2
|
||||
|
||||
import "./pkg1"
|
||||
|
||||
func F() {
|
||||
pkg1.Do()
|
||||
}
|
||||
|
7
test/fixedbugs/bug448.go
Normal file
7
test/fixedbugs/bug448.go
Normal file
|
@ -0,0 +1,7 @@
|
|||
// compiledir
|
||||
|
||||
// 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 ignored
|
Loading…
Reference in a new issue