       }
 
       switch previousCompilationStatus {
-
       case .upToDate where datesMatch:
         reporter?.report("May skip current input:", path: input)
         return nil

    outOfDateBuildRecord: BuildRecord,
    fileSystem: FileSystem,
    reporter: IncrementalCompilationState.Reporter?
  ) -> [(TypedVirtualPath, InputInfo.Status, datesMatch: Bool)] {
    groups.compactMap { group in
      let input = group.primaryInput
      let modDate = buildRecordInfo.compilationInputModificationDates[input]

      case .needsNonCascadingBuild:
        reporter?.report("Scheduling noncascading build", path: input)
      }
      return ChangedInput(filePath: input,
                          status: previousCompilationStatus,
                          datesMatch: datesMatch)
    }
  }

  /// Any files dependent on modified files from other modules must be compiled, too.
  private static func computeExternallyDependentInputs(
