From d594863cc2718190daa9569f3015f04523b08418 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Fri, 13 Dec 2019 14:53:08 +0100 Subject: [PATCH] compile javacp files as part of expect tests --- .../dotc/semanticdb/SemanticdbTests.scala | 20 +++++++++++++++++-- project/Build.scala | 1 - .../javacp}/com/javacp/ClassSuffix.java | 0 .../semanticdb/javacp}/com/javacp/Coin.java | 0 .../javacp}/com/javacp/Interface.java | 0 .../semanticdb/javacp}/com/javacp/Logger.java | 0 .../javacp}/com/javacp/MetacJava.java | 0 .../javacp}/com/javacp/NonGeneric.java | 0 .../javacp}/com/javacp/Recursive.java | 0 .../semanticdb/javacp}/com/javacp/Test.java | 0 .../com/javacp/annot/ClassAnnotation.java | 0 .../javacp/annot/ConstructorAnnotation.java | 0 .../com/javacp/annot/FieldAnnotation.java | 0 .../com/javacp/annot/InterfaceAnnotation.java | 0 .../com/javacp/annot/LocalAnnotation.java | 0 .../com/javacp/annot/MacroAnnotation.java | 0 .../com/javacp/annot/MethodAnnotation.java | 0 .../com/javacp/annot/ObjectAnnotation.java | 0 .../com/javacp/annot/PackageAnnotation.java | 0 .../javacp/annot/PackageObjectAnnotation.java | 0 .../com/javacp/annot/ParameterAnnotation.java | 0 .../javacp/annot/SelfParameterAnnotation.java | 0 .../com/javacp/annot/TraitAnnotation.java | 0 .../com/javacp/annot/TypeAnnotation.java | 0 .../javacp/annot/TypeParameterAnnotation.java | 0 .../annot/usage/AnnotatedInterface.java | 0 .../javacp/annot/usage/AnnotatedPackage.java | 0 27 files changed, 18 insertions(+), 3 deletions(-) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/ClassSuffix.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/Coin.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/Interface.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/Logger.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/MetacJava.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/NonGeneric.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/Recursive.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/Test.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/annot/ClassAnnotation.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/annot/ConstructorAnnotation.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/annot/FieldAnnotation.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/annot/InterfaceAnnotation.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/annot/LocalAnnotation.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/annot/MacroAnnotation.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/annot/MethodAnnotation.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/annot/ObjectAnnotation.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/annot/PackageAnnotation.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/annot/PackageObjectAnnotation.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/annot/ParameterAnnotation.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/annot/SelfParameterAnnotation.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/annot/TraitAnnotation.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/annot/TypeAnnotation.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/annot/TypeParameterAnnotation.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/annot/usage/AnnotatedInterface.java (100%) rename {compiler/test-bootstrapped/dotty/tools/dotc/semanticdb => tests/semanticdb/javacp}/com/javacp/annot/usage/AnnotatedPackage.java (100%) diff --git a/compiler/test/dotty/tools/dotc/semanticdb/SemanticdbTests.scala b/compiler/test/dotty/tools/dotc/semanticdb/SemanticdbTests.scala index 8040be93f3b8..008b10acdabc 100644 --- a/compiler/test/dotty/tools/dotc/semanticdb/SemanticdbTests.scala +++ b/compiler/test/dotty/tools/dotc/semanticdb/SemanticdbTests.scala @@ -11,6 +11,8 @@ import scala.util.control.NonFatal import scala.collection.mutable import scala.jdk.CollectionConverters._ +import javax.tools.ToolProvider + import org.junit.Assert._ import org.junit.Test import org.junit.experimental.categories.Category @@ -25,11 +27,12 @@ import dotty.tools.dotc.util.SourceFile @Category(Array(classOf[BootstrappedOnlyTests])) class SemanticdbTests with + val javaFile = FileSystems.getDefault.getPathMatcher("glob:**.java") val scalaFile = FileSystems.getDefault.getPathMatcher("glob:**.scala") val expectFile = FileSystems.getDefault.getPathMatcher("glob:**.expect.scala") - // val semanticdbFile = FileSystems.getDefault.getPathMatcher("glob:**.scala.semanticdb") val rootSrc = Paths.get(System.getProperty("dotty.tools.dotc.semanticdb.test")) val expectSrc = rootSrc.resolve("expect") + val javaRoot = rootSrc.resolve("javacp") val metacExpectFile = rootSrc.resolve("metac.expect") @Category(Array(classOf[dotty.SlowTests])) @@ -87,8 +90,20 @@ class SemanticdbTests with require(files.nonEmpty, s"No input files! $expectSrc") files.toList + def javaFiles(): List[Path] = + val ls = Files.walk(javaRoot) + val files = + try ls.filter(p => javaFile.matches(p)).collect(Collectors.toList).asScala + finally ls.close() + require(files.nonEmpty, s"No input files! $expectSrc") + files.toList + def generateSemanticdb(): Path = val target = Files.createTempDirectory("semanticdb") + val javaArgs = Array("-d", target.toString) ++ javaFiles().map(_.toString) + val javac = ToolProvider.getSystemJavaCompiler + val exitJava = javac.run(null, null, null, javaArgs:_*) + assert(exitJava == 0, "java compiler has errors") val args = Array( "-Ysemanticdb", "-d", target.toString, @@ -97,7 +112,8 @@ class SemanticdbTests with // "-Ydebug-flags", // "-Xprint:extractSemanticDB", "-sourceroot", expectSrc.toString, - "-usejavacp", + "-classpath", target.toString, + "-usejavacp" ) ++ inputFiles().map(_.toString) val exit = Main.process(args) assertFalse(s"dotc errors: ${exit.errorCount}", exit.hasErrors) diff --git a/project/Build.scala b/project/Build.scala index fd3bc760c1ca..007d676506e6 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -271,7 +271,6 @@ object Build { // Settings used when compiling dotty with a non-bootstrapped dotty lazy val commonBootstrappedSettings = commonDottySettings ++ Seq( unmanagedSourceDirectories in Compile += baseDirectory.value / "src-bootstrapped", - unmanagedSourceDirectories in Test += baseDirectory.value / "test-bootstrapped", version := dottyVersion, scalaVersion := dottyNonBootstrappedVersion, diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/ClassSuffix.java b/tests/semanticdb/javacp/com/javacp/ClassSuffix.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/ClassSuffix.java rename to tests/semanticdb/javacp/com/javacp/ClassSuffix.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/Coin.java b/tests/semanticdb/javacp/com/javacp/Coin.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/Coin.java rename to tests/semanticdb/javacp/com/javacp/Coin.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/Interface.java b/tests/semanticdb/javacp/com/javacp/Interface.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/Interface.java rename to tests/semanticdb/javacp/com/javacp/Interface.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/Logger.java b/tests/semanticdb/javacp/com/javacp/Logger.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/Logger.java rename to tests/semanticdb/javacp/com/javacp/Logger.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/MetacJava.java b/tests/semanticdb/javacp/com/javacp/MetacJava.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/MetacJava.java rename to tests/semanticdb/javacp/com/javacp/MetacJava.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/NonGeneric.java b/tests/semanticdb/javacp/com/javacp/NonGeneric.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/NonGeneric.java rename to tests/semanticdb/javacp/com/javacp/NonGeneric.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/Recursive.java b/tests/semanticdb/javacp/com/javacp/Recursive.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/Recursive.java rename to tests/semanticdb/javacp/com/javacp/Recursive.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/Test.java b/tests/semanticdb/javacp/com/javacp/Test.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/Test.java rename to tests/semanticdb/javacp/com/javacp/Test.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/ClassAnnotation.java b/tests/semanticdb/javacp/com/javacp/annot/ClassAnnotation.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/ClassAnnotation.java rename to tests/semanticdb/javacp/com/javacp/annot/ClassAnnotation.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/ConstructorAnnotation.java b/tests/semanticdb/javacp/com/javacp/annot/ConstructorAnnotation.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/ConstructorAnnotation.java rename to tests/semanticdb/javacp/com/javacp/annot/ConstructorAnnotation.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/FieldAnnotation.java b/tests/semanticdb/javacp/com/javacp/annot/FieldAnnotation.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/FieldAnnotation.java rename to tests/semanticdb/javacp/com/javacp/annot/FieldAnnotation.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/InterfaceAnnotation.java b/tests/semanticdb/javacp/com/javacp/annot/InterfaceAnnotation.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/InterfaceAnnotation.java rename to tests/semanticdb/javacp/com/javacp/annot/InterfaceAnnotation.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/LocalAnnotation.java b/tests/semanticdb/javacp/com/javacp/annot/LocalAnnotation.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/LocalAnnotation.java rename to tests/semanticdb/javacp/com/javacp/annot/LocalAnnotation.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/MacroAnnotation.java b/tests/semanticdb/javacp/com/javacp/annot/MacroAnnotation.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/MacroAnnotation.java rename to tests/semanticdb/javacp/com/javacp/annot/MacroAnnotation.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/MethodAnnotation.java b/tests/semanticdb/javacp/com/javacp/annot/MethodAnnotation.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/MethodAnnotation.java rename to tests/semanticdb/javacp/com/javacp/annot/MethodAnnotation.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/ObjectAnnotation.java b/tests/semanticdb/javacp/com/javacp/annot/ObjectAnnotation.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/ObjectAnnotation.java rename to tests/semanticdb/javacp/com/javacp/annot/ObjectAnnotation.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/PackageAnnotation.java b/tests/semanticdb/javacp/com/javacp/annot/PackageAnnotation.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/PackageAnnotation.java rename to tests/semanticdb/javacp/com/javacp/annot/PackageAnnotation.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/PackageObjectAnnotation.java b/tests/semanticdb/javacp/com/javacp/annot/PackageObjectAnnotation.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/PackageObjectAnnotation.java rename to tests/semanticdb/javacp/com/javacp/annot/PackageObjectAnnotation.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/ParameterAnnotation.java b/tests/semanticdb/javacp/com/javacp/annot/ParameterAnnotation.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/ParameterAnnotation.java rename to tests/semanticdb/javacp/com/javacp/annot/ParameterAnnotation.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/SelfParameterAnnotation.java b/tests/semanticdb/javacp/com/javacp/annot/SelfParameterAnnotation.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/SelfParameterAnnotation.java rename to tests/semanticdb/javacp/com/javacp/annot/SelfParameterAnnotation.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/TraitAnnotation.java b/tests/semanticdb/javacp/com/javacp/annot/TraitAnnotation.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/TraitAnnotation.java rename to tests/semanticdb/javacp/com/javacp/annot/TraitAnnotation.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/TypeAnnotation.java b/tests/semanticdb/javacp/com/javacp/annot/TypeAnnotation.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/TypeAnnotation.java rename to tests/semanticdb/javacp/com/javacp/annot/TypeAnnotation.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/TypeParameterAnnotation.java b/tests/semanticdb/javacp/com/javacp/annot/TypeParameterAnnotation.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/TypeParameterAnnotation.java rename to tests/semanticdb/javacp/com/javacp/annot/TypeParameterAnnotation.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/usage/AnnotatedInterface.java b/tests/semanticdb/javacp/com/javacp/annot/usage/AnnotatedInterface.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/usage/AnnotatedInterface.java rename to tests/semanticdb/javacp/com/javacp/annot/usage/AnnotatedInterface.java diff --git a/compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/usage/AnnotatedPackage.java b/tests/semanticdb/javacp/com/javacp/annot/usage/AnnotatedPackage.java similarity index 100% rename from compiler/test-bootstrapped/dotty/tools/dotc/semanticdb/com/javacp/annot/usage/AnnotatedPackage.java rename to tests/semanticdb/javacp/com/javacp/annot/usage/AnnotatedPackage.java