Skip to content

summonInline can't deduce summon, passed via type parameter [Regression] #11479

Closed
@rssh

Description

@rssh

Compiler version

3.0.0-RC1
Latest Dotty nightly build version: 3.0.0-RC2-bin-20210219-aa7c21e-NIGHTLY

Minimized code

fixe X.scala:

package x

import scala.concurrent.Future
import scala.quoted._
import scala.compiletime._

trait CpsMonad[F[_]]

given FutureCpsMonad:  CpsMonad[Future] with {}


class SLLoop[F[_]:CpsMonad]:

 inline def apply(inline pf: PartialFunction[Any,Boolean]): Unit =
    ${
      SLLoop.loopImpl[F]('pf, '{summonInline[CpsMonad[F]]})
    }


object SLLoop:

    def loopImpl[F[_]:Type](pf: Expr[PartialFunction[Any,Boolean]], m:Expr[CpsMonad[F]])(using Quotes): Expr[Unit] =
      println(s"loopImpl: ${pf}")
      '{ }

file Main.scala

package x

import scala.concurrent.Future

object Main:

  def main(args:Array[String]):Unit =
    SLLoop[Future].apply{
      case "AAA" => true
    }

Output

Latest Dotty nightly build version: 3.0.0-RC2-bin-20210219-aa7c21e-NIGHTLY
[info] loading settings for project root from build.sbt ...
[info] set current project to test (in build file:/Users/rssh/tests/dotty/summon-inline/)
[info] Executing in batch mode. For better performance use sbt's shell
[info] compiling 2 Scala sources to /Users/rssh/tests/dotty/summon-inline/target/scala-3.0.0-RC2/classes ...
[error] -- Error: /Users/rssh/tests/dotty/summon-inline/src/main/scala/x/Main.scala:8:24 
[error] 8 |    SLLoop[Future].apply{
[error]    |    ^
[error]    |    cannot reduce summonFrom with
[error]    |     patterns :  case t @ _:x.CpsMonad[concurrent.Future]
[error]    | This location contains code that was inlined from package.scala:144
[error]    | This location contains code that was inlined from X.scala:16
[error] 9 |      case "AAA" => true
[error] 10 |    }
[error] one error found
[error] one error found
[error] (Compile / compileIncremental) Compilation failed

Expectation

Should compile.
(it works in 3.0.0-M3)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions