-- go.mod --
module example.com

go 1.24

-- baz/baz.go --
package baz

type Baz int

type Baz2 int

type GenericBaz[T any] struct{}

-- test.go --
package t

import "example.com/baz"

type Foo int

//go:fix inline
type Bar = Foo // want Bar:"goFixInline alias"

type _ struct {
	// Bar should not be inlined, since that would cause
	// a field name change.
	Bar
}

type _ struct {
	// *Bar should not be inlined, since that would cause
	// a field name change.
	*Bar
}

//go:fix inline
type Baz = baz.Baz // want Baz:"goFixInline alias"

type _ struct {
	// fine, since will end up with the same name.
	Baz // want `Type alias Baz should be inlined`
}

type _ struct {
	// fine, since will end up with the same name.
	*Baz // want `Type alias Baz should be inlined`
}

//go:fix inline
type StructAlias = struct {} // want StructAlias:"goFixInline alias"

type _ struct {
	// type _ struct { struct{} } would not be a valid Go.
	StructAlias
}

//go:fix inline
type GenericFoo[T any] = Foo // want GenericFoo:"goFixInline alias"

type _ struct {
	GenericFoo[int]
}

type _ struct {
	GenericFoo[Baz] // want `Type alias Baz should be inlined`
}

//go:fix inline
type Baz2[T any] = baz.Baz2 // want Baz2:"goFixInline alias"

type _ struct {
	Baz2[int] // want `Type alias Baz2\[int\] should be inlined`
}

//go:fix inline
type GenericBaz[T any] = baz.GenericBaz[T] // want GenericBaz:"goFixInline alias"

type _ struct {
	GenericBaz[int] // want `Type alias GenericBaz\[int\] should be inlined`
}
