diff options
| author | 2026-03-06 21:19:56 +0800 | |
|---|---|---|
| committer | 2026-03-07 00:34:30 +0800 | |
| commit | 01d15bccf3b1dcc51516b1f64d50950b31d7f8fb (patch) | |
| tree | e491fcc762c67c1ef4ce54faafc5dafdb734ae8a /errors/type.go | |
| parent | objectstored/refstore: Weird ireturn behavior (diff) | |
| signature | No signature | |
Urgh I made some wrong amends and I'm too tired to separate the commits out this time
ancestor: Split out of reachability
mergebase: Add merge base routines
internal/commitquery: Add commit query context engine thingy
internal/peel: Shared tag peeling
errors: Shared object query errors
internal/testgit: Add rooted repo helpers; remove raw path access
objectstore/memory: Add in-memory object store
objectid: Add Compare helper
Diffstat (limited to 'errors/type.go')
| -rw-r--r-- | errors/type.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/errors/type.go b/errors/type.go new file mode 100644 index 00000000..82ca993a --- /dev/null +++ b/errors/type.go @@ -0,0 +1,31 @@ +package errors + +import ( + "fmt" + + "codeberg.org/lindenii/furgit/objectid" + "codeberg.org/lindenii/furgit/objecttype" +) + +// ObjectTypeError indicates that a referenced object has a different type than +// what the operation expected. +type ObjectTypeError struct { + OID objectid.ObjectID + Got objecttype.Type + Want objecttype.Type +} + +// Error implements error. +func (e *ObjectTypeError) Error() string { + gotName, gotOK := objecttype.Name(e.Got) + if !gotOK { + gotName = fmt.Sprintf("type(%d)", e.Got) + } + + wantName, wantOK := objecttype.Name(e.Want) + if !wantOK { + wantName = fmt.Sprintf("type(%d)", e.Want) + } + + return fmt.Sprintf("object %s has type %s, want %s", e.OID, gotName, wantName) +} |
