gotools/go/analysis/passes/httpmux/testdata/src/a/a.go

// Copyright 2023 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// This file contains tests for the httpmux checker.

package a

import "net/http"

func _() {
	http.HandleFunc("GET /x", nil)  // want "enhanced ServeMux pattern"
	http.HandleFunc("/{a}/b/", nil) // want "enhanced ServeMux pattern"
	mux := http.NewServeMux()
	mux.Handle("example.com/c/{d}", nil) // want "enhanced ServeMux pattern"
	mux.HandleFunc("/{x...}", nil)       // want "enhanced ServeMux pattern"

	// Should not match.

	// not an enhanced pattern
	http.Handle("/", nil)

	// invalid wildcard; will panic in 1.22
	http.HandleFunc("/{/a/}", nil)
	mux.Handle("/{1}", nil)
	mux.Handle("/x{a}", nil)

	// right package, wrong method
	http.ParseTime("GET /")

	// right function name, wrong package
	Handle("GET /", nil)
	HandleFunc("GET /", nil)

	// right method name, wrong type
	var sm ServeMux
	sm.Handle("example.com/c/{d}", nil)
	sm.HandleFunc("method /{x...}", nil)
}

func Handle(pat string, x any)     {}
func HandleFunc(pat string, x any) {}

type ServeMux struct{}

func (*ServeMux) Handle(pat string, x any)     {}
func (*ServeMux) HandleFunc(pat string, x any) {}