diff --git a/compiler/src/dotty/tools/dotc/core/MacroClassLoader.scala b/compiler/src/dotty/tools/dotc/core/MacroClassLoader.scala index cbddcbaa6f05..86f4f7a7c7a6 100644 --- a/compiler/src/dotty/tools/dotc/core/MacroClassLoader.scala +++ b/compiler/src/dotty/tools/dotc/core/MacroClassLoader.scala @@ -21,6 +21,7 @@ object MacroClassLoader { private def makeMacroClassLoader(implicit ctx: Context): ClassLoader = trace("new macro class loader") { val urls = ctx.settings.classpath.value.split(java.io.File.pathSeparatorChar).map(cp => java.nio.file.Paths.get(cp).toUri.toURL) - new java.net.URLClassLoader(urls, getClass.getClassLoader) + val out = ctx.settings.outputDir.value.jpath.toUri.toURL // to find classes in case of suspended compilation + new java.net.URLClassLoader(urls :+ out, getClass.getClassLoader) } } diff --git a/project/scripts/cmdTests b/project/scripts/cmdTests index 79aa4a14ceeb..5ed0d4f578af 100755 --- a/project/scripts/cmdTests +++ b/project/scripts/cmdTests @@ -37,6 +37,10 @@ clear_out "$OUT" "$SBT" ";dotc -d $OUT/out.jar $SOURCE; dotc -decompile -classpath $OUT/out.jar -color:never $MAIN" > "$tmp" grep -qe "def main(args: scala.Array\[scala.Predef.String\]): scala.Unit =" "$tmp" +echo "testing sbt dotc with suspension" +clear_out "$OUT" +"$SBT" "dotc -d $OUT/out.jar tests/pos-macros/macros-in-same-project-1/Bar.scala tests/pos-macros/macros-in-same-project-1/Foo.scala" > "$tmp" + # check that missing source file does not crash message rendering echo "testing that missing source file does not crash message rendering" clear_out "$OUT"