39 lines
		
	
	
		
			652 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			652 B
		
	
	
	
		
			Go
		
	
	
	
	
	
//golangcitest:args -Egochecksumtype
 | 
						|
package testdata
 | 
						|
 | 
						|
import (
 | 
						|
	"log"
 | 
						|
)
 | 
						|
 | 
						|
//sumtype:decl
 | 
						|
type SumType interface{ isSumType() }
 | 
						|
 | 
						|
//sumtype:decl
 | 
						|
type One struct{} // want "type 'One' is not an interface"
 | 
						|
 | 
						|
func (One) isSumType() {}
 | 
						|
 | 
						|
type Two struct{}
 | 
						|
 | 
						|
func (Two) isSumType() {}
 | 
						|
 | 
						|
func sumTypeTest() {
 | 
						|
	var sum SumType = One{}
 | 
						|
	switch sum.(type) { // want "exhaustiveness check failed for sum type.*SumType.*missing cases for Two"
 | 
						|
	case One:
 | 
						|
	}
 | 
						|
 | 
						|
	switch sum.(type) { // want "exhaustiveness check failed for sum type.*SumType.*missing cases for Two"
 | 
						|
	case One:
 | 
						|
	default:
 | 
						|
		panic("??")
 | 
						|
	}
 | 
						|
 | 
						|
	log.Println("??")
 | 
						|
 | 
						|
	switch sum.(type) {
 | 
						|
	case One:
 | 
						|
	case Two:
 | 
						|
	}
 | 
						|
}
 |