// Package blank is a go/doc test for the handling of _. See issue ...
PACKAGE blank

IMPORTPATH
	testdata/blank

IMPORTS
	os

FILENAMES
	testdata/blank.go

CONSTANTS
	// T constants counting from unexported constants. 
	const (
		C1	T
		C2
	
		C3
	
		C4	int
	)

	// Constants with a single type that is not propagated. 
	const (
		Default		= 0644
		Useless		= 0312
		WideOpen	= 0777
	)

	// Constants with an imported type that is propagated. 
	const (
		M1	os.FileMode
		M2
		M3
	)

	// Package constants. 
	const (
		I1	int
		I2
	)


TYPES
	// S has a padding field. 
	type S struct {
		H	uint32
	
		A	uint8
		// contains filtered or unexported fields
	}

	// 
	type T int

	// T constants counting from a blank constant. 
	const (
		T1	T
		T2
	)

