// Code generated by "go test -run=Generate -write=all"; DO NOT EDIT.
// Source: ../../cmd/compile/internal/types2/util_test.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 exports various functionality of util.go
// so that it can be used in (package-external) tests.

package types

import (
	"go/token"
)

func CmpPos(p, q token.Pos) int { return cmpPos(p, q) }

func ScopeComment(s *Scope) string        { return s.comment }
func ObjectScopePos(obj Object) token.Pos { return obj.scopePos() }
