Scala.reflect and Scala 3


#1

Porting from https://github.com/scala/scala/pull/6745.

@lrytz asks:

What’s going to happen to scala.reflect in Scala 3?

@odersky says in https://contributors.scala-lang.org/t/what-kinds-of-macros-should-scala-3-support/1850/14:

The future Scala 3 macro design is intended to replace the existing def macros and the scala.reflect infrastructure.

@smarter (who opened the PR) indicates:

I think it’s pretty clear that scala.reflect if it exists in Scala 3 won’t be recognizable since the current API exposes implementation details.

/cc @retronym from the thread too.


#2

Also, I’d like to note the context of the discussion: what to do with the deprecated Manifest and friends. Candidates are:

  • Removal?
  • Indefinite deprecation for the lifecycle of Scala 2 and removal in Scala 3?
  • Un-deprecation?
  • Other?

#3

Hmm. One data point: while I stopped using Manifest per se ages ago, I do use ClassTag extensively, to obtain the runtimeClass. Losing that would hurt – not irreplaceably, but the hassle would be considerable…


#4

ClassTag works in Dotty, it doesn’t depend on scala-reflect even though it’s in the scala.reflect namespace.