github.com/karrick/go@v0.0.0-20170817181416-d5b0ec858b37/test/switch7.go (about)

     1  // errorcheck
     2  
     3  // Copyright 2016 The Go Authors. All rights reserved.
     4  // Use of this source code is governed by a BSD-style
     5  // license that can be found in the LICENSE file.
     6  
     7  // Verify that type switch statements with duplicate cases are detected
     8  // by the compiler.
     9  // Does not compile.
    10  
    11  package main
    12  
    13  import "fmt"
    14  
    15  func f4(e interface{}) {
    16  	switch e.(type) {
    17  	case int:
    18  	case int: // ERROR "duplicate case int in type switch"
    19  	case int64:
    20  	case error:
    21  	case error: // ERROR "duplicate case error in type switch"
    22  	case fmt.Stringer:
    23  	case fmt.Stringer: // ERROR "duplicate case fmt.Stringer in type switch"
    24  	case struct {
    25  		i int "tag1"
    26  	}:
    27  	case struct {
    28  		i int "tag2"
    29  	}:
    30  	case struct { // ERROR "duplicate case struct { i int .tag1. } in type switch"
    31  		i int "tag1"
    32  	}:
    33  	}
    34  }
    35