Skip to content

Regression of forward-compatible separate compilation: "object internal does not have a member method erasedValue" #24135

@eed3si9n

Description

@eed3si9n

This was originally reported by @xuwei-k as sbt/sbt#8328

Compiler version

3.7.3

Minimized code

See
xuwei-k/contraband-sbt-2-error@198e5f2

build.sbt

enablePlugins(ContrabandPlugin)

project/build.properties

sbt.version=2.0.0-RC6

project/plugins.sbt

addSbtPlugin("org.scala-sbt" % "sbt-contraband" % "0.8.0")

Output

     while compiling: /home/runner/work/contraband-sbt-2-error/contraband-sbt-2-error/build.sbt
        during phase: MegaPhase{pruneErasedDefs, uninitialized, inlinePatterns, vcInlineMethods, seqLiterals, intercepted, getters, specializeFunctions, specializeTuples, collectNullableFields, elimOuterSelect, resolveSuper, functionXXLForwarders, paramForwarding, genericTuples, letOverApply, arrayConstructors}
                mode: Mode(ImplicitsEnabled)
     library version: version 2.13.16
    compiler version: version 3.7.3
dotty.tools.dotc.core.TypeError$$anon$1:
object internal does not have a member method erasedValue
  unhandled exception while running MegaPhase{pruneErasedDefs, uninitialized, inlinePatterns, vcInlineMethods, seqLiterals, intercepted, getters, specializeFunctions, specializeTuples, collectNullableFields, elimOuterSelect, resolveSuper, functionXXLForwarders, paramForwarding, genericTuples, letOverApply, arrayConstructors} on /home/runner/work/contraband-sbt-2-error/contraband-sbt-2-error/build.sbt

  An unhandled exception was thrown in the compiler.
  Please file a crash report here:
  https://github.com/scala/scala3/issues/new/choose
  For non-enriched exceptions, compile with -Xno-enrich-error-messages.


     while compiling: /home/runner/work/contraband-sbt-2-error/contraband-sbt-2-error/build.sbt
        during phase: MegaPhase{pruneErasedDefs, uninitialized, inlinePatterns, vcInlineMethods, seqLiterals, intercepted, getters, specializeFunctions, specializeTuples, collectNullableFields, elimOuterSelect, resolveSuper, functionXXLForwarders, paramForwarding, genericTuples, letOverApply, arrayConstructors}
                mode: Mode(ImplicitsEnabled)
     library version: version 2.13.16
    compiler version: version 3.7.3
dotty.tools.dotc.core.TypeError$$anon$1: object internal does not have a member method erasedValue
            settings: -classpath /home/runner/work/contraband-sbt-2-error/contraband-sbt-2-error/project/target/config-classes:/home/runner/work/contraband-sbt-2-error/contraband-sbt-2-error/target/out/jvm/scala-3.7.3/contraband-sbt-2-error-build/contraband-sbt-2-error-build_sbt2_3-0.1.0-SNAPSHOT.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-sbt/sbt-contraband_sbt2_3/0.8.0/sbt-contraband_sbt2_3-0.8.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-sbt/contraband_3/0.8.0/contraband_3-0.8.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala3-library_3/3.7.2/scala3-library_3-3.7.2.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/parboiled/parboiled_3/2.5.1/parboiled_3-2.5.1.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/eed3si9n/sjson-new-scalajson_3/0.10.0/sjson-new-scalajson_3-0.10.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.16/scala-library-2.13.16.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/eed3si9n/sjson-new-core_3/0.10.0/sjson-new-core_3-0.10.0.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/eed3si9n/shaded-scalajson_3/1.0.0-M4/shaded-scalajson_3-1.0.0-M4.jar:/home/runner/.cache/coursier/v1/https/repo1.maven.org/maven2/com/eed3si9n/shaded-jawn-parser_3/1.3.2/shaded-jawn-parser_3-1.3.2.jar:/home/runner/.sbt/boot/scala-3.7.3/lib/scala3-library_3-3.7.3.jar:/home/runner/.sbt/boot/scala-3.7.3/lib/scala3-interfaces-3.7.3.jar:/home/runner/.sbt/boot/scala-3.7.3/lib/scala-asm-9.8.0-scala-1.jar:/home/runner/.sbt/boot/scala-3.7.3/lib/scala-library.jar:/home/runner/.sbt/boot/scala-3.7.3/lib/scala3-compiler_3-3.7.3.jar:/home/runner/.sbt/boot/scala-3.7.3/lib/tasty-core_3-3.7.3.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/testing_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/compiler-interface-2.0.0-M9.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/zinc-core_3-2.0.0-M9.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/jline-reader-3.29.0.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/scala-xml_3-2.4.0.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/zinc-lm-integration_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/util-interface-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/scala3-library_3-3.7.3.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/scala3-interfaces-3.7.3.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/librarymanagement-ivy_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/scala-asm-9.8.0-scala-1.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/util-cache_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/jline-native-3.29.0.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/util-core_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/zinc-compile-core_3-2.0.0-M9.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/scala-library-2.13.16.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/jansi-2.4.1.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/sjson-new-core_3-0.14.0-M5.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/disruptor-3.4.2.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/librarymanagement-coursier_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/command_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/zinc-classfile_3-2.0.0-M9.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/jline-style-3.27.1.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/jsch-0.2.23.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/task-system_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/tasks_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/logic_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/main-settings_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/launcher-interface-1.5.1.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/jline-2.14.7-sbt-9a88bc413e2b34a4580c001c654d1a7f4f65bf18.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/util-logging_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/main_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/jna-5.12.0.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/file-tree-views-2.1.12.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/jline-builtins-3.27.1.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/actions_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/slf4j-api-1.7.28.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/completion_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/template-resolver-0.1.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/util-relation_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/shaded-scalajson_3-1.0.0-M4.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/zinc_3-2.0.0-M9.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/run_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/util-position_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/collections_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/sbinary_3-0.5.1.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/core-macros_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/io_3-1.10.5.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/scala-parallel-collections_3-1.2.0.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/scala3-compiler_3-3.7.3.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/ivy-2.3.0-sbt-77cc781d727b367d3761f097d89f5a4762771d41.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/sbt-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/caffeine-2.8.5.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/jline-terminal-3.29.0.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/ssl-config-core_3-0.6.1.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/checker-qual-3.4.1.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/gson-2.13.1.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/shaded-jawn-parser_3-1.3.2.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/zinc-classpath_3-2.0.0-M9.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/gigahorse-apache-http_3-0.9.3.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/sjson-new-murmurhash_3-0.14.0-M5.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/tasty-core_3-3.7.3.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/librarymanagement-core_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/sjson-new-scalajson_3-0.14.0-M5.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/ipcsocket-1.6.3.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/test-interface-1.0.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/gigahorse-core_3-0.9.3.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/protocol_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/jna-platform-5.12.0.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/zinc-apiinfo_3-2.0.0-M9.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/util-tracking_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/build-file_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/zinc-persist_3-2.0.0-M9.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/jline-terminal-jni-3.29.0.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/util-control_3-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/reactive-streams-1.0.3.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/error_prone_annotations-2.38.0.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/zero-allocation-hashing-0.16.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/shaded-apache-httpclient5-0.9.3.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/config-1.4.2.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/scala-parser-combinators_3-2.1.0.jar:/home/runner/.sbt/boot/scala-3.7.3/org.scala-sbt/sbt/2.0.0-RC6/worker-2.0.0-RC6.jar:/home/runner/.sbt/boot/scala-3.7.3/lib/jline-reader-3.29.0.jar:/home/runner/.sbt/boot/scala-3.7.3/lib/jline-native-3.29.0.jar:/home/runner/.sbt/boot/scala-3.7.3/lib/jline-terminal-3.29.0.jar:/home/runner/.sbt/boot/scala-3.7.3/lib/jline-terminal-jni-3.29.0.jar -d /home/runner/work/contraband-sbt-2-error/contraband-sbt-2-error/project/target/config-classes -deprecation true

[error] dotty.tools.dotc.core.TypeError$$anon$1: object internal does not have a member method erasedValue
[error] Use 'last' for the full log.
[warn] Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? (default: r)
[error] failed to connect to server

Expectation

Scala 3.7.3 can compile against the JARs produced by previous Scala 3.x.

Note

Yoshida-san also linked to #23447, which shows

  def erasedValue[T]: T = ???

being added to library/src/scala/caps/package.scala. In general is it safe to change the library code in the patch releases if we want to keep forward and binary compatibility during the patch releases?

Metadata

Metadata

Assignees

No one assigned

    Labels

    itype:bugstat:needs triageEvery issue needs to have an "area" and "itype" label

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions