1- def replTestDir = " ../compiler/test-resources/repl "
1+ def replTestDir = " ../compiler/test-resources"
22
33def list (dir : String = " ." ): Vector [String ] =
4- Option (new java.io.File (dir).list).map(_.toVector).getOrElse(Vector ())
4+ Option (java.io.File (dir).list).map(_.toVector).getOrElse(Vector ())
55
66def loadLines (fileName : String , enc : String = " UTF-8" ): Vector [String ] =
77 var result = Vector .empty[String ]
@@ -10,30 +10,43 @@ def loadLines(fileName: String, enc: String = "UTF-8"): Vector[String] =
1010 result
1111
1212def saveString (text : String , fileName : String , enc : String = " UTF-8" ): Unit =
13- val f = new java.io.File (fileName)
14- val pw = new java.io.PrintWriter (f, enc)
13+ val f = java.io.File (fileName)
14+ val pw = java.io.PrintWriter (f, enc)
1515 try pw.write(text) finally pw.close()
1616
17+ extension (s : String ) def isDir : Boolean = java.io.File (s).isDirectory
18+
19+
20+ def visitFile (path : String , isModify : Boolean ): Unit =
21+ print(s " \n processing: $path" )
22+ val lines = loadLines(path)
23+ var result = Vector [String ]()
24+ for i <- lines.indices do
25+ result :+= lines(i)
26+ if lines(i).startsWith(" scala>" ) &&
27+ lines.lift(i + 1 ).map(_.startsWith(" 1 | " )).getOrElse(false )
28+ then
29+ result :+= " -- Error:"
30+
31+ val msg =
32+ if lines == result then Console .GREEN + " unmodified" + Console .RESET
33+ else Console .RED + " *** MODIFIED" + Console .RESET
34+ println(msg)
35+ if lines != result then
36+ println(" \n before ==========>\n " + lines.mkString(" \n " ))
37+ println(" \n after ==========>\n " + result.mkString(" \n " ))
38+ if isModify then
39+ println(s " Writing: $path" )
40+ saveString(result.mkString(" \n " ), path)
41+
42+ def visitDirRecursively (dirName : String , isModify : Boolean ): Unit =
43+ println(s " Enter directory: $dirName" )
44+ list(dirName).foreach( f =>
45+ val path = s " $dirName/ $f"
46+ if path.isDir then visitDirRecursively(path, isModify)
47+ else visitFile(path, isModify)
48+ )
1749
1850@ main
19- def run_insert_error (): Unit =
20- for f <- list(replTestDir) do
21- val fileName = s " $replTestDir/ $f"
22- print(s " \n processing: $fileName" )
23- val lines = loadLines(fileName)
24- var result = Vector [String ]()
25- for i <- lines.indices do
26- result :+= lines(i)
27- if lines(i).startsWith(" scala>" ) &&
28- lines.lift(i + 1 ).map(_.startsWith(" 1 | " )).getOrElse(false )
29- then
30- result :+= " -- Error:"
31-
32- val msg =
33- if lines == result then Console .GREEN + " unmodified" + Console .RESET
34- else Console .RED + " *** MODIFIED" + Console .RESET
35- println(msg)
36- if lines != result then
37- println(" \n before ==========>\n " + lines.mkString(" \n " ))
38- println(" \n after ==========>\n " + result.mkString(" \n " ))
39- saveString(result.mkString(" \n " ), fileName)
51+ def run_insert_error (isModify : Boolean ): Unit =
52+ visitDirRecursively(replTestDir, isModify)
0 commit comments