I added the following section to the post to summarize the relationship between ScalaMeta and Scala 3 macros.
Meta Programming in the Large
The future Scala 3 macro design is intended to replace the existing def macros and the scala.reflect
infrastructure. But there is another meta programming system that is quite complementary to it: Scalameta provides high-quality syntactic and semantic analysis and code generation tools which are separate from the Scala compiler. As the name implies, Scalameta is run at the meta level, that is, it takes programs as input and produces syntactic or semantic information or rewritten programs as output. A macro system, by contrast, is integrated in the language and expands programs as they are compiled. There are potential synergies between the two projects. To name but two possibilities:
- Scalameta or projects derived from it such as SemanticDB could obtain type information directly from Tasty, which would make them independent from specific compilers.
- IDEs could use Tasty for single projects but refer to SemanticDB for more complicated multi-project and multi-language builds.