diff --git a/internal/zinc-core/src/main/scala/sbt/internal/inc/Incremental.scala b/internal/zinc-core/src/main/scala/sbt/internal/inc/Incremental.scala index ef511be60..8e8f2b39c 100644 --- a/internal/zinc-core/src/main/scala/sbt/internal/inc/Incremental.scala +++ b/internal/zinc-core/src/main/scala/sbt/internal/inc/Incremental.scala @@ -1090,14 +1090,14 @@ private final class AnalysisCallback( override def dependencyPhaseCompleted(): Unit = { val incHandler = incHandlerOpt.getOrElse(sys.error("incHandler was expected")) - if (invalidationResults.isEmpty) { + if (earlyOutput.isDefined && invalidationResults.isEmpty) { val a = getAnalysis val CompileCycleResult(continue, invalidations, merged) = incHandler.mergeAndInvalidate(a, false) // Store invalidations and continuation decision; the analysis will be computed again after Analyze phase. invalidationResults = Some(CompileCycleResult(continue, invalidations, Analysis.empty)) // If there will be no more compilation cycles, store the early analysis file and update the pickle jar - if (earlyOutput.isDefined && !continue && lookup.shouldDoEarlyOutput(merged)) { + if (!continue && lookup.shouldDoEarlyOutput(merged)) { writeEarlyArtifacts(merged) } } diff --git a/zinc/src/sbt-test/source-dependencies/cyclic-dependency/A.scala b/zinc/src/sbt-test/source-dependencies/cyclic-dependency/A.scala new file mode 100644 index 000000000..436599e3c --- /dev/null +++ b/zinc/src/sbt-test/source-dependencies/cyclic-dependency/A.scala @@ -0,0 +1,13 @@ +/* + * Zinc - The incremental compiler for Scala. + * Copyright Scala Center, Lightbend, and Mark Harrah + * + * Licensed under Apache License 2.0 + * SPDX-License-Identifier: Apache-2.0 + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + +class A() extends ABase() + diff --git a/zinc/src/sbt-test/source-dependencies/cyclic-dependency/ABase.java b/zinc/src/sbt-test/source-dependencies/cyclic-dependency/ABase.java new file mode 100644 index 000000000..1b5de6e59 --- /dev/null +++ b/zinc/src/sbt-test/source-dependencies/cyclic-dependency/ABase.java @@ -0,0 +1,14 @@ +/* + * Zinc - The incremental compiler for Scala. + * Copyright Scala Center, Lightbend, and Mark Harrah + * + * Licensed under Apache License 2.0 + * SPDX-License-Identifier: Apache-2.0 + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + +public abstract class ABase { + H h; +} \ No newline at end of file diff --git a/zinc/src/sbt-test/source-dependencies/cyclic-dependency/H.scala b/zinc/src/sbt-test/source-dependencies/cyclic-dependency/H.scala new file mode 100644 index 000000000..e94157e9b --- /dev/null +++ b/zinc/src/sbt-test/source-dependencies/cyclic-dependency/H.scala @@ -0,0 +1,12 @@ +/* + * Zinc - The incremental compiler for Scala. + * Copyright Scala Center, Lightbend, and Mark Harrah + * + * Licensed under Apache License 2.0 + * SPDX-License-Identifier: Apache-2.0 + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + +class H() extends HBase() \ No newline at end of file diff --git a/zinc/src/sbt-test/source-dependencies/cyclic-dependency/HBase.java b/zinc/src/sbt-test/source-dependencies/cyclic-dependency/HBase.java new file mode 100644 index 000000000..318df9893 --- /dev/null +++ b/zinc/src/sbt-test/source-dependencies/cyclic-dependency/HBase.java @@ -0,0 +1,14 @@ +/* + * Zinc - The incremental compiler for Scala. + * Copyright Scala Center, Lightbend, and Mark Harrah + * + * Licensed under Apache License 2.0 + * SPDX-License-Identifier: Apache-2.0 + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + +public abstract class HBase { + A a; +} \ No newline at end of file diff --git a/zinc/src/sbt-test/source-dependencies/cyclic-dependency/changes/A.scala b/zinc/src/sbt-test/source-dependencies/cyclic-dependency/changes/A.scala new file mode 100644 index 000000000..8cc435b37 --- /dev/null +++ b/zinc/src/sbt-test/source-dependencies/cyclic-dependency/changes/A.scala @@ -0,0 +1,16 @@ +/* + * Zinc - The incremental compiler for Scala. + * Copyright Scala Center, Lightbend, and Mark Harrah + * + * Licensed under Apache License 2.0 + * SPDX-License-Identifier: Apache-2.0 + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + +class A() extends ABase() + + + +// random placeholder change \ No newline at end of file diff --git a/zinc/src/sbt-test/source-dependencies/cyclic-dependency/changes/ABase.java b/zinc/src/sbt-test/source-dependencies/cyclic-dependency/changes/ABase.java new file mode 100644 index 000000000..b23be5ce5 --- /dev/null +++ b/zinc/src/sbt-test/source-dependencies/cyclic-dependency/changes/ABase.java @@ -0,0 +1,16 @@ +/* + * Zinc - The incremental compiler for Scala. + * Copyright Scala Center, Lightbend, and Mark Harrah + * + * Licensed under Apache License 2.0 + * SPDX-License-Identifier: Apache-2.0 + * + * See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + */ + +public abstract class ABase { + H h; +} + +// Random changes to force recompilation \ No newline at end of file diff --git a/zinc/src/sbt-test/source-dependencies/cyclic-dependency/incOptions.properties b/zinc/src/sbt-test/source-dependencies/cyclic-dependency/incOptions.properties new file mode 100644 index 000000000..e7b9a57ec --- /dev/null +++ b/zinc/src/sbt-test/source-dependencies/cyclic-dependency/incOptions.properties @@ -0,0 +1 @@ +pipelining = false \ No newline at end of file diff --git a/zinc/src/sbt-test/source-dependencies/cyclic-dependency/test b/zinc/src/sbt-test/source-dependencies/cyclic-dependency/test new file mode 100644 index 000000000..542ad82ae --- /dev/null +++ b/zinc/src/sbt-test/source-dependencies/cyclic-dependency/test @@ -0,0 +1,6 @@ +> compile + +$ copy-file changes/ABase.java ABase.java +$ copy-file changes/A.scala A.scala + +> checkIterations 2 \ No newline at end of file