|  | // 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 interface{M()} = *interface{M()} produces a compiler error. | 
|  | // Does not compile. | 
|  |  | 
|  | package main | 
|  |  | 
|  | type Inst interface { | 
|  | Next() *Inst | 
|  | } | 
|  |  | 
|  | type Regexp struct { | 
|  | code  []Inst | 
|  | start Inst | 
|  | } | 
|  |  | 
|  | type Start struct { | 
|  | foo *Inst | 
|  | } | 
|  |  | 
|  | func (start *Start) Next() *Inst { return nil } | 
|  |  | 
|  | func AddInst(Inst) *Inst { | 
|  | print("ok in addinst\n") | 
|  | return nil | 
|  | } | 
|  |  | 
|  | func main() { | 
|  | print("call addinst\n") | 
|  | var x Inst = AddInst(new(Start)) // ERROR "pointer to interface|incompatible type" | 
|  | print("return from  addinst\n") | 
|  | var y *Inst = new(Start) // ERROR "pointer to interface|incompatible type" | 
|  | } |