setupChecker resolves snapshot, program, and type checker for a project. Callers must defer setup.done() to release the checker.
(ctx context.Context, snapshot SnapshotID, projectHandle ProjectID)
| 488 | // setupChecker resolves snapshot, program, and type checker for a project. |
| 489 | // Callers must defer setup.done() to release the checker. |
| 490 | func (s *Session) setupChecker(ctx context.Context, snapshot SnapshotID, projectHandle ProjectID) (checkerSetup, error) { |
| 491 | sd, err := s.getSnapshotData(snapshot) |
| 492 | if err != nil { |
| 493 | return checkerSetup{}, err |
| 494 | } |
| 495 | |
| 496 | program, err := sd.getProgram(projectHandle) |
| 497 | if err != nil { |
| 498 | return checkerSetup{}, err |
| 499 | } |
| 500 | |
| 501 | c, done := program.GetTypeChecker(core.WithCheckerLifetime(ctx, core.CheckerLifetimeAPI)) |
| 502 | return checkerSetup{ |
| 503 | sd: sd, |
| 504 | program: program, |
| 505 | checker: c, |
| 506 | done: done, |
| 507 | projectID: projectHandle, |
| 508 | }, nil |
| 509 | } |
| 510 | |
| 511 | // setupLanguageService creates a LanguageService for the given snapshot/project. |
| 512 | // Unlike setupChecker, this does NOT acquire a checker from the pool, so callers that |
no test coverage detected