Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Package Mode: Use aliases when used in source #220

Merged
merged 2 commits into from
Oct 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions mockgen/internal/tests/alias/interfaces.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package alias

//go:generate mockgen -typed -package=mock -destination=mock/interfaces.go . Fooer,FooerAlias,Barer,BarerAlias,Bazer,QuxerConsumer,QuuxerConsumer

import "go.uber.org/mock/mockgen/internal/tests/alias/subpkg"

// Case 1: A interface that has alias references in this package
// should still be generated for its underlying name, i.e., MockFooer,
// even though we have the alias replacement logic.
type Fooer interface {
Foo()
}

// Case 2: Generating a mock for an alias type.
type FooerAlias = Fooer

// Case 3: Generate mock for an interface that takes in alias parameters
// and returns alias results.
type Barer interface{
Bar(FooerAlias) FooerAlias
}

// Case 4: Combination of cases 2 & 3.
type BarerAlias = Barer

// Case 5: Generate mock for an interface that actually returns
// the underlying type. This will generate mocks that use the alias,
// but that should be fine since they should be interchangeable.
type Bazer interface{
Baz(Fooer) Fooer
}

// Case 6: Generate mock for a type that refers to an alias defined in this package
// for a type from another package.
// The generated methods should use the alias defined here.
type QuxerAlias = subpkg.Quxer

type QuxerConsumer interface{
Consume(QuxerAlias) QuxerAlias
}

// Case 7: Generate mock for a type that refers to an alias defined in another package
// for an unexported type in that other package.
// The generated method should only use the alias, not the unexported underlying name.
type QuuxerConsumer interface{
Consume(subpkg.Quuxer) subpkg.Quuxer
}
Loading
Loading