-
Notifications
You must be signed in to change notification settings - Fork 121
Open
Description
steps
- Set up a simple project (complete repro here) with two modules where one depends on the other, e.g.
val runtime = project
val tests = project
.dependsOn(runtime)
val root = project.in(file(".")).aggregate(runtime, tests)- Create a class/interface with the same name in both Java and Scala, differing by case sensitivity, in the
runtimemodule
- Try to refer to the Java one in the other module, from Java:
package com.demo.tests;
import com.demo.Middleware;
public class Demo {
public static void main(String[] args) {
Middleware mid = new Middleware() {
};
}
}- Hit compile:
[info] compiling 1 Java source to /Users/kubukoz/projects/zinc-hashes-repro/tests/target/scala-2.12/classes ...
[error] /Users/kubukoz/projects/zinc-hashes-repro/tests/src/main/java/com/demo/tests/Demo.java:2:16: cannot find symbol
[error] symbol: class Middleware
[error] location: package com.demo
[error] com.demo.Middleware
[error] ^
[error] /Users/kubukoz/projects/zinc-hashes-repro/tests/src/main/java/com/demo/tests/Demo.java:6:9: cannot find symbol
[error] symbol: class Middleware
[error] location: class com.demo.tests.Demo
[error] Middleware
[error] ^
[error] /Users/kubukoz/projects/zinc-hashes-repro/tests/src/main/java/com/demo/tests/Demo.java:6:30: cannot find symbol
[error] symbol: class Middleware
[error] location: class com.demo.tests.Demo
[error] Middleware
[error] ^
[error] (tests / Compile / compileIncremental) javac returned non-zero exit code
problem
- The above error is confusing
- After renaming one of the interfaces, the error doesn't go away until you run
clean
expectation
- A better error in the first place (this is likely a scalac/javac problem, I'm afraid)
cleanshould not be necessary to proceed after renaming one of the interfaces
notes
- I'm on macOS, which AFAIK uses a case-insensitive APFS file system by default.
- Saw similar results in Bloop and across Scala versions, which is why I thought Zinc was involved.
- I've also seen these, but I haven't managed to reproduce in an isolated scenario and I can't share the project due to NDAs:
[info] compiling 23 Scala sources and 41 Java sources to <redacted>/classes ...
[error] ## Exception when compiling 64 sources to <redacted>/classes
[error] java.lang.RuntimeException: Failed to find name hashes for <redacted>.Middleware
[error] scala.sys.package$.error(package.scala:30)
[error] sbt.internal.inc.AnalysisCallback.nameHashesForCompanions(Incremental.scala:1003)
[error] sbt.internal.inc.AnalysisCallback.analyzeClass(Incremental.scala:1010)
[error] sbt.internal.inc.AnalysisCallback.$anonfun$addProductsAndDeps$4(Incremental.scala:1033)
[error] scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:286)
[error] scala.collection.mutable.HashSet.foreach(HashSet.scala:79)
[error] scala.collection.TraversableLike.map(TraversableLike.scala:286)
[error] scala.collection.TraversableLike.map$(TraversableLike.scala:279)
[error] scala.collection.mutable.AbstractSet.scala$collection$SetLike$$super$map(Set.scala:50)
[error] scala.collection.SetLike.map(SetLike.scala:105)
[error] scala.collection.SetLike.map$(SetLike.scala:105)
[error] scala.collection.mutable.AbstractSet.map(Set.scala:50)
[error] sbt.internal.inc.AnalysisCallback.$anonfun$addProductsAndDeps$1(Incremental.scala:1033)
[error] scala.collection.TraversableOnce$folder$1.apply(TraversableOnce.scala:196)
[error] scala.collection.TraversableOnce$folder$1.apply(TraversableOnce.scala:194)
[error] scala.collection.Iterator.foreach(Iterator.scala:943)
[error] scala.collection.Iterator.foreach$(Iterator.scala:943)
[error] scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
[error] scala.collection.IterableLike.foreach(IterableLike.scala:74)
[error] scala.collection.IterableLike.foreach$(IterableLike.scala:73)
[error] scala.collection.AbstractIterable.foreach(Iterable.scala:56)
Metadata
Metadata
Assignees
Labels
No labels