diff --git a/src/cmd/compile/internal/types2/compilersupport.go b/src/cmd/compile/internal/types2/compilersupport.go
index 33dd8e8baace43271c656efcdcd2db74dd89b4d8..e98675f9c587a633ad4f06d281a185d702eeb03f 100644
--- a/src/cmd/compile/internal/types2/compilersupport.go
+++ b/src/cmd/compile/internal/types2/compilersupport.go
@@ -28,3 +28,11 @@ func AsSignature(t Type) *Signature {
 func CoreType(t Type) Type {
 	return coreType(t)
 }
+
+// RangeKeyVal returns the key and value types for a range over typ.
+// It panics if range over typ is invalid.
+func RangeKeyVal(typ Type) (Type, Type) {
+	key, val, _, ok := rangeKeyVal(typ, nil)
+	assert(ok)
+	return key, val
+}
diff --git a/src/cmd/compile/internal/types2/stmt.go b/src/cmd/compile/internal/types2/stmt.go
index 3027aef2e7a5124d8b1c4bf51d95e298c136e46b..c381187fd3a448d295a1e3e87a992f46d76be84d 100644
--- a/src/cmd/compile/internal/types2/stmt.go
+++ b/src/cmd/compile/internal/types2/stmt.go
@@ -1001,13 +1001,6 @@ func (check *Checker) rangeStmt(inner stmtContext, s *syntax.ForStmt, rclause *s
 	check.stmt(inner, s.Body)
 }
 
-// RangeKeyVal returns the key and value types for a range over typ.
-// Exported for use by the compiler (does not exist in go/types).
-func RangeKeyVal(typ Type) (Type, Type) {
-	key, val, _, _ := rangeKeyVal(typ, nil)
-	return key, val
-}
-
 // rangeKeyVal returns the key and value type produced by a range clause
 // over an expression of type typ.
 // If allowVersion != nil, it is used to check the required language version.