Skip to content

Commit 6d59434

Browse files
committed
cmd/compile: use correct variable when setting up dummy CallStmt in error
Fixes crash when printing a related error message later on. Fixes #20789. Change-Id: I6d2c35aafcaeda26a211fc6c8b7dfe4a095a3efe Reviewed-on: https://go-review.googlesource.com/46713 Run-TryBot: Robert Griesemer <[email protected]> Reviewed-by: Josh Bleecher Snyder <[email protected]> Reviewed-by: Matthew Dempsky <[email protected]> TryBot-Result: Gobot Gobot <[email protected]>
1 parent 03305a9 commit 6d59434

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/cmd/compile/internal/syntax/parser.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -654,7 +654,7 @@ func (p *parser) callStmt() *CallStmt {
654654
if !ok {
655655
p.error(fmt.Sprintf("expression in %s must be function call", s.Tok))
656656
// already progressed, no need to advance
657-
cx := new(CallExpr)
657+
cx = new(CallExpr)
658658
cx.pos = x.Pos()
659659
cx.Fun = p.bad()
660660
}

test/fixedbugs/issue20789.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// errorcheck
2+
3+
// Copyright 2017 The Go Authors. All rights reserved.
4+
// Use of this source code is governed by a BSD-style
5+
// license that can be found in the LICENSE file.
6+
7+
// Make sure this doesn't crash the compiler.
8+
// (This test should be part of the internal/syntax
9+
// package, but we don't have a general test framework
10+
// there yet, so put it here for now. See also #20800.
11+
12+
package e
13+
func([<-chan<-[func u){go // ERROR "unexpected u", ERROR "must be function call"

0 commit comments

Comments
 (0)