Add support for annotations to TypeTable#5485
Merged
knutwannheden merged 58 commits intomainfrom Aug 14, 2025
Merged
Conversation
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/AnnotatedClass.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/ArrayAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/BasicAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/ClassRefAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/Constants.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/EnumAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/NestedAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/StringAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/TestEnum.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/AnnotatedClass.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/ArrayAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/BasicAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/ClassRefAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/ConstantAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/Constants.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/EnumAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/NestedAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/StringAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/TestEnum.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/AnnotatedClass.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/ArrayAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/BasicAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/ClassRefAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/ConstantAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/Constants.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/EnumAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/NestedAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/StringAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/TestEnum.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/AnnotatedClass.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/ArrayAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/BasicAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/ClassRefAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/ConstantAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/Constants.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/EnumAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/NestedAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/StringAnnotation.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/data/TestEnum.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTableAnnotationSupport.java
Outdated
Show resolved
Hide resolved
Contributor
There was a problem hiding this comment.
Some suggestions could not be made:
- rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
- lines 402-402
- rewrite-java/src/test/java/org/openrewrite/java/internal/parser/TypeTableTest.java
- lines 805-805
- lines 813-815
- rewrite-maven/src/main/java/org/openrewrite/maven/tree/Dependency.java
- lines 26-26
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
...va/src/test/java/org/openrewrite/java/internal/parser/TypeTableInvisibleAnnotationsTest.java
Outdated
Show resolved
Hide resolved
...va/src/test/java/org/openrewrite/java/internal/parser/TypeTableInvisibleAnnotationsTest.java
Outdated
Show resolved
Hide resolved
...te-java/src/test/java/org/openrewrite/java/internal/parser/TypeTableTypeAnnotationsTest.java
Outdated
Show resolved
Hide resolved
...te-java/src/test/java/org/openrewrite/java/internal/parser/TypeTableTypeAnnotationsTest.java
Outdated
Show resolved
Hide resolved
...te-java/src/test/java/org/openrewrite/java/internal/parser/TypeTableTypeAnnotationsTest.java
Outdated
Show resolved
Hide resolved
...te-java/src/test/java/org/openrewrite/java/internal/parser/TypeTableTypeAnnotationsTest.java
Outdated
Show resolved
Hide resolved
...te-java/src/test/java/org/openrewrite/java/internal/parser/TypeTableTypeAnnotationsTest.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/TypeTableTest.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
...src/test/java/org/openrewrite/java/internal/parser/TypeTableAnnotationSerializationTest.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
...src/test/java/org/openrewrite/java/internal/parser/TypeTableAnnotationSerializationTest.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTableAnnotationSupport.java
Outdated
Show resolved
Hide resolved
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTableAnnotationSupport.java
Outdated
Show resolved
Hide resolved
...src/test/java/org/openrewrite/java/internal/parser/TypeTableAnnotationSerializationTest.java
Outdated
Show resolved
Hide resolved
dcsekar
pushed a commit
to dcsekar/rewrite
that referenced
this pull request
Aug 18, 2025
* Add support for annotations to `TypeTable` * Some cleanups * Some more cleanups * More cleanups * Support annotation member default values * Corrections * More corrections * Escape more characters in strings * Refactor * More elaborate tests * Remove test * Fix failing tests * Unify serialization format * Polish * Another test * Cleanups * Fixes * Also write field constants to TSV * Add some missing newlines * Polish tests * Revert some accidental changes * Remove stdout print from test * Some more corrections * Replace rewrite-gradle type table * Fix problem with enum constants in TSV * Polish tests * Apply suggestions from code review Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Polish tests * Add one more test case * More proper parsing * Some more polishing * Some more polishing * Revert "Some more polishing" This reverts commit f89af6c. * Some more polishing * Fix merge errors * Align annotation format with `javap` output * Include runtime invisible annotations * Parameter and type annotations * Fixes * More fixes * Formatting fixes * Only escape pipes where required * Polish * Fix bug after format change * Update type table * Add TypeTable.Reader#read() overload * Add TypeTable.Reader.Options * Simplify processing of type annotations * Update Gradle type table * Polish * Revert `JavaParser` changes * Restore original type table for rewrite-gradle --------- Co-authored-by: Tim te Beek <tim@moderne.io> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR enhances the TypeTable infrastructure to support all three types of Java annotations (element, parameter, and
type annotations) as well as annotation attribute default values and compile-time constant values for static final fields. The TypeTable now provides complete type information including annotations, enabling more sophisticated type analysis and transformation capabilities.
Key Changes
10 + 20 * 2stored as50)TypeTable.ReaderAPI 🔧TypeTable.Reader.Optionswith builder pattern for extensible configurationread()method that acceptsOptionsfor flexible reading.tsv.zipto.tsv.gzfor better compressionWhy This Change?
For parser use cases, having access to both annotation default values and static final field constants is essential for proper type attribution. This change ensures complete information about types is preserved in the
TypeTablewithout requiring access to source files or full classpath resolution.Technical Details
The implementation cleanly separates: