cloudfoundry-community/bosh-cloudstack-cpi

View on GitHub
go_agent/src/code.google.com/p/go.tools/cmd/vet/testdata/deadcode.go

Summary

Maintainability
F
4 days
Test Coverage
// Copyright 2013 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.

// +build ignore

// This file contains tests for the dead code checker.

package testdata

type T int

var x interface{}
var c chan int

func external() int // ok

func _() int {
}

func _() int {
    print(1)
}

func _() int {
    print(1)
    return 2
    println() // ERROR "unreachable code"
}

func _() int {
L:
    print(1)
    goto L
    println() // ERROR "unreachable code"
}

func _() int {
    print(1)
    panic(2)
    println() // ERROR "unreachable code"
}

// but only builtin panic
func _() int {
    var panic = func(int) {}
    print(1)
    panic(2)
    println() // ok
}

func _() int {
    {
        print(1)
        return 2
        println() // ERROR "unreachable code"
    }
    println() // ok
}

func _() int {
    {
        print(1)
        return 2
    }
    println() // ERROR "unreachable code"
}

func _() int {
L:
    {
        print(1)
        goto L
        println() // ERROR "unreachable code"
    }
    println() // ok
}

func _() int {
L:
    {
        print(1)
        goto L
    }
    println() // ERROR "unreachable code"
}

func _() int {
    print(1)
    {
        panic(2)
    }
}

func _() int {
    print(1)
    {
        panic(2)
        println() // ERROR "unreachable code"
    }
}

func _() int {
    print(1)
    {
        panic(2)
    }
    println() // ERROR "unreachable code"
}

func _() int {
    print(1)
    return 2
    { // ERROR "unreachable code"
    }
}

func _() int {
L:
    print(1)
    goto L
    { // ERROR "unreachable code"
    }
}

func _() int {
    print(1)
    panic(2)
    { // ERROR "unreachable code"
    }
}

func _() int {
    {
        print(1)
        return 2
        { // ERROR "unreachable code"
        }
    }
}

func _() int {
L:
    {
        print(1)
        goto L
        { // ERROR "unreachable code"
        }
    }
}

func _() int {
    print(1)
    {
        panic(2)
        { // ERROR "unreachable code"
        }
    }
}

func _() int {
    {
        print(1)
        return 2
    }
    { // ERROR "unreachable code"
    }
}

func _() int {
L:
    {
        print(1)
        goto L
    }
    { // ERROR "unreachable code"
    }
}

func _() int {
    print(1)
    {
        panic(2)
    }
    { // ERROR "unreachable code"
    }
}

func _() int {
    print(1)
    if x == nil {
        panic(2)
    } else {
        panic(3)
    }
    println() // ERROR "unreachable code"
}

func _() int {
L:
    print(1)
    if x == nil {
        panic(2)
    } else {
        goto L
    }
    println() // ERROR "unreachable code"
}

func _() int {
L:
    print(1)
    if x == nil {
        panic(2)
    } else if x == 1 {
        return 0
    } else if x != 2 {
        panic(3)
    } else {
        goto L
    }
    println() // ERROR "unreachable code"
}

// if-else chain missing final else is not okay, even if the
// conditions cover every possible case.

func _() int {
    print(1)
    if x == nil {
        panic(2)
    } else if x != nil {
        panic(3)
    }
    println() // ok
}

func _() int {
    print(1)
    if x == nil {
        panic(2)
    }
    println() // ok
}

func _() int {
L:
    print(1)
    if x == nil {
        panic(2)
    } else if x == 1 {
        return 0
    } else if x != 1 {
        panic(3)
    }
    println() // ok
}

func _() int {
    print(1)
    for {
    }
    println() // ERROR "unreachable code"
}

func _() int {
    for {
        for {
            break
        }
    }
    println() // ERROR "unreachable code"
}

func _() int {
    for {
        for {
            break
            println() // ERROR "unreachable code"
        }
    }
}

func _() int {
    for {
        for {
            continue
            println() // ERROR "unreachable code"
        }
    }
}

func _() int {
    for {
    L:
        for {
            break L
        }
    }
    println() // ERROR "unreachable code"
}

func _() int {
    print(1)
    for {
        break
    }
    println() // ok
}

func _() int {
    for {
        for {
        }
        break // ERROR "unreachable code"
    }
    println() // ok
}

func _() int {
L:
    for {
        for {
            break L
        }
    }
    println() // ok
}

func _() int {
    print(1)
    for x == nil {
    }
    println() // ok
}

func _() int {
    for x == nil {
        for {
            break
        }
    }
    println() // ok
}

func _() int {
    for x == nil {
    L:
        for {
            break L
        }
    }
    println() // ok
}

func _() int {
    print(1)
    for true {
    }
    println() // ok
}

func _() int {
    for true {
        for {
            break
        }
    }
    println() // ok
}

func _() int {
    for true {
    L:
        for {
            break L
        }
    }
    println() // ok
}

func _() int {
    print(1)
    select {}
    println() // ERROR "unreachable code"
}

func _() int {
    print(1)
    select {
    case <-c:
        print(2)
        panic("abc")
        println() // ERROR "unreachable code"
    }
}

func _() int {
    print(1)
    select {
    case <-c:
        print(2)
        panic("abc")
    }
    println() // ERROR "unreachable code"
}

func _() int {
    print(1)
    select {
    case <-c:
        print(2)
        for {
        }
        println() // ERROR "unreachable code"
    }
}

func _() int {
    print(1)
    select {
    case <-c:
        print(2)
        for {
        }
    }
    println() // ERROR "unreachable code"
}

func _() int {
L:
    print(1)
    select {
    case <-c:
        print(2)
        panic("abc")
        println() // ERROR "unreachable code"
    case c <- 1:
        print(2)
        goto L
        println() // ERROR "unreachable code"
    }
}

func _() int {
L:
    print(1)
    select {
    case <-c:
        print(2)
        panic("abc")
    case c <- 1:
        print(2)
        goto L
    }
    println() // ERROR "unreachable code"
}

func _() int {
    print(1)
    select {
    case <-c:
        print(2)
        panic("abc")
        println() // ERROR "unreachable code"
    default:
        select {}
        println() // ERROR "unreachable code"
    }
}

func _() int {
    print(1)
    select {
    case <-c:
        print(2)
        panic("abc")
    default:
        select {}
    }
    println() // ERROR "unreachable code"
}

func _() int {
    print(1)
    select {
    case <-c:
        print(2)
    }
    println() // ok
}

func _() int {
L:
    print(1)
    select {
    case <-c:
        print(2)
        panic("abc")
        goto L // ERROR "unreachable code"
    case c <- 1:
        print(2)
    }
    println() // ok
}

func _() int {
    print(1)
    select {
    case <-c:
        print(2)
        panic("abc")
    default:
        print(2)
    }
    println() // ok
}

func _() int {
    print(1)
    select {
    default:
        break
    }
    println() // ok
}

func _() int {
    print(1)
    select {
    case <-c:
        print(2)
        panic("abc")
        break // ERROR "unreachable code"
    }
    println() // ok
}

func _() int {
    print(1)
L:
    select {
    case <-c:
        print(2)
        for {
            break L
        }
    }
    println() // ok
}

func _() int {
    print(1)
L:
    select {
    case <-c:
        print(2)
        panic("abc")
    case c <- 1:
        print(2)
        break L
    }
    println() // ok
}

func _() int {
    print(1)
    select {
    case <-c:
        print(1)
        panic("abc")
    default:
        select {}
        break // ERROR "unreachable code"
    }
    println() // ok
}

func _() int {
    print(1)
    switch x {
    case 1:
        print(2)
        panic(3)
        println() // ERROR "unreachable code"
    default:
        return 4
        println() // ERROR "unreachable code"
    }
}

func _() int {
    print(1)
    switch x {
    case 1:
        print(2)
        panic(3)
    default:
        return 4
    }
    println() // ERROR "unreachable code"
}

func _() int {
    print(1)
    switch x {
    default:
        return 4
        println() // ERROR "unreachable code"
    case 1:
        print(2)
        panic(3)
        println() // ERROR "unreachable code"
    }
}

func _() int {
    print(1)
    switch x {
    default:
        return 4
    case 1:
        print(2)
        panic(3)
    }
    println() // ERROR "unreachable code"
}

func _() int {
    print(1)
    switch x {
    case 1:
        print(2)
        fallthrough
    default:
        return 4
        println() // ERROR "unreachable code"
    }
}

func _() int {
    print(1)
    switch x {
    case 1:
        print(2)
        fallthrough
    default:
        return 4
    }
    println() // ERROR "unreachable code"
}

func _() int {
    print(1)
    switch {
    }
    println() // ok
}

func _() int {
    print(1)
    switch x {
    case 1:
        print(2)
        panic(3)
    case 2:
        return 4
    }
    println() // ok
}

func _() int {
    print(1)
    switch x {
    case 2:
        return 4
    case 1:
        print(2)
        panic(3)
    }
    println() // ok
}

func _() int {
    print(1)
    switch x {
    case 1:
        print(2)
        fallthrough
    case 2:
        return 4
    }
    println() // ok
}

func _() int {
    print(1)
    switch x {
    case 1:
        print(2)
        panic(3)
    }
    println() // ok
}

func _() int {
    print(1)
L:
    switch x {
    case 1:
        print(2)
        panic(3)
        break L // ERROR "unreachable code"
    default:
        return 4
    }
    println() // ok
}

func _() int {
    print(1)
    switch x {
    default:
        return 4
        break // ERROR "unreachable code"
    case 1:
        print(2)
        panic(3)
    }
    println() // ok
}

func _() int {
    print(1)
L:
    switch x {
    case 1:
        print(2)
        for {
            break L
        }
    default:
        return 4
    }
    println() // ok
}

func _() int {
    print(1)
    switch x.(type) {
    case int:
        print(2)
        panic(3)
        println() // ERROR "unreachable code"
    default:
        return 4
        println() // ERROR "unreachable code"
    }
}

func _() int {
    print(1)
    switch x.(type) {
    case int:
        print(2)
        panic(3)
    default:
        return 4
    }
    println() // ERROR "unreachable code"
}

func _() int {
    print(1)
    switch x.(type) {
    default:
        return 4
        println() // ERROR "unreachable code"
    case int:
        print(2)
        panic(3)
        println() // ERROR "unreachable code"
    }
}

func _() int {
    print(1)
    switch x.(type) {
    default:
        return 4
    case int:
        print(2)
        panic(3)
    }
    println() // ERROR "unreachable code"
}

func _() int {
    print(1)
    switch x.(type) {
    case int:
        print(2)
        fallthrough
    default:
        return 4
        println() // ERROR "unreachable code"
    }
}

func _() int {
    print(1)
    switch x.(type) {
    case int:
        print(2)
        fallthrough
    default:
        return 4
    }
    println() // ERROR "unreachable code"
}

func _() int {
    print(1)
    switch {
    }
    println() // ok
}

func _() int {
    print(1)
    switch x.(type) {
    case int:
        print(2)
        panic(3)
    case float64:
        return 4
    }
    println() // ok
}

func _() int {
    print(1)
    switch x.(type) {
    case float64:
        return 4
    case int:
        print(2)
        panic(3)
    }
    println() // ok
}

func _() int {
    print(1)
    switch x.(type) {
    case int:
        print(2)
        fallthrough
    case float64:
        return 4
    }
    println() // ok
}

func _() int {
    print(1)
    switch x.(type) {
    case int:
        print(2)
        panic(3)
    }
    println() // ok
}

func _() int {
    print(1)
L:
    switch x.(type) {
    case int:
        print(2)
        panic(3)
        break L // ERROR "unreachable code"
    default:
        return 4
    }
    println() // ok
}

func _() int {
    print(1)
    switch x.(type) {
    default:
        return 4
        break // ERROR "unreachable code"
    case int:
        print(2)
        panic(3)
    }
    println() // ok
}

func _() int {
    print(1)
L:
    switch x.(type) {
    case int:
        print(2)
        for {
            break L
        }
    default:
        return 4
    }
    println() // ok
}

// again, but without the leading print(1).
// testing that everything works when the terminating statement is first.

func _() int {
    println() // ok
}

func _() int {
    return 2
    println() // ERROR "unreachable code"
}

func _() int {
L:
    goto L
    println() // ERROR "unreachable code"
}

func _() int {
    panic(2)
    println() // ERROR "unreachable code"
}

// but only builtin panic
func _() int {
    var panic = func(int) {}
    panic(2)
    println() // ok
}

func _() int {
    {
        return 2
        println() // ERROR "unreachable code"
    }
}

func _() int {
    {
        return 2
    }
    println() // ERROR "unreachable code"
}

func _() int {
L:
    {
        goto L
        println() // ERROR "unreachable code"
    }
}

func _() int {
L:
    {
        goto L
    }
    println() // ERROR "unreachable code"
}

func _() int {
    {
        panic(2)
        println() // ERROR "unreachable code"
    }
}

func _() int {
    {
        panic(2)
    }
    println() // ERROR "unreachable code"
}

func _() int {
    return 2
    { // ERROR "unreachable code"
    }
    println() // ok
}

func _() int {
L:
    goto L
    { // ERROR "unreachable code"
    }
    println() // ok
}

func _() int {
    panic(2)
    { // ERROR "unreachable code"
    }
    println() // ok
}

func _() int {
    {
        return 2
        { // ERROR "unreachable code"
        }
    }
    println() // ok
}

func _() int {
L:
    {
        goto L
        { // ERROR "unreachable code"
        }
    }
    println() // ok
}

func _() int {
    {
        panic(2)
        { // ERROR "unreachable code"
        }
    }
    println() // ok
}

func _() int {
    {
        return 2
    }
    { // ERROR "unreachable code"
    }
    println() // ok
}

func _() int {
L:
    {
        goto L
    }
    { // ERROR "unreachable code"
    }
    println() // ok
}

func _() int {
    {
        panic(2)
    }
    { // ERROR "unreachable code"
    }
    println() // ok
}

// again, with func literals

var _ = func() int {
}

var _ = func() int {
    print(1)
}

var _ = func() int {
    print(1)
    return 2
    println() // ERROR "unreachable code"
}

var _ = func() int {
L:
    print(1)
    goto L
    println() // ERROR "unreachable code"
}

var _ = func() int {
    print(1)
    panic(2)
    println() // ERROR "unreachable code"
}

// but only builtin panic
var _ = func() int {
    var panic = func(int) {}
    print(1)
    panic(2)
    println() // ok
}

var _ = func() int {
    {
        print(1)
        return 2
        println() // ERROR "unreachable code"
    }
    println() // ok
}

var _ = func() int {
    {
        print(1)
        return 2
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
L:
    {
        print(1)
        goto L
        println() // ERROR "unreachable code"
    }
    println() // ok
}

var _ = func() int {
L:
    {
        print(1)
        goto L
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
    print(1)
    {
        panic(2)
    }
}

var _ = func() int {
    print(1)
    {
        panic(2)
        println() // ERROR "unreachable code"
    }
}

var _ = func() int {
    print(1)
    {
        panic(2)
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
    print(1)
    return 2
    { // ERROR "unreachable code"
    }
}

var _ = func() int {
L:
    print(1)
    goto L
    { // ERROR "unreachable code"
    }
}

var _ = func() int {
    print(1)
    panic(2)
    { // ERROR "unreachable code"
    }
}

var _ = func() int {
    {
        print(1)
        return 2
        { // ERROR "unreachable code"
        }
    }
}

var _ = func() int {
L:
    {
        print(1)
        goto L
        { // ERROR "unreachable code"
        }
    }
}

var _ = func() int {
    print(1)
    {
        panic(2)
        { // ERROR "unreachable code"
        }
    }
}

var _ = func() int {
    {
        print(1)
        return 2
    }
    { // ERROR "unreachable code"
    }
}

var _ = func() int {
L:
    {
        print(1)
        goto L
    }
    { // ERROR "unreachable code"
    }
}

var _ = func() int {
    print(1)
    {
        panic(2)
    }
    { // ERROR "unreachable code"
    }
}

var _ = func() int {
    print(1)
    if x == nil {
        panic(2)
    } else {
        panic(3)
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
L:
    print(1)
    if x == nil {
        panic(2)
    } else {
        goto L
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
L:
    print(1)
    if x == nil {
        panic(2)
    } else if x == 1 {
        return 0
    } else if x != 2 {
        panic(3)
    } else {
        goto L
    }
    println() // ERROR "unreachable code"
}

// if-else chain missing final else is not okay, even if the
// conditions cover every possible case.

var _ = func() int {
    print(1)
    if x == nil {
        panic(2)
    } else if x != nil {
        panic(3)
    }
    println() // ok
}

var _ = func() int {
    print(1)
    if x == nil {
        panic(2)
    }
    println() // ok
}

var _ = func() int {
L:
    print(1)
    if x == nil {
        panic(2)
    } else if x == 1 {
        return 0
    } else if x != 1 {
        panic(3)
    }
    println() // ok
}

var _ = func() int {
    print(1)
    for {
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
    for {
        for {
            break
        }
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
    for {
        for {
            break
            println() // ERROR "unreachable code"
        }
    }
}

var _ = func() int {
    for {
        for {
            continue
            println() // ERROR "unreachable code"
        }
    }
}

var _ = func() int {
    for {
    L:
        for {
            break L
        }
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
    print(1)
    for {
        break
    }
    println() // ok
}

var _ = func() int {
    for {
        for {
        }
        break // ERROR "unreachable code"
    }
    println() // ok
}

var _ = func() int {
L:
    for {
        for {
            break L
        }
    }
    println() // ok
}

var _ = func() int {
    print(1)
    for x == nil {
    }
    println() // ok
}

var _ = func() int {
    for x == nil {
        for {
            break
        }
    }
    println() // ok
}

var _ = func() int {
    for x == nil {
    L:
        for {
            break L
        }
    }
    println() // ok
}

var _ = func() int {
    print(1)
    for true {
    }
    println() // ok
}

var _ = func() int {
    for true {
        for {
            break
        }
    }
    println() // ok
}

var _ = func() int {
    for true {
    L:
        for {
            break L
        }
    }
    println() // ok
}

var _ = func() int {
    print(1)
    select {}
    println() // ERROR "unreachable code"
}

var _ = func() int {
    print(1)
    select {
    case <-c:
        print(2)
        panic("abc")
        println() // ERROR "unreachable code"
    }
}

var _ = func() int {
    print(1)
    select {
    case <-c:
        print(2)
        panic("abc")
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
    print(1)
    select {
    case <-c:
        print(2)
        for {
        }
        println() // ERROR "unreachable code"
    }
}

var _ = func() int {
    print(1)
    select {
    case <-c:
        print(2)
        for {
        }
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
L:
    print(1)
    select {
    case <-c:
        print(2)
        panic("abc")
        println() // ERROR "unreachable code"
    case c <- 1:
        print(2)
        goto L
        println() // ERROR "unreachable code"
    }
}

var _ = func() int {
L:
    print(1)
    select {
    case <-c:
        print(2)
        panic("abc")
    case c <- 1:
        print(2)
        goto L
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
    print(1)
    select {
    case <-c:
        print(2)
        panic("abc")
        println() // ERROR "unreachable code"
    default:
        select {}
        println() // ERROR "unreachable code"
    }
}

var _ = func() int {
    print(1)
    select {
    case <-c:
        print(2)
        panic("abc")
    default:
        select {}
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
    print(1)
    select {
    case <-c:
        print(2)
    }
    println() // ok
}

var _ = func() int {
L:
    print(1)
    select {
    case <-c:
        print(2)
        panic("abc")
        goto L // ERROR "unreachable code"
    case c <- 1:
        print(2)
    }
    println() // ok
}

var _ = func() int {
    print(1)
    select {
    case <-c:
        print(2)
        panic("abc")
    default:
        print(2)
    }
    println() // ok
}

var _ = func() int {
    print(1)
    select {
    default:
        break
    }
    println() // ok
}

var _ = func() int {
    print(1)
    select {
    case <-c:
        print(2)
        panic("abc")
        break // ERROR "unreachable code"
    }
    println() // ok
}

var _ = func() int {
    print(1)
L:
    select {
    case <-c:
        print(2)
        for {
            break L
        }
    }
    println() // ok
}

var _ = func() int {
    print(1)
L:
    select {
    case <-c:
        print(2)
        panic("abc")
    case c <- 1:
        print(2)
        break L
    }
    println() // ok
}

var _ = func() int {
    print(1)
    select {
    case <-c:
        print(1)
        panic("abc")
    default:
        select {}
        break // ERROR "unreachable code"
    }
    println() // ok
}

var _ = func() int {
    print(1)
    switch x {
    case 1:
        print(2)
        panic(3)
        println() // ERROR "unreachable code"
    default:
        return 4
        println() // ERROR "unreachable code"
    }
}

var _ = func() int {
    print(1)
    switch x {
    case 1:
        print(2)
        panic(3)
    default:
        return 4
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
    print(1)
    switch x {
    default:
        return 4
        println() // ERROR "unreachable code"
    case 1:
        print(2)
        panic(3)
        println() // ERROR "unreachable code"
    }
}

var _ = func() int {
    print(1)
    switch x {
    default:
        return 4
    case 1:
        print(2)
        panic(3)
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
    print(1)
    switch x {
    case 1:
        print(2)
        fallthrough
    default:
        return 4
        println() // ERROR "unreachable code"
    }
}

var _ = func() int {
    print(1)
    switch x {
    case 1:
        print(2)
        fallthrough
    default:
        return 4
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
    print(1)
    switch {
    }
    println() // ok
}

var _ = func() int {
    print(1)
    switch x {
    case 1:
        print(2)
        panic(3)
    case 2:
        return 4
    }
    println() // ok
}

var _ = func() int {
    print(1)
    switch x {
    case 2:
        return 4
    case 1:
        print(2)
        panic(3)
    }
    println() // ok
}

var _ = func() int {
    print(1)
    switch x {
    case 1:
        print(2)
        fallthrough
    case 2:
        return 4
    }
    println() // ok
}

var _ = func() int {
    print(1)
    switch x {
    case 1:
        print(2)
        panic(3)
    }
    println() // ok
}

var _ = func() int {
    print(1)
L:
    switch x {
    case 1:
        print(2)
        panic(3)
        break L // ERROR "unreachable code"
    default:
        return 4
    }
    println() // ok
}

var _ = func() int {
    print(1)
    switch x {
    default:
        return 4
        break // ERROR "unreachable code"
    case 1:
        print(2)
        panic(3)
    }
    println() // ok
}

var _ = func() int {
    print(1)
L:
    switch x {
    case 1:
        print(2)
        for {
            break L
        }
    default:
        return 4
    }
    println() // ok
}

var _ = func() int {
    print(1)
    switch x.(type) {
    case int:
        print(2)
        panic(3)
        println() // ERROR "unreachable code"
    default:
        return 4
        println() // ERROR "unreachable code"
    }
}

var _ = func() int {
    print(1)
    switch x.(type) {
    case int:
        print(2)
        panic(3)
    default:
        return 4
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
    print(1)
    switch x.(type) {
    default:
        return 4
        println() // ERROR "unreachable code"
    case int:
        print(2)
        panic(3)
        println() // ERROR "unreachable code"
    }
}

var _ = func() int {
    print(1)
    switch x.(type) {
    default:
        return 4
    case int:
        print(2)
        panic(3)
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
    print(1)
    switch x.(type) {
    case int:
        print(2)
        fallthrough
    default:
        return 4
        println() // ERROR "unreachable code"
    }
}

var _ = func() int {
    print(1)
    switch x.(type) {
    case int:
        print(2)
        fallthrough
    default:
        return 4
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
    print(1)
    switch {
    }
    println() // ok
}

var _ = func() int {
    print(1)
    switch x.(type) {
    case int:
        print(2)
        panic(3)
    case float64:
        return 4
    }
    println() // ok
}

var _ = func() int {
    print(1)
    switch x.(type) {
    case float64:
        return 4
    case int:
        print(2)
        panic(3)
    }
    println() // ok
}

var _ = func() int {
    print(1)
    switch x.(type) {
    case int:
        print(2)
        fallthrough
    case float64:
        return 4
    }
    println() // ok
}

var _ = func() int {
    print(1)
    switch x.(type) {
    case int:
        print(2)
        panic(3)
    }
    println() // ok
}

var _ = func() int {
    print(1)
L:
    switch x.(type) {
    case int:
        print(2)
        panic(3)
        break L // ERROR "unreachable code"
    default:
        return 4
    }
    println() // ok
}

var _ = func() int {
    print(1)
    switch x.(type) {
    default:
        return 4
        break // ERROR "unreachable code"
    case int:
        print(2)
        panic(3)
    }
    println() // ok
}

var _ = func() int {
    print(1)
L:
    switch x.(type) {
    case int:
        print(2)
        for {
            break L
        }
    default:
        return 4
    }
    println() // ok
}

// again, but without the leading print(1).
// testing that everything works when the terminating statement is first.

var _ = func() int {
    println() // ok
}

var _ = func() int {
    return 2
    println() // ERROR "unreachable code"
}

var _ = func() int {
L:
    goto L
    println() // ERROR "unreachable code"
}

var _ = func() int {
    panic(2)
    println() // ERROR "unreachable code"
}

// but only builtin panic
var _ = func() int {
    var panic = func(int) {}
    panic(2)
    println() // ok
}

var _ = func() int {
    {
        return 2
        println() // ERROR "unreachable code"
    }
}

var _ = func() int {
    {
        return 2
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
L:
    {
        goto L
        println() // ERROR "unreachable code"
    }
}

var _ = func() int {
L:
    {
        goto L
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
    {
        panic(2)
        println() // ERROR "unreachable code"
    }
}

var _ = func() int {
    {
        panic(2)
    }
    println() // ERROR "unreachable code"
}

var _ = func() int {
    return 2
    { // ERROR "unreachable code"
    }
    println() // ok
}

var _ = func() int {
L:
    goto L
    { // ERROR "unreachable code"
    }
    println() // ok
}

var _ = func() int {
    panic(2)
    { // ERROR "unreachable code"
    }
    println() // ok
}

var _ = func() int {
    {
        return 2
        { // ERROR "unreachable code"
        }
    }
    println() // ok
}

var _ = func() int {
L:
    {
        goto L
        { // ERROR "unreachable code"
        }
    }
    println() // ok
}

var _ = func() int {
    {
        panic(2)
        { // ERROR "unreachable code"
        }
    }
    println() // ok
}

var _ = func() int {
    {
        return 2
    }
    { // ERROR "unreachable code"
    }
    println() // ok
}

var _ = func() int {
L:
    {
        goto L
    }
    { // ERROR "unreachable code"
    }
    println() // ok
}

var _ = func() int {
    {
        panic(2)
    }
    { // ERROR "unreachable code"
    }
    println() // ok
}