// Copyright 2010 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.

package P3

// function and method signatures

func _()                                        {}
func _()                                        {}
func _(x, x /* ERROR "already declared" */ int) {}

func f()                                 {}
func f /* ERROR "already declared" */ () {}

func (*foo /* ERROR "invalid receiver" */ ) m() {}
func (bar /* ERROR "not a type" */ ) m()        {}

func f1(x, _, _ int) (_, _ float)                              {}
func f2(x, y, x /* ERROR "already declared" */ int)            {}
func f3(x, y int) (a, b, x /* ERROR "already declared" */ int) {}

func (x *T) m1()                                 {}
func (x *T) m1 /* ERROR "already declared" */ () {}
func (x T) m1 /* ERROR "already declared" */ ()  {}
func (T) m1 /* ERROR "already declared" */ ()    {}

func (x *T) m2(u, x /* ERROR "already declared" */ int)               {}
func (x *T) m3(a, b, c int) (u, x /* ERROR "already declared" */ int) {}
// The following are disabled for now because the typechecker
// in in the process of being rewritten and cannot handle them
// at the moment
//func (T) _(x, x /* "already declared" */ int)                   {}
//func (T) _() (x, x /* "already declared" */ int)                {}

//func (PT) _() {}

var bar int

type T struct{}
type PT (T)
