diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2015-07-21 09:55:39 +1000 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2015-07-21 09:55:39 +1000 |
commit | 0e9525aa618a2eca143a1c7379ff1e6efd23b86e (patch) | |
tree | cc2dd447c956c96d22a1ac698be8b2bbdaf2991f /test/files/run/t8502b.scala | |
parent | 62e915decc3e4caf01a9d19392c6adbdf6b55154 (diff) | |
parent | b6feac28697934e3c8ea7d90025cf6032062a886 (diff) | |
download | scala-0e9525aa618a2eca143a1c7379ff1e6efd23b86e.tar.gz scala-0e9525aa618a2eca143a1c7379ff1e6efd23b86e.tar.bz2 scala-0e9525aa618a2eca143a1c7379ff1e6efd23b86e.zip |
Merge pull request #4650 from lrytz/t8502-package
SI-8502 create PackageClass instead of Class symbol stubs for pkgs
Diffstat (limited to 'test/files/run/t8502b.scala')
-rw-r--r-- | test/files/run/t8502b.scala | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/test/files/run/t8502b.scala b/test/files/run/t8502b.scala new file mode 100644 index 0000000000..4f70d13bb0 --- /dev/null +++ b/test/files/run/t8502b.scala @@ -0,0 +1,46 @@ +import scala.tools.partest._ +import java.io.File + +// used to crash with an assertion failure in flatten because the type symbol created for the missing +// package was a ClassSymbol, not a PackageClassSymbol +// - isFlattenablePrefix(vanishingPackage) was true (wrongly) +// - therefore flatten tried to flatten the class defined in the package, but the class is +// top-level, vanishingClass.enclosingTopLevelClass is NoSymbol +object Test extends StoreReporterDirectTest { + def code = ??? + + def compileCode(code: String) = { + val classpath = List(sys.props("partest.lib"), testOutput.path) mkString sys.props("path.separator") + compileString(newCompiler("-cp", classpath, "-d", testOutput.path))(code) + } + + def show(): Unit = { + compileCode(""" + class Outer { + class Nested extends vanishing.Vanishing + } + + package vanishing { + class Vanishing + } + """) + assert(filteredInfos.isEmpty, filteredInfos) + deletePackage("vanishing") + compileCode(""" + class Test { + def f(o: Outer): Outer = o + } + """) + assert(storeReporter.infos.isEmpty, storeReporter.infos.mkString("\n")) // Included a MissingRequirementError before. + } + + def deletePackage(name: String) { + val directory = new File(testOutput.path, name) + for (f <- directory.listFiles()) { + assert(f.getName.endsWith(".class")) + assert(f.delete()) + } + assert(directory.listFiles().isEmpty) + assert(directory.delete()) + } +} |