Use Java primitives in Kotlin model to match types #5363
Closed
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.
What's changed?
Add type mapping from Kotlin primitive types to their Java counterparts, and use those in the type system.
What's your motivation?
As described in openrewrite/rewrite-kotlin#626 we had up to now mapped any primitive as a Kotlin primitive, even when those classes come from Java. That's problematic when say a method matcher for a Java method has a primitive type declared for the matcher. Those would then fail to match when used from Kotlin. While that's perhaps not very common, it's nonetheless important as we look to cover both with a single set of recipes, and for new recipes developed.
Anything in particular you'd like reviewers to focus on?
Should we continue to use Kotlin primitives types when methods are defined in Kotlin? How do we tell those apart? Can we make that work on 1.9? Would it help to move to 2.0 or 2.1?
Any additional context