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"
}
}