undefined_names.mx raw

   1  package main
   2  
   3  // int/uint/make/new are not predeclared; a user may define their own.
   4  type int struct{ v int32 }
   5  
   6  func (t *int) get() (r int32) { return t.v }
   7  
   8  type uint struct{ w int32 }
   9  
  10  func (t *uint) get() (r int32) { return t.w }
  11  
  12  func make(x int32) (r int32) { return x * 2 }
  13  
  14  func new(x int32) (r int32) { return x + 1 }
  15  
  16  func main() {
  17  	var a int
  18  	a.v = 10
  19  	var b uint
  20  	b.w = 20
  21  	if a.get() == 10 && b.get() == 20 && make(3) == 6 && new(4) == 5 {
  22  		println("PASS: undefined names usable")
  23  	} else {
  24  		println("FAIL: undefined names")
  25  	}
  26  }
  27