// Package issue12839 is a go/doc test to test association of a ...
PACKAGE issue12839

IMPORTPATH
	testdata/issue12839

IMPORTS
	p

FILENAMES
	testdata/issue12839.go

FUNCTIONS
	// F1 should not be associated with T1 
	func F1() (*T1, *T2)

	// F10 should not be associated with T1. 
	func F10() (T1, T2, error)

	// F4 should not be associated with a type (same as F1) 
	func F4() (a T1, b T2)

	// F9 should not be associated with T1. 
	func F9() (int, T1, T2)


TYPES
	// 
	type T1 struct{}

	// F2 should be associated with T1 
	func F2() (a, b, c T1)

	// F3 should be associated with T1 because b.T3 is from a ...
	func F3() (a T1, b p.T3)

	// F5 should be associated with T1. 
	func F5() (T1, error)

	// F6 should be associated with T1. 
	func F6() (*T1, error)

	// F7 should be associated with T1. 
	func F7() (T1, string)

	// F8 should be associated with T1. 
	func F8() (int, T1, string)

	// 
	type T2 struct{}

