TL;DR in theory IntelliJ's sbt compiler should not be working in Scala 2 because generatedNonLocalClass is not called, but in reality it does work, which might mean there is a bug (e.g. maybe assuming all classes are Local classes?)
Problem
it used to be the case that generatedNonLocalClass is called in "xsbt-analyzer" phase, which always runs when the bridge wraps the compiler - even if AnalysisCallback is disabled (enabled == false).
in https://github.com/sbt/zinc/pull/582 (in 2018) this call was moved to the "xsbt-api" phase, which only runs when the AnalysisCallback is enabled (enabled == true).
however it seems that perhaps classes that should be generatedNonLocalClass are actually being reported as generatedLocalClass - cc @lrytz, @vasilmkd and @Gedochao
this investigation is prompted by discussion on https://github.com/scala/scala3/issues/21179 where I raised the point that in theory Scala 3 copied the behaviour of Scala 2 by moving generatedNonLocalClass calls to ExtractAPI, but in practice it behaves differently
TL;DR in theory IntelliJ's sbt compiler should not be working in Scala 2 because
generatedNonLocalClass
is not called, but in reality it does work, which might mean there is a bug (e.g. maybe assuming all classes are Local classes?)Problem
it used to be the case that
generatedNonLocalClass
is called in"xsbt-analyzer"
phase, which always runs when the bridge wraps the compiler - even ifAnalysisCallback
is disabled (enabled == false
).in https://github.com/sbt/zinc/pull/582 (in 2018) this call was moved to the
"xsbt-api"
phase, which only runs when theAnalysisCallback
is enabled (enabled == true
).however it seems that perhaps classes that should be
generatedNonLocalClass
are actually being reported asgeneratedLocalClass
- cc @lrytz, @vasilmkd and @Gedochaothis investigation is prompted by discussion on https://github.com/scala/scala3/issues/21179 where I raised the point that in theory Scala 3 copied the behaviour of Scala 2 by moving
generatedNonLocalClass
calls to ExtractAPI, but in practice it behaves differently