Skip to content

Scala 3 Derive Macro Compiler Error #905

@PsyfireX

Description

@PsyfireX

Dependencies:


scalaVersion := "3.1.3"

libraryDependencies ++= Seq(
      "org.sangria-graphql"  %% "sangria"             % "3.3.0-RC1",
      "org.sangria-graphql"  %% "sangria-circe"       % "1.3.2",
      "io.circe"             %% "circe-parser"        % "0.14.2",
      "io.circe"             %% "circe-generic"       % "0.14.2",
    )

Code:

import sangria.schema.ObjectType
import scala.concurrent.Future
import sangria.schema.InputObjectType

case class Ctx(ctx: String)

object PostSchema {
  import sangria.marshalling.circe._
  import io.circe.generic.auto._
  import sangria.macros.derive._

  case class UpdatePostGql() {
    @GraphQLField
    def text(text: TextInputGql): Future[String] = ???
  }

  object UpdatePostGql{
    implicit val _ot: ObjectType[Ctx, UpdatePostGql] =
      deriveObjectType[Ctx, UpdatePostGql](
        ObjectTypeName("UpdatePost")
      )
  }

  case class TextInputGql(text: String)

  object TextInputGql{
    implicit val _it: InputObjectType[TextInputGql] =
      deriveInputObjectType[TextInputGql](
        InputObjectTypeName("TextInput")
      )
  }
}

Error:

[error] -- Error: {path}\src\main\scala\PostSchema.scala:35:42
[error] 35 |      deriveObjectType[Ctx, UpdatePostGql](
[error]    |      ^
[error]    |Exception occurred while executing macro expansion.
[error]    |scala.MatchError: OrType(AndType(TypeRef(ThisType(TypeRef(ThisType(TypeRef(NoPrefix,module class schema)),module class PostSchema$)),class TextInputGql),AppliedType(TypeRef(TermRef(TermRef(ThisType(TypeRef(NoPrefix,module class sangria)),object util),tag),type Tagged),List(TypeRef(TermRef(TermRef(ThisType(TypeRef(NoPrefix,module class sangria)),object marshalling),FromInput),InputObjectResult)))),TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class <root>)),object scala),Null)) (of class dotty.tools.dotc.core.Types$CachedOrType)
[error]    |    at dotty.tools.dotc.transform.TypeUtils$.companionRef(TypeUtils.scala:91)
[error]    |    at dotty.tools.dotc.typer.Synthesizer.companionPath(Synthesizer.scala:252)
[error]    |    at dotty.tools.dotc.typer.Synthesizer.productMirror(Synthesizer.scala:311)
[error]    |    at dotty.tools.dotc.typer.Synthesizer.$init$$$anonfun$6$$anonfun$1$$anonfun$1$$anonfun$1(Synthesizer.scala:396)
[error]    |    at dotty.tools.dotc.typer.Synthesizer.makeMirror(Synthesizer.scala:388)
[error]    |    at dotty.tools.dotc.typer.Synthesizer.$init$$$anonfun$6$$anonfun$1(Synthesizer.scala:396)
[error]    |    at dotty.tools.dotc.typer.Synthesizer.$init$$$anonfun$8$$anonfun$1(Synthesizer.scala:413)
[error]    |    at dotty.tools.dotc.typer.Synthesizer.recur$1(Synthesizer.scala:556)
[error]    |    at dotty.tools.dotc.typer.Synthesizer.tryAll(Synthesizer.scala:561)
[error]    |    at dotty.tools.dotc.typer.Implicits.inferImplicitArg(Implicits.scala:857)
[error]    |    at dotty.tools.dotc.typer.Implicits.inferImplicitArg$(Implicits.scala:785)
[error]    |    at dotty.tools.dotc.typer.Typer.inferImplicitArg(Typer.scala:117)
[error]    |    at dotty.tools.dotc.typer.Typer.implicitArgs$1(Typer.scala:3451)
[error]    |    at dotty.tools.dotc.typer.Typer.addImplicitArgs$1(Typer.scala:3487)
[error]    |    at dotty.tools.dotc.typer.Typer.adaptNoArgsImplicitMethod$1(Typer.scala:3563)
[error]    |    at dotty.tools.dotc.typer.Typer.adaptNoArgs$1(Typer.scala:3761)
[error]    |    at dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3995)
[error]    |    at dotty.tools.dotc.typer.Typer.adapt(Typer.scala:3329)
[error]    |    at dotty.tools.dotc.typer.Typer.readapt$1(Typer.scala:3340)
[error]    |    at dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3982)
[error]    |    at dotty.tools.dotc.typer.Typer.adapt(Typer.scala:3329)
[error]    |    at dotty.tools.dotc.typer.Implicits.typedImplicit(Implicits.scala:1053)
[error]    |    at dotty.tools.dotc.typer.Implicits.typedImplicit$(Implicits.scala:785)
[error]    |    at dotty.tools.dotc.typer.Typer.typedImplicit(Typer.scala:117)
[error]    |    at dotty.tools.dotc.typer.Implicits$ImplicitSearch.tryImplicit(Implicits.scala:1173)
[error]    |    at dotty.tools.dotc.typer.Implicits$ImplicitSearch.rank$1(Implicits.scala:1272)
[error]    |    at dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1442)
[error]    |    at dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1470)
[error]    |    at dotty.tools.dotc.typer.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1503)
[error]    |    at dotty.tools.dotc.typer.Implicits.inferImplicit(Implicits.scala:997)
[error]    |    at dotty.tools.dotc.typer.Implicits.inferImplicit$(Implicits.scala:785)
[error]    |    at dotty.tools.dotc.typer.Typer.inferImplicit(Typer.scala:117)
[error]    |    at dotty.tools.dotc.typer.Implicits.inferImplicitArg(Implicits.scala:851)
[error]    |    at dotty.tools.dotc.typer.Implicits.inferImplicitArg$(Implicits.scala:785)
[error]    |    at dotty.tools.dotc.typer.Typer.inferImplicitArg(Typer.scala:117)
[error]    |    at dotty.tools.dotc.typer.Typer.implicitArgs$1(Typer.scala:3451)
[error]    |    at dotty.tools.dotc.typer.Typer.addImplicitArgs$1(Typer.scala:3487)
[error]    |    at dotty.tools.dotc.typer.Typer.adaptNoArgsImplicitMethod$1(Typer.scala:3563)
[error]    |    at dotty.tools.dotc.typer.Typer.adaptNoArgs$1(Typer.scala:3761)
[error]    |    at dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3995)
[error]    |    at dotty.tools.dotc.typer.Typer.adapt(Typer.scala:3329)
[error]    |    at dotty.tools.dotc.typer.Typer.readapt$1(Typer.scala:3340)
[error]    |    at dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3982)
[error]    |    at dotty.tools.dotc.typer.Typer.adapt(Typer.scala:3329)
[error]    |    at dotty.tools.dotc.typer.Implicits.typedImplicit(Implicits.scala:1053)
[error]    |    at dotty.tools.dotc.typer.Implicits.typedImplicit$(Implicits.scala:785)
[error]    |    at dotty.tools.dotc.typer.Typer.typedImplicit(Typer.scala:117)
[error]    |    at dotty.tools.dotc.typer.Implicits$ImplicitSearch.tryImplicit(Implicits.scala:1173)
[error]    |    at dotty.tools.dotc.typer.Implicits$ImplicitSearch.rank$1(Implicits.scala:1272)
[error]    |    at dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1442)
[error]    |    at dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1470)
[error]    |    at dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1478)
[error]    |    at dotty.tools.dotc.typer.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1503)
[error]    |    at dotty.tools.dotc.typer.Implicits.inferImplicit(Implicits.scala:997)
[error]    |    at dotty.tools.dotc.typer.Implicits.inferImplicit$(Implicits.scala:785)
[error]    |    at dotty.tools.dotc.typer.Typer.inferImplicit(Typer.scala:117)
[error]    |    at dotty.tools.dotc.typer.Implicits.inferImplicitArg(Implicits.scala:851)
[error]    |    at dotty.tools.dotc.typer.Implicits.inferImplicitArg$(Implicits.scala:785)
[error]    |    at dotty.tools.dotc.typer.Typer.inferImplicitArg(Typer.scala:117)
[error]    |    at dotty.tools.dotc.typer.Typer.implicitArgs$1(Typer.scala:3451)
[error]    |    at dotty.tools.dotc.typer.Typer.addImplicitArgs$1(Typer.scala:3487)
[error]    |    at dotty.tools.dotc.typer.Typer.adaptNoArgsImplicitMethod$1(Typer.scala:3563)
[error]    |    at dotty.tools.dotc.typer.Typer.adaptNoArgs$1(Typer.scala:3761)
[error]    |    at dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3995)
[error]    |    at dotty.tools.dotc.typer.Typer.adapt(Typer.scala:3329)
[error]    |    at dotty.tools.dotc.typer.Typer.readapt$1(Typer.scala:3340)
[error]    |    at dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3982)
[error]    |    at dotty.tools.dotc.typer.Typer.adapt(Typer.scala:3329)
[error]    |    at dotty.tools.dotc.typer.Implicits.typedImplicit(Implicits.scala:1053)
[error]    |    at dotty.tools.dotc.typer.Implicits.typedImplicit$(Implicits.scala:785)
[error]    |    at dotty.tools.dotc.typer.Typer.typedImplicit(Typer.scala:117)
[error]    |    at dotty.tools.dotc.typer.Implicits$ImplicitSearch.tryImplicit(Implicits.scala:1173)
[error]    |    at dotty.tools.dotc.typer.Implicits$ImplicitSearch.rank$1(Implicits.scala:1272)
[error]    |    at dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1442)
[error]    |    at dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicit(Implicits.scala:1470)
[error]    |    at dotty.tools.dotc.typer.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1503)
[error]    |    at dotty.tools.dotc.typer.Implicits.inferImplicit(Implicits.scala:997)
[error]    |    at dotty.tools.dotc.typer.Implicits.inferImplicit$(Implicits.scala:785)
[error]    |    at dotty.tools.dotc.typer.Typer.inferImplicit(Typer.scala:117)
[error]    |    at dotty.tools.dotc.typer.Implicits.inferImplicitArg(Implicits.scala:851)
[error]    |    at dotty.tools.dotc.typer.Implicits.inferImplicitArg$(Implicits.scala:785)
[error]    |    at dotty.tools.dotc.typer.Typer.inferImplicitArg(Typer.scala:117)
[error]    |    at scala.quoted.runtime.impl.QuotesImpl$reflect$Implicits$.search(QuotesImpl.scala:2396)
[error]    |    at scala.quoted.runtime.impl.QuotesImpl$reflect$Implicits$.search(QuotesImpl.scala:2395)
[error]    |    at scala.quoted.Expr$.summon(Expr.scala:232)
[error]    |    at sangria.macros.derive.DeriveObjectTypeMacro.createArg(DeriveObjectTypeMacro.scala:429)
[error]    |    at sangria.macros.derive.DeriveObjectTypeMacro.$anonfun$237$$anonfun$1(DeriveObjectTypeMacro.scala:299)
[error]    |    at scala.collection.immutable.List.map(List.scala:246)
[error]    |    at sangria.macros.derive.DeriveObjectTypeMacro.$anonfun$237(DeriveObjectTypeMacro.scala:299)
[error]    |    at scala.collection.immutable.List.map(List.scala:246)
[error]    |    at sangria.macros.derive.DeriveObjectTypeMacro.fieldWithArguments(DeriveObjectTypeMacro.scala:299)
[error]    |    at sangria.macros.derive.DeriveObjectTypeMacro.$anonfun$228(DeriveObjectTypeMacro.scala:171)
[error]    |    at scala.collection.immutable.List.map(List.scala:246)
[error]    |    at sangria.macros.derive.DeriveObjectTypeMacro.collectFields(DeriveObjectTypeMacro.scala:254)
[error]    |    at sangria.macros.derive.DeriveObjectTypeMacro.deriveObjectType(DeriveObjectTypeMacro.scala:72)
[error]    |    at sangria.macros.derive.DeriveObjectTypeMacro$.deriveNormalObjectType(DeriveObjectTypeMacro.scala:45)
[error]    |
[error] 36 |        ObjectTypeName("UpdatePost")
[error] 37 |      )
[error]    |----------------------------------------------------------------------------
[error]    |Inline stack trace
[error]    |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[error]    |This location contains code that was inlined from package.scala:14
[error]     ----------------------------------------------------------------------------
[error] one error found

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions