func dumpDotGraph()

in Sources/SwiftDriver/Jobs/PrebuiltModulesJob.swift [359:406]


  func dumpDotGraph(_ path: AbsolutePath, _ includingPCM: Bool) throws {
    func isPCM(_ dep: ModuleDependencyId) -> Bool {
      switch dep {
      case .clang:
        return true
      default:
        return false
      }
    }
    func dumpModuleName(_ stream: WritableByteStream, _ dep: ModuleDependencyId) {
      switch dep {
      case .swift(let name):
        stream <<< "\"\(name).swiftmodule\""
      case .clang(let name):
        stream <<< "\"\(name).pcm\""
      default:
        break
      }
    }
    try localFileSystem.writeFileContents(path) {Stream in
      Stream <<< "digraph {\n"
      for key in modules.keys {
        switch key {
        case .swift(let name):
          if name == mainModuleName {
              break
          }
          fallthrough
        case .clang:
          if !includingPCM && isPCM(key) {
            break
          }
          modules[key]!.directDependencies?.forEach { dep in
            if !includingPCM && isPCM(dep) {
              return
            }
            dumpModuleName(Stream, key)
            Stream <<< " -> "
            dumpModuleName(Stream, dep)
            Stream <<< ";\n"
          }
        default:
          break
        }
      }
      Stream <<< "}\n"
    }
  }