-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Closed
Milestone
Description
Compiler version
3.0.2, 3.1.3, 3.2.2, 3.3.0-RC3
Minimized code
https://github.com/i10416/reproduce-missing-symbol-error-in-scala-3
The following code compiles in Scala 2.x, but won't compile in Scala 3.x for "Not found: type Foo".
src/main/java/Bar.java
package example;
import example.Foo$;
public class Bar {
// this compiles in Scala 2.x, but won't compile in Scala 3
private static final Foo$ MOD = Foo$.MODULE$;
}src/main/scala/Foo.scala
package example
case class Foo(i: Int)
object FooOutput
error] -- [E006] Not Found Error: /path/to/src/main/java/Bar.java:7:21
[error] 7 | private static final Foo$ MOD = Foo$.MODULE$;
[error] | ^^^^
[error] | Not found: type Foo
[error] |
Expectation
It should compile. Or is this expected behavior?
Note
It compiles in Scala 3 when you explicitly specify compileOrder := CompileOrder.ScalaThenJava. However, if there are both Scala code depending on Java and Java code depending Scala, you have no choice but CompileOrder.Mixed.
Notably, even if there are both Scala code depending on Java and Java code depending Scala, Scala 2.x can compile them (in CompileOrder.Mixed mode).
He-Pin