]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: fix crash on bare package name in constant declarations
authorMatthew Dempsky <mdempsky@google.com>
Wed, 13 Apr 2016 00:46:41 +0000 (17:46 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Wed, 13 Apr 2016 06:37:39 +0000 (06:37 +0000)
Fixes #11361.

Change-Id: I70b8808f97f0e07de680e7e6ede1322ea0fdbbc0
Reviewed-on: https://go-review.googlesource.com/21936
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/cmd/compile/internal/gc/subr.go
test/fixedbugs/issue11361.go [new file with mode: 0644]

index 091762f49648389dc558afa2b84a92d03d12ad1b..ea2db8721a55de722daf301085f382d106811e52 100644 (file)
@@ -540,8 +540,15 @@ func treecopy(n *Node, lineno int32) *Node {
                }
                return n
 
+       case OPACK:
+               // OPACK nodes are never valid in const value declarations,
+               // but allow them like any other declared symbol to avoid
+               // crashing (golang.org/issue/11361).
+               fallthrough
+
        case ONAME, OLITERAL, OTYPE:
                return n
+
        }
 }
 
diff --git a/test/fixedbugs/issue11361.go b/test/fixedbugs/issue11361.go
new file mode 100644 (file)
index 0000000..d01776b
--- /dev/null
@@ -0,0 +1,11 @@
+// errorcheck
+
+// Copyright 2016 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 a
+
+import "fmt"  // ERROR "imported and not used"
+
+const n = fmt // ERROR "fmt without selector" "fmt is not a constant"