Alan Donovan
Alan Donovan
This stack `aqF--Q` was [reported by telemetry](https://telemetry.go.dev/data/2025-09-13): - `crash/crash` - [`runtime.gopanic:+69,+0x167`](https://cs.opensource.google/go/go/+/go1.25.1:src/runtime/panic.go;l=802) - `runtime.panicmem:=262,+0x197` - [`runtime.sigpanic:+9,+0x167`](https://cs.opensource.google/go/go/+/go1.25.1:src/runtime/signal_windows.go;l=393) - [`golang.org/x/tools/refactor/satisfy.(*Finder).expr:+75,+0x51f`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=401) - [`golang.org/x/tools/refactor/satisfy.(*Finder).expr:+138,+0xbfa`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=464) - [`golang.org/x/tools/refactor/satisfy.(*Finder).stmt:+40,+0xf9e`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=540) - [`golang.org/x/tools/refactor/satisfy.(*Finder).stmt:+90,+0x9a4`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=590) - [`golang.org/x/tools/refactor/satisfy.(*Finder).Find:+22,+0x1c7`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=108) - [`golang.org/x/tools/gopls/internal/golang.(*renamer).satisfy:+27,+0x377`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:gopls/internal/golang/rename_check.go;l=878) - [`golang.org/x/tools/gopls/internal/golang.(*renamer).checkMethod:+178,+0x3e4`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:gopls/internal/golang/rename_check.go;l=787) -...
This stack `yO8Zsg` was [reported by telemetry](https://telemetry.go.dev/data/2025-09-20): - `crash/crash` - [`runtime.gopanic:+69,+0x153`](https://cs.opensource.google/go/go/+/go1.24.5:src/runtime/panic.go;l=811) - `runtime.panicmem:=262,+0x2ff` - [`runtime.sigpanic:+19,+0x2cc`](https://cs.opensource.google/go/go/+/go1.24.5:src/runtime/signal_unix.go;l=925) - [`golang.org/x/tools/refactor/satisfy.(*Finder).expr:+75,+0x1c8`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=401) - [`golang.org/x/tools/refactor/satisfy.(*Finder).expr:+138,+0xa7b`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=464) - [`golang.org/x/tools/refactor/satisfy.(*Finder).stmt:+40,+0xe17`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=540) - [`golang.org/x/tools/refactor/satisfy.(*Finder).stmt:+95,+0x737`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=595) - [`golang.org/x/tools/refactor/satisfy.(*Finder).stmt:+90,+0x87f`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=590) - [`golang.org/x/tools/refactor/satisfy.(*Finder).expr:+30,+0x2c7`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=356) - [`golang.org/x/tools/refactor/satisfy.(*Finder).call:+26,+0x3fb`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=180) -...
This stack `-Zk8HQ` was [reported by telemetry](https://telemetry.go.dev/data/2025-10-01): - `crash/crash` - [`runtime.gopanic:+69,+0x153`](https://cs.opensource.google/go/go/+/go1.24.4:src/runtime/panic.go;l=811) - `runtime.panicmem:=262,+0x2ff` - [`runtime.sigpanic:+19,+0x2cc`](https://cs.opensource.google/go/go/+/go1.24.4:src/runtime/signal_unix.go;l=925) - [`golang.org/x/tools/refactor/satisfy.(*Finder).expr:+75,+0x1c8`](https://cs.opensource.google/go/x/tools/+/gopls/v0.19.1:refactor/satisfy/find.go;l=401) - [`golang.org/x/tools/refactor/satisfy.(*Finder).expr:+138,+0xa7b`](https://cs.opensource.google/go/x/tools/+/gopls/v0.19.1:refactor/satisfy/find.go;l=464) - [`golang.org/x/tools/refactor/satisfy.(*Finder).expr:+38,+0xc1f`](https://cs.opensource.google/go/x/tools/+/gopls/v0.19.1:refactor/satisfy/find.go;l=364) - [`golang.org/x/tools/refactor/satisfy.(*Finder).expr:+145,+0xc3`](https://cs.opensource.google/go/x/tools/+/gopls/v0.19.1:refactor/satisfy/find.go;l=471) - [`golang.org/x/tools/refactor/satisfy.(*Finder).stmt:+75,+0x10cb`](https://cs.opensource.google/go/x/tools/+/gopls/v0.19.1:refactor/satisfy/find.go;l=575) - [`golang.org/x/tools/refactor/satisfy.(*Finder).stmt:+90,+0x87f`](https://cs.opensource.google/go/x/tools/+/gopls/v0.19.1:refactor/satisfy/find.go;l=590) - [`golang.org/x/tools/refactor/satisfy.(*Finder).Find:+22,+0x213`](https://cs.opensource.google/go/x/tools/+/gopls/v0.19.1:refactor/satisfy/find.go;l=108) -...
This stack `dkenNg` was [reported by telemetry](https://telemetry.go.dev/data/2025-10-08): - `crash/crash` - [`runtime.gopanic:+69,+0x167`](https://cs.opensource.google/go/go/+/go1.25.0:src/runtime/panic.go;l=802) - `runtime.panicmem:=262,+0x358` - [`runtime.sigpanic:+19,+0x328`](https://cs.opensource.google/go/go/+/go1.25.0:src/runtime/signal_unix.go;l=925) - [`golang.org/x/tools/refactor/satisfy.(*Finder).expr:+75,+0x51f`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=401) - [`golang.org/x/tools/refactor/satisfy.(*Finder).stmt:+53,+0x10f6`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=553) - [`golang.org/x/tools/refactor/satisfy.(*Finder).stmt:+90,+0x9a4`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=590) - [`golang.org/x/tools/refactor/satisfy.(*Finder).stmt:+98,+0x744`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=598) - [`golang.org/x/tools/refactor/satisfy.(*Finder).stmt:+90,+0x9a4`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=590) - [`golang.org/x/tools/refactor/satisfy.(*Finder).Find:+22,+0x1c7`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=108) - [`golang.org/x/tools/gopls/internal/golang.(*renamer).satisfy:+27,+0x377`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:gopls/internal/golang/rename_check.go;l=878) -...
This stack `UsTIAw` was [reported by telemetry](https://telemetry.go.dev/data/2025-11-26): - `crash/crash` - [`runtime.gopanic:+69,+0x167`](https://cs.opensource.google/go/go/+/go1.24.6:src/runtime/panic.go;l=811) - `runtime.panicmem:=262,+0x358` - [`runtime.sigpanic:+19,+0x328`](https://cs.opensource.google/go/go/+/go1.24.6:src/runtime/signal_unix.go;l=925) - [`golang.org/x/tools/refactor/satisfy.(*Finder).expr:+75,+0x239`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=401) - [`golang.org/x/tools/refactor/satisfy.(*Finder).call:+26,+0x49e`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=180) - [`golang.org/x/tools/refactor/satisfy.(*Finder).expr:+138,+0xc49`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=464) - [`golang.org/x/tools/refactor/satisfy.(*Finder).expr:+73,+0x204`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=399) - [`golang.org/x/tools/refactor/satisfy.(*Finder).expr:+138,+0xc10`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=464) - [`golang.org/x/tools/refactor/satisfy.(*Finder).expr:+149,+0x76f`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=475) - [`golang.org/x/tools/refactor/satisfy.(*Finder).stmt:+97,+0x804`](https://cs.opensource.google/go/x/tools/+/gopls/v0.20.0:refactor/satisfy/find.go;l=597) -...
This seems reasonable as an optional feature. If someone sends a CL to use FoldingRange's CollapsedText feature, I'll review it.
Another possibility would be for the server's semantic tokens query to return an optional modifier for all the tokens in `if err != nil { ... }` that would allow...
Config.Apply seems like the right existing seam to expose, but I will note that we still don't really have a good way to compose two operations that mutate syntax trees....
Fine by me, but only because Python did it, and limited itself to these three names. In general, retroactively reserving words is (as you point out) a breaking change.
The arguments in favor are all sound, but it is nonetheless a breaking change, and it's not clear to me that it's worth the trouble. Fixing the textproto codec seems...