| // Copyright 2025 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. | |
| package unify | |
| import ( | |
| "fmt" | |
| ) | |
| type Pos struct { | |
| Path string | |
| Line int | |
| } | |
| func (p Pos) String() string { | |
| var b []byte | |
| b, _ = p.AppendText(b) | |
| return string(b) | |
| } | |
| func (p Pos) AppendText(b []byte) ([]byte, error) { | |
| if p.Line == 0 { | |
| if p.Path == "" { | |
| return append(b, "?:?"...), nil | |
| } else { | |
| return append(b, p.Path...), nil | |
| } | |
| } else if p.Path == "" { | |
| return fmt.Appendf(b, "?:%d", p.Line), nil | |
| } | |
| return fmt.Appendf(b, "%s:%d", p.Path, p.Line), nil | |
| } | |