text/template improved comparison error addresses issue #71421

Addresses issue #71421, improves the error message given for comparison. Previous error message did not specify the types causing conflict, just said incompatible types, new error message specifies the two types causing the issue.

Change-Id: I9d940ab7573c2763a9d052445140ecd6d38cde5e
GitHub-Last-Rev: 6fe7d81013
GitHub-Pull-Request: golang/go#71431
Reviewed-on: https://go-review.googlesource.com/c/go/+/644175
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Rob Pike <r@golang.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
Diego Lara 2025-01-31 20:57:20 +00:00 committed by Gopher Robot
parent e57769d5ad
commit 1118da2514
1 changed files with 2 additions and 3 deletions

View File

@ -409,7 +409,6 @@ func not(arg reflect.Value) bool {
var ( var (
errBadComparisonType = errors.New("invalid type for comparison") errBadComparisonType = errors.New("invalid type for comparison")
errBadComparison = errors.New("incompatible types for comparison")
errNoComparison = errors.New("missing argument for comparison") errNoComparison = errors.New("missing argument for comparison")
) )
@ -487,7 +486,7 @@ func eq(arg1 reflect.Value, arg2 ...reflect.Value) (bool, error) {
truth = arg.Int() >= 0 && arg1.Uint() == uint64(arg.Int()) truth = arg.Int() >= 0 && arg1.Uint() == uint64(arg.Int())
default: default:
if arg1.IsValid() && arg.IsValid() { if arg1.IsValid() && arg.IsValid() {
return false, errBadComparison return false, fmt.Errorf("incompatible types for comparison: %v and %v", arg1.Type(), arg.Type())
} }
} }
} else { } else {
@ -553,7 +552,7 @@ func lt(arg1, arg2 reflect.Value) (bool, error) {
case k1 == uintKind && k2 == intKind: case k1 == uintKind && k2 == intKind:
truth = arg2.Int() >= 0 && arg1.Uint() < uint64(arg2.Int()) truth = arg2.Int() >= 0 && arg1.Uint() < uint64(arg2.Int())
default: default:
return false, errBadComparison return false, fmt.Errorf("incompatible types for comparison: %v and %v", arg1.Type(), arg2.Type())
} }
} else { } else {
switch k1 { switch k1 {