Open jbarr21 opened 2 years ago
hi @jbarr21 @neetopia any solution helped to solve this issue, facing the same . with KSP version: 1.9.21-1.0.15 Kotlin version: 1.9.20 oom Compiler-Processing - 2.6.1
e: java.lang.StackOverflowError at com.google.devtools.ksp.symbol.impl.kotlin.KSTypeImpl$Companion.getCached(KSTypeImpl.kt) at com.google.devtools.ksp.symbol.impl.kotlin.KSTypeImplKt.getKSTypeCached(KSTypeImpl.kt:145) at com.google.devtools.ksp.symbol.impl.kotlin.KSTypeImplKt.getKSTypeCached$default(KSTypeImpl.kt:135) at com.google.devtools.ksp.symbol.impl.binary.KSTypeReferenceDescriptorImpl.resolve(KSTypeReferenceDescriptorImpl.kt:72) at com.google.devtools.ksp.visitor.KSValidateVisitor.visitTypeReference(KSValidateVisitor.kt:57) at com.google.devtools.ksp.visitor.KSValidateVisitor.visitTypeReference(KSValidateVisitor.kt:5) at com.google.devtools.ksp.symbol.impl.binary.KSTypeReferenceDescriptorImpl.accept(KSTypeReferenceDescriptorImpl.kt:76) at com.google.devtools.ksp.visitor.KSValidateVisitor.validateType(KSValidateVisitor.kt:9) at com.google.devtools.ksp.visitor.KSValidateVisitor.visitTypeReference(KSValidateVisitor.kt:57) at com.google.devtools.ksp.visitor.KSValidateVisitor.visitTypeReference(KSValidateVisitor.kt:5) at com.google.devtools.ksp.symbol.impl.binary.KSTypeReferenceDescriptorImpl.accept(KSTypeReferenceDescriptorImpl.kt:76) at com.google.devtools.ksp.visitor.KSValidateVisitor.validateType(KSValidateVisitor.kt:9) at com.google.devtools.ksp.visitor.KSValidateVisitor.visitTypeReference(KSValidateVisitor.kt:57) at com.google.devtools.ksp.visitor.KSValidateVisitor.visitTypeReference(KSValidateVisitor.kt:5) at com.google.devtools.ksp.symbol.impl.binary.KSTypeReferenceDescriptorImpl.accept(KSTypeReferenceDescriptorImpl.kt:76) at com.google.devtools.ksp.visitor.KSValidateVisitor.validateType(KSValidateVisitor.kt:9) at com.google.devtools.ksp.visitor.KSValidateVisitor.visitTypeReference(KSValidateVisitor.kt:57) at com.google.devtools.ksp.visitor.KSValidateVisitor.visitTypeReference(KSValidateVisitor.kt:5) at com.google.devtools.ksp.symbol.impl.binary.KSTypeReferenceDescriptorImpl.accept(KSTypeReferenceDescriptorImpl.kt:76) at com.google.devtools.ksp.visitor.KSValidateVisitor.validateType(KSValidateVisitor.kt:9) at com.google.devtools.ksp.visitor.KSValidateVisitor.visitTypeReference(KSValidateVisitor.kt:57) at com.google.devtools.ksp.visitor.KSValidateVisitor.visitTypeReference(KSValidateVisitor.kt:5) at com.google.devtools.ksp.symbol.impl.binary.KSTypeReferenceDescriptorImpl.accept(KSTypeReferenceDescriptorImpl.kt:76) at com.google.devtools.ksp.visitor.KSValidateVisitor.validateType(KSValidateVisitor.kt:9) at com.google.devtools.ksp.visitor.KSValidateVisitor.visitTypeReference(KSValidateVisitor.kt:57) at com.google.devtools.ksp.visitor.KSValidateVisitor.visitTypeReference(KSValidateVisitor.kt:5)
I just debugged this and the cause was a usage of Enum<>. I'm guessing ksp tries to verify the matches the underlying recursive generic which is Enum<> and gets stuck as expected. Arguably in my case, since isn't guaranteed to be an T = , and isn't guaranteed to be an Enum
As for everyone else, I'd suggest verifying whether you're properly using any classes which have recursive generics.
I just debugged this and the cause was a usage of Enum<_>. I'm guessing ksp tries to verify the matches the underlying recursive generic which is Enum<_> and gets stuck as expected. Arguably in my case, since isn't guaranteed to be an T = , and isn't guaranteed to be an Enum, it fails, but i doubt hitting a stack overflow exception was intended. It should detect this case and fail fast.
As for everyone else, I'd suggest verifying whether you're properly using any classes which have recursive generics.
Thank you for this comment, you saved me quite a bit of time. In my case, it was also the Enum<*> that broke ksp.
Types with generics that reference each either cause a
StackOverflowError
in theKSValidateVisitor
when processing Java source files.KSP version:
1.7.10-1.0.6
Kotlin version:1.7.10
Room Compiler-Processing version:2.5.0-alpha03
Build system: BuckExample Java source files (non-Foo classes are Kotlin classes from uber/RIBs or Android View):
Non-Foo classes from uber/RIBs:
Output from console logging the
typeReference.toString()
on breakpoint onKSValidateVisitor.visitTypeReference()
:Stacktrace: