internal/span: return error when on spans with invalid starts

Fixes golang/go#30155

Change-Id: I7f9dbec6fdfa92654f58627ef44ee4bfe2870fa6
Reviewed-on: https://go-review.googlesource.com/c/tools/+/169440
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
Reviewed-by: Ian Cottrell <iancottrell@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
diff --git a/internal/span/token.go b/internal/span/token.go
index 324c258..fb4d16d 100644
--- a/internal/span/token.go
+++ b/internal/span/token.go
@@ -65,6 +65,9 @@
 		return Span{}, fmt.Errorf("file not found in FileSet")
 	}
 	s := Span{v: span{URI: FileURI(f.Name())}}
+	if !r.Start.IsValid() {
+		return Span{}, fmt.Errorf("invalid position for start of range")
+	}
 	s.v.Start.Offset = f.Offset(r.Start)
 	if r.End.IsValid() {
 		s.v.End.Offset = f.Offset(r.End)