Monocle icon indicating copy to clipboard operation
Monocle copied to clipboard

[Focus] Compilation fails in Scala 3 in nested case class/object

Open rpiaggio opened this issue 3 years ago • 0 comments

With Monocle 3.1.0,

class OpticsSuite extends DisciplineSuite {

  final case class Nested(a: Int)
  object Nested {
    val a: Lens[Nested, Int] = Focus[Nested](_.a)
  }
}

fails with

[error] -- Error: (...)/OpticsSuite.scala:37:44 
[error] 37 |    val a: Lens[Nested, Int] = Focus[Nested](_.a)
[error]    |                               ^^^^^^^^^^^^^^^^^^
[error]    |Exception occurred while executing macro expansion.
[error]    |java.lang.ClassCastException: class dotty.tools.dotc.ast.Trees$This cannot be cast to class dotty.tools.dotc.ast.Trees$RefTree (dotty.tools.dotc.ast.Trees$This and dotty.tools.dotc.ast.Trees$RefTree are in unnamed module of loader sbt.internal.classpath.ClassLoaderCache$Key$CachedClassLoader @7df31f1b)
[error]    |    at scala.quoted.runtime.impl.QuotesImpl.scala$quoted$runtime$impl$QuotesImpl$reflect$Ref$$$_$apply$$anonfun$6(QuotesImpl.scala:436)
[error]    |    at scala.quoted.runtime.impl.QuotesImpl$reflect$.scala$quoted$runtime$impl$QuotesImpl$reflect$$$withDefaultPos(QuotesImpl.scala:2904)
[error]    |    at scala.quoted.runtime.impl.QuotesImpl$reflect$Ref$.apply(QuotesImpl.scala:436)
[error]    |Testat scala.quoted.runtime.impl.QuotesImpl$reflect$Ref$.apply(QuotesImpl.scala:434)
[error]    |    at monocle.internal.focus.features.selectonlyfield.SelectOnlyFieldParser.getCompanionObject$$anonfun$1(SelectOnlyFieldParser.scala:36)
[error]    |    at scala.util.Either.map(Either.scala:382)
[error]    |    at monocle.internal.focus.features.selectonlyfield.SelectOnlyFieldParser.getCompanionObject(SelectOnlyFieldParser.scala:36)
[error]    |    at monocle.internal.focus.features.selectonlyfield.SelectOnlyFieldParser.getFieldAction$$anonfun$1(SelectOnlyFieldParser.scala:28)
[error]    |    at scala.util.Either.flatMap(Either.scala:352)
[error]    |    at monocle.internal.focus.features.selectonlyfield.SelectOnlyFieldParser.monocle$internal$focus$features$selectonlyfield$SelectOnlyFieldParser$$getFieldAction(SelectOnlyFieldParser.scala:30)
[error]    |    at monocle.internal.focus.features.selectonlyfield.SelectOnlyFieldParser$SelectOnlyField$.unapply(SelectOnlyFieldParser.scala:17)
[error]    |    at monocle.internal.focus.features.ParserLoop.loop$1(ParserLoop.scala:56)
[error]    |    at monocle.internal.focus.features.ParserLoop.parseFocusActions(ParserLoop.scala:64)
[error]    |    at monocle.internal.focus.features.ParserLoop.parseFocusActions$(ParserLoop.scala:27)
[error]    |    at monocle.internal.focus.FocusImpl.parseFocusActions(FocusImpl.scala:7)
[error]    |    at monocle.internal.focus.FocusImpl.$anonfun$1(FocusImpl.scala:20)
[error]    |    at scala.util.Either.flatMap(Either.scala:352)
[error]    |    at monocle.internal.focus.FocusImpl.run(FocusImpl.scala:22)
[error]    |    at monocle.internal.focus.FocusImpl$.apply(FocusImpl.scala:33)
[error]    |
[error]    |----------------------------------------------------------------------------
[error]    |Inline stack trace
[error]    |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[error]    |This location contains code that was inlined from Focus.scala:35
[error]     ----------------------------------------------------------------------------
[error] one error found

rpiaggio avatar Jul 29 '22 16:07 rpiaggio