Closed temofey1989 closed 8 months ago
Which generator do you use? This one? https://github.com/micronaut-projects/micronaut-openapi
If yes, then create a issue in the micronaut-openapi project with an example, please.
If not, then use this generator
@dstepanov Hi! Yes, the bug is really with KSP. Try to run the build with the attached example. The build will be successful if you use KAPT. If you use KSP, you will get this error:
e: [ksp] D:/Work/micronaut/micronaut3-bug/src/main/kotlin/com/micronaut/bug/controller/MyEntityController.kt:18: Error processing type visitor [io.micronaut.openapi.visitor.OpenApiControllerVisitor@52551c29]: The member named [value] with type [[Ljava.lang.Object;] is not a valid member type
e: java.lang.IllegalArgumentException: The member named [value] with type [[Ljava.lang.Object;] is not a valid member type
at io.micronaut.core.annotation.AnnotationValueBuilder.members(AnnotationValueBuilder.java:798)
at io.micronaut.inject.annotation.AbstractAnnotationMetadataBuilder.processAnnotationAlias(AbstractAnnotationMetadataBuilder.java:728)
at io.micronaut.inject.annotation.AbstractAnnotationMetadataBuilder.handleAnnotationAlias(AbstractAnnotationMetadataBuilder.java:961)
at io.micronaut.inject.annotation.AbstractAnnotationMetadataBuilder.processAliases(AbstractAnnotationMetadataBuilder.java:1254)
at io.micronaut.inject.annotation.AbstractAnnotationMetadataBuilder.processAliases(AbstractAnnotationMetadataBuilder.java:1084)
at io.micronaut.inject.annotation.AbstractAnnotationMetadataBuilder.processAnnotation(AbstractAnnotationMetadataBuilder.java:1068)
at io.micronaut.inject.annotation.AbstractAnnotationMetadataBuilder.lambda$addAnnotations$8(AbstractAnnotationMetadataBuilder.java:979)
at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575)
at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616)
at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622)
at java.base/java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:627)
at io.micronaut.inject.annotation.AbstractAnnotationMetadataBuilder.addAnnotations(AbstractAnnotationMetadataBuilder.java:981)
at io.micronaut.inject.annotation.AbstractAnnotationMetadataBuilder.addAnnotations(AbstractAnnotationMetadataBuilder.java:824)
at io.micronaut.inject.annotation.AbstractAnnotationMetadataBuilder.buildInternalMulti(AbstractAnnotationMetadataBuilder.java:794)
at io.micronaut.inject.annotation.AbstractAnnotationMetadataBuilder.buildInternal(AbstractAnnotationMetadataBuilder.java:246)
at io.micronaut.inject.annotation.AbstractAnnotationMetadataBuilder.lookupOrBuild(AbstractAnnotationMetadataBuilder.java:235)
at io.micronaut.kotlin.processing.annotation.KotlinElementAnnotationMetadataFactory.lookupForMethod(KotlinElementAnnotationMetadataFactory.kt:177)
at io.micronaut.inject.ast.annotation.AbstractElementAnnotationMetadataFactory$8.lookup(AbstractElementAnnotationMetadataFactory.java:337)
at io.micronaut.inject.ast.annotation.AbstractElementAnnotationMetadataFactory$AbstractElementAnnotationMetadata.getCacheEntry(AbstractElementAnnotationMetadataFactory.java:451)
at io.micronaut.inject.ast.annotation.AbstractElementAnnotationMetadataFactory$AbstractElementAnnotationMetadata.getAnnotationMetadata(AbstractElementAnnotationMetadataFactory.java:461)
at io.micronaut.core.annotation.AnnotationMetadataDelegate.hasStereotype(AnnotationMetadataDelegate.java:574)
at io.micronaut.inject.annotation.AnnotationMetadataHierarchy.hasStereotype(AnnotationMetadataHierarchy.java:582)
at io.micronaut.core.annotation.AnnotationMetadataDelegate.hasStereotype(AnnotationMetadataDelegate.java:574)
at io.micronaut.core.annotation.AnnotationMetadataDelegate.hasStereotype(AnnotationMetadataDelegate.java:574)
at io.micronaut.kotlin.processing.visitor.LoadedVisitor.matches(LoadedVisitor.kt:131)
at io.micronaut.kotlin.processing.visitor.TypeElementSymbolProcessor$ElementVisitor.visitMethod(TypeElementSymbolProcessor.kt:322)
at io.micronaut.kotlin.processing.visitor.TypeElementSymbolProcessor$ElementVisitor.visitMembers(TypeElementSymbolProcessor.kt:313)
at io.micronaut.kotlin.processing.visitor.TypeElementSymbolProcessor$ElementVisitor.visitClassDeclaration(TypeElementSymbolProcessor.kt:272)
at com.google.devtools.ksp.symbol.impl.kotlin.KSClassDeclarationImpl.accept(KSClassDeclarationImpl.kt:135)
at io.micronaut.kotlin.processing.visitor.TypeElementSymbolProcessor.process(TypeElementSymbolProcessor.kt:125)
at com.google.devtools.ksp.AbstractKotlinSymbolProcessingExtension$doAnalysis$8$1.invoke(KotlinSymbolProcessingExtension.kt:306)
at com.google.devtools.ksp.AbstractKotlinSymbolProcessingExtension$doAnalysis$8$1.invoke(KotlinSymbolProcessingExtension.kt:304)
at com.google.devtools.ksp.AbstractKotlinSymbolProcessingExtension.handleException(KotlinSymbolProcessingExtension.kt:410)
at com.google.devtools.ksp.AbstractKotlinSymbolProcessingExtension.doAnalysis(KotlinSymbolProcessingExtension.kt:304)
at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(TopDownAnalyzerFacadeForJVM.kt:112)
at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration$default(TopDownAnalyzerFacadeForJVM.kt:77)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:256)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:247)
at org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.kt:115)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyze(KotlinToJVMBytecodeCompiler.kt:247)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:87)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli$default(KotlinToJVMBytecodeCompiler.kt:43)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:165)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:50)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:104)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:48)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:101)
at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1523)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
Expected Behavior
KSP should be able to handle an empty array for annotation.
Actual Behaviour
I'm using the OpenAPI code generator for my project. In case the code generator creates an empty array of values then the task
kspKotlin
fails.Steps To Reproduce
Create a controller similar to the example below:
/gradlew kspKotlin
Environment Information
Example Application
No response
Version
4.2.3