Skip to content

Parsing java has failures in hashing  #1599

@asfalcone

Description

@asfalcone

Describe the bug
Parsing java has failures in hashing

To Reproduce
https://cs.android.com/androidx/platform/tools/dokka-devsite-plugin/+/master:testData/fragment/source/ Using the source of the Android Jetpack Fragment library we often (but not always) see two kinds of errors in hashing from findVirtualFileForTopLevelClass

Stacktrace 1

Index 88 out of bounds for length 79
java.lang.ArrayIndexOutOfBoundsException: Index 88 out of bounds for length 79
	at gnu.trove.THashMap.rehash(THashMap.java:350)
	at gnu.trove.THash.postInsertHook(THash.java:286)
	at gnu.trove.THashMap.put(THashMap.java:174)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.findVirtualFileForTopLevelClass(KotlinCliJavaFileManagerImpl.kt:306)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.access$findVirtualFileForTopLevelClass(KotlinCliJavaFileManagerImpl.kt:48)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl$findPsiClass$1.invoke(KotlinCliJavaFileManagerImpl.kt:70)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl$findPsiClass$1.invoke(KotlinCliJavaFileManagerImpl.kt:48)
	at org.jetbrains.kotlin.util.PerformanceCounter.time(PerformanceCounter.kt:101)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.findPsiClass(KotlinCliJavaFileManagerImpl.kt:69)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.findClass(KotlinCliJavaFileManagerImpl.kt:135)
	at com.intellij.psi.impl.PsiElementFinderImpl.findClass(PsiElementFinderImpl.java:44)
	at com.intellij.psi.impl.JavaPsiFacadeImpl.doFindClass(JavaPsiFacadeImpl.java:110)
	at com.intellij.psi.impl.JavaPsiFacadeImpl.findClass(JavaPsiFacadeImpl.java:87)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.tryClassResult(PsiJavaCodeReferenceElementImpl.java:416)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl$OurGenericsResolver.resolve(PsiJavaCodeReferenceElementImpl.java:397)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl$OurGenericsResolver.resolve(PsiJavaCodeReferenceElementImpl.java:375)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolveWithCaching$2(ResolveCache.java:200)
	at com.intellij.openapi.util.RecursionManager$1.doPreventingRecursion(RecursionManager.java:113)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:71)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:199)
	at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:797)
	at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:788)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.multiResolve(PsiJavaCodeReferenceElementImpl.java:434)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.advancedResolve(PsiJavaCodeReferenceElementImpl.java:427)
	at com.intellij.psi.impl.source.PsiClassReferenceType.resolveGenerics(PsiClassReferenceType.java:179)
	at com.intellij.psi.impl.source.PsiClassReferenceType.resolve(PsiClassReferenceType.java:124)
	at com.intellij.psi.util.TypeConversionUtil$2.visitClassType(TypeConversionUtil.java:1267)
	at com.intellij.psi.util.TypeConversionUtil$2.visitClassType(TypeConversionUtil.java:1258)
	at com.intellij.psi.PsiClassType.accept(PsiClassType.java:239)
	at com.intellij.psi.util.TypeConversionUtil.erasure(TypeConversionUtil.java:1258)
	at com.intellij.psi.util.MethodSignatureUtil.calcErasedParameterTypes(MethodSignatureUtil.java:91)
	at com.intellij.psi.util.MethodSignatureBase.getErasedParameterTypes(MethodSignatureBase.java:80)
	at com.intellij.psi.util.MethodSignatureBase.hashCode(MethodSignatureBase.java:95)
	at com.intellij.psi.util.MethodSignatureUtil$2.computeHashCode(MethodSignatureUtil.java:52)
	at com.intellij.psi.util.MethodSignatureUtil$2.computeHashCode(MethodSignatureUtil.java:49)
	at gnu.trove.TObjectHash.insertionIndex(TObjectHash.java:224)
	at gnu.trove.THashMap.put(THashMap.java:164)
	at com.intellij.psi.impl.PsiSuperMethodImplUtil.buildMethodHierarchy(PsiSuperMethodImplUtil.java:187)
	at com.intellij.psi.impl.PsiSuperMethodImplUtil.lambda$null$1(PsiSuperMethodImplUtil.java:36)
	at com.intellij.util.containers.ConcurrentFactoryMap$2.create(ConcurrentFactoryMap.java:176)
	at com.intellij.util.containers.ConcurrentFactoryMap.get(ConcurrentFactoryMap.java:40)
	at com.intellij.psi.impl.PsiSuperMethodImplUtil.lambda$null$3(PsiSuperMethodImplUtil.java:370)
	at com.intellij.util.containers.ConcurrentFactoryMap$2.create(ConcurrentFactoryMap.java:176)
	at com.intellij.util.containers.ConcurrentFactoryMap.get(ConcurrentFactoryMap.java:40)
	at com.intellij.psi.impl.PsiSuperMethodImplUtil.getHierarchicalMethodSignature(PsiSuperMethodImplUtil.java:379)
	at com.intellij.psi.impl.PsiSuperMethodImplUtil.getHierarchicalMethodSignature(PsiSuperMethodImplUtil.java:359)
	at com.intellij.psi.impl.source.javadoc.PsiDocMethodOrFieldRef.findMethods(PsiDocMethodOrFieldRef.java:211)
	at com.intellij.psi.impl.source.javadoc.PsiDocMethodOrFieldRef.getReferenceInScope(PsiDocMethodOrFieldRef.java:105)
	at com.intellij.psi.impl.source.javadoc.PsiDocMethodOrFieldRef.getReference(PsiDocMethodOrFieldRef.java:59)
	at org.jetbrains.dokka.base.translators.psi.JavadocParser$Parse.toDocumentationLinkString(JavadocParser.kt:169)
	at org.jetbrains.dokka.base.translators.psi.JavadocParser$Parse.convertInlineDocTag(JavadocParser.kt:180)
	at org.jetbrains.dokka.base.translators.psi.JavadocParser$Parse.stringify(JavadocParser.kt:153)
	at org.jetbrains.dokka.base.translators.psi.JavadocParser$Parse.invoke(JavadocParser.kt:231)
	at org.jetbrains.dokka.base.translators.psi.JavadocParser.convertJavadocElements(JavadocParser.kt:250)
	at org.jetbrains.dokka.base.translators.psi.JavadocParser.convertJavadocElements$default(JavadocParser.kt:249)
	at org.jetbrains.dokka.base.translators.psi.JavadocParser.getDescription(JavadocParser.kt:143)
	at org.jetbrains.dokka.base.translators.psi.JavadocParser.parseDocumentation(JavadocParser.kt:35)
	at org.jetbrains.dokka.base.translators.psi.DefaultPsiToDocumentableTranslator$DokkaPsiParser$parseClasslike$2.invokeSuspend(DefaultPsiToDocumentableTranslator.kt:192)
	(Coroutine boundary)
	at org.jetbrains.dokka.base.translators.psi.DefaultPsiToDocumentableTranslator$DokkaPsiParser$parsePackage$2$invokeSuspend$$inlined$parallelMap$1$1.invokeSuspend(DefaultPsiToDocumentableTranslator.kt:19)
	at org.jetbrains.dokka.base.translators.psi.DefaultPsiToDocumentableTranslator$DokkaPsiParser$parsePackage$2.invokeSuspend(DefaultPsiToDocumentableTranslator.kt:575)
	at org.jetbrains.dokka.base.translators.psi.DefaultPsiToDocumentableTranslator$invoke$2$invokeSuspend$$inlined$parallelMap$2$1.invokeSuspend(DefaultPsiToDocumentableTranslator.kt:19)
	at org.jetbrains.dokka.base.translators.psi.DefaultPsiToDocumentableTranslator$invoke$2.invokeSuspend(DefaultPsiToDocumentableTranslator.kt:618)
	at org.jetbrains.dokka.DokkaGenerator$translateSources$$inlined$parallelMap$1$1.invokeSuspend(DokkaGenerator.kt:19)
	at org.jetbrains.dokka.DokkaGenerator$createDocumentationModels$1$invokeSuspend$$inlined$parallelMap$1$1.invokeSuspend(DokkaGenerator.kt:19)
	at org.jetbrains.dokka.DokkaGenerator$createDocumentationModels$1.invokeSuspend(DokkaGenerator.kt:194)
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 88 out of bounds for length 79
	at gnu.trove.THashMap.rehash(THashMap.java:350)
	at gnu.trove.THash.postInsertHook(THash.java:286)
	at gnu.trove.THashMap.put(THashMap.java:174)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.findVirtualFileForTopLevelClass(KotlinCliJavaFileManagerImpl.kt:306)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.access$findVirtualFileForTopLevelClass(KotlinCliJavaFileManagerImpl.kt:48)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl$findPsiClass$1.invoke(KotlinCliJavaFileManagerImpl.kt:70)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl$findPsiClass$1.invoke(KotlinCliJavaFileManagerImpl.kt:48)
	at org.jetbrains.kotlin.util.PerformanceCounter.time(PerformanceCounter.kt:101)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.findPsiClass(KotlinCliJavaFileManagerImpl.kt:69)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.findClass(KotlinCliJavaFileManagerImpl.kt:135)
	at com.intellij.psi.impl.PsiElementFinderImpl.findClass(PsiElementFinderImpl.java:44)
	at com.intellij.psi.impl.JavaPsiFacadeImpl.doFindClass(JavaPsiFacadeImpl.java:110)
	at com.intellij.psi.impl.JavaPsiFacadeImpl.findClass(JavaPsiFacadeImpl.java:87)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.tryClassResult(PsiJavaCodeReferenceElementImpl.java:416)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl$OurGenericsResolver.resolve(PsiJavaCodeReferenceElementImpl.java:397)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl$OurGenericsResolver.resolve(PsiJavaCodeReferenceElementImpl.java:375)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolveWithCaching$2(ResolveCache.java:200)
	at com.intellij.openapi.util.RecursionManager$1.doPreventingRecursion(RecursionManager.java:113)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:71)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:199)
	at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:797)
	at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:788)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.multiResolve(PsiJavaCodeReferenceElementImpl.java:434)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.advancedResolve(PsiJavaCodeReferenceElementImpl.java:427)
	at com.intellij.psi.impl.source.PsiClassReferenceType.resolveGenerics(PsiClassReferenceType.java:179)
	at com.intellij.psi.impl.source.PsiClassReferenceType.resolve(PsiClassReferenceType.java:124)
	at com.intellij.psi.util.TypeConversionUtil$2.visitClassType(TypeConversionUtil.java:1267)
	at com.intellij.psi.util.TypeConversionUtil$2.visitClassType(TypeConversionUtil.java:1258)
	at com.intellij.psi.PsiClassType.accept(PsiClassType.java:239)
	at com.intellij.psi.util.TypeConversionUtil.erasure(TypeConversionUtil.java:1258)
	at com.intellij.psi.util.MethodSignatureUtil.calcErasedParameterTypes(MethodSignatureUtil.java:91)
	at com.intellij.psi.util.MethodSignatureBase.getErasedParameterTypes(MethodSignatureBase.java:80)
	at com.intellij.psi.util.MethodSignatureBase.hashCode(MethodSignatureBase.java:95)
	at com.intellij.psi.util.MethodSignatureUtil$2.computeHashCode(MethodSignatureUtil.java:52)
	at com.intellij.psi.util.MethodSignatureUtil$2.computeHashCode(MethodSignatureUtil.java:49)
	at gnu.trove.TObjectHash.insertionIndex(TObjectHash.java:224)
	at gnu.trove.THashMap.put(THashMap.java:164)
	at com.intellij.psi.impl.PsiSuperMethodImplUtil.buildMethodHierarchy(PsiSuperMethodImplUtil.java:187)
	at com.intellij.psi.impl.PsiSuperMethodImplUtil.lambda$null$1(PsiSuperMethodImplUtil.java:36)
	at com.intellij.util.containers.ConcurrentFactoryMap$2.create(ConcurrentFactoryMap.java:176)
	at com.intellij.util.containers.ConcurrentFactoryMap.get(ConcurrentFactoryMap.java:40)
	at com.intellij.psi.impl.PsiSuperMethodImplUtil.lambda$null$3(PsiSuperMethodImplUtil.java:370)
	at com.intellij.util.containers.ConcurrentFactoryMap$2.create(ConcurrentFactoryMap.java:176)
	at com.intellij.util.containers.ConcurrentFactoryMap.get(ConcurrentFactoryMap.java:40)
	at com.intellij.psi.impl.PsiSuperMethodImplUtil.getHierarchicalMethodSignature(PsiSuperMethodImplUtil.java:379)
	at com.intellij.psi.impl.PsiSuperMethodImplUtil.getHierarchicalMethodSignature(PsiSuperMethodImplUtil.java:359)
	at com.intellij.psi.impl.source.javadoc.PsiDocMethodOrFieldRef.findMethods(PsiDocMethodOrFieldRef.java:211)
	at com.intellij.psi.impl.source.javadoc.PsiDocMethodOrFieldRef.getReferenceInScope(PsiDocMethodOrFieldRef.java:105)
	at com.intellij.psi.impl.source.javadoc.PsiDocMethodOrFieldRef.getReference(PsiDocMethodOrFieldRef.java:59)
	at org.jetbrains.dokka.base.translators.psi.JavadocParser$Parse.toDocumentationLinkString(JavadocParser.kt:169)
	at org.jetbrains.dokka.base.translators.psi.JavadocParser$Parse.convertInlineDocTag(JavadocParser.kt:180)
	at org.jetbrains.dokka.base.translators.psi.JavadocParser$Parse.stringify(JavadocParser.kt:153)
	at org.jetbrains.dokka.base.translators.psi.JavadocParser$Parse.invoke(JavadocParser.kt:231)
	at org.jetbrains.dokka.base.translators.psi.JavadocParser.convertJavadocElements(JavadocParser.kt:250)
	at org.jetbrains.dokka.base.translators.psi.JavadocParser.convertJavadocElements$default(JavadocParser.kt:249)
	at org.jetbrains.dokka.base.translators.psi.JavadocParser.getDescription(JavadocParser.kt:143)
	at org.jetbrains.dokka.base.translators.psi.JavadocParser.parseDocumentation(JavadocParser.kt:35)
	at org.jetbrains.dokka.base.translators.psi.DefaultPsiToDocumentableTranslator$DokkaPsiParser$parseClasslike$2.invokeSuspend(DefaultPsiToDocumentableTranslator.kt:192)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:32)
	at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:113)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:738)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

Stacktrace 2

java.lang.IllegalArgumentException: Equal objects must have equal hashcodes. During rehashing, Trove discovered that the following two objects claim to be equal (as in java.lang.Object.equals() or TObjectHashingStrategy.equals()) but their hashCodes (or those calculated by your TObjectHashingStrategy) are not equal.This violates the general contract of java.lang.Object.hashCode().  See bullet point two in that method's documentation. object #1 =android (class org.jetbrains.kotlin.name.FqName), hashCode=-861391249; object #2 =android (class org.jetbrains.kotlin.name.FqName), hashCode=-861391249
	at gnu.trove.TObjectHash.throwObjectContractViolation(TObjectHash.java:331)
	at gnu.trove.THashMap.rehash(THashMap.java:347)
	at gnu.trove.THash.postInsertHook(THash.java:286)
	at gnu.trove.THashMap.put(THashMap.java:174)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.findVirtualFileForTopLevelClass(KotlinCliJavaFileManagerImpl.kt:306)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.access$findVirtualFileForTopLevelClass(KotlinCliJavaFileManagerImpl.kt:48)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl$findPsiClass$1.invoke(KotlinCliJavaFileManagerImpl.kt:70)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl$findPsiClass$1.invoke(KotlinCliJavaFileManagerImpl.kt:48)
	at org.jetbrains.kotlin.util.PerformanceCounter.time(PerformanceCounter.kt:101)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.findPsiClass(KotlinCliJavaFileManagerImpl.kt:69)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.findClass(KotlinCliJavaFileManagerImpl.kt:135)
	at com.intellij.psi.impl.PsiElementFinderImpl.findClass(PsiElementFinderImpl.java:44)
	at com.intellij.psi.impl.JavaPsiFacadeImpl.doFindClass(JavaPsiFacadeImpl.java:110)
	at com.intellij.psi.impl.JavaPsiFacadeImpl.findClass(JavaPsiFacadeImpl.java:87)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.tryClassResult(PsiJavaCodeReferenceElementImpl.java:416)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl$OurGenericsResolver.resolve(PsiJavaCodeReferenceElementImpl.java:397)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl$OurGenericsResolver.resolve(PsiJavaCodeReferenceElementImpl.java:375)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolveWithCaching$2(ResolveCache.java:200)
	at com.intellij.psi.impl.source.resolve.ResolveCache$$Lambda$185/214444723.compute(Unknown Source)
	at com.intellij.openapi.util.RecursionManager$1.doPreventingRecursion(RecursionManager.java:113)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:71)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:199)
	at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:797)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.getCanonicalText(PsiJavaCodeReferenceElementImpl.java:297)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.getCanonicalText(PsiJavaCodeReferenceElementImpl.java:287)
	at com.intellij.psi.impl.source.PsiClassReferenceType.getText(PsiClassReferenceType.java:245)
	at com.intellij.psi.impl.source.PsiClassReferenceType.getCanonicalText(PsiClassReferenceType.java:231)
	at com.intellij.psi.PsiClassType$Stub.getCanonicalText(PsiClassType.java:358)
	at org.jetbrains.dokka.analysis.CallableFactoryKt.from(CallableFactory.kt:22)
	at org.jetbrains.dokka.analysis.DRIFactoryKt.from(DRIFactory.kt:33)
	at org.jetbrains.dokka.base.translators.psi.DefaultPsiToDocumentableTranslator$DokkaPsiParser.parseFunction(DefaultPsiToDocumentableTranslator.kt:333)
	at org.jetbrains.dokka.base.translators.psi.DefaultPsiToDocumentableTranslator$DokkaPsiParser.parseFunction$default(DefaultPsiToDocumentableTranslator.kt:331)
	at org.jetbrains.dokka.base.translators.psi.DefaultPsiToDocumentableTranslator$DokkaPsiParser$parseClasslike$2$invokeSuspend$$inlined$with$lambda$3$1$1.invokeSuspend(parallelCollectionOperations.kt:19)
	at ???(Coroutine boundary.?(?)
	at org.jetbrains.dokka.base.translators.psi.DefaultPsiToDocumentableTranslator$DokkaPsiParser$parsePackage$2$invokeSuspend$$inlined$parallelMap$1$1.invokeSuspend(DefaultPsiToDocumentableTranslator.kt:19)
	at org.jetbrains.dokka.base.translators.psi.DefaultPsiToDocumentableTranslator$DokkaPsiParser$parsePackage$2.invokeSuspend(DefaultPsiToDocumentableTranslator.kt:575)
	at org.jetbrains.dokka.base.translators.psi.DefaultPsiToDocumentableTranslator$invoke$2$invokeSuspend$$inlined$parallelMap$2$1.invokeSuspend(DefaultPsiToDocumentableTranslator.kt:19)
	at org.jetbrains.dokka.base.translators.psi.DefaultPsiToDocumentableTranslator$invoke$2.invokeSuspend(DefaultPsiToDocumentableTranslator.kt:618)
	at org.jetbrains.dokka.DokkaGenerator$translateSources$$inlined$parallelMap$1$1.invokeSuspend(DokkaGenerator.kt:19)
	at org.jetbrains.dokka.DokkaGenerator$createDocumentationModels$1$invokeSuspend$$inlined$parallelMap$1$1.invokeSuspend(DokkaGenerator.kt:19)
	at org.jetbrains.dokka.DokkaGenerator$createDocumentationModels$1.invokeSuspend(DokkaGenerator.kt:194)
Caused by: java.lang.IllegalArgumentException: Equal objects must have equal hashcodes. During rehashing, Trove discovered that the following two objects claim to be equal (as in java.lang.Object.equals() or TObjectHashingStrategy.equals()) but their hashCodes (or those calculated by your TObjectHashingStrategy) are not equal.This violates the general contract of java.lang.Object.hashCode().  See bullet point two in that method's documentation. object #1 =android (class org.jetbrains.kotlin.name.FqName), hashCode=-861391249; object #2 =android (class org.jetbrains.kotlin.name.FqName), hashCode=-861391249
	at gnu.trove.TObjectHash.throwObjectContractViolation(TObjectHash.java:331)
	at gnu.trove.THashMap.rehash(THashMap.java:347)
	at gnu.trove.THash.postInsertHook(THash.java:286)
	at gnu.trove.THashMap.put(THashMap.java:174)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.findVirtualFileForTopLevelClass(KotlinCliJavaFileManagerImpl.kt:306)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.access$findVirtualFileForTopLevelClass(KotlinCliJavaFileManagerImpl.kt:48)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl$findPsiClass$1.invoke(KotlinCliJavaFileManagerImpl.kt:70)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl$findPsiClass$1.invoke(KotlinCliJavaFileManagerImpl.kt:48)
	at org.jetbrains.kotlin.util.PerformanceCounter.time(PerformanceCounter.kt:101)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.findPsiClass(KotlinCliJavaFileManagerImpl.kt:69)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.findClass(KotlinCliJavaFileManagerImpl.kt:135)
	at com.intellij.psi.impl.PsiElementFinderImpl.findClass(PsiElementFinderImpl.java:44)
	at com.intellij.psi.impl.JavaPsiFacadeImpl.doFindClass(JavaPsiFacadeImpl.java:110)
	at com.intellij.psi.impl.JavaPsiFacadeImpl.findClass(JavaPsiFacadeImpl.java:87)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.tryClassResult(PsiJavaCodeReferenceElementImpl.java:416)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl$OurGenericsResolver.resolve(PsiJavaCodeReferenceElementImpl.java:397)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl$OurGenericsResolver.resolve(PsiJavaCodeReferenceElementImpl.java:375)
	at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolveWithCaching$2(ResolveCache.java:200)
	at com.intellij.psi.impl.source.resolve.ResolveCache$$Lambda$185/214444723.compute(Unknown Source)
	at com.intellij.openapi.util.RecursionManager$1.doPreventingRecursion(RecursionManager.java:113)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:71)
	at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:199)
	at com.intellij.psi.impl.PsiImplUtil.multiResolveImpl(PsiImplUtil.java:797)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.getCanonicalText(PsiJavaCodeReferenceElementImpl.java:297)
	at com.intellij.psi.impl.source.PsiJavaCodeReferenceElementImpl.getCanonicalText(PsiJavaCodeReferenceElementImpl.java:287)
	at com.intellij.psi.impl.source.PsiClassReferenceType.getText(PsiClassReferenceType.java:245)
	at com.intellij.psi.impl.source.PsiClassReferenceType.getCanonicalText(PsiClassReferenceType.java:231)
	at com.intellij.psi.PsiClassType$Stub.getCanonicalText(PsiClassType.java:358)
	at org.jetbrains.dokka.analysis.CallableFactoryKt.from(CallableFactory.kt:22)
	at org.jetbrains.dokka.analysis.DRIFactoryKt.from(DRIFactory.kt:33)
	at org.jetbrains.dokka.base.translators.psi.DefaultPsiToDocumentableTranslator$DokkaPsiParser.parseFunction(DefaultPsiToDocumentableTranslator.kt:333)
	at org.jetbrains.dokka.base.translators.psi.DefaultPsiToDocumentableTranslator$DokkaPsiParser.parseFunction$default(DefaultPsiToDocumentableTranslator.kt:331)
	at org.jetbrains.dokka.base.translators.psi.DefaultPsiToDocumentableTranslator$DokkaPsiParser$parseClasslike$2$invokeSuspend$$inlined$with$lambda$3$1$1.invokeSuspend(parallelCollectionOperations.kt:19)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:738)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

Installation

  • Operating system: macOS/Windows/Linux
  • Build tool: CLI
  • Dokka version: 1.4.10.2-dev-19

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugfeedback: GoogleAn issue/PR submitted by colleagues at Google, most likely related to the Android API reference docs

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions