diff options
| author | Jiuyang Liu | 2021-06-09 01:09:19 +0800 |
|---|---|---|
| committer | GitHub | 2021-06-09 01:09:19 +0800 |
| commit | 04a8f2acffcd67c764575357144f29334ba8d44d (patch) | |
| tree | 53c25aa5b82a47172f056b0199825a58c46c97f7 | |
| parent | eec65c8ac658783ab599218818e907285619c7ad (diff) | |
| parent | a279dec78423141834b7c32577f65c853cc63e0d (diff) | |
Merge pull request #2263 from sinofp/nomorejavaio-mustdedup
Remove java.io in MustDedup
| -rw-r--r-- | src/main/scala/firrtl/transforms/MustDedup.scala | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/src/main/scala/firrtl/transforms/MustDedup.scala b/src/main/scala/firrtl/transforms/MustDedup.scala index 0d2dd569..417e46ac 100644 --- a/src/main/scala/firrtl/transforms/MustDedup.scala +++ b/src/main/scala/firrtl/transforms/MustDedup.scala @@ -7,12 +7,10 @@ import firrtl.annotations._ import firrtl.annotations.TargetToken.OfModule import firrtl.analyses.InstanceKeyGraph import firrtl.analyses.InstanceKeyGraph.InstanceKey -import firrtl.options.Dependency +import firrtl.options.{Dependency, TargetDirAnnotation} import firrtl.stage.Forms import firrtl.graph.DiGraph -import java.io.{File, FileWriter} - /** Marks modules as "must deduplicate" */ case class MustDeduplicateAnnotation(modules: Seq[IsModule]) extends Annotation { @@ -217,27 +215,26 @@ class MustDeduplicateTransform extends Transform with DependencyAPIMigration { } // Write reports and modules to disk - val dirName = state.annotations.collectFirst { case MustDeduplicateReportDirectory(dir) => dir } - .getOrElse("dedup_failures") - val dir = new File(dirName) + val dirName = state.annotations.collectFirst { case MustDeduplicateReportDirectory(dir) => dir }.getOrElse { + val targetDirName = state.annotations.collectFirst { case TargetDirAnnotation(dir) => dir }.getOrElse(".") + s"$targetDirName/dedup_failures" + } + val dir = FileUtils.getPath(dirName) logger.error(s"Writing error report(s) to ${dir}...") FileUtils.makeDirectory(dir.toString) for ((report, idx) <- reports.zipWithIndex) { - val f = new File(dir, s"report_$idx.rpt") + val f = dir / s"report_$idx.rpt" logger.error(s"Writing $f...") - val fw = new FileWriter(f) - fw.write(report) - fw.close() + os.write(f, report) } - val modsDir = new File(dir, "modules") + val modsDir = dir / "modules" FileUtils.makeDirectory(modsDir.toString) logger.error(s"Writing relevant modules to $modsDir...") val relevantModule = dedupFailures.flatMap(_.relevantMods.map(_.value)).toSet for (mod <- state.circuit.modules if relevantModule(mod.name)) { - val fw = new FileWriter(new File(modsDir, s"${mod.name}.fir")) - fw.write(mod.serialize) - fw.close() + val f = modsDir / s"${mod.name}.fir" + os.write(f, mod.serialize) } val msg = s"Modules marked 'must deduplicate' failed to deduplicate! See error reports in $dirName" |
