 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Overview ¶
Package bug provides utilities for reporting internal bugs, and being notified when they occur.
Philosophically, because gopls runs as a sidecar process that the user does not directly control, sometimes it keeps going on broken invariants rather than panicking. In those cases, bug reports provide a mechanism to alert developers and capture relevant metadata.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var BugReportCount = counter.NewStack("gopls/bug", 16)
    BugReportCount is a telemetry counter that tracks # of bug reports.
var PanicOnBugs = false
    PanicOnBugs controls whether to panic when bugs are reported.
It may be set to true during testing.
TODO(adonovan): should we make the default true, and suppress it only in the product (gopls/main.go)?
Functions ¶
func Errorf ¶
Errorf calls fmt.Errorf for the given arguments, and reports the resulting error message as a bug.
func Handle ¶
func Handle(h func(Bug))
Handle adds a handler function that will be called with the next bug to occur on the server. The handler only ever receives one bug. It is called synchronously, and should return in a timely manner.
Types ¶
type Bug ¶
type Bug struct {
	File        string    // file containing the call to bug.Report
	Line        int       // line containing the call to bug.Report
	Description string    // description of the bug
	Key         string    // key identifying the bug (file:line if available)
	Stack       string    // call stack
	AtTime      time.Time // time the bug was reported
}
    A Bug represents an unexpected event or broken invariant. They are used for capturing metadata that helps us understand the event.
Bugs are JSON-serializable.