This is one of the divergence points between scala.reflect and scala.meta. The former has the Tree/TypeTree/Type separation, whereas the latter merges all three into one concept.
Some observations from my experience with scala.reflect:
Almost all newcomers need to be explained why the separation exists.
Trees and types are different ADT families, which means that stuff that works for trees doesn't work for types and vice versa.
Types throw away some syntactic information, which means that they can't be reliably converted back to trees.
Most importantly, types can't be manipulated using quasiquotes, so people have to learn additional APIs.
This is a very good question about user experience. I'd like to come back to it later, as it doesn't influence feasibility of the current approach, but more of a design choice.
This is one of the divergence points between scala.reflect and scala.meta. The former has the Tree/TypeTree/Type separation, whereas the latter merges all three into one concept.
Some observations from my experience with scala.reflect: