Skip to content

Commit 7a3f880

Browse files
authored
Merge pull request #2313 from dotty-staging/topic/kill-reflect-io
Kill reflect io
2 parents 825f8de + ea59cb3 commit 7a3f880

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+1817
-164
lines changed

bin/common

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,11 @@ else
115115
echo "Failed to parse .packages file"
116116
build_all
117117
fi
118+
119+
if [ ! -f "$INTERFACES_JAR" -o ! -f "$MAIN_JAR" -o ! -f "$DOTTY_LIB_JAR" -o ! -f "$TEST_JAR" ]; then
120+
echo ".packages file corrupted, rebuilding"
121+
build_all
122+
fi
118123
fi
119124

120125
################# After this point, jar variables will be set #################
@@ -142,10 +147,6 @@ if [ "$SCALA_LIBRARY_JAR" == "" ]; then
142147
SCALA_LIBRARY_JAR=$(find_jar "$HOME/.ivy2/cache/org.scala-lang/scala-library/jars" "scala-library-$SCALA_VERSION.jar")
143148
fi
144149

145-
if [ "$SCALA_REFLECT_JAR" == "" ]; then
146-
SCALA_REFLECT_JAR=$(find_jar "$HOME/.ivy2/cache/org.scala-lang/scala-reflect/jars" "scala-reflect-$SCALA_VERSION.jar")
147-
fi
148-
149150
if [ "$SCALA_ASM_JAR" == "" ]; then
150151
SCALA_ASM_JAR=$(find_jar "$HOME/.ivy2/cache/org.scala-lang.modules/scala-asm/bundles" "scala-asm-$SCALA_ASM_VERSION.jar")
151152
fi

bin/dotc

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,10 @@ CompilerMain=dotty.tools.dotc.Main
2020
FromTasty=dotty.tools.dotc.FromTasty
2121
ReplMain=dotty.tools.dotc.repl.Main
2222

23-
if [ ! -f "$SCALA_LIBRARY_JAR" -o ! -f "$SCALA_REFLECT_JAR" -o ! -f "$SCALA_ASM_JAR" -o ! -f "$SBT_INTERFACE_JAR" ]
23+
if [ ! -f "$SCALA_LIBRARY_JAR" -o ! -f "$SCALA_ASM_JAR" -o ! -f "$SBT_INTERFACE_JAR" ]
2424
then
2525
echo To use this script please set
2626
echo SCALA_LIBRARY_JAR to point to scala-library-$SCALA_VERSION.jar "(currently $SCALA_LIBRARY_JAR)"
27-
echo SCALA_REFLECT_JAR to point to scala-reflect-$SCALA_VERSION.jar "(currently $SCALA_REFLECT_JAR)"
2827
echo SCALA_ASM_JAR to point to scala-asm-$SCALA_ASM_VERSION.jar "(currently $SCALA_ASM_JAR)"
2928
echo SBT_INTERFACE_JAR to point to interface-$SBT_VERSION.jar "(currently $SBT_INTERFACE_JAR)"
3029
fi
@@ -116,9 +115,9 @@ trap onExit INT
116115
classpathArgs () {
117116
if [[ "true" == "$bootstrapped" ]]; then
118117
check_jar "dotty-bootstrapped" "$DOTTY_JAR" "target" 'build_jar "test:runMain dotc.build" target' &> /dev/null
119-
toolchain="$DOTTY_JAR:$DOTTY_LIB_JAR:$SCALA_LIBRARY_JAR:$SCALA_REFLECT_JAR:$SCALA_ASM_JAR:$SBT_INTERFACE_JAR"
118+
toolchain="$DOTTY_JAR:$DOTTY_LIB_JAR:$SCALA_LIBRARY_JAR:$SCALA_ASM_JAR:$SBT_INTERFACE_JAR"
120119
else
121-
toolchain="$SCALA_LIBRARY_JAR:$DOTTY_LIB_JAR:$SCALA_REFLECT_JAR:$SCALA_ASM_JAR:$SBT_INTERFACE_JAR"
120+
toolchain="$SCALA_LIBRARY_JAR:$DOTTY_LIB_JAR:$SCALA_ASM_JAR:$SBT_INTERFACE_JAR"
122121
fi
123122
bcpJars="$INTERFACES_JAR:$MAIN_JAR:$DOTTY_LIB_JAR"
124123
cpJars="$INTERFACES_JAR:$MAIN_JAR:$DOTTY_LIB_JAR:$TEST_JAR"

bin/test/TestScripts.scala

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,8 @@ class TestScripts {
1717

1818
private def executeScript(script: String): (Int, String) = {
1919
val sb = new StringBuilder
20-
val ret = Process(script) ! ProcessLogger { line => println(line); sb.append(line) }
20+
val ret = Process(script) ! ProcessLogger { line => println(line); sb.append(line + "\n") }
2121
val output = sb.toString
22-
println(output) // For CI, otherwise "terminal inactive for 5m0s, build cancelled"
2322
(ret, output)
2423
}
2524

@@ -59,7 +58,7 @@ class TestScripts {
5958

6059
val (retDotr, dotrOutput) = executeScript("./bin/dotr HelloWorld")
6160
assert(
62-
retDotr == 0 && dotrOutput == "hello world",
61+
retDotr == 0 && dotrOutput == "hello world\n",
6362
s"Running hello world exited with status: $retDotr and output: $dotrOutput"
6463
)
6564
}
@@ -93,8 +92,19 @@ class TestScripts {
9392

9493
/** dotc script should work after corrupting .packages */
9594
@Test def reCreatesPackagesIfNecessary = doUnlessWindows {
96-
executeScript("sed -i.old 's/2.1/2.X/' ./.packages") // That's going to replace 2.11 with 2.X1
97-
val (retFirstBuild, _) = executeScript("./bin/dotc ./tests/pos/HelloWorld.scala")
95+
import java.nio.file.{Paths, Files}
96+
import java.nio.charset.StandardCharsets
97+
val contents =
98+
"""|/Users/fixel/Projects/dotty/interfaces/target/dotty-interfaces-0.1.1-bin-SNAPSHOT-X.jar
99+
|/Users/fixel/Projects/dotty/compiler/target/scala-2.11/dotty-compiler_2.1X-0.1.1-bin-SNAPSHOT.jar
100+
|/Users/fixel/Projects/dotty/library/target/scala-2.11/dotty-library_2.1X-0.1.1-bin-SNAPSHOT.jar
101+
|/Users/fixel/Projects/dotty/doc-tool/target/scala-2.11/dotty-doc_2.1X-0.1.1-bin-SNAPSHOT-tests.jar"""
102+
.stripMargin
103+
104+
Files.write(Paths.get("./.packages"), contents.getBytes(StandardCharsets.UTF_8))
105+
106+
val (retFirstBuild, output) = executeScript("./bin/dotc ./tests/pos/HelloWorld.scala")
107+
assert(output.contains(".packages file corrupted"))
98108
assert(retFirstBuild == 0, "building dotc failed")
99109
}
100110
}

compiler/sjs/backend/sjs/JSCodeGen.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ class JSCodeGen()(implicit ctx: Context) {
182182

183183
private def getFileFor(cunit: CompilationUnit, sym: Symbol,
184184
suffix: String) = {
185-
import scala.reflect.io._
185+
import dotty.tools.io._
186186

187187
val outputDirectory: AbstractFile = // TODO Support virtual files
188188
new PlainDirectory(new Directory(new java.io.File(ctx.settings.d.value)))

compiler/src/dotty/tools/backend/jvm/CollectEntryPoints.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import java.io.{File => JFile}
1515
import scala.collection.generic.Clearable
1616
import scala.collection.mutable
1717
import scala.reflect.ClassTag
18-
import scala.reflect.io.{Directory, PlainDirectory, AbstractFile}
18+
import dotty.tools.io.{Directory, PlainDirectory, AbstractFile}
1919
import scala.tools.asm.{ClassVisitor, FieldVisitor, MethodVisitor}
2020
import scala.tools.nsc.backend.jvm.{BCodeHelpers, BackendInterface}
2121
import dotty.tools.dotc.core._

compiler/src/dotty/tools/backend/jvm/DottyBackendInterface.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import scala.collection.generic.Clearable
1212
import scala.collection.mutable
1313
import scala.reflect.ClassTag
1414
import scala.reflect.internal.util.WeakHashSet
15-
import scala.reflect.io.{AbstractFile, Directory, PlainDirectory}
15+
import dotty.tools.io.{AbstractFile, Directory, PlainDirectory}
1616
import scala.tools.asm.{AnnotationVisitor, ClassVisitor, FieldVisitor, MethodVisitor}
1717
import scala.tools.nsc.backend.jvm.{BCodeHelpers, BackendInterface}
1818
import dotty.tools.dotc.core._

compiler/src/dotty/tools/backend/jvm/GenBCode.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import dotty.tools.dotc.util.{DotClass, Positions}
3333
import tpd._
3434
import StdNames._
3535

36-
import scala.reflect.io.{AbstractFile, Directory, PlainDirectory}
36+
import dotty.tools.io.{AbstractFile, Directory, PlainDirectory}
3737

3838
class GenBCode extends Phase {
3939
def phaseName: String = "genBCode"
@@ -62,10 +62,10 @@ class GenBCodePipeline(val entryPoints: List[Symbol], val int: DottyBackendInter
6262

6363
val sourceFile = ctx.compilationUnit.source
6464

65-
/** Convert a `scala.reflect.io.AbstractFile` into a
65+
/** Convert a `dotty.tools.io.AbstractFile` into a
6666
* `dotty.tools.dotc.interfaces.AbstractFile`.
6767
*/
68-
private[this] def convertAbstractFile(absfile: scala.reflect.io.AbstractFile): interfaces.AbstractFile =
68+
private[this] def convertAbstractFile(absfile: dotty.tools.io.AbstractFile): interfaces.AbstractFile =
6969
new interfaces.AbstractFile {
7070
override def name = absfile.name
7171
override def path = absfile.path

compiler/src/dotty/tools/backend/jvm/LabelDefs.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import scala.collection.generic.Clearable
1616
import scala.collection.mutable
1717
import scala.collection.mutable.{ListBuffer, ArrayBuffer}
1818
import scala.reflect.ClassTag
19-
import scala.reflect.io.{Directory, PlainDirectory, AbstractFile}
19+
import dotty.tools.io.{Directory, PlainDirectory, AbstractFile}
2020
import scala.tools.asm.{ClassVisitor, FieldVisitor, MethodVisitor}
2121
import scala.tools.nsc.backend.jvm.{BCodeHelpers, BackendInterface}
2222
import dotty.tools.dotc.core._

compiler/src/dotty/tools/dotc/Run.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import java.io.{BufferedWriter, OutputStreamWriter}
1818
import printing.XprintMode
1919

2020
import scala.annotation.tailrec
21-
import scala.reflect.io.VirtualFile
21+
import dotty.tools.io.VirtualFile
2222
import scala.util.control.NonFatal
2323

2424
/** A compiler run. Exports various methods to compile source files */

compiler/src/dotty/tools/dotc/classpath/AggregateClassPath.scala

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
/*
22
* Copyright (c) 2014 Contributor. All rights reserved.
33
*/
4-
package dotty.tools.dotc.classpath
4+
package dotty.tools
5+
package dotc.classpath
56

67
import java.net.URL
78
import scala.annotation.tailrec
89
import scala.collection.mutable.ArrayBuffer
9-
import scala.reflect.internal.FatalError
10-
import scala.reflect.io.AbstractFile
11-
import dotty.tools.io.ClassPath
12-
import dotty.tools.io.ClassRepresentation
10+
import dotty.tools.io.{ AbstractFile, ClassPath, ClassRepresentation }
1311

1412
/**
1513
* A classpath unifying multiple class- and sourcepath entries.

compiler/src/dotty/tools/dotc/classpath/ClassPath.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44
package dotty.tools.dotc.classpath
55

6-
import scala.reflect.io.AbstractFile
6+
import dotty.tools.io.AbstractFile
77
import dotty.tools.io.ClassRepresentation
88

99
case class ClassPathEntries(packages: Seq[PackageEntry], classesAndSources: Seq[ClassRepresentation])

compiler/src/dotty/tools/dotc/classpath/ClassPathFactory.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
*/
44
package dotty.tools.dotc.classpath
55

6-
import scala.reflect.io.{AbstractFile, VirtualDirectory}
7-
import scala.reflect.io.Path.string2path
6+
import dotty.tools.io.{AbstractFile, VirtualDirectory}
7+
import dotty.tools.io.Path.string2path
88
import dotty.tools.dotc.config.Settings
99
import FileUtils.AbstractFileOps
1010
import dotty.tools.io.ClassPath

compiler/src/dotty/tools/dotc/classpath/DirectoryClassPath.scala

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ import java.util.function.IntFunction
1010
import java.util
1111
import java.util.Comparator
1212

13-
import scala.reflect.io.{AbstractFile, PlainFile}
14-
import dotty.tools.io.{ClassPath, ClassRepresentation, PlainNioFile}
13+
import dotty.tools.io.{AbstractFile, PlainFile, ClassPath, ClassRepresentation, PlainNioFile}
1514
import FileUtils._
1615
import scala.collection.JavaConverters._
1716

@@ -118,7 +117,7 @@ trait JFileDirectoryLookup[FileEntryType <: ClassRepresentation] extends Directo
118117
} else Array()
119118
}
120119
protected def getName(f: File): String = f.getName
121-
protected def toAbstractFile(f: File): AbstractFile = new PlainFile(new scala.reflect.io.File(f))
120+
protected def toAbstractFile(f: File): AbstractFile = new PlainFile(new dotty.tools.io.File(f))
122121
protected def isPackage(f: File): Boolean = f.isPackage
123122

124123
assert(dir != null, "Directory file in DirectoryFileLookup cannot be null")
@@ -208,7 +207,7 @@ case class DirectoryClassPath(dir: File) extends JFileDirectoryLookup[ClassFileE
208207
val relativePath = FileUtils.dirPath(className)
209208
val classFile = new File(s"$dir/$relativePath.class")
210209
if (classFile.exists) {
211-
val wrappedClassFile = new scala.reflect.io.File(classFile)
210+
val wrappedClassFile = new dotty.tools.io.File(classFile)
212211
val abstractClassFile = new PlainFile(wrappedClassFile)
213212
Some(abstractClassFile)
214213
} else None
@@ -235,7 +234,7 @@ case class DirectorySourcePath(dir: File) extends JFileDirectoryLookup[SourceFil
235234
.collectFirst { case file if file.exists() => file }
236235

237236
sourceFile.map { file =>
238-
val wrappedSourceFile = new scala.reflect.io.File(file)
237+
val wrappedSourceFile = new dotty.tools.io.File(file)
239238
val abstractSourceFile = new PlainFile(wrappedSourceFile)
240239
abstractSourceFile
241240
}

compiler/src/dotty/tools/dotc/classpath/FileUtils.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
/*
22
* Copyright (c) 2014 Contributor. All rights reserved.
33
*/
4-
package dotty.tools.dotc.classpath
4+
package dotty.tools
5+
package dotc.classpath
56

67
import java.io.{File => JFile, FileFilter}
78
import java.net.URL
8-
import scala.reflect.internal.FatalError
9-
import scala.reflect.io.AbstractFile
9+
import dotty.tools.io.AbstractFile
1010

1111
/**
1212
* Common methods related to Java files and abstract files used in the context of classpath

compiler/src/dotty/tools/dotc/classpath/VirtualDirectoryClassPath.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package dotty.tools.dotc.classpath
22

33
import dotty.tools.io.ClassRepresentation
4-
import scala.reflect.io.{AbstractFile, Path, PlainFile, VirtualDirectory}
4+
import dotty.tools.io.{AbstractFile, Path, PlainFile, VirtualDirectory}
55
import FileUtils._
66
import java.net.URL
77

8-
import scala.reflect.internal.util.AbstractFileClassLoader
98
import dotty.tools.io.ClassPath
109

1110
case class VirtualDirectoryClassPath(dir: VirtualDirectory) extends ClassPath with DirectoryLookup[ClassFileEntryImpl] with NoSourcePaths {

compiler/src/dotty/tools/dotc/classpath/ZipAndJarFileLookupFactory.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ package dotty.tools.dotc.classpath
66
import java.io.File
77
import java.net.URL
88
import scala.annotation.tailrec
9-
import scala.reflect.io.{AbstractFile, FileZipArchive, ManifestResources}
10-
import dotty.tools.io.ClassPath
9+
import dotty.tools.io.{AbstractFile, ClassPath, FileZipArchive, ManifestResources}
1110
import dotty.tools.dotc.config.Settings
1211
import dotty.tools.dotc.core.Contexts.Context
1312
import FileUtils._

compiler/src/dotty/tools/dotc/classpath/ZipArchiveFileLookup.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ package dotty.tools.dotc.classpath
66
import java.io.File
77
import java.net.URL
88
import scala.collection.Seq
9-
import scala.reflect.io.AbstractFile
10-
import scala.reflect.io.FileZipArchive
9+
import dotty.tools.io.{ AbstractFile, FileZipArchive }
1110
import FileUtils.AbstractFileOps
1211
import dotty.tools.io.{ClassPath, ClassRepresentation}
1312

compiler/src/dotty/tools/dotc/core/SymDenotations.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import NameOps._, NameKinds._
88
import Scopes.Scope
99
import collection.mutable
1010
import collection.BitSet
11-
import scala.reflect.io.AbstractFile
11+
import dotty.tools.io.AbstractFile
1212
import Decorators.SymbolIteratorDecorator
1313
import ast._
1414
import annotation.tailrec

compiler/src/dotty/tools/dotc/repl/CompilingInterpreter.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import scala.collection.mutable.{ListBuffer, HashSet, ArrayBuffer}
1515

1616
//import ast.parser.SyntaxAnalyzer
1717
import io.{PlainFile, VirtualDirectory}
18-
import scala.reflect.io.{PlainDirectory, Directory}
18+
import dotty.tools.io.{PlainDirectory, Directory}
1919
import reporting.{ConsoleReporter, Reporter}
2020
import core.Flags
2121
import util.{SourceFile, NameTransformer}

compiler/src/dotty/tools/dotc/repl/REPL.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ package repl
55
import core.Contexts.Context
66
import reporting.Reporter
77
import io.{AbstractFile, PlainFile, VirtualDirectory}
8-
import scala.reflect.io.{PlainDirectory, Directory}
8+
import dotty.tools.io.{PlainDirectory, Directory}
99
import java.io.{BufferedReader, File => JFile, FileReader, PrintWriter}
1010
import java.net.{URL, URLClassLoader}
1111

compiler/src/dotty/tools/dotc/sbt/ExtractDependencies.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import Names._, NameOps._, StdNames._
88

99
import scala.collection.{Set, mutable}
1010

11-
import dotty.tools.io.{AbstractFile, Path, ZipArchive}
11+
import dotty.tools.io.{AbstractFile, Path, ZipArchive, PlainFile}
1212
import java.io.File
1313

1414
import java.util.{Arrays, Comparator}
@@ -101,7 +101,7 @@ class ExtractDependencies extends Phase {
101101
val classSegments = Path(ze.path).segments
102102
binaryDependency(zipFile, className(classSegments))
103103
}
104-
case pf: scala.reflect.io.PlainFile =>
104+
case pf: PlainFile =>
105105
val packages = dep.ownersIterator
106106
.filter(x => x.is(PackageClass) && !x.isEffectiveRoot).length
107107
// We can recover the fully qualified name of a classfile from

0 commit comments

Comments
 (0)