]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: don't crash while reporting invalid alias cycle
authorRobert Griesemer <gri@golang.org>
Thu, 9 Sep 2021 21:42:42 +0000 (14:42 -0700)
committerRobert Griesemer <gri@golang.org>
Thu, 9 Sep 2021 22:20:16 +0000 (22:20 +0000)
Add a missing nil check in the formatting code for expression
nodes. Matches the nil checks in the same code.

Fixes #48301.

Change-Id: Ia9bfd3535254a94996ee190b544d95e15433d252
Reviewed-on: https://go-review.googlesource.com/c/go/+/348740
Trust: Robert Griesemer <gri@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/ir/fmt.go
test/fixedbugs/issue48301.go [new file with mode: 0644]

index d19fe453efc1b3a054463618a57368647b50a6a1..22fbf3997585afc3dabc059a90f88daf53106dd6 100644 (file)
@@ -559,7 +559,7 @@ func exprFmt(n Node, s fmt.State, prec int) {
        }
 
        nprec := OpPrec[n.Op()]
-       if n.Op() == OTYPE && n.Type().IsPtr() {
+       if n.Op() == OTYPE && n.Type() != nil && n.Type().IsPtr() {
                nprec = OpPrec[ODEREF]
        }
 
diff --git a/test/fixedbugs/issue48301.go b/test/fixedbugs/issue48301.go
new file mode 100644 (file)
index 0000000..46fe779
--- /dev/null
@@ -0,0 +1,13 @@
+// errorcheck -G=0
+
+// Copyright 2021 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.
+
+// Don't crash while reporting the error.
+
+package p
+
+func _() {
+       type T = T // ERROR "T uses T"
+}