From b5e1ae46adb2d3552d5df78e6a410f479ef1efb2 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Wed, 22 Mar 2017 20:50:32 -0700 Subject: [PATCH] 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 --- src/cmd/compile/internal/syntax/printer.go | 3 +++ test/fixedbugs/issue19667.go | 13 +++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 test/fixedbugs/issue19667.go 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" -- 2.48.1