Kotlin recipe DSL: attach method type on multi-param selector rewrites#8273
Draft
timtebeek wants to merge 1 commit into
Draft
Kotlin recipe DSL: attach method type on multi-param selector rewrites#8273timtebeek wants to merge 1 commit into
timtebeek wants to merge 1 commit into
Conversation
…aceholders
The rewrite { } to { } after-template rendered placeholder types from
IrType.classFqName only, dropping generic type arguments. Callees whose
overload resolution depends on a generic argument (e.g. Iterable<T>.sumOf,
which dispatches on the selector's return type) then failed to resolve, so
the replacement J.MethodInvocation carried a null JavaType.Method and failed
assertValidTypes under default TypeValidation.
Spell out concrete type arguments on the KotlinTemplate path, falling back
to the raw spelling for non-concrete arguments.
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.
The
rewrite { } to { }after-template rendered placeholder types fromIrType.classFqNameonly, which drops generic type arguments — so a rawkotlin.Function1placeholder was emitted for lambda/selector parameters. Callees whose overload resolution depends on that generic argument (e.g.Iterable<T>.sumOf, which dispatches on the selector's return type) then failed to resolve, leaving the replacementJ.MethodInvocationwith a nullJavaType.Methodthat failsassertValidTypesunder defaultTypeValidation. This spells out concrete type arguments on the KotlinTemplate path (with? extends/? superfor variance), falling back to the raw spelling for non-concrete arguments so no already-resolving case regresses. Adds asumBy → sumOfRewriteTestthat fails before and passes after with full type validation.