internal/typesinternal: implement VarKind compatibility shim
For golang/go#70250
Change-Id: Ib7700c2516cf84f17d351e5580de752a9ec44c5b
Reviewed-on: https://go-review.googlesource.com/c/tools/+/710616
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Madeline Kalil <mkalil@google.com>
Auto-Submit: Alan Donovan <adonovan@google.com>
diff --git a/internal/typesinternal/varkind.go b/internal/typesinternal/varkind.go
index e5da049..26499cd 100644
--- a/internal/typesinternal/varkind.go
+++ b/internal/typesinternal/varkind.go
@@ -2,39 +2,22 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package typesinternal
+//go:build go1.25
-// TODO(adonovan): when CL 645115 lands, define the go1.25 version of
-// this API that actually does something.
+package typesinternal
import "go/types"
-type VarKind uint8
+type VarKind = types.VarKind
const (
- _ VarKind = iota // (not meaningful)
- PackageVar // a package-level variable
- LocalVar // a local variable
- RecvVar // a method receiver variable
- ParamVar // a function parameter variable
- ResultVar // a function result variable
- FieldVar // a struct field
+ PackageVar = types.PackageVar
+ LocalVar = types.LocalVar
+ RecvVar = types.RecvVar
+ ParamVar = types.ParamVar
+ ResultVar = types.ResultVar
+ FieldVar = types.FieldVar
)
-func (kind VarKind) String() string {
- return [...]string{
- 0: "VarKind(0)",
- PackageVar: "PackageVar",
- LocalVar: "LocalVar",
- RecvVar: "RecvVar",
- ParamVar: "ParamVar",
- ResultVar: "ResultVar",
- FieldVar: "FieldVar",
- }[kind]
-}
-
-// GetVarKind returns an invalid VarKind.
-func GetVarKind(v *types.Var) VarKind { return 0 }
-
-// SetVarKind has no effect.
-func SetVarKind(v *types.Var, kind VarKind) {}
+func GetVarKind(v *types.Var) VarKind { return v.Kind() }
+func SetVarKind(v *types.Var, kind VarKind) { v.SetKind(kind) }
diff --git a/internal/typesinternal/varkind_go124.go b/internal/typesinternal/varkind_go124.go
new file mode 100644
index 0000000..17b1804
--- /dev/null
+++ b/internal/typesinternal/varkind_go124.go
@@ -0,0 +1,39 @@
+// Copyright 2024 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.
+
+//go:build !go1.25
+
+package typesinternal
+
+import "go/types"
+
+type VarKind uint8
+
+const (
+ _ VarKind = iota // (not meaningful)
+ PackageVar // a package-level variable
+ LocalVar // a local variable
+ RecvVar // a method receiver variable
+ ParamVar // a function parameter variable
+ ResultVar // a function result variable
+ FieldVar // a struct field
+)
+
+func (kind VarKind) String() string {
+ return [...]string{
+ 0: "VarKind(0)",
+ PackageVar: "PackageVar",
+ LocalVar: "LocalVar",
+ RecvVar: "RecvVar",
+ ParamVar: "ParamVar",
+ ResultVar: "ResultVar",
+ FieldVar: "FieldVar",
+ }[kind]
+}
+
+// GetVarKind returns an invalid VarKind.
+func GetVarKind(v *types.Var) VarKind { return 0 }
+
+// SetVarKind has no effect.
+func SetVarKind(v *types.Var, kind VarKind) {}