Skip to content

Macro-related crash with -Ysafe-init for test class hierarchy #19649

Closed
@martin-ockajak

Description

@martin-ockajak

Compiler version

  • 3.3.2-RC2
  • 3.3.2-RC1
  • 3.3.1

The problem does not occur in the following compiler versions:

  • 3.3.0
  • 3.4.0-RC1
  • 3.4.0-RC4
  • 3.4.1-RC1-bin-20240201-95266f2-NIGHTLY

Compiler flags

-Ysafe-init

Minimized code

build.sbt

lazy val root = project.in(file(".")).settings(
  scalaVersion := "3.3.2-RC2",
  scalacOptions += "-Ysafe-init",
  libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.17"
)

AB.scala

trait A extends AnyFreeSpecLike:
  "" in {}

trait B extends A:
  val test = ()

C.scala (test)

class C extends B

Output (click arrow to expand)

[Internal error] unexpected tree

[error] /home/owner/safe-init-error/dotty/freespec/target/scala-3/src_managed/main/org/scalatest/freespec/AnyFreeSpecLike.scala: [Internal error] unexpected tree
[error] -> class C extends B    [ C.scala:1 ]
[error]    ^^^^^^^^^^^^^^^^^
[error] -> implicit inline def convertToFreeSpecStringWrapper(s: String):
[error]   AnyFreeSpecLike.this.FreeSpecStringWrapper =
[error]   {
[error]     ${
[error]       {
[error]         def $anonfun(using evidence$3: quoted.Quotes):
[error]           quoted.Expr[AnyFreeSpecLike.this.FreeSpecStringWrapper] =
[error]           org.scalactic.source.Position.withPosition[
[error]             AnyFreeSpecLike.this.FreeSpecStringWrapper](
[error]             '{
[error]               {
[error]                 def $anonfun(pos: org.scalactic.source.Position):
[error]                   AnyFreeSpecLike.this.FreeSpecStringWrapper =
[error]                   {
[error]                     new AnyFreeSpecLike.this.FreeSpecStringWrapper(s, pos)
[error]                   }
[error]                 closure($anonfun)
[error]               }
[error]             }.apply(evidence$3)
[error]           )(evidence$3,
[error]             quoted.Type.of[AnyFreeSpecLike.this.FreeSpecStringWrapper](
[error]               evidence$3)
[error]           )
[error]         closure($anonfun)
[error]       }
[error]     }
[error]   }:AnyFreeSpecLike.this.FreeSpecStringWrapper
[error] one error found

Reproduce

Unpack the attached archive and run the tests:

tar xfvz safe-init-error.tar.gz
cd safe-init-error
sbt test

safe-init-error.tar.gz

Note

Thanks for making a great compiler 😄 .

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions