-
Notifications
You must be signed in to change notification settings - Fork 455
Add support for annotations to TypeTable
#5485
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
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
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
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
...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
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some suggestions could not be made:
- rewrite-maven/src/main/java/org/openrewrite/maven/tree/Dependency.java
- lines 26-26
rewrite-java/src/test/java/org/openrewrite/java/internal/parser/TypeTableTest.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some suggestions could not be made:
- 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
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some suggestions could not be made:
- 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
rewrite-java/src/main/java/org/openrewrite/java/internal/parser/TypeTable.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some suggestions could not be made:
- 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
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
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some suggestions could not be made:
- 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
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
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some suggestions could not be made:
- rewrite-gradle/src/main/java/org/openrewrite/gradle/marker/GradleDependencyConfiguration.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/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
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some suggestions could not be made:
- rewrite-gradle/src/main/java/org/openrewrite/gradle/marker/GradleDependencyConfiguration.java
- lines 26-26
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some suggestions could not be made:
- rewrite-gradle/src/main/java/org/openrewrite/gradle/marker/GradleDependencyConfiguration.java
- lines 26-26
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some suggestions could not be made:
- rewrite-gradle/src/main/java/org/openrewrite/gradle/marker/GradleDependencyConfiguration.java
- lines 26-26
* 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 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 * 2
stored as50
)TypeTable.Reader
API 🔧TypeTable.Reader.Options
with builder pattern for extensible configurationread()
method that acceptsOptions
for flexible reading.tsv.zip
to.tsv.gz
for 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
TypeTable
without requiring access to source files or full classpath resolution.Technical Details
The implementation cleanly separates: