Skip to content

Commit

Permalink
fix: Build with GRPC KSP processing fails (#10811)
Browse files Browse the repository at this point in the history
Fixes #10647
  • Loading branch information
timyates committed May 13, 2024
1 parent e7d32cb commit 8a365a9
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 1 deletion.
Expand Up @@ -5374,6 +5374,23 @@ class Massive {
introspection.getBeanProperties().size() == count
}

@Issue("https://github.com/micronaut-projects/micronaut-core/issues/10647")
void 'handles generic definitions as generated by protobuf'() {
when:
buildBeanIntrospection('test.MyMessage', '''
package test;
import io.micronaut.core.annotation.Introspected;
import io.micronaut.inject.visitor.beans.Message;
@Introspected
class MyMessage extends Message {
}
''')
then:
noExceptionThrown()
}

@Override
protected JavaParser newJavaParser() {
return new JavaParser() {
Expand Down
@@ -0,0 +1,16 @@
package io.micronaut.inject.visitor.beans;

public class Message {

public Builder<?> getBuilder() {
return new Builder<>();
}

public static final class Builder<BuilderT extends Builder<BuilderT>> {

class BuilderParentImpl {
}

private Builder<BuilderT>.BuilderParentImpl meAsParent;
}
}
Expand Up @@ -283,7 +283,7 @@ internal abstract class AbstractKotlinElement<T : KotlinNativeElement>(
): Map<String, ClassElement> {
val typeArguments = mutableMapOf<String, ClassElement>()
val typeParameters = type.declaration.typeParameters
if (type.arguments.isEmpty()) {
if (type.arguments.isEmpty() || type.arguments.size != typeParameters.size) {
typeParameters.forEach {
typeArguments[it.name.asString()] =
resolveTypeParameter(owner, it, parentTypeArguments, visitedTypes)
Expand Down
Expand Up @@ -20,6 +20,7 @@ import io.micronaut.core.type.GenericPlaceholder
import io.micronaut.inject.ExecutableMethod
import io.micronaut.kotlin.processing.elementapi.SomeEnum
import io.micronaut.kotlin.processing.elementapi.TestClass
import spock.lang.Issue

import javax.persistence.Column
import javax.persistence.Entity
Expand Down Expand Up @@ -2472,4 +2473,20 @@ data class ClassificationAndStats<out T : StatsEntry>(
expect:
statsProp.hasAnnotation(JsonIgnore)
}

@Issue("https://github.com/micronaut-projects/micronaut-core/issues/10647")
void 'handles generic definitions as generated by protobuf'() {
when:
buildBeanIntrospection('test.MyMessage', '''
package test
import io.micronaut.core.annotation.Introspected
import io.micronaut.kotlin.processing.visitor.Message
@Introspected
class MyMessage: Message()
''')
then:
noExceptionThrown()
}
}
@@ -0,0 +1,16 @@
package io.micronaut.kotlin.processing.visitor;

public class Message {

public Builder<?> getBuilder() {
return new Builder<>();
}

public static final class Builder<BuilderT extends Builder<BuilderT>> {

class BuilderParentImpl {
}

private Builder<BuilderT>.BuilderParentImpl meAsParent;
}
}

0 comments on commit 8a365a9

Please sign in to comment.