# Test of marker suppression functionality.
# Deadcode should not identify marker interface methods as unreachable

 deadcode -filter= example.com
!want "T.isMarker"
want "R.isNotMarker"
!want "P.greet"
want "Q.greet"

-- go.mod --
module example.com
go 1.18

-- main.go --
package main
import "fmt"

// Marker method: implements interface, unexported, no params, no results, empty body
type Marker interface {
    isMarker()
}
type T struct{}

func (t *T) isMarker() {}

// Not marker method: does not implement interface
type R struct {}
func (r *R) isNotMarker() {}

// Ensure that it still reports valid interface methods
// when unused
type Greeter interface {
    greet()
}
type P struct {}
func (p *P) greet() {fmt.Println("P: hello")}
type Q struct {}
func (q *Q) greet() {fmt.Println("Q: hello")} // this method should be reported

func main () {
    var p P
    p.greet()
}