...
Run Format

Source file test/named1.go

Documentation: test

  // errorcheck
  
  // Copyright 2009 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.
  
  // Test that basic operations on named types are valid
  // and preserve the type.
  // Does not compile.
  
  package main
  
  type Bool bool
  
  type Map map[int]int
  
  func (Map) M() {}
  
  type Slice []byte
  
  var slice Slice
  
  func asBool(Bool)     {}
  func asString(String) {}
  
  type String string
  
  func main() {
  	var (
  		b    Bool = true
  		i, j int
  		c    = make(chan int)
  		m    = make(Map)
  	)
  
  	asBool(b)
  	asBool(!b)
  	asBool(true)
  	asBool(*&b)
  	asBool(Bool(true))
  	asBool(1 != 2) // ok now
  	asBool(i < j)  // ok now
  
  	_, b = m[2] // ok now
  
  	var inter interface{}
  	_, b = inter.(Map) // ok now
  	_ = b
  
  	var minter interface {
  		M()
  	}
  	_, b = minter.(Map) // ok now
  	_ = b
  
  	_, bb := <-c
  	asBool(bb) // ERROR "cannot use.*type bool.*as type Bool"
  	_, b = <-c // ok now
  	_ = b
  
  	asString(String(slice)) // ok
  }
  

View as plain text