README.md
scala-macro-tools
CI | Codecov |
---|---|
Scaladex | Maven Central | Jetbrains Plugin |
---|---|---|
Motivation
Learn Scala macro and abstract syntax tree.
The project is currently experimental
Environment
- Compile passed in Java 8、11
- Compile passed in Scala 2.11.12、2.12.14、2.13.6
Module Features
core
@toString
@json
@builder
@log
@apply
@constructor
@equalsAndHashCode
@jacksonEnum
@elapsed
@javaCompatible
ProcessorCreator
The intellij plugin named
Scala-Macro-Tools
in marketplace.
cacheable
-
@cacheable
/Cache.apply
-
@cacheEvict
/Cache.evict
Document
How to use
Add library dependency
"org.bitlap" %% "smt-tools" % "<VERSION>" // named smt-tools since 0.4.0
"org.bitlap" %% "smt-cacheable" % "<VERSION>" // when you need cacheable module, not support 2.11.x
The artefacts have been uploaded to Maven Central. Importing the library into your build system (e.g gradle, sbt), is not enough. You need to follow an extra step.
Scala 2.11 | Scala 2.12 | Scala 2.13 |
---|---|---|
Import macro paradise plugin | Import macro paradise plugin | Enable compiler flag -Ymacro-annotations required |
addCompilerPlugin("org.scalamacros" % "paradise_<your-scala-version>" % "<plugin-version>")
Where <your-scala-version>
must be the full scala version. For example 2.12.13, and not 2.12.
If that doesn't work, google for alternatives.
In version scala2.13.x
, the functionality of macro paradise has been included in the scala compiler directly. However,
you must still enable the compiler flag -Ymacro-annotations
.