ekrich / sconfig

Scala configuration library supporting HOCON for Scala, Java, Scala.js, and Scala Native
Other
118 stars 8 forks source link

Support Java 21 on Scala.js #398

Open ekrich opened 1 month ago

ekrich commented 1 month ago

Scala.js does not work for Scala 3.3.x. Classes extending java.util.SequencedCollection cause problems. Note that Scala Native has the class added although it is just a stub at this time.

Reproduce:

  1. Run Java 21
  2. sbt
  3. ++3.3.4
  4. Run sconfigJS/test or one of the testOnly seen below.

Example error:

[info] Fast optimizing /Users/eric/workspace/sconfig/sconfig/js/target/scala-3.3.3/sconfig-test-fastopt
[error] Referring to non-existent class java.util.SequencedCollection
[error]   called from org.ekrich.config.impl.SimpleConfigList
[error]   called from org.ekrich.config.impl.ConfigValueSharedTest.valuesToString()void
[error]   called from org.ekrich.config.impl.ConfigValueSharedTest$scalajs$junit$bootstrapper$.invokeTest(java.lang.Object,java.lang.String)scala.concurrent.Future
[error]   dispatched from org.scalajs.junit.Bootstrapper.invokeTest(java.lang.Object,java.lang.String)scala.concurrent.Future
[error]   called from private org.scalajs.junit.JUnitTask.$anonfun$executeTestMethod$7(org.scalajs.junit.Bootstrapper,java.lang.Object,org.scalajs.junit.TestMetadata)scala.concurrent.Future

Now running the newest code I get the same as below.

sbt:sconfig-root> sconfigJS/testOnly ConfigValueSharedTest
[warn] multiple main classes detected: run 'show discoveredMainClasses' to see the list
[info] Fast optimizing /Users/eric/workspace/sconfig/sconfig/js/target/scala-3.3.4/sconfig-test-fastopt
[error] Referring to non-existent class java.util.SequencedCollection
[error]   called from org.ekrich.config.impl.SimpleConfigList
[error]   called from org.ekrich.config.impl.DefaultTransformer$.transform(org.ekrich.config.impl.AbstractConfigValue,org.ekrich.config.ConfigValueType)org.ekrich.config.impl.AbstractConfigValue
[error]   called from private org.ekrich.config.impl.ConfigConcatenation$.join(java.util.ArrayList,org.ekrich.config.impl.AbstractConfigValue)void
[error]   called from private static org.ekrich.config.impl.ConfigConcatenation$.consolidate$$anonfun$2(java.util.ArrayList,org.ekrich.config.impl.AbstractConfigValue)java.lang.Object
ekrich commented 2 weeks ago

Another place it seems to occur.

https://github.com/ekrich/sconfig/blob/main/sconfig/shared/src/main/scala/org/ekrich/config/impl/DefaultTransformer.scala#L115-L119

sbt:sconfig-root> sconfigJS/testOnly ConfigFactoryTest
[warn] multiple main classes detected: run 'show discoveredMainClasses' to see the list
[info] Fast optimizing /Users/eric/workspace/sconfig/sconfig/js/target/scala-3.3.4/sconfig-test-fastopt
[error] Referring to non-existent class java.util.SequencedCollection
[error]   called from org.ekrich.config.impl.SimpleConfigList
[error]   called from org.ekrich.config.impl.DefaultTransformer$.transform(org.ekrich.config.impl.AbstractConfigValue,org.ekrich.config.ConfigValueType)org.ekrich.config.impl.AbstractConfigValue
[error]   called from private org.ekrich.config.impl.ConfigConcatenation$.join(java.util.ArrayList,org.ekrich.config.impl.AbstractConfigValue)void
[error]   called from private static org.ekrich.config.impl.ConfigConcatenation$.consolidate$$anonfun$2(java.util.ArrayList,org.ekrich.config.impl.AbstractConfigValue)java.lang.Object