Commit 4eb98327 authored by Robert Griesemer's avatar Robert Griesemer

go/constant: improved fatal error messages

Fixes #17812.

Change-Id: I08202165dd3f72ae04420e7b6129b8b689e74f5c
Reviewed-on: https://go-review.googlesource.com/32870Reviewed-by: default avatarAlan Donovan <adonovan@google.com>
parent 9d139ac3
......@@ -848,6 +848,8 @@ Error:
func ord(x Value) int {
switch x.(type) {
default:
return -1 // force invalid value into "x position" in match
case unknownVal:
return 0
case boolVal, stringVal:
......@@ -862,8 +864,6 @@ func ord(x Value) int {
return 5
case complexVal:
return 6
default:
panic("unreachable")
}
}
......@@ -880,9 +880,6 @@ func match(x, y Value) (_, _ Value) {
// ord(x) <= ord(y)
switch x := x.(type) {
case unknownVal:
return x, x
case boolVal, stringVal, complexVal:
return x, y
......@@ -921,6 +918,7 @@ func match(x, y Value) (_, _ Value) {
case complexVal:
return vtoc(x), y
}
case floatVal:
switch y := y.(type) {
case floatVal:
......@@ -930,7 +928,7 @@ func match(x, y Value) (_, _ Value) {
}
}
panic("unreachable")
return x, x // force unknown and invalid values into "x position" in callers of match
}
// BinaryOp returns the result of the binary expression x op y.
......@@ -1171,7 +1169,7 @@ func cmpZero(x int, op token.Token) bool {
case token.GEQ:
return x >= 0
}
panic("unreachable")
panic(fmt.Sprintf("invalid comparison %v %s 0", x, op))
}
// Compare returns the result of the comparison x op y.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment