package ifaceassert

import "golang.org/x/tools/go/analysis/passes/ifaceassert"

Package ifaceassert defines an Analyzer that flags impossible interface-interface type assertions.

Analyzer ifaceassert

ifaceassert: detect impossible interface-to-interface type assertions

This checker flags type assertions v.(T) and corresponding type-switch cases in which the static type V of v is an interface that cannot possibly implement the target interface T. This occurs when V and T contain methods with the same name but different signatures. Example:

var v interface {
	Read()
}
_ = v.(io.Reader)

The Read method in v has a different signature than the Read method in io.Reader, so this assertion cannot succeed.

Index

Variables

var Analyzer = &analysis.Analyzer{
	Name:     "ifaceassert",
	Doc:      analysisutil.MustExtractDoc(doc, "ifaceassert"),
	URL:      "https://pkg.go.dev/golang.org/x/tools/go/analysis/passes/ifaceassert",
	Requires: []*analysis.Analyzer{inspect.Analyzer},
	Run:      run,
}

Source Files

doc.go ifaceassert.go

Directories

PathSynopsis
go/analysis/passes/ifaceassert/cmd
go/analysis/passes/ifaceassert/cmd/ifaceassertThe ifaceassert command runs the ifaceassert analyzer.
Version
v0.30.0 (latest)
Published
Feb 10, 2025
Platform
linux/amd64
Imports
8 packages
Last checked
3 hours ago

Tools for package owners.