-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Remove
scala2-library-tasty-tests
project (#19379)
Split BootstrappedStdLibTASYyTest into the part that tests the TASTy inspector and the part that tests recompilation. The `tests/run/scala2-library-test` test will be tested with the original Scala 2 library JAR and with the Scala 2 library TASTy JAR depending on the `scala2Library` SBT setting. We also remove `scala2-library-tasty-tests` as it is now empty and will not serve any purpose anymore. This test also discovered a bug in TASTYRun with the path separators of `JarArchive`s in Windows. The "/" is used in the JAR paths but the "\" is used for OS paths. This is now fixed. [test_java8]
- Loading branch information
Showing
8 changed files
with
200 additions
and
206 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
174 changes: 0 additions & 174 deletions
174
scala2-library-tasty-tests/test/BootstrappedStdLibTASYyTest.scala
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
import scala.quoted._ | ||
import scala.tasty.inspector._ | ||
|
||
import dotty.tools.io.Directory | ||
|
||
import java.io.File.pathSeparator | ||
import java.io.File.separator | ||
|
||
@main def Test: Unit = | ||
blacklistsOnlyContainsClassesThatExist() | ||
testTastyInspector() | ||
|
||
/** Test that we can load trees from TASTy */ | ||
def testTastyInspector(): Unit = | ||
loadWithTastyInspector(loadBlacklisted) | ||
|
||
def blacklistsOnlyContainsClassesThatExist() = | ||
val scalaLibTastyPathsSet = scalaLibTastyPaths.toSet | ||
assert(loadBlacklisted.diff(scalaLibTastyPathsSet).isEmpty, | ||
loadBlacklisted.diff(scalaLibTastyPathsSet).mkString( | ||
"`loadBlacklisted` contains names that are not in `scalaLibTastyPaths`: \n ", "\n ", "\n\n")) | ||
|
||
def dottyVersion = | ||
System.getProperty("java.class.path").nn.split(pathSeparator).collectFirst { | ||
case path if path.endsWith(".jar") && path.contains("scala3-library_3-") => | ||
path.split("scala3-library_3-").last.stripSuffix(".jar") | ||
}.get | ||
|
||
def scalaLibClassesPath = | ||
java.nio.file.Paths.get( | ||
s"out/bootstrap/scala2-library-bootstrapped/scala-$dottyVersion-nonbootstrapped/classes".replace("/", separator)) | ||
|
||
lazy val scalaLibTastyPaths = | ||
new Directory(scalaLibClassesPath).deepFiles | ||
.filter(_.`extension` == "tasty") | ||
.map(_.normalize.path.stripPrefix(scalaLibClassesPath.toString + separator)) | ||
.toList | ||
|
||
def loadWithTastyInspector(blacklisted: Set[String]): Unit = | ||
val inspector = new scala.tasty.inspector.Inspector { | ||
def inspect(using Quotes)(tastys: List[Tasty[quotes.type]]): Unit = | ||
for tasty <- tastys do | ||
tasty.ast.show(using quotes.reflect.Printer.TreeStructure) // Check that we can traverse the full tree | ||
() | ||
} | ||
val tastyFiles = scalaLibTastyPaths.filterNot(blacklisted) | ||
val isSuccess = TastyInspector.inspectTastyFiles(tastyFiles.map(x => scalaLibClassesPath.resolve(x).toString))(inspector) | ||
assert(isSuccess, "Errors reported while loading from TASTy") | ||
|
||
/** Set of tasty files that cannot be loaded from TASTy */ | ||
def loadBlacklisted = Set[String]( | ||
// No issues :) | ||
) |
74 changes: 74 additions & 0 deletions
74
tests/run-with-compiler/scala2-library-from-tasty-jar.scala
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
import dotty.tools.io.Directory | ||
import dotty.tools.dotc.util.ClasspathFromClassloader | ||
|
||
import java.io.File.pathSeparator | ||
import java.io.File.separator | ||
|
||
@main def Test: Unit = | ||
blacklistsOnlyContainsClassesThatExist() | ||
// FIXME this test does not work on JDK8 | ||
// Caused by: dotty.tools.dotc.core.TypeError$$anon$1: package scala.quoted.runtime.Expr does not have a member method quote | ||
if System.getProperty("java.specification.version") != "1.8" then | ||
compileFromTastyInJar(compileBlacklisted) | ||
|
||
def blacklistsOnlyContainsClassesThatExist() = | ||
val scalaLibTastyPathsSet = scalaLibTastyPaths.toSet | ||
assert(compileBlacklisted.diff(scalaLibTastyPathsSet).isEmpty, | ||
compileBlacklisted.diff(scalaLibTastyPathsSet).mkString( | ||
"`loadBlacklisted` contains names that are not in `scalaLibTastyPaths`: \n ", "\n ", "\n\n")) | ||
|
||
def dottyVersion = | ||
System.getProperty("java.class.path").nn.split(pathSeparator).collectFirst { | ||
case path if path.endsWith(".jar") && path.contains("scala3-library_3-") => | ||
path.split("scala3-library_3-").last.stripSuffix(".jar") | ||
}.get | ||
|
||
def scalaLibJarPath = | ||
s"out${separator}bootstrap${separator}scala2-library-tasty${separator}scala-$dottyVersion-nonbootstrapped${separator}scala2-library-tasty-experimental_3-$dottyVersion.jar" | ||
|
||
def scalaLibClassesPath = | ||
java.nio.file.Paths.get( | ||
s"out${separator}bootstrap${separator}scala2-library-bootstrapped${separator}scala-$dottyVersion-nonbootstrapped${separator}classes") | ||
|
||
lazy val scalaLibTastyPaths = | ||
new Directory(scalaLibClassesPath).deepFiles | ||
.filter(_.`extension` == "tasty") | ||
.map(_.normalize.path.stripPrefix(scalaLibClassesPath.toString + separator)) | ||
.toList | ||
|
||
def compileFromTastyInJar(blacklisted: Set[String]): Unit = { | ||
val driver = new dotty.tools.dotc.Driver | ||
val yFromTastyBlacklist = | ||
blacklisted.mkString("-Yfrom-tasty-ignore-list:", ",", "") | ||
val args = Array( | ||
"-classpath", ClasspathFromClassloader(getClass.getClassLoader), | ||
"-from-tasty", | ||
"-d", s"out${separator}scala2-library-from-tasty-jar-test-output.jar", | ||
"-nowarn", | ||
yFromTastyBlacklist, | ||
scalaLibJarPath, | ||
) | ||
val reporter = driver.process(args) | ||
assert(reporter.errorCount == 0, "Errors while re-compiling") | ||
} | ||
|
||
/** Set of tasty files that cannot be recompiled from TASTy */ | ||
def compileBlacklisted = Set[String]( | ||
// See #10048 | ||
// failed: java.lang.AssertionError: assertion failed: class Boolean | ||
// at dotty.tools.backend.jvm.BCodeHelpers$BCInnerClassGen.assertClassNotArrayNotPrimitive(BCodeHelpers.scala:247) | ||
// at dotty.tools.backend.jvm.BCodeHelpers$BCInnerClassGen.getClassBTypeAndRegisterInnerClass(BCodeHelpers.scala:265) | ||
// at dotty.tools.backend.jvm.BCodeHelpers$BCInnerClassGen.getClassBTypeAndRegisterInnerClass$(BCodeHelpers.scala:210) | ||
// at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.getClassBTypeAndRegisterInnerClass(BCodeSkelBuilder.scala:62) | ||
// at dotty.tools.backend.jvm.BCodeHelpers$BCInnerClassGen.internalName(BCodeHelpers.scala:237) | ||
s"scala${separator}Array.tasty", | ||
s"scala${separator}Boolean.tasty", | ||
s"scala${separator}Byte.tasty", | ||
s"scala${separator}Char.tasty", | ||
s"scala${separator}Double.tasty", | ||
s"scala${separator}Float.tasty", | ||
s"scala${separator}Int.tasty", | ||
s"scala${separator}Long.tasty", | ||
s"scala${separator}Short.tasty", | ||
s"scala${separator}Unit.tasty", | ||
) |
Oops, something went wrong.