This release switches from storing generated classes and source files in-memory to temporary directories. This should fix longstanding issues with classes and source files generated by processors being inaccessible.
This change is expected to be non-breaking. However, it represents a significant change to the underlying architecture.
- Add
@Generation
annotation - Change underlying architecture to use temporary directories instead of in-memory file representations.
- Fix test classes that contain only parameterized tests wrongly using a compiler from a previous test class.
This release fixes an issue with shaded artifacts not being deployed to Maven.
This release focuses on providing facilities for creating more precise and detailed diagnostic messages.
Note that Satsifactory
still remains on 1.1.2
as it is not ready for a stable release yet.
This release contains breaking changes that overhaul how elements are retrieved in tests. It also provides first-class parameterized test support and JDK9 modules support.
Please read migrating to Elementary 2 for more information.
- Add
Compiler.module(...)
- Change
@Case
to@Label
- Change
Cases
toLabels
- Change
Tools.cases()
toToolsExtension.labels()
- Change
Compiler
's classpath related methods to add to the classpath rather than set the classpath - Change
DaemonCompiler.Environment.cases
toDaemonCompiler.Environment.labels
- Change
DaemonCompiler.of(Class<?>)
to process the given class's module if the module is named - Remove
DaemonCompiler.of(AnnotatedConstruct)
- Remove
DaemonCompiler.of(List<JavaFileObject>)
- Add
com.karuslabs.utilitary.snippet
- Add
AnnotationValuePrinter
- Add
Logger.error(Element, AnnotationMirror, Object)
- Add
Logger.warn(Element, AnnotationMirror, Object)
- Add
Logger.note(Element, AnnotationMirror, Object)
- Change
Logger.error(Element, String)
toLogger.error(Element, Object)
- Change
Logger.warn(Element, String)
toLogger.warn(Element, Object)
- Change
Logger.note(Element, String)
toLogger.note(Element, Object)
- Change
Source
to always append a newline using\n
instead of the system's line separator - using the system's line separator was a terrible mistake - Change
TypeMirrors.element(TypeMirror)
toTypeMirrors.asTypeElement(TypeMirror)
- Change
TypePrinter.SIMPLE
toTypePrinter.simple()
- Change
TypePrinter.QUALIFIED
toTypePrinter.qualified()
- Change
Walker.specializedAncestor(TypeMirrors)
toWalker.ancestor(TypeMirrors)
- Fix
TypeMirrors.is(TypeMirror, Class)
always returning false on primitive types - Fix
TypePrinter
throwing a StackOverflowError on circular type parameters - Remove
com.karuslabs.annotations
dependency - annnotation is now compiled agaisnt JDK 16 - Remove
Names
- Remove
Logger.error(Element, Object, String, String)
- Remove
Logger.error(Element, Object, String)
- Remove
Logger.warn(Element, Object, String, String)
- Remove
Logger.warn(Element, Object, String)
- Remove
Logger.note(Element, Object, String, String)
- Remove
Logger.note(Element, Object, String)
- Remove
Texts.quote(String)
- Remove
Walker.erasuredAncestor(TypeMirrors)
- Erasured ancestors is subtlely flawed since a Collection will be an ancestor of a List
This is a hotfix for a few issues.
- Change
DaemonCompiler.run(...)
's diagnostic message to better explain java crashes - Fix cyclic dependency between Elementary and Utilitary
- Fix
MemoryFileManager
not encoding URLs, causing modules to not compile
This is a hotfix for a few issues.
- Fix
Results
returning empty generated files
This release focuses on fixing a few pesky issues.
- Fix source jars not being uploaded to the maven repository
- Change
Labels.label(String)
toLabels.get(String)
, the inconsistency betweenLabels.label(String)
andLabels.get(int)
was driving me nuts
- Fix
EqualTimeSequence
not comparing sequences properly
- Add
Walker.erasuredAncestor(TypeMirrors)
- Change
Walker.ancestor(TypeMirrors)
toWalker.specializedAncestor(TypeMirrors)
This release focuses on improving the quality of life for labels.
- Add
Labels.labels()
- Change
Labels.get(String)
toLabels.label(String)
- Change
Labels.list()
toLabels.all()
- Change
@Case
annotation to use the annotated target's name if available as its label by default - Fix missing annotations
- Fix missing annotations
- Fix missing annotations