Skip to content

Conversation

@bjaglin
Copy link
Collaborator

@bjaglin bjaglin commented Nov 21, 2025

https://contributors.scala-lang.org/t/scala-3-8-0-release-thread/7291

[info] CliSemanticSuite:
[info] - -P:semanticdb:include *** FAILED *** (153 milliseconds)
[info]   MissingSemanticdbError=8 did not equal Ok=0 error: SemanticDB not found: scalafix-tests/input/src/main/IgnoreMe.scala (BaseCliSuite.scala:193)
[info] - -P:semanticdb:exclude *** FAILED *** (112 milliseconds)
[info]   MissingSemanticdbError=8 did not equal Ok=0 error: SemanticDB not found: scalafix-tests/input/src/main/IgnoreMe.scala (BaseCliSuite.scala:193)
[info] SymbolInformationSuite:
[info] - java/lang/System#lineSeparator(). (124 milliseconds)
[info] - scala/Predef.assert(). *** FAILED *** (4 milliseconds)
[info]   java.util.NoSuchElementException: None.get
[info]   at scala.None$.get(Option.scala:629)
[info]   at scala.None$.get(Option.scala:629)
[info]   at scalafix.tests.v1.SymbolInformationSuite.testFun$proxy1$1(SymbolInformationSuite.scala:20)
[info]   at scalafix.tests.v1.SymbolInformationSuite.checkSyntax$$anonfun$1(SymbolInformationSuite.scala:22)
[info]   at org.scalatest.Transformer.apply$$anonfun$1(Transformer.scala:22)
[info]   at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
[info]   at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:31)
[info]   at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
[info]   at org.scalatest.Transformer.apply(Transformer.scala:22)
[info]   at org.scalatest.Transformer.apply(Transformer.scala:21)

with:
apps: sbt
jvm: temurin:8
jvm: temurin:17 # TODO: confirm we emit java 8 bytecode scala <3.8
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️

@bjaglin
Copy link
Collaborator Author

bjaglin commented Dec 10, 2025

Investigating

[error] java.lang.NoSuchMethodError: 'int scala.util.hashing.MurmurHash3.scala$util$hashing$MurmurHash3$$avalanche(int)'
[error] 	at scala.reflect.internal.Types$TypeRef.computeHashCode(Types.scala:2413)
[error] 	at scala.reflect.internal.Types$UniqueType.<init>(Types.scala:1074)
[error] 	at scala.reflect.internal.Types$TypeRef.<init>(Types.scala:2352)
[error] 	at scala.reflect.internal.Types$NoArgsTypeRef.<init>(Types.scala:2150)
[error] 	at scala.reflect.internal.Types$ModuleTypeRef.<init>(Types.scala:2113)
[error] 	at scala.reflect.internal.Types$PackageTypeRef.<init>(Types.scala:2138)
[error] 	at scala.reflect.internal.Types$TypeRef$.apply(Types.scala:2753)
[error] 	at scala.reflect.internal.Types.typeRef(Types.scala:4078)
[error] 	at scala.reflect.internal.Types.typeRef$(Types.scala:4061)
[error] 	at scala.reflect.internal.Symbols$TypeSymbol.newTypeRef(Symbols.scala:3223)
[error] 	at scala.reflect.internal.Symbols$TypeSymbol.updateTypeCache(Symbols.scala:3276)
[error] 	at scala.reflect.internal.Symbols$TypeSymbol.maybeUpdateTypeCache(Symbols.scala:3262)
[error] 	at scala.reflect.internal.Symbols$TypeSymbol.tpe_$times(Symbols.scala:3240)
[error] 	at scala.reflect.internal.Mirrors$RootsBase.init(Mirrors.scala:253)
[error] 	at scala.tools.nsc.Global.rootMirror$lzycompute(Global.scala:75)
[error] 	at scala.tools.nsc.Global.rootMirror(Global.scala:73)
[error] 	at scala.tools.nsc.Global.rootMirror(Global.scala:45)
[error] 	at scala.reflect.internal.Definitions$DefinitionsClass.ObjectClass$lzycompute(Definitions.scala:295)
[error] 	at scala.reflect.internal.Definitions$DefinitionsClass.ObjectClass(Definitions.scala:295)
[error] 	at scala.reflect.internal.Definitions$DefinitionsClass.init(Definitions.scala:1681)
[error] 	at scala.tools.nsc.Global$Run.<init>(Global.scala:1258)
[error] 	at scalafix.internal.reflect.RuleCompiler.compile(RuleCompiler.scala:42)

https://github.com/scala/scala/blob/41f6cfcd4b05298c59fc375c27b21eaea8e09653/src/library/scala/util/hashing/MurmurHash3.scala#L39-L43

https://github.com/scala/scala3/blob/ba4587574519c8a80c07504e53a9157815a69503/library/src/scala/util/hashing/MurmurHash3.scala#L40-L44

➜  javap -classpath $(cs fetch --intransitive org.scala-lang:scala-reflect:2.13.18) -c -p 'scala.reflect.internal.Types$TypeRef' | grep 'MurmurHash3$$avalanche' -C 2
        81: iload_2
        82: ixor
        83: invokevirtual #401                // Method scala/util/hashing/MurmurHash3.scala$util$hashing$MurmurHash3$$avalanche:(I)I
        86: ireturn

➜  javap -classpath $(cs fetch --intransitive org.scala-lang:scala-library:2.13.18) -c -p 'scala.util.hashing.MurmurHash3' | grep 'public.*avalanche' -C 2
         7: ireturn

  public final int scala$util$hashing$MurmurHash3$$avalanche(int);
    Code:
         0: iload_1
➜  javap -classpath $(cs fetch --intransitive org.scala-lang:scala-library:3.8.0-RC3) -c -p 'scala.util.hashing.MurmurHash3' | grep 'public.*avalanche' -C 2
➜ 

I assume the scala3 compiler handles differently private methods...

@tgodzik is that expected, in which case we'll have to workaround the compilation classpath for scalafix-reflect, or should I open a ticket against scala/scala3?

@bjaglin
Copy link
Collaborator Author

bjaglin commented Dec 10, 2025

I can't reproduce, probably because scala-reflect is built with some inlining flag

➜ cat Test.scala
object Test extends App {
  println(scala.util.hashing.MurmurHash3.finalizeHash(1,2))
}
➜ scala-cli --power package Test.scala -S 2.13.18 --library -o app.jar
Wrote /private/tmp/test/app.jar
➜ scala-cli app.jar -S 3.8.0-RC3 --main-class Test
-2047822809

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant