]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: graceful handle error in noder LoadPackage
authorCuong Manh Le <cuong.manhle.vn@gmail.com>
Fri, 19 Feb 2021 05:42:57 +0000 (12:42 +0700)
committerCuong Manh Le <cuong.manhle.vn@gmail.com>
Thu, 4 Mar 2021 06:35:44 +0000 (06:35 +0000)
When syntax.Parse returns error, noder.file will be nil. Currently, we
continue accessing it regardlessly and depend on gc.hidePanic to hide
the panic from user.

Instead, we should gracefully handle the error in LoadPackage, then exit
earlier if any error occurred.

Updates #43311

Change-Id: I0a108ef360bd4f0cc9f481071b8967355e1513af
Reviewed-on: https://go-review.googlesource.com/c/go/+/294030
Trust: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/noder/noder.go
test/fixedbugs/bug050.go

index d692bf97aaf41b3674e2305df36b53e53c320541..8c456e4561e9b22d750232157398d67a0e1ad257 100644 (file)
@@ -68,6 +68,9 @@ func LoadPackage(filenames []string) {
                for e := range p.err {
                        p.errorAt(e.Pos, "%s", e.Msg)
                }
+               if p.file == nil {
+                       base.ErrorExit()
+               }
                lines += p.file.EOF.Line()
        }
        base.Timer.AddEvent(int64(lines), "lines")
index aba68b1dcbb428e89fce247ab982bf3e735ad461..1e299ed99a8a94d1cb03a7ff07c1fdad1072351f 100644 (file)
@@ -1,4 +1,4 @@
-// errorcheck
+// errorcheck -d=panic
 
 // Copyright 2009 The Go Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style