]> Cypherpunks repositories - gostls13.git/commitdiff
go/types: don't crash if there are no hints
authorRobert Griesemer <gri@golang.org>
Wed, 27 Feb 2013 23:22:14 +0000 (15:22 -0800)
committerRobert Griesemer <gri@golang.org>
Wed, 27 Feb 2013 23:22:14 +0000 (15:22 -0800)
R=r
CC=golang-dev
https://golang.org/cl/7375060

src/pkg/go/types/expr.go

index 5aacb02f8628e8373376b2e7d24e7c41fdb2eadc..8b645e4e20fd91939347f0008b0be3489009ec64 100644 (file)
@@ -293,6 +293,11 @@ func (check *checker) convertUntyped(x *operand, target Type) {
 
        // typed target
        switch t := underlying(target).(type) {
+       case nil:
+               // We may reach here due to previous type errors.
+               // Be conservative and don't crash.
+               x.mode = invalid
+               return
        case *Basic:
                check.isRepresentable(x, t)
        case *Interface:
@@ -304,6 +309,7 @@ func (check *checker) convertUntyped(x *operand, target Type) {
                        goto Error
                }
        default:
+               check.dump("x = %v, target = %v", x, target) // leave for debugging
                unreachable()
        }