From: Robert Griesemer Date: Thu, 23 Mar 2017 03:50:32 +0000 (-0700) Subject: cmd/compile: don't crash when reporting some syntax errors X-Git-Tag: go1.9beta1~1023 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=b5e1ae46adb2d3552d5df78e6a410f479ef1efb2;p=gostls13.git cmd/compile: don't crash when reporting some syntax errors Fixes #19667. Change-Id: Iaa71e2020af123c1bd3ac25e0b760956688e8bdf Reviewed-on: https://go-review.googlesource.com/38458 Run-TryBot: Robert Griesemer TryBot-Result: Gobot Gobot Reviewed-by: Matthew Dempsky --- diff --git a/src/cmd/compile/internal/syntax/printer.go b/src/cmd/compile/internal/syntax/printer.go index 426921199e..64ed0e662c 100644 --- a/src/cmd/compile/internal/syntax/printer.go +++ b/src/cmd/compile/internal/syntax/printer.go @@ -341,6 +341,9 @@ func (p *printer) printNode(n Node) { func (p *printer) printRawNode(n Node) { switch n := n.(type) { + case nil: + // we should not reach here but don't crash + // expressions and types case *Name: p.print(_Name, n.Value) // _Name requires actual value following immediately diff --git a/test/fixedbugs/issue19667.go b/test/fixedbugs/issue19667.go new file mode 100644 index 0000000000..c94a11d871 --- /dev/null +++ b/test/fixedbugs/issue19667.go @@ -0,0 +1,13 @@ +// 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. + +// Make sure we don't crash when reporting this error. + +package p + +func f() { + if err := http.ListenAndServe( +} // ERROR "unexpected }, expecting expression"