| // 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 |
| } |