Skip to content

NamedTuples: Error compiling macro that selects an argument #22863

@fede0664

Description

@fede0664

Compiler version

3.7.0-RC1

Minimized code

MacroNamedTuple.scala

//> using scala 3.7.0-RC1 //> using jvm temurin:23 import scala.quoted.* import scala.deriving.* object MacroNamedTuple: inline def tupleStringArg[T](t: T, arg: String) = ${tupleArg('t,'arg)} def tupleArg[T](t: Expr[T], arg: Expr[String])(using Quotes) = import quotes.reflect.* val sel = Select.unique(t.asTerm, arg.valueOrAbort) sel.asExprOf[String]

Example.scala

//> using scala 3.7.0-RC1 //> using jvm temurin:23 object Example: def main(args:Array[String]): Unit = val t = (name = "abc", v = 123) val str = MacroNamedTuple.tupleStringArg(t, "name") println(str)

Output

Running with:

scala-cli MacroNamedTuple.scala Example.scala 
[error] ./Example.scala:7:46 [error] value name is not a member of (name : String, v : Int) [error] val str = MacroNamedTuple.tupleStringArg(t, "name") 

Expectation

Should print "abc"
Changing Example to regular tuples works fine:

object Example: def main(args:Array[String]): Unit = val t = ("abc",123) val str = MacroNamedTuple.tupleStringArg(t, "_1") println(str)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions