Skip to content

selectDynamic doesn't work with @targetName #18922

Closed
@hamzaremmal

Description

@hamzaremmal

Compiler version

3.3.1

Minimized code

import scala.annotation.targetName

class X extends scala.reflect.Selectable:
	@targetName("hello")
	val `+` = "1"

val x = X()
x.selectDynamic("+")

Output

java.lang.ExceptionInInitializerError
	at Main$.<clinit>(main.scala:14)
	at Main.main(main.scala)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at sbt.Run.invokeMain(Run.scala:144)
	at sbt.Run.execute$1(Run.scala:94)
	at sbt.Run.$anonfun$runWithLoader$5(Run.scala:121)
	at sbt.Run$.executeSuccess(Run.scala:187)
	at sbt.Run.runWithLoader(Run.scala:121)
	at sbt.Run.run(Run.scala:128)
	at com.olegych.scastie.sbtscastie.SbtScastiePlugin$$anon$1.$anonfun$run$1(SbtScastiePlugin.scala:38)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
	at sbt.util.InterfaceUtil$$anon$1.get(InterfaceUtil.scala:32)
	at sbt.ScastieTrapExit$App.run(ScastieTrapExit.scala:258)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.NoSuchMethodException: Playground$X.+()
	at java.base/java.lang.Class.getMethod(Class.java:2227)
	at scala.reflect.Selectable.applyDynamic(Selectable.scala:38)
	at scala.reflect.Selectable.applyDynamic$(Selectable.scala:11)
	at Playground$X.applyDynamic(main.scala:5)
	at scala.reflect.Selectable.selectDynamic(Selectable.scala:28)
	at scala.reflect.Selectable.selectDynamic$(Selectable.scala:11)
	at Playground$X.selectDynamic(main.scala:5)
	at Playground$.<clinit>(main.scala:10)
	... 17 more

Expectation

It should resolve to the correct field independently of the presence of the @targetName annotation

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions